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 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.