Benutzerdefinierte Rollen mit Deployment Manager verwalten

Hintergrund

Mit den benutzerdefinierten Rollen von Cloud Identity and Access Management können Sie detaillierte Berechtigungen für Nutzerkonten und Dienstkonten gewähren. Im Unterschied zu vordefinierten Rollen, die durch Google verwaltet und entsprechend aktualisiert werden, werden benutzerdefinierte Rollen von Ihrer Organisation verwaltet und aktualisiert, sobald neue Berechtigungen verfügbar sind.

Mit Cloud Deployment Manager lassen sich Ihre benutzerdefinierten Rollen einfacher konfigurieren und verwalten. Mit Deployment Manager können Sie Rollen mithilfe von Konfigurationsdateien beschreiben und diese dann in das Versionsverwaltungssystem Ihrer Wahl übernehmen. Deployment Manager und die Versionsverwaltung können gemeinsam für einen Ansatz verwendet werden, bei dem Konfigurationsdateien wie Quellcode behandelt werden. Dies erleichtert Folgendes:

  • Erfassen der Änderung benutzerdefinierter Rollen im Zeitablauf
  • Heraufstufen benutzerdefinierter Rollen in die jeweilige Einführungsphase, während sie getestet und validiert werden
  • Automatisieren der Bereitstellung von Rollen in Ihrer gesamten Organisation

Szenarien zum Verwalten benutzerdefinierter Rollen bei der Verwendung des Deployment Managers

Die Vorteile der Nutzung von Deployment Manager zum Verwalten benutzerdefinierter Rollen lassen sich z. B. anhand der folgenden Szenarien veranschaulichen:

  • Steuerung des Zugriffs auf neue Berechtigungen: Sie haben eine benutzerdefinierte Rolle mit Berechtigungen für einen Google Cloud Platform-Dienst. Durch den Dienst werden neue Betafunktionen hinzugefügt und neue Berechtigungen bereitgestellt. Ihre benutzerdefinierte Rolle übernimmt diese neuen Berechtigungen nicht automatisch – sie müssen manuell hinzugefügt werden. Solange die neuen Berechtigungen nicht der benutzerdefinierten Rolle hinzugefügt wurden, haben Nutzer in Ihrer Organisation keinen Zugriff auf die Betafunktionen. Mithilfe der Konfigurationsdateien von Deployment Manager und der Versionsverwaltung können Sie vorhandene Berechtigungen prüfen, Ihre benutzerdefinierten Rollen nach Bedarf aktualisieren und einen Überarbeitungsverlauf verwalten.
  • Verwaltung des Rollenlebenszyklus: Sie haben eine neue benutzerdefinierte Rolle, der Sie die Startphase ALPHA zugewiesen haben. Nachdem die benutzerdefinierte Rolle getestet und validiert wurde, können Sie mit Deployment Manager die Konfiguration der benutzerdefinierten Rolle aktualisieren und die Rolle in die BETA-Phase hochstufen, ohne die Google Cloud Platform Console verwenden zu müssen.
  • Übernahme benutzerdefinierter Rollen: Wenn Sie einen größeren Teil der Definitionen benutzerdefinierter Rollen in Ihrer Organisation einer Versionsverwaltung unterstellen, ist es leichter zu kommunizieren, aus Nutzungsmustern zu lernen und Einschränkungen für mehrere Projekte durchzusetzen.

Informationen zu Deployment Manager-Konfigurationsdateien

Deployment Manager verwendet drei verschiedene Dateitypen zur Beschreibung einer Bereitstellung. Jeder Typ wird nachfolgend erläutert:

  • Konfigurationen sind YAML-Dateien, mit denen Ressourcen und deren Eigenschaften beschrieben werden. Bei benutzerdefinierten Cloud IAM-Rollen enthält jede YAML-Datei alle Eigenschaften für eine oder mehrere benutzerdefinierte Rollen, z. B. den Namen, die Beschreibung und die Berechtigungen.
  • Mit Schemas werden alle möglichen Eigenschaften für eine bestimmte Ressource sowie die entsprechenden Standardwerte angegeben. Es gibt bei benutzerdefinierten Cloud IAM-Rollen Schemas für benutzerdefinierte Rollen auf Projektebene und auf Organisationsebene.
  • Vorlagen sind Jinja- oder Python-Dateien, mit denen Konfigurationen verbessert werden, indem Sie die Möglichkeit erhalten, eine Konfiguration in wiederverwendbare Teile zu untergliedern. Bei benutzerdefinierten Cloud IAM-Rollen werden zwei Vorlagen bereitgestellt: eine für benutzerdefinierte Rollen auf Projektebene und eine für benutzerdefinierte Rollen auf Organisationsebene.

