Dienstkonten Rollen zuweisen

Wenn Sie IAM-Rollen zuweisen, können die Dienstkonten entweder als Ressource oder als Identität behandelt werden.

Ihre Anwendung nutzt ein Dienstkonto als Identität zur Authentifizierung bei den Google Cloud Platform-Diensten. Wenn bei Ihnen beispielsweise eine virtuelle Maschine (VM) von Compute Engine als Dienstkonto ausgeführt wird, können Sie dem Dienstkonto (der Identität) die Bearbeiterrolle für ein Projekt (die Ressource) zuweisen.

Vielleicht möchten Sie gleichzeitig festlegen, wer die VM starten kann. Weisen Sie dazu einem Nutzer (der Identität) die Rolle serviceAccountUser für das Dienstkonto (die Ressource) zu.

Informationen zu Dienstkonten und weitere Beispiele zur Nutzung von Dienstkonten als Ressource und Identität finden Sie unter Dienstkonten.

Voraussetzungen für diese Anleitung

  • Installieren Sie das gcloud-Befehlszeilentool, wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten.

  • Unter Informationen zu Rollen finden Sie eine Liste der vordefinierten Rollen, die Sie einem Dienstkonto zuweisen können.

Einem Dienstkonto Rollen für bestimmte Ressourcen zuweisen

Sie weisen einem Dienstkonto Rollen zu, damit das Dienstkonto die Berechtigung zur Durchführung bestimmter Aktionen mit den Ressourcen in Ihrem Cloud Platform-Projekt erhält. Sie können beispielsweise die Rolle storage.admin einem Dienstkonto zuweisen, damit es die Kontrolle über Objekte und Buckets in Google Cloud Storage hat.

Wenn Sie einem Dienstkonto Rollen zuweisen möchten, verwenden Sie eine der folgenden Methoden:

Console

Sie können Rollen von Dienstkonten ebenso verwalten wie Rollen von Nutzern in einem Projekt.

  1. Öffnen Sie in der Cloud Console die Seite IAM & Verwaltung.

    Zur Seite "IAM & Verwaltung"

  2. Klicken Sie auf Projekt auswählen, wählen Sie ein Projekt aus und klicken Sie auf Öffnen.

  3. Bestimmen Sie das Dienstkonto, dem Sie eine Rolle hinzufügen möchten.

    • Wenn sich das Dienstkonto nicht schon in der Mitgliederliste befindet, sind ihm keine Rollen zugewiesen. Klicken Sie auf Hinzufügen und geben Sie die E-Mail-Adresse des Dienstkontos ein.
    • Wenn sich das Dienstkonto bereits in der Mitgliederliste befindet, enthält es Rollen. Klicken Sie auf die Schaltfläche Bearbeiten , um die Rollen des Dienstkontos zu bearbeiten.
  4. Wählen Sie mindestens eine Rolle aus, die dem Dienstkonto zugewiesen werden soll.

  5. Klicken Sie auf Speichern, um die Rollen auf das Dienstkonto anzuwenden.

gcloud

Fügen Sie eine Rolle zu einem einzelnen Dienstkonto hinzu.

gcloud projects add-iam-policy-binding my-project-123 \
  --member serviceAccount:my-sa-123@my-project-123.iam.gserviceaccount.com \
  --role roles/editor

Der Befehl gibt die aktualisierte Richtlinie aus:

bindings:
- members:
  - user:email1@example.com
  role: roles/owner
- members:
  - serviceAccount:our-project-123@appspot.gserviceaccount.com
  - serviceAccount:123456789012-compute@developer.gserviceaccount.com
  - serviceAccount:my-sa-123@my-project-123.iam.gserviceaccount.com
  - user:email3@example.com
  role: roles/editor
- members:
  - user:email2@example.com
  role: roles/viewer
etag: BwUm38GGAQk=
version: 1

Informationen zum Gewähren des Zugriffs auf Dienstkonten als Identitäten für Projekte finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

API

