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, um Ihre verwalteten Dienste auszuführen. Die Berechtigungen roles/owner und roles/editor gewähren diese Berechtigungen zwar auch, allerdings ist die enger definierte Rolle aus Sicherheitsgründen besser geeignet.

Ressourcenmodell

IAM wendet IAM-Richtlinien für Ressourcen an, um zu bestimmen, wer Aktionen 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 zu, indem Sie den Anweisungen in Gewährung, Änderung und Widerruf des Zugangs zu Ressourcen folgen, oder das Google Cloud SDK add-iam-policy-binding Befehl verwenden, 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 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 der Dienstnutzerebene zuweisen. Berechtigungen auf Dienstnutzerebene setzen voraus, dass die Anfrage an die Service Control API mindestens eine gültige Dienstnutzer-Projekt-ID enthält. Sie können die Rollen beispielsweise durch folgenden Befehl 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.