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.

Um Config Connector zu installieren, authentifizieren Sie sich, indem Sie ein IAM-Dienstkonto erstellen und dann die Workload Identity Federation for GKE 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, bei dem dasselbe Dienstkonto zwei Projekte verwaltet:

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

Mehrere Dienstkonten

Um mehrere Dienstkonten zu verwenden, können Sie den Namespace-Modus in Ihrer ConfigConnector-CustomResource festlegen. Im Namespace-Modus können Sie Berechtigungen basierend auf den jeweiligen Anforderungen verschiedener IAM-Dienstkonten aufteilen und Berechtigungen in verschiedenen Kubernetes-Namespaces trennen, da Sie jedem Namespace ein anderes Dienstkonto zuordnen können.

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

  • Sie möchten IAM-Berechtigungen auf Kubernetes-Namespaceebene isolieren.
  • Sie müssen eine große Anzahl von Google Cloud Ressourcen aus mehreren Google Cloud Projekten in einem einzigen Cluster verwalten.

Sie können beispielsweise ein IAM-Dienstkonto für jedes Projekt erstellen, Ressourcen aus jedem Projekt im selben Kubernetes-Namespace organisieren und dann das entsprechende IAM-Dienstkonto an den Kubernetes-Namespace binden. So können Sie IAM-Berechtigungen für jedes Projekt trennen, sodass jedes Projekt eine eigene, unabhängige Berechtigungsgruppe hat.

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

Diagramm, das zeigt, wie Config Connector mithilfe von zwei verschiedenen Dienstkonten mehrere Projekte verwaltet

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, um Google Cloud-Ressourcen zu erstellen. Für jeden Namespace gibt es einen speziellen Config Connector cnrm-controller-manager-Pod, der sich als das mit dem Namespace verknüpfte IAM-Dienstkonto ausgibt.

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

Berechtigungen nach der Installation anpassen

Möglicherweise haben Sie bei der Installation von Config Connector eine vorübergehende grundlegende Rolle ausgewählt und diese 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 mehr als ein IAM-Dienstkonto.

Nach Abschluss der Installation müssen Sie die umfassenden Berechtigungen möglicherweise entfernen oder aktualisieren, um sie an Sicherheitsaspekte und Best Practices anzupassen.

Ein wichtiger Vorteil von Config Connector ist die einheitliche Tool-Umgebung. Sie können also IAM-Rollen und -Berechtigungen direkt in Config Connector 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 Ihre Organisation erforderlich. Dieses Dienstkonto muss so konfiguriert sein, dass es entweder über den Cluster- oder den Namespace-Modus an die Config Connector-Installation gebunden wird.

In den folgenden Abschnitten finden Sie verschiedene Richtlinienbeispiele, bei denen IAM-Berechtigungen mit Config Connector verwaltet werden.

Berechtigung „Organisationsinhaber“

Führen Sie die folgenden Schritte aus, um die Berechtigungen des Config Connectors zu erweitern, sodass er alle Projekte und Ordner für eine bestimmte Organisation 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: Organization
       external: ORGANIZATION_ID
    

    Ersetzen Sie Folgendes:

    • Ersetzen Sie NAMESPACE durch den Namen Ihres Namespace.
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos
    • HOST_PROJECT_ID durch die ID des Hostprojekts 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 Tool zur Konfigurationsverwaltung auf Ihren Cluster an.

Berechtigung „Ordnerinhaber“

Führen Sie die folgenden Schritte aus, um die Berechtigungen des Config Connectors zu erweitern, sodass er alle Projekte und Ordner in einem bestimmten Ordner 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: Folder
       external: folders/FOLDER_ID
    

    Ersetzen Sie Folgendes:

    • Ersetzen Sie NAMESPACE durch den Namen Ihres Namespace.
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos
    • HOST_PROJECT_ID durch die ID des Hostprojekts 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 Tool zur Konfigurationsverwaltung 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:

  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:

    • Ersetzen Sie NAMESPACE durch den Namen Ihres Namespace.
    • SERVICE_ACCOUNT_NAME durch den Namen Ihres Dienstkontos
    • HOST_PROJECT_ID durch die ID des Hostprojekts Ihres Dienstkontos
    • roles/owner durch die entsprechende Rolle
    • PROJECT_ID durch die ID Ihres Zielprojekts
  2. Wenden Sie das YAML-Manifest mit kubectl oder einem beliebigen Tool zur Konfigurationsverwaltung 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: Wenn Sie die Rolle Bearbeiter zuweisen, sind die meisten Config Connector-Funktionen verfügbar, mit Ausnahme von projekt- oder organisationsbezogenen Konfigurationen wie IAM-Änderungen.

  • IAM-Rolle „Dienstkontoadministrator“: Wenn Sie Config Connector die Berechtigungen roles/iam.serviceAccountAdmin gewähren, kann er IAM-Dienstkonten konfigurieren.

  • Resource Manager: Wenn Sie eine Resource Manager-Rolle wie roles/resourcemanager.folderCreator gewähren, 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.

Nächste Schritte