Zugriffssteuerung für die Service Control API

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

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, wie unter Zugriff auf Ressourcen erteilen, ändern und entziehen beschrieben. 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 auf Dienstebene zuweisen, wie im folgenden Beispiel dargestellt:

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

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. Sie können die Rollen beispielsweise wie im folgenden Befehl gezeigt zuweisen:

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

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