Weitere Informationen zu diesen Typen finden Sie unter Grundlagen des Deployment Managers.

Hinweise

Wenn Sie nicht mit Deployment Manager vertraut sind, gehen Sie zuerst die Kurzanleitung durch. Führen Sie dann die folgenden Schritte aus:

    deploymentmanager,iam Deployment Manager and Cloud IAM gcloud_init
  1. Melden Sie sich bei Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, registrieren Sie sich hier für ein neues Konto.

  2. Wählen Sie in der Cloud Console auf der Projektauswahlseite ein Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

Wenn diese erforderlichen Schritte abgeschlossen sind, können Sie mit Deployment Manager und Cloud IAM Ihre benutzerdefinierten Rollen verwalten.

Berechtigungen für das Google APIs-Dienstkonto gewähren

Wenn Sie benutzerdefinierte Rollen mit dem Deployment Manager verwalten möchten, müssen Sie dem Google APIs-Dienstkonto zuerst die entsprechenden Berechtigungen gewähren. Dieses Konto wird standardmäßig für jede Organisation und jedes Projekt erstellt.

  1. Öffnen Sie die IAM-Seite in der Google Cloud Platform Console.
    Zur Seite "IAM"
  2. Klicken Sie auf Projekt auswählen, wählen Sie ein Projekt aus und klicken Sie auf Öffnen.
  3. Suchen Sie in der Mitgliederliste nach dem Mitglied mit dem Namen Google APIs-Dienst-Agent.
  4. Klicken Sie auf die Schaltfläche Bearbeiten , um die Rollen des Dienstkontos zu bearbeiten und fügen Sie anschließend die Rolle Rollen > Rollenadministrator hinzu.
  5. Klicken Sie auf Speichern, um die Rolle anzuwenden.

Nachdem Sie dem Google APIs-Dienstkonto die Berechtigung zum Verwalten benutzerdefinierter Rollen gewährt haben, können Sie mithilfe des Deployment Managers eine benutzerdefinierte Beispielrolle bereitstellen.

Benutzerdefinierte Rollen für Ihr Projekt bereitstellen

Wie im obigen Abschnitt beschrieben verwendet Deployment Manager eine Kombination von Konfigurationsdateien, um eine Bereitstellung zu beschreiben. Sehen Sie sich bezüglich Cloud IAM die folgenden zwei Beispieldateien für die benutzerdefinierten Rollen eines Projekts an:

project_custom_role.yaml

    imports:
    - path: project_custom_role.jinja

    resources:
    - name: custom-role
      type: project_custom_role.jinja
      properties:
        roleId: myCustomRole
        title: My Title
        description: My description.
        includedPermissions:
        - iam.roles.get
        - iam.roles.list
    

Diese YAML-Datei gibt die Eigenschaften einer benutzerdefinierten Rolle mit dem Namen custom-role an, die Berechtigungen für iam.roles.get und iam.roles.list erteilt. Beachten Sie, dass zweimal auf eine JINJA-Datei verwiesen wird. Dabei werden die Werte verwendet, die wie unten beschrieben von der Jinja-Vorlage bereitgestellt werden.

project_custom_role.jinja

    # Copyright 2017 Google LLC. All rights reserved.
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #     http://www.apache.org/licenses/LICENSE-2.0
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.

    resources:
    - name: custom-role
      type: gcp-types/iam-v1:projects.roles
      properties:
        parent: projects/{{ env["project"] }}        roleId: {{ properties["roleId"] }}        role:
          title: {{ properties["title"] }}          description: {{ properties["description"] }}          stage: {{ properties["stage"] }}          includedPermissions: {{ properties["includedPermissions"] }}    

Diese Jinja-Datei bietet eine Vorlage für eine benutzerdefinierte Rolle, mit der die Anzahl der Duplikate derselben Attribute in mehreren Rollen minimiert werden kann. Standardwerte werden aus einer .schema-Datei eingefügt, wenn die entsprechende YAML-Datei keine Werte für die einzelnen Attribute enthält.