Die folgende POST-Anfrage verwendet die Methode projects.setIamPolicy(), um dem Dienstkonto my-sa-123 Bearbeiterzugriff auf das Projekt my-project-123 zu gewähren. Der Anfragetext muss die neue Richtlinie enthalten, durch die dem Dienstkonto Berechtigungen zugewiesen werden. Bei jeder Rolle können mehrere Mitglieder vorhanden sein.

POST https://cloudresourcemanager.googleapis.com/v1/projects/my-project-123:setIamPolicy

{
    "policy":
    {
        "version": 1,
        "etag": "BwUqMvZQGfo=",
        "bindings": [
        {
            "role": "roles/editor",
            "members": [
                "serviceAccount:my-sa-123@my-project-123.iam.gserviceaccount.com",
                "user:robin@example.com"
            ]
        },
        {
            "role":"roles/owner",
            "members":
            [
                "user:hollis@example.com",
            ]
        },
        {
            "role":"roles/viewer",
            "members":
            [
                "user:john@example.com",
            ]
        },
        {
            "role":"roles/iam.serviceAccountUser",
            "members":
            [
                "user:robin@example.com"
            ]
        },
        ]
    },
}

Die Antwort enthält die neuen Richtlinien:

{
    "version": 1,
    "etag": "BwUqMvZQGfo=",
    "bindings": [
    {
        "role": "roles/editor",
        "members": [
            "serviceAccount:my-sa-123@my-project-123.iam.gserviceaccount.com",
            "user:robin@example.com"
        ]
    },
    {
        "role":"roles/owner",
        "members":
        [
            "user:hollis@example.com",
        ]
    },
    {
        "role":"roles/viewer",
        "members":
        [
            "user:john@example.com",
        ]
    },
    {
        "role":"roles/iam.serviceAccountUser",
        "members":
        [
            "user:robin@example.com"
        ]
    },
    ]
}

Rollen aufrufen, die einem Dienstkonto zugewiesen wurden

Sie können Rollen in Dienstkonten genauso wie Rollen für Nutzer in Ihrem Projekt aufrufen:

  • Öffnen Sie in der Cloud Console die Seite "IAM".

    IAM-Seite öffnen

  • Klicken Sie auf Projekt auswählen.
  • Wählen Sie Ihr Projekt aus und klicken Sie auf Öffnen.
  • Suchen Sie Ihr Dienstkonto in der Liste der Mitglieder, die mit Ihrem Projekt verknüpft sind. Die Rollen der Dienstkonten werden in der Spalte Rolle aufgeführt.

Eigentum und Zugriff auf ein Dienstkonto konfigurieren

Sie können bestimmten Nutzern die Inhaberschaft für und den Zugriff auf Dienstkonten gewähren, indem Sie diese als Ressource statt als Identität behandeln. Bei den Schritten in diesem Abschnitt werden Dienstkonten als Ressource behandelt. Weitere Informationen zu den Unterschieden zwischen den einzelnen Verwendungstypen finden Sie im Thema Dienstkonten.

Nutzer mit einfachen Projektinhaber- und Projektbearbeiterrollen können Dienstkonten bereits ändern. Möglicherweise möchten Sie jedoch einigen Nutzern erlauben, nur bestimmte Aktionen für Dienstkontoressourcen auszuführen.

Weisen Sie mit einer dieser Methoden einem Dienstkonto Nutzerberechtigungen zu:

Console

  1. Öffnen Sie in der Cloud Console die Seite IAM & Verwaltung.

    Zur Seite "IAM & Verwaltung"

  2. Klicken Sie auf Projekt auswählen, wählen Sie ein Projekt aus und klicken Sie auf Öffnen.

  3. Klicken Sie in der linken Navigationsleiste auf Dienstkonten.

  4. Wählen Sie ein Dienstkonto aus und klicken Sie auf Infofeld anzeigen. Alle Nutzer, die Zugriff auf das Dienstkonto haben, werden angezeigt.

  5. Klicken Sie auf Mitglied hinzufügen.

  6. Fügen Sie die E-Mail-Adresse eines Projektmitglieds hinzu.

  7. Wählen Sie eine Rolle für das Mitglied aus, um festzulegen, zu welchen Aktionen mit dem Dienstkonto dieses Mitglied berechtigt ist.

  8. Klicken Sie auf Hinzufügen, um dem Projektmitglied die Rolle zuzuweisen.

gcloud

Gesamte Richtlinie aktualisieren:

Rufen Sie zuerst die Richtlinie ab, die Sie ändern möchten, und schreiben Sie sie in eine JSON-Datei. Mit dem Flag --format können Sie die Ausgabeformate auswählen (verfügbar sind JSON, YAML und Text). In den anderen Beispielen auf dieser Seite werden die standardmäßigen Textausgabeformate verwendet, aber in diesem Beispiel wird die Ausgabe in die JSON-Datei policy.json geschrieben, um die vorhandenen Richtlinie zu ändern, bevor sie festgelegt wird.

gcloud iam service-accounts get-iam-policy \
  my-sa-123@my-project-123.iam.gserviceaccount.com \
  --format json > policy.json

Beachten Sie, dass durch diesen Befehl nur eine Richtlinie zurückgegeben wird, die für das Dienstkonto selbst festgelegt wurde. Wenn für das Dienstkonto keine Richtlinie festgelegt ist, enthält die JSON-Datei einen standardmäßigen etag-Wert und nichts anderes.

Wenn keine Richtlinie vorhanden ist, können Sie entweder anhand der unten beschriebenen Schritte eine neue Richtlinie mit einer einzelnen Bindung festlegen oder die Richtlinie manuell erstellen, indem Sie die JSON-Datei in den folgenden Schritten als Vorlage verwenden.

Ist hingegen bereits eine Richtlinie in Kraft, sieht der Inhalt der ausgegebenen Datei policy.json etwa so aus:

{
  "bindings": [
    {
      "members": [
        "user:hollis@example.com"
      ],
      "role": "roles/owner"
    }
  ],
  "etag": "BwUqLaVeua8="
}

Ändern Sie die Datei policy.json in einem Texteditor. Fügen Sie dafür ein neues Objekt in das Array bindings ein, das die Gruppenmitglieder und ihre Rollen definiert. Erstellen Sie das Array bindings, falls es nicht bereits vorhanden ist. Um robin@example.com die Rolle serviceAccountUser zuzuweisen, müssen Sie das obige Beispiel so ändern:

{
    "bindings": [
    {
        "role": "roles/iam.serviceAccountUser",
        "members": [
            "user:robin@example.com"
        ]
    },
    {
        "role": "roles/owner",
        "members": [
            "user:hollis@example.com"
        ]
    }
    ],
    "etag": "BwUqLaVeua8="
}

Aktualisieren Sie die Richtlinie, indem Sie den folgenden Befehl ausführen:

gcloud iam service-accounts set-iam-policy \
  my-sa-123@my-project-123.iam.gserviceaccount.com policy.json

Der Befehl gibt die aktualisierte Richtlinie aus:

bindings:
- members:
  - user:robin@example.com
  role: roles/iam.serviceAccountUser
- members:
  - hollis@example.com
  role: roles/owner
etag: BwUjMhXbSPU=
version: 1

Einzelne Bindung hinzufügen:

Sie können einer neuen oder vorhandenen Richtlinie eine einzelne Bindung hinzufügen, indem Sie den folgenden Befehl ausführen:

gcloud iam service-accounts add-iam-policy-binding \
  my-sa-123@my-project-123.iam.gserviceaccount.com \
  --member='user:jane@example.com' --role='roles/editor'

Durch den Befehl wird die aktualisierte Richtlinie ausgegeben:

bindings:
- members:
  - user:robin@example.com
  role: roles/iam.serviceAccountUser
- members:
  - user:hollis@example.com
  role: roles/owner
- members:
  - user:jane@example.com
  role: roles/editor
etag: BwUqKjVeua8=
version: 1

Einzelne Bindung entfernen:

Sie können eine einfache Verknüpfung aus vorhandenen Richtlinien entfernen, indem Sie den folgenden Befehl ausführen:

gcloud iam service-accounts remove-iam-policy-binding \
    my-sa-123@my-project-123.iam.gserviceaccount.com \
    --member='user:jane@example.com' --role='roles/editor'

Durch den Befehl wird die aktualisierte Richtlinie ausgegeben:

bindings:
- members:
  - user:robin@example.com
  role: roles/iam.serviceAccountUser
- members:
  - user:hollis@example.com
  role: roles/owner
etag: BwUqNkVeua8=
version: 1

API

Anfrage

POST https://iam.googleapis.com/v1/projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com:setIamPolicy

Der Anfragetext muss die zuzuweisenden Richtlinien enthalten:

{
    "policy":
    {
        "etag": "BwUqLaVeua8=",
        "bindings": [
        {
            "role": "roles/iam.serviceAccountUser",
            "members": [
                "user:robin@example.com"
            ]
        },
        {
            "role": "roles/owner",
            "members": [
                "user:hollis@example.com"
            ]
        }
        ]
    },
}

Die Antwort enthält die aktualisierte Richtlinie:

{
    "etag": "BwUqMqbViM8=",
    "bindings": [
    {
        "role": "roles/iam.serviceAccountUser",
        "members": [
            "user:robin@example.com"
        ]
    },
    {
        "role": "roles/owner",
        "members": [
        "user:hollis@example.com"
        ]
    }
    ]
}

Vorhandene Rollen für ein Dienstkonto aufrufen

Da Dienstkonten wie Ressourcen behandelt werden können, haben sie wie andere Google Cloud-Ressourcen auch Cloud IAM-Richtlinien. Wenn Sie sich also die Mitglieder ansehen möchten, denen Rollen hinsichtlich eines bestimmten Dienstkontos zugewiesen wurden, rufen Sie mithilfe der Methode serviceAccounts.getIamPolicy(), der GCP Console oder dem gcloud-Tool die Cloud IAM-Richtlinie für dieses Dienstkonto auf.

Console

  1. Öffnen Sie in der Cloud Console die Seite IAM & Verwaltung.

    Zur Seite "IAM & Verwaltung"

  2. Klicken Sie auf Projekt auswählen, wählen Sie ein Projekt aus und klicken Sie auf Öffnen. Auf dieser Seite werden alle Nutzer und ihre jeweiligen Rollen für dieses Projekt aufgelistet.

  3. Klicken Sie in der linken Navigationsleiste auf Dienstkonten.

  4. Klicken Sie das Kästchen neben dem gewünschten Dienstkonto an und dann auf Infofeld anzeigen. Eine Liste der Rollen, die für das Dienstkonto zugewiesen wurden, wird angezeigt. Wenn Sie eine Rolle maximieren, können Sie die Mitglieder sehen, denen diese Rolle für das Dienstkonto zugewiesen wurde.

gcloud

Führen Sie den folgenden Befehl aus, um eine Richtlinie für ein Dienstkonto zu erhalten:

gcloud iam service-accounts get-iam-policy \
    my-sa-123@my-project-123.iam.gserviceaccount.com

Daraufhin wird die Richtlinie etwa so ausgegeben:

bindings:
- members:
  - user:hollis@example.com
  role: roles/owner
- members:
  - user:robin@example.com
  role: roles/iam.serviceAccountUser
etag: BwUqLaVeua8=
version: 1

Wenn Sie dem Dienstkonto keine Rolle zugewiesen haben, wird in der Ausgabe lediglich ein etag-Wert angezeigt:

API

Die folgenden Code-Snippets rufen die IAM-Richtlinie für das Dienstkonto my-sa-123@my-project-123.iam.gserviceaccount.com ab.

Anfrage

POST https://iam.googleapis.com/v1/projects/my-project-123/serviceAccounts/my-sa-123@my-project-123.iam.gserviceaccount.com:getIamPolicy
Response:

{
    "etag": "BwUqLaVeua8=",
    "bindings": [
    {
        "role": "roles/iam.serviceAccountUser",
        "members": [
            "user:robin@example.com"
        ]
    }
    ]
}

Wenn Sie dem Dienstkonto keine Rolle zugewiesen haben, enthält die Antwort lediglich einen etag-Wert:

Weitere Informationen zu IAM-Richtlinien finden Sie unter Richtlinie.