Zugriff auf Ressourcen mit IAM sichern
Kubernetes-Nutzer und -Dienstkonten benötigen Berechtigungen zum Verwalten von Config Connector-Ressourcen. Mit Config Connector kann die Steuerungsebene Ihres Projekts von Identitäten verwaltet werden, die die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) von Kubernetes nutzen. Sie können auch Verweise auf Richtlinien für die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) einrichten.
Die Ressourcen, die auf IAMPolicy und IAMPolicyMember verweisen können, sind in der Referenz der Config Connector-Ressourcen aufgeführt. Diese Ressourcen haben das Attribut „Can be Reference by IAMPolicy/IAMPolicyMember”.
In diesem Thema wird erläutert, wie Sie den Zugriff auf Google Cloud -Ressourcen mithilfe von Identity and Access Management sichern.
Hinweise
Installieren Sie Config Connector in Ihrem Cluster.
Zugang zur Steuerebene mit RBAC sichern
In diesem Beispiel erstellen Sie ein Dienstkonto und erteilen ihm Berechtigungen zum Verwalten von PubSubTopic. Dieses Dienstkonto kann keine anderen Arten von Config Connector-Ressourcen verwalten.
Erstellen Sie eine Datei mit dem Namen
pubsub-topic-service-account.yamlund folgendem Inhalt:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: defaultWenden Sie dies an, um das Dienstkonto
pubsub-topic-service-accountzu erstellen:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACEdurch den Namespace, von dem aus Config Connector Ressourcen verwaltet.Bestätigen Sie, dass
pubsub-topic-service-accountkeinePubSubTopic-Ressourcen erstellen kann, indem Sie prüfen, ob die Ausgabe des folgenden Befehlsnoenthält:kubectl auth can-i get pubsubtopics --as=system:serviceaccount:default:pubsub-topic-service-account
Erstellen Sie als Nächstes einen
ClusterRole, mit dem Pub/Sub-Themen erstellt werden können.ClusterRole kann nur Ressourcen verwalten, deren Werte in
rules.apiGroupsundrules.resourcesangegeben sind. Informationen zum Ermitteln von Werten fürapiGroupsundresourcesfinden Sie in der Referenz der Config Connector-Ressourcen.Erstellen Sie eine Datei mit dem Namen
pubsub-topic-editor-role.yamlund folgendem Inhalt:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null name: pubsub-topic-editor rules: - apiGroups: - pubsub.cnrm.cloud.google.com resources: - pubsubtopics verbs: - get - list - watch - create - update - patch - deleteWenden Sie
pubsub-topic-editor.yamlan, umClusterRolezu erstellen:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACEdurch den Namespace, von dem aus Config Connector Ressourcen verwaltet.Erstellen Sie als Nächstes ein RoleBinding zwischen ClusterRole und Ihrem Dienstkonto. Erstellen Sie eine Datei mit dem Namen
pubsub-topic-editor-rolebinding.yamlund folgendem Inhalt:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: pubsub-topic-editor-rolebinding. subjects: - kind: ServiceAccount name: pubsub-topic-service-account roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: pubsub-topic-editorWenden Sie
pubsub-topic-editor-rolebinding.yamlauf Ihren Cluster an:kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACEdurch den Namespace, von dem aus Config Connector Ressourcen verwaltet.Bestätigen Sie, dass
pubsub-topic-service-accountzum Erstellen vonPubSubTopic-Ressourcen berechtigt ist, indem Sie bestätigen, dass die Ausgabe des folgenden Befehlsyeslautet:kubectl auth can-i get pubsubtopics \ --as=system:serviceaccount:default:pubsub-topic-service-account
Bereinigen
Verwenden Sie kubectl delete, um das Dienstkonto, die IAM-Rolle und die Rollenbindung zu entfernen.
kubectl delete -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Ersetzen Sie CC_NAMESPACE durch den Namespace Config Connector
verwaltet Ressourcen von.
Die Datenebene mit IAM-Richtlinien sichern
In diesem Beispiel verwenden Sie die zuvor erteilten Berechtigungen, um einen PubSubTopic zu erstellen und den Zugriff mit einer IAMPolicyMember-Ressource darauf zu beschränken.
Erstellen Sie eine Datei mit dem Namen
pubsub-topic-sample.yamlund dem folgendem Inhalt:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sampleWenden Sie
pubsub-topic-sample.yamlmitkubectlan:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACEdurch den Namespace, von dem aus Config Connector Ressourcen verwaltet.Erstellen Sie eine Datei mit dem Namen
iampolicymember.yamlund dem folgenden Inhalt und ersetzen SieEMAIL_ADDRESSdurch die E-Mail-Adresse Ihres Google Cloud -Kontos:apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-sample spec: resourceRef: apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic name: pubsubtopic-sample role: roles/pubsub.admin member: "user:EMAIL_ADDRESS"Wenden Sie
iampolicymember.yamlan.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACEdurch den Namespace, von dem aus Config Connector Ressourcen verwaltet.Bestätigen Sie, dass die Richtlinie auf Google Cloud angewendet wurde, indem Sie diesen Befehl ausführen, in der Ausgabe nach Ihrer E-Mail-Adresse suchen und
PROJECT_IDdurch Ihre Projekt-ID ersetzen:gcloud beta pubsub topics get-iam-policy projects/PROJECT_ID/topics/pubsubtopic-sample
Der Zugriff auf Ihre Pub/Sub-Themen ist jetzt mit IAMPolicyMember geschützt.
Bereinigen
Verwenden Sie kubectl delete, um das Pub/Sub-Thema und IAMPolicyMember aus Ihrem Google Cloud -Projekt zu entfernen.
kubectl delete -f iampolicymember.yaml --namespace CC_NAMESPACE
kubectl delete -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Nächste Schritte
Verwenden Sie Secrets, um Informationen sicher an Google Cloud -Ressourcen zu übergeben.