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 Compute Engine Virtual Machine (VM) als Dienstkonto ausgeführt wird, können Sie die Bearbeiterrolle dem Dienstkonto (der Identität) 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 in 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. Zum Beispiel können Sie die Rolle storage.admin einem Dienstkonto zuweisen, damit es die Kontrolle über Objekte und Buckets in Google Cloud Storage erhält.

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

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

    Weiter zur Seite "IAM & Verwaltung"

  2. Wählen Sie Ihr Projekt aus und klicken Sie auf Weiter.

  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 Drop-down-Liste unter Rolle(n) für das Dienstkonto, das Sie bearbeiten möchten.
  4. Wählen Sie mindestens eine Rolle aus, die dem Dienstkonto zugewiesen werden soll.

  5. Klicken Sie auf Hinzufügen oder Speichern, um dem Dienstkonto die Rollen zuzuweisen.

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

Durch den Befehl wird die aktualisierte Richtlinie ausgegeben:

bindings:
- members:
  - user:email1@gmail.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@gmail.com
  role: roles/editor
- members:
  - user:email2@gmail.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 für Projektmitglieder zuweisen, ändern und widerrufen.

API

Die folgende POST-Anfrage nutzt die Methode projects.setIamPolicy(), um einem Dienstkonto my-sa-123 für das Projekt my-project-123 die Berechtigung zum Bearbeiten zuzuweisen. Der Anfragetext muss die neuen Richtlinien enthalten, durch die dem Dienstkonto Berechtigungen zugewiesen werden. Bei jeder Rolle können mehrere Mitglieder vorhanden sein.

POST https://cloudresourcemanager.googleapis.com/v1beta1/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:alice@gmail.com"
            ]
        },
        {
            "role":"roles/owner",
            "members":
            [
                "user:bob@gmail.com",
            ]
        },
        {
            "role":"roles/viewer",
            "members":
            [
                "user:john@gmail.com",
            ]
        },
        {
            "role":"roles/iam.serviceAccountUser",
            "members":
            [
                "user:alice@gmail.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:alice@gmail.com"
        ]
    },
    {
        "role":"roles/owner",
        "members":
        [
            "user:bob@gmail.com",
        ]
    },
    {
        "role":"roles/viewer",
        "members":
        [
            "user:john@gmail.com",
        ]
    },
    {
        "role":"roles/iam.serviceAccountUser",
        "members":
        [
            "user:alice@gmail.com"
        ]
    },
    ]
}

Inhaberschaft und Zugriff auf ein Dienstkonto konfigurieren

Sie können bestimmten Nutzern die Inhaberschaft über 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 Projekteigentümer- und Projektbearbeiterrollen können bereits Dienstkonten ändern, aber Sie können den Zugriff für Nutzer so einschränken, dass sie nur zu bestimmten Aktionen bei Dienstkontoressourcen berechtigt sind.

Verwenden Sie eine der folgenden Methoden, um einem Dienstkonto Nutzerberechtigungen zu gewähren:

Console

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

    Weiter zur Seite "IAM & Verwaltung"

  2. Wählen Sie Ihr Projekt aus und klicken Sie auf Weiter.

  3. Klicken Sie in der linken Navigationsleiste auf Dienstkonten.

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

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

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

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

gcloud

Alle Richtlinien aktualisieren:

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

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, sieht der Inhalt der JSON-Datei etwa so aus:

{
  "etag": "ACAB"
}

Wenn keine bestehende 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:bob@gmail.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 noch nicht vorhanden ist. Sie würden das obige Beispiel so ändern, um alice@gmail.com die Rolle serviceAccountUser zuzuweisen:

{
    "bindings": [
    {
        "role": "roles/iam.serviceAccountUser",
        "members": [
            "user:alice@gmail.com"
        ]
    },
    {
        "role": "roles/owner",
        "members": [
            "user:bob@gmail.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:alice1@gmail.com
  role: roles/iam.serviceAccountUser
- members:
  - bob@gmail.com
  role: roles/owner
etag: BwUjMhXbSPU=
version: 1

Einzelne Verknüpfung 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@gmail.com' --role='roles/editor'

Durch den Befehl wird die aktualisierte Richtlinie ausgegeben:

bindings:
- members:
  - user:alice@gmail.com
  role: roles/iam.serviceAccountUser
- members:
  - user:bob@gmail.com
  role: roles/owner
- members:
  - user:jane@gmail.com
  role: roles/editor
etag: BwUqKjVeua8=
version: 1

Eine einzelne Verknüpfung 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@gmail.com' --role='roles/editor'

Durch den Befehl wird die aktualisierte Richtlinie ausgegeben:

bindings:
- members:
  - user:alice@gmail.com
  role: roles/iam.serviceAccountUser
- members:
  - user:bob@gmail.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:alice@gmail.com"
            ]
        },
        {
            "role": "roles/owner",
            "members": [
                "user:bob@gmail.com"
            ]
        },
        ]
    },
}

Die Antwort enthält die aktualisierte Richtlinie:

{
    "etag": "BwUqMqbViM8=",
    "bindings": [
    {
        "role": "roles/iam.serviceAccountUser",
        "members": [
            "user:alice@gmail.com"
        ]
    },
    {
        "role": "roles/owner",
        "members": [
        "user:bob@gmail.com"
        ]
    }
    ]
}

Vorhandene Rollen für ein Dienstkonto aufrufen

Da Dienstkonten wie Ressourcen behandelt werden können, haben sie wie andere GCP-Ressourcen auch Cloud IAM-Richtlinien. Wenn Sie sich also die Mitglieder eines bestimmten Dienstkontos ansehen möchten, denen Rollen 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 die Seite IAM & Verwaltung in der GCP Console.

    Weiter zur Seite "IAM & Verwaltung"

  2. Wählen Sie Ihr Projekt aus und klicken Sie auf Weiter. 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 klicken Sie dann oben rechts auf der Seite 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 so ausgegeben:

bindings:
- members:
  - user:bob@gmail.com
  role: roles/owner
- members:
  - user:alice@gmail.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:

etag: ACAB

API

Mit den folgenden Code-Snippets erhalten Sie die IAM-Richtlinie für das Dienstkonto my-sa-123@my-project-123.iam.gserviceaccount.com.

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:alice@gmail.com"
        ]
    }
    ]
}

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

{
  "etag": "ACAB"
}

Weitere Informationen zu IAM-Richtlinien finden Sie unter Richtlinie.

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Cloud IAM-Dokumentation