Zugriffssteuerung mit IAM


In diesem Thema wird beschrieben, wie Sie mit Identity and Access Management steuern, wie Config Connector Google Cloud-Ressourcen erstellen und verwalten kann.

Zum Installieren von Config Connector authentifizieren Sie sich, indem Sie ein IAM-Dienstkonto erstellen und dann mit Workload Identity for GKE die IAM-Dienstkonten an die Kubernetes-Dienstkonten binden. Mit IAM kann Config Connector Aktionen für bestimmte Ressourcen ausführen. Wenn Sie die Ihren Dienstkonten zugewiesenen Berechtigungen einschränken, haben Sie mehr Kontrolle darüber, welche Arten von Ressourcen Config Connector erstellen kann.

Sie können Ressourcen mit einem einzelnen Dienstkonto oder mit mehreren Dienstkonten verwalten.

Einzelnes Dienstkonto

Wenn Sie Config Connector mit dem GKE-Add-on oder manuell installieren, können Sie den Clustermodus in der ConfigConnector CustomResource festlegen. Im Clustermodus können Sie mit einem einzigen IAM-Dienstkonto Ressourcen erstellen und verwalten, auch wenn Sie mit Config Connector mehrere Projekte verwalten.

Das folgende Diagramm zeigt die Funktionsweise dieses Modus, bei dem zwei Projekte von demselben Dienstkonto verwaltet werden:

Diagramm, das zeigt, wie Config Connector mithilfe desselben Dienstkontos mehrere Projekte verwaltet

Mehrere Dienstkonten

Sie können mehrere Dienstkonten verwenden. Legen Sie dazu in der ConfigConnector CustomResource den Namespace-Modus fest. Im Namespace-Modus können Sie Berechtigungen basierend auf den jeweiligen Problemen der verschiedenen IAM-Dienstkonten aufteilen und die Berechtigungen auf verschiedene Kubernetes-Namespaces isolieren, da Sie für jeden Namespace ein anderes Dienstkonto verknüpfen können.

Wählen Sie den Namespace-Modus aus, wenn Sie:

  • IAM-Berechtigungen auf Kubernetes-Namespace-Ebene isolieren möchten.
  • Sie können damit rechnen, eine große Anzahl von Google Cloud-Ressourcen aus mehreren Google Cloud-Projekten in einem einzigen Cluster zu verwalten.

Beispiel: Sie erstellen 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. Auf diese Weise können Sie IAM-Berechtigungen für jedes Projekt trennen, sodass jedes Projekt einen eigenen, unzusammenhängenden Satz von Berechtigungen hat.

Das folgende Diagramm bietet einen Überblick über die Funktionsweise des Namespace-Modus, wobei jedes Projekt von einem anderen Dienstkonto verwaltet wird:

Diagramm, das zeigt, wie Config Connector mehrere Projekte mit den zwei verschiedenen Dienstkonten verwaltet

Im Namespace-Modus ist jedes IAM-Dienstkonto standardmäßig 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 cnrm-controller-manager-Config Connector-Pod, der die Identität des IAM-Dienstkontos annimmt, das dem Namespace zugeordnet ist.

Informationen zum Konfigurieren des Namespace-Modus finden Sie unter Config Connector mit einem Namespace-Modus installieren.

Berechtigungen nach der Installation anpassen

Während der Installation von Config Connector haben Sie möglicherweise eine temporäre einfache Rolle ausgewählt und die Rolle dem Dienstkonto zugewiesen, für das Sie Config Connector konfiguriert haben. Wenn Sie Config Connector im Namespace-Modus konfiguriert haben, haben Sie möglicherweise mehrere IAM-Dienstkonten.

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 sind einheitliche Tools. Das bedeutet, dass Sie Config Connector selbst verwenden können, um IAM-Rollen und -Berechtigungen zu optimieren. Mit den Ressourcen IAMPolicyMember oder IAMPartialPolicy in Config Connector können Sie IAM-Berechtigungen konfigurieren. Hierfür ist ein IAM-Dienstkonto mit Administratorberechtigungen für Ihre Projekte, Ordner oder Organisation erforderlich. Dieses Dienstkonto muss so konfiguriert sein, dass es entweder über den Clustermodus oder den Namespace-Modus an die Config Connector-Installation gebunden wird.

In den folgenden Abschnitten werden verschiedene Richtlinienbeispiele aufgeführt, die Config Connector zur Verwaltung von IAM-Berechtigungen verwenden.

Berechtigung „Organisationsinhaber“

Führen Sie die folgenden Schritte aus, um die Berechtigungen von Config Connector zu erweitern, damit alle Projekte und Ordner für eine bestimmte Organisation verwaltet werden können:

  1. 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 Namespace
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos
    • HOST_PROJECT_ID durch die Hostprojekt-ID Ihres Dienstkontos
    • roles/owner durch die entsprechende Rolle
    • ORGANIZATION_ID durch Ihre Organisations-ID
  2. 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 von Config Connector zu erweitern, damit alle Projekte und Ordner in einem bestimmten Ordner verwaltet werden können:

  1. 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 Namespace
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos
    • HOST_PROJECT_ID durch die Hostprojekt-ID Ihres Dienstkontos
    • roles/owner durch die entsprechende Rolle
    • FOLDER_ID durch Ihre Ordner-ID
  2. Wenden Sie das YAML-Manifest mit kubectl oder einem beliebigen Konfigurationsverwaltungstool auf Ihren Cluster an.

Projektinhaberberechtigungen

Führen Sie die folgenden Schritte aus, damit Config Connector die Ressourcen eines bestimmten Projekts verwalten kann:

  1. 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 Namespace
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos
    • HOST_PROJECT_ID durch die Hostprojekt-ID Ihres Dienstkontos
    • roles/owner durch die entsprechende Rolle
    • PROJECT_ID durch Ihre Zielprojekt-ID
  2. Wenden Sie das YAML-Manifest mit kubectl oder einem beliebigen Konfigurationsverwaltungstool auf Ihren Cluster an.

Vordefinierte Rollen

Wenn Sie Config Connector mehr Berechtigungen gewähren möchten, können Sie Ihrer Config Connector-Installation eine oder mehrere IAM-Rollen zuweisen. Dazu erstellen Sie einige IAMPolicyMember-Ressourcen oder eine kombinierte IAMPartialPolicy-Ressource. Die folgenden Rollen werden dem Config Connector-Dienstkonto in der Regel zugewiesen:

  • Bearbeiter: Mit der Rolle editor sind die meisten Config Connector-Features mit Ausnahme von projekt- oder organisationsweiten Konfigurationen wie IAM-Änderungen zulässig.

  • IAM-Rolle „Dienstkontoadministrator“: Mit der Berechtigung 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 erstellen.

Weitere Informationen hierzu finden Sie unter Benutzerdefinierte Rollen erstellen und verwalten.

Nächste Schritte