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
Hinweis
-
Enable the IAM and Cloud Deployment Manager APIs.
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 dieBETA
-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:- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Deployment Manager and IAM APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Deployment Manager and IAM APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
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.
Öffnen Sie in der Google Cloud Console die Seite IAM.
Suchen Sie in der Liste der Hauptkonten das Hauptkonto mit dem Namen Google APIs-Dienst-Agent.
Klicken Sie auf die Schaltfläche Bearbeiten
, um die Rollen des Dienstkontos zu bearbeiten. Fügen Sie anschließend die Rolle Rollen > Rollenadministrator hinzu.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:
- Laden Sie den Inhalt dieses GitHub-Repositories auf Ihren lokalen Rechner herunter.
- 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. 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
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.
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:
Führen Sie in einem Terminalfenster den folgenden Befehl aus:
gcloud deployment-manager deployments describe your-deployment-name
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
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 diemanifest
-ID. Kopieren Sie diese ID einschließlich des Präfixesmanifest-
und ersetzen Sie damit den Platzhalterwert.gcloud deployment-manager manifests describe your-manifest-id \ --deployment your-deployment-name
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 Console an:
Öffnen Sie in der Google Cloud Console die Seite IAM.
Wählen Sie ein Projekt aus und klicken Sie auf Öffnen.
Klicken Sie im linken Menü auf Rollen.
Klicken Sie in der Liste auf den Namen der neu erstellten benutzerdefinierten Rolle. Er sollte ähnlich wie im folgenden Screenshot aussehen: