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 Cloud Identity and Access Management sichern.
Hinweis
Installieren Sie zuerst Config Connector in Ihrem Cluster, um die Schritte auf dieser Seite abzuschließen.
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.yaml
und folgendem Inhalt:apiVersion: v1 kind: ServiceAccount metadata: name: pubsub-topic-service-account namespace: default
Wenden Sie dies an, um das Dienstkonto
pubsub-topic-service-account
zu erstellen:kubectl apply -f pubsub-topic-service-account.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACE
durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.Bestätigen Sie, dass
pubsub-topic-service-account
keinePubSubTopic
-Ressourcen erstellen kann, indem Sie prüfen, ob die Ausgabe des folgenden Befehlsno
enthä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.apiGroups
undrules.resources
angegeben sind. Informationen zum Ermitteln von Werten fürapiGroups
undresources
finden Sie in der Referenz der Config Connector-Ressourcen.Erstellen Sie eine Datei mit dem Namen
pubsub-topic-editor-role.yaml
und 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 - delete
Wenden Sie
pubsub-topic-editor.yaml
an, umClusterRole
zu erstellen:kubectl apply -f pubsub-topic-editor-role.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACE
durch 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.yaml
und 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-editor
Wenden Sie
pubsub-topic-editor-rolebinding.yaml
auf Ihren Cluster an:kubectl apply -f pubsub-topic-editor-rolebinding.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACE
durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.Bestätigen Sie, dass
pubsub-topic-service-account
zum Erstellen vonPubSubTopic
-Ressourcen berechtigt ist, indem Sie bestätigen, dass die Ausgabe des folgenden Befehlsyes
lautet: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 <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-editor-role.yaml --namespace <var>CC_NAMESPACE</var>
kubectl delete -f pubsub-topic-service-account.yaml --namespace <var>CC_NAMESPACE</var>
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.yaml
und dem folgendem Inhalt:apiVersion: pubsub.cnrm.cloud.google.com/v1beta1 kind: PubSubTopic metadata: name: pubsubtopic-sample
Wenden Sie
pubsub-topic-sample.yaml
mitkubectl
an:kubectl apply -f pubsub-topic-sample.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACE
durch den Namespace, von dem aus Config Connector Ressourcen verwaltet.Erstellen Sie eine Datei mit dem Namen
iampolicymember.yaml
und dem folgenden Inhalt und ersetzen SieEMAIL_ADDRESS
durch 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.yaml
an.kubectl apply -f iampolicymember.yaml --namespace CC_NAMESPACE
Ersetzen Sie
CC_NAMESPACE
durch 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_ID
durch 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.