Der Aufrufer benötigt die folgenden dienstbezogenen IAM-Berechtigungen (Identity and Access Management), um die Service Control API für einen verwalteten Dienst aufzurufen:
services.check
erfordert die Berechtigungservicemanagement.services.check
.services.report
erfordert die Berechtigungservicemanagement.services.report
.services.allocateQuota
erfordert die Berechtigungservicemanagement.services.quota
.
Die IAM-Rollen roles/servicemanagement.serviceController
, roles/owner
und roles/editor
enthalten diese Berechtigungen und können jeweils verwendet werden, um sie zu gewähren. Wir empfehlen die IAM-Rolle roles/servicemanagement.serviceController
zum Ausführen Ihrer verwalteten Dienste. Obwohl roles/owner
und roles/editor
diese Berechtigungen auch gewähren, ist die engere Rolle aus Sicherheitsgründen besser geeignet.
Ressourcenmodell
IAM wendet IAM-Richtlinien für Ressourcen an, um zu steuern, welcher Nutzer welche Vorgänge ausführen kann. Die Service Control API stellt ihre Funktionen mithilfe der folgenden Ressourcen bereit:
- Diensterstellerprojekt: Zu einem Diensterstellerprojekt können null oder mehr verwaltete Dienste gehören. Das Diensterstellerprojekt ist den Diensten in dieser Hierarchie übergeordnet.
- Verwalteter Dienst: Ein verwalteter Dienst kann null oder mehr Dienstnutzer haben.
- Dienstnutzer: Ein Dienstnutzer ist das Google Cloud-Projekt, das den Dienst aktiviert hat.
Die IAM-Zugriffssteuerung wird auf das Ressourcenmodell angewendet. Wenn eine Rolle auf Ebene des Diensterstellerprojekts gewährt wird, gilt sie für alle verwalteten Dienste, die zum Erstellerprojekt gehören. Wird eine Rolle auf Ebene des verwalteten Dienstes gewährt, gilt sie für alle Dienstnutzer des verwalteten Dienstes.
Aus Sicherheits- und Isolationsgründen wird dringend empfohlen, nur einen verwalteten Dienst pro Diensterstellerprojekt zu erstellen. Andernfalls können mehrere verwaltete Dienste betroffen sein, wenn das Diensterstellerprojekt beispielsweise keine Kontingente zum Senden von Anfragen an die Service Control API mehr hat.
Wenn Sie einen Dienst mit mehreren Mandanten haben, sollten Sie die Rolle roles/servicemanagement.serviceController
auf der Ebene des verwalteten Dienstes zuweisen. Hat der Dienst nur einen Mandanten, sodass also jeder Dienstnutzer seine eigene Instanz des verwalteten Dienstes erhält, gewähren Sie die Rolle auf Ebene des Dienstnutzers. Für die Verarbeitung von Hintergrunddaten, die alle Dienstnutzer betreffen, gewähren Sie die Rolle auf Ebene des verwalteten Dienstes.
Rollen gewähren
Zum Aufrufen der Service Control API müssen Sie den Aufrufern die erforderlichen Rollen gewähren. Sie können die Rollen über einen der folgenden drei Ansätze zuweisen. Sie müssen Eigentümer des Diensterstellerprojekts sein, damit Sie die erforderlichen Rollen gewähren können.
Rolle auf Ebene des Diensterstellerprojekts gewähren
Sie können die erforderlichen Rollen auf dem Projekt, zu dem ein verwalteter Dienst gehört, vergeben, indem Sie den Anweisungen in Zugriff auf Ressourcen erteilen, ändern und entziehen folgen, oder das Google Cloud CLI-Befehl add-iam-policy-binding verwenden, um die Rollen zu vergeben.
Beispielsweise können Sie die Rollen einem Dienstkonto zuweisen, z. B. foo@developer.gserviceaccount.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member serviceAccount:SERVICE_ACCOUNT --role roles/servicemanagement.serviceController
Ebenso können Sie die Rollen einem Nutzerkonto zuweisen, z. B. bar@gmail.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member user:USER_ACCOUNT --role roles/servicemanagement.serviceController
Rolle auf Dienstebene gewähren
Sie können die Rolle roles/servicemanagement.serviceController
mit curl
auf Dienstebene zuweisen. Im folgenden Beispiel wird der Alias gcurl
verwendet, der im Abschnitt Mit curl testen der Einstiegsanleitung definiert ist:
gcurl -d "{ 'policy': { 'bindings': [ { role: 'roles/servicemanagement.serviceController', members: 'serviceAccount:SERVICE_ACCOUNT' } ] } }" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy
Hinweis: Durch das obige Beispiel werden alle vorhandenen IAM-Richtlinien auf Dienstebene ersetzt. Wenn Sie die neue Rolle inkrementell gewähren möchten, müssen Sie alle IAM-Richtlinien in den Anfragetext aufnehmen.
Rolle auf Dienstnutzerebene gewähren
Sie können die Rolle roles/servicemanagement.serviceController
auf Dienstnutzerebene zuweisen. Berechtigungen auf Dienstnutzerebene erfordern, dass die Anfrage an die Service Control API mindestens eine gültige Dienstnutzer-ID enthalten muss. Im folgenden Beispiel wird der Alias gcurl
verwendet, der im Abschnitt Mit curl testen der Einstiegsanleitung definiert ist:
gcurl -d "{ 'policy': { 'bindings': [ { role: 'roles/servicemanagement.serviceController', members: 'serviceAccount:SERVICE_ACCOUNT' } ] } }" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME/consumers/CONSUMER_PROJECT_NUMBER:setIamPolicy
Hinweis: Durch das obige Beispiel werden alle vorhandenen IAM-Richtlinien auf Projektebene für den Nutzer ersetzt. Wenn Sie die neue Rolle inkrementell gewähren möchten, müssen Sie alle IAM-Richtlinien in den Anfragetext aufnehmen.
Weitere Informationen finden Sie im Autorisierungsleitfaden für die Google Cloud Platform.