So stellen Sie diese benutzerdefinierte Rolle mit Deployment Manager bereit:

  1. Laden Sie den Inhalt dieses GitHub-Repositories auf Ihren lokalen Rechner herunter.
  2. Rufen Sie im Terminalfenster das Verzeichnis examples/v2/iam_custom_role/jinja im heruntergeladenen Repository auf. Es enthält die Datei project_custom_role.yaml und die zugehörigen Jinja-Dateien.
  3. Führen Sie den folgenden Befehl aus, um die benutzerdefinierte Beispielrolle bereitzustellen und den Platzhalterwert [YOUR-DEPLOYMENT-NAME] durch einen Bereitstellungsnamen Ihrer Wahl zu ersetzen:

        gcloud deployment-manager deployments create \
           [YOUR-DEPLOYMENT-NAME] --config project_custom_role.yaml
        
  4. Waten Sie, bis der Vorgang abgeschlossen ist. Der Bereitstellungsfingerabdruck und eine Fortschrittsanzeige werden angezeigt:

        The fingerprint of the deployment is PUo2fmKdoFdJqiLViHjT3Q==
        Waiting for create [operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc]...done.
        
  5. Wenn der Vorgang erfolgreich war, wird die folgende Statusmeldung angezeigt:

        Create operation operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc completed successfully.
        NAME         TYPE                             STATE      ERRORS  INTENT
        custom-role  gcp-types/iam-v1:projects.roles  COMPLETED  []
        

Bereitgestellte benutzerdefinierte Rolle ansehen

So sehen Sie sich Ihre benutzerdefinierte Rolle in Deployment Manager an:

  1. Führen Sie in einem Terminalfenster den folgenden Befehl aus:

        gcloud deployment-manager deployments describe [YOUR-DEPLOYMENT-NAME]
        
  2. Sie sehen eine Beschreibung der Bereitstellung, einschließlich umfassender Informationen, z. B. zu ihrem Status und zu Fehlern.

        fingerprint: oaJoGesEFYvsAldP2bm5jQ==
        id: '3222872306422524501'
        insertTime: '2018-01-29T13:40:10.822-08:00'
        manifest: manifest-1517262010855
        name: [YOUR-DEPLOYMENT-NAME]
        operation:
        endTime: '2018-01-29T13:40:26.500-08:00'
        name: operation-1517262010573-563f1172be0c9-ce5f0242-239fe1af
        operationType: insert
        progress: 100
        startTime: '2018-01-29T13:40:11.535-08:00'
        status: DONE
        user: id-7201362145@my-example-project.iam.gserviceaccount.com
        NAME         TYPE                             STATE      INTENT
        custom-role  gcp-types/iam-v1:projects.roles  COMPLETED
        
  3. Sie erhalten detaillierte Informationen zur Konfiguration der benutzerdefinierten Rolle auch, wenn Sie das Manifest der Bereitstellung abrufen. Achten Sie in der Ausgabe des Befehls describe im obigen Schritt 2 auf die manifest-ID. Kopieren Sie diese ID einschließlich des Präfixes manifest- und ersetzen Sie damit den Platzhalterwert.

        gcloud deployment-manager manifests describe [YOUR-MANIFEST-ID] \
            --deployment [YOUR-DEPLOYMENT-NAME]
        
  4. Das Manifest enthält umfassende Informationen zur Bereitstellung der benutzerdefinierten Rolle, einschließlich der Rohinhalte der Quelldateien project_custom_role.yaml und project_custom_role.jinja. Beachten Sie insbesondere den resources-Block unten im Manifest, der die Details zur benutzerdefinierten Rolle zusammenfasst:

        ...
        resources:

    • name: custom-role properties: description: My description. includedPermissions:
      • iam.roles.get
      • iam.roles.list roleId: aCustomRole stage: ALPHA title: My Title resources:
      • name: custom-role type: gcp-types/iam-v1:projects.roles type: project_custom_role.jinja ...

So sehen Sie sich Ihre benutzerdefinierte Rolle in der Google Cloud Platform Console an:

  1. Öffnen Sie die IAM-Seite in der Google Cloud Platform Console.
    Zur Seite "IAM"
  2. Klicken Sie auf Auswählen.
  3. Wählen Sie ein Projekt aus und klicken Sie auf Öffnen.
  4. Klicken Sie im linken Menü auf Rollen.
  5. Klicken Sie in der Liste auf den Namen der neu erstellten benutzerdefinierten Rolle. Er sollte ähnlich wie im folgenden Screenshot aussehen: