Zugriffssteuerung mit IAM
In diesem Thema wird beschrieben, wie Sie mit Identity and Access Management steuern können, wie Config Connector Google Cloud -Ressourcen erstellen und verwalten kann.
Für die Installation von Config Connector authentifizieren Sie sich, indem Sie ein IAM-Dienstkonto erstellen und dann die Workload Identity-Föderation für GKE verwenden, um die IAM-Dienstkonten mit den Kubernetes-Dienstkonten zu verknüpfen. Mit IAM kann Config Connector Aktionen für bestimmte Ressourcen ausführen. Durch Beschränkung der Berechtigungen für Ihre Dienstkonten lässt sich präziser steuern, welche Typen von Ressourcen Config Connector erstellen kann.
Sie können Ressourcen mit einem einzelnen oder mit mehreren Dienstkonten verwalten.
Einzelnes Dienstkonto
Wenn Sie Config Connector mit dem GKE-Add-on oder per manueller Installation installieren, können Sie den Clustermodus in Ihrer ConfigConnector
-CustomResource festlegen.
Im Clustermodus können Sie ein einzelnes IAM-Dienstkonto zum Erstellen und Verwalten von Ressourcen verwenden, auch wenn Sie den Config Connector zur Verwaltung mehrerer Projekte verwenden.
Das folgende Diagramm zeigt, wie dieser Modus funktioniert, wenn dasselbe Dienstkonto zwei Projekte verwaltet:
Mehrere Dienstkonten
Um mehrere Dienstkonten zu verwenden, legen Sie den Namespace-Modus in Ihrer ConfigConnector
-CustomResource fest.
Im Namespace-Modus können Sie Berechtigungen basierend auf den jeweiligen Anliegen verschiedener IAM-Dienstkonten aufteilen und Berechtigungen zwischen verschiedenen Kubernetes-Namespaces isolieren, da Sie jedem Namespace ein anderes Dienstkonto zuordnen können.
Wählen Sie den Namespace-Modus aus, wenn Sie:
- IAM-Berechtigungen auf Kubernetes-Namespace-Ebene isolieren.
- Sie müssen eine große Anzahl von Google Cloud Ressourcen aus mehreren Google Cloud Projekten in einem einzelnen Cluster verwalten.
Sie erstellen beispielsweise ein IAM-Dienstkonto für jedes Projekt, organisieren Ressourcen aus jedem Projekt im selben Kubernetes-Namespace und binden dann das entsprechende IAM-Dienstkonto an den Kubernetes-Namespace. So können Sie IAM-Berechtigungen für jedes Projekt trennen, sodass jedes Projekt über einen separaten, unabhängigen Satz von Berechtigungen verfügt.
Das folgende Diagramm gibt einen Überblick über die Funktionsweise des Namespace-Modus, wobei jedes Projekt von einem anderen Dienstkonto verwaltet wird:
Im Namespace-Modus ist standardmäßig jedes IAM-Dienstkonto an einen Namespace gebunden. Wenn Sie Ressourcen in diesem Namespace erstellen, verwendet Config Connector dieses Dienstkonto zum Erstellen von Google Cloud-Ressourcen. Für jeden Namespace gibt es einen dedizierten Config Connector-cnrm-controller-manager
-Pod, der das mit dem Namespace verknüpfte IAM-Dienstkonto imitiert.
Informationen zum Konfigurieren des Namespace-Modus finden Sie unter Config Connector im Namespace-Modus installieren.
Berechtigungen nach der Installation anpassen
Bei der Installation von Config Connector haben Sie möglicherweise eine temporäre einfache Rolle ausgewählt und dem Dienstkonto zugewiesen, für das Sie Config Connector konfiguriert haben. Wenn Sie Config Connector im Namespace-Modus konfiguriert haben, haben Sie möglicherweise mehr als ein IAM-Dienstkonto.
Nach Abschluss der Installation müssen Sie möglicherweise die umfassenden Berechtigungen entfernen oder aktualisieren, um Sicherheitsaspekte und Best Practices zu berücksichtigen.
Ein wichtiger Vorteil von Config Connector ist die einheitliche Tooling. Das bedeutet, dass Sie Config Connector selbst verwenden können, um IAM-Rollen und ‑Berechtigungen zu optimieren. Sie können die Ressourcen IAMPolicyMember oder IAMPartialPolicy in Config Connector verwenden, um IAM-Berechtigungen zu konfigurieren. Dazu ist ein IAM-Dienstkonto mit Administratorberechtigungen für Ihre Projekte, Ordner oder Organisation erforderlich. Dieses Dienstkonto muss so konfiguriert sein, dass es entweder im Clustermodus oder im Namespaced-Modus an die Config Connector-Installation gebunden wird.
In den folgenden Abschnitten finden Sie verschiedene Richtlinienbeispiele, in denen Config Connector zum Verwalten von IAM-Berechtigungen verwendet wird.
Berechtigung „Organisationsinhaber“
Führen Sie die folgenden Schritte aus, um die Berechtigungen des Config Connector zu erweitern, sodass er alle Projekte und Ordner für eine bestimmte Organisation verwalten kann:
Erstellen Sie das folgende YAML-Manifest:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Organization external: ORGANIZATION_ID
Ersetzen Sie Folgendes:
NAMESPACE
durch den Namen Ihres NamespaceSERVICE_ACCOUNT_NAME
durch den Namen Ihres DienstkontosHOST_PROJECT_ID
durch die Hostprojekt-ID Ihres Dienstkontosroles/owner
durch die entsprechende RolleORGANIZATION_ID
durch Ihre Organisations-ID
Wenden Sie das YAML-Manifest mit
kubectl
oder einem beliebigen Konfigurationsverwaltungstool auf Ihren Cluster an.
Berechtigung „Ordnerinhaber“
Führen Sie die folgenden Schritte aus, um die Berechtigungen des Config Connector zu erweitern, sodass er alle Projekte und Ordner in einem bestimmten Ordner verwalten kann:
Erstellen Sie das folgende YAML-Manifest:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Folder external: folders/FOLDER_ID
Ersetzen Sie Folgendes:
NAMESPACE
durch den Namen Ihres NamespaceSERVICE_ACCOUNT_NAME
durch den Namen Ihres DienstkontosHOST_PROJECT_ID
durch die Hostprojekt-ID Ihres Dienstkontosroles/owner
durch die entsprechende RolleFOLDER_ID
durch Ihre Ordner-ID
Wenden Sie das YAML-Manifest mit
kubectl
oder einem beliebigen Konfigurationsverwaltungstool auf Ihren Cluster an.
Berechtigungen des Projektinhabers
Führen Sie die folgenden Schritte aus, um es dem Config Connector zu ermöglichen, die Ressourcen eines bestimmten Projekts zu verwalten:
Erstellen Sie das folgende YAML-Manifest:
apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: name: iampolicymember-orglevel-permission namespace: NAMESPACE spec: member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com role: roles/owner resourceRef: kind: Project external: projects/PROJECT_ID
Ersetzen Sie Folgendes:
NAMESPACE
durch den Namen Ihres NamespaceSERVICE_ACCOUNT_NAME
durch den Namen Ihres DienstkontosHOST_PROJECT_ID
durch die Hostprojekt-ID Ihres Dienstkontosroles/owner
durch die entsprechende RollePROJECT_ID
durch die ID Ihres Zielprojekts
Wenden Sie das YAML-Manifest mit
kubectl
oder einem beliebigen Konfigurationsverwaltungstool auf Ihren Cluster an.
Vordefinierte Rollen
Wenn Sie die Berechtigungen für Config Connector stärker einschränken möchten, haben Sie die Möglichkeit, Ihrer Config Connector-Installation eine oder mehrere IAM-Rollen zuzuweisen. Dazu erstellen Sie einige IAMPolicyMember-Ressourcen oder eine kombinierte IAMPartialPolicy-Ressource. In der Regel werden dem Config Connector-Dienstkonto die im Folgenden aufgeführten Rollen zugewiesen:
Bearbeiter: Durch Zuweisen der Rolle Bearbeiter sind die meisten Config Connector-Funktionen verfügbar, mit Ausnahme von projekt- oder organisationsbezogenen Konfigurationen wie IAM-Änderungen.
IAM-Dienstkontoadministratorrolle: Mit Berechtigungen vom Typ
roles/iam.serviceAccountAdmin
kann Config Connector IAM-Dienstkonten konfigurieren.Resource Manager: Mit einer Resource Manager-Rolle wie
roles/resourcemanager.folderCreator
kann Config Connector Ordner und Organisationen verwalten.
Benutzerdefinierte Rollen
Wenn die vordefinierten Rollen nicht Ihren Anforderungen entsprechen, können Sie benutzerdefinierte Rollen mit von Ihnen festgelegten Berechtigungen definieren.
Weitere Informationen hierzu finden Sie unter Benutzerdefinierte Rollen erstellen und verwalten.