Benutzerdefinierte Rollen mit Deployment Manager verwalten

Hintergrund

Mit den benutzerdefinierten Rollen von Identity and Access Management können Sie detaillierte Berechtigungen für Nutzer- 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 Verwaltung benutzerdefinierter Rollen mit Deployment Manager 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-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 Beta-Features. 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 ohne die Google Cloud Console hochstufen.
  • Informationen zur Übernahme benutzerdefinierter Rollen: Je mehr Definitionen benutzerdefinierter Rollen in Ihrer Organisation der Versionsverwaltung unterliegen, desto leichter ist es, diese zu teilen, Nutzungsmuster auszuwerten und Zugriffskontrollen für mehrere Projekte verbindlich festzulegen.

Informationen zu Deployment Manager-Konfigurationsdateien

Deployment Manager verwendet drei verschiedene Dateitypen zur Beschreibung einer Bereitstellung. Diese Typen werden nachfolgend erläutert:

  • Konfigurationen sind YAML-Dateien, mit denen Ressourcen und deren Eigenschaften beschrieben werden. Bei benutzerdefinierten 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 IAM-Rollen Schemas für benutzerdefinierte Rollen auf Projektebene und Organisationsebene.
  • Vorlagen sind Jinja- oder Python-Dateien, mit denen Konfigurationen verbessert werden, da Sie damit die Möglichkeit erhalten, eine Konfiguration in wiederverwendbare Teile zu untergliedern. Für benutzerdefinierte 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.

Hinweis

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

  1. Melden Sie sich bei Ihrem Google-Konto an.

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

  2. Wählen Sie in der Cloud Console auf der Seite für die Projektauswahl 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.

  4. Deployment Manager and IAM APIs aktivieren.

    Aktivieren Sie die APIs

  5. Installieren und initialisieren Sie das Cloud SDK.

Wenn diese erforderlichen Schritte abgeschlossen sind, können Sie mit Deployment Manager und 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. Rufen Sie in der Cloud Console die Seite IAM auf.

    Zur Seite "IAM"

  2. Suchen Sie in der Mitgliederliste nach dem Mitglied mit dem Namen Google APIs-Dienst-Agent.

  3. Klicken Sie auf die Schaltfläche Bearbeiten , um die Rollen des Dienstkontos zu bearbeiten. Fügen Sie anschließend die Rolle Rollen > Rollenadministrator hinzu.

  4. 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 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-Repositorys 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. Warten 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 Cloud Console an:

  1. Rufen Sie in der Cloud Console die Seite IAM auf.

    Zur Seite "IAM"

  2. Wählen Sie ein Projekt aus und klicken Sie auf Öffnen.

  3. Klicken Sie im linken Menü auf Rollen.

  4. Klicken Sie in der Liste auf den Namen der neu erstellten benutzerdefinierten Rolle. Er sollte ähnlich wie im folgenden Screenshot aussehen: