Zugriffssteuerung für die Service Control API

Der Aufrufer benötigt die folgenden dienstbezogenen IAM-Berechtigungen (Identity and Access Management), um die Service Control API für einen verwalteten Dienst aufzurufen:

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 für das Projekt zuweisen, zu dem ein verwalteter Dienst gehört. Folgen Sie dazu der Anleitung unter Zugriff auf Ressourcen erteilen, ändern und entziehen oder verwenden Sie den Google Cloud CLI-Befehl add-iam-policy-binding, um die Rollen zuzuweisen.

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 des Leitfadens Erste Schritte definiert ist:

gcurl -d "{
  'policy': {
    'bindings': [ {
      role: 'roles/servicemanagement.serviceController',
      members: 'serviceAccount:SERVICE_ACCOUNT'
    } ]
  }
}" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy

Beachten Sie, dass das obige Beispiel alle vorhandenen IAM-Richtlinien auf Dienstebene ersetzt. Wenn Sie die neue Rolle schrittweise zuweisen 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 des Leitfadens Erste Schritte 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

Beachten Sie, dass das obige Beispiel alle vorhandenen IAM-Richtlinien auf Nutzerprojektebene ersetzt. Wenn Sie die neue Rolle schrittweise zuweisen möchten, müssen Sie alle IAM-Richtlinien in den Anfragetext aufnehmen.

Weitere Informationen finden Sie im Autorisierungsleitfaden für die Google Cloud Platform.