Fehlerbehebung bei Organisationsrichtlinien für Dienstkonten

Der Organisationsrichtliniendienst hat mehrere vordefinierte und verwaltete Einschränkungen, die sich auf Dienstkonten in Ihrer Organisation auswirken können. Auf dieser Seite erfahren Sie, welche Fehler durch diese Organisationsrichtlinien verursacht werden und wie Sie sie beheben können.

Fehlerbehebung bei deaktivierter Erstellung von Dienstkontoschlüsseln

Wenn die Einschränkung iam.disableServiceAccountKeyCreation für Ihre Organisation erzwungen wird, können Sie keine Schlüssel für Dienstkonten in Ihrer Organisation erstellen. Weitere Informationen zu dieser Einschränkung finden Sie unter Erstellen von Dienstkontoschlüsseln deaktivieren.

Fehler beim Erstellen des Schlüssels

Wenn Sie versuchen, einen Dienstkontoschlüssel zu erstellen, die Aktion aber durch die iam.disableServiceAccountKeyCreation-Einschränkung blockiert wird, erhalten Sie die folgende Fehlermeldung:

Console

In der Google Cloud Console wird ein Dialogfeld mit der Überschrift Erstellung von Dienstkontoschlüsseln deaktiviert angezeigt. Im Dialogfeld wird angegeben, dass die Einschränkung iam.disableServiceAccountKeyCreation für Ihre Organisation erzwungen wird.

gcloud

ERROR: (gcloud.iam.service-accounts.keys.create) FAILED_PRECONDITION: Key
creation is not allowed on this service account.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: Key creation is not allowed on this service account.
    subject: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com?configvalue=SERVICE_ACCOUNT_ID%40PROJECT_ID.iam.gserviceaccount.com
    type: constraints/iam.disableServiceAccountKeyCreation

REST

{
  "error": {
    "code": 400,
    "message": "Key creation is not allowed on this service account.",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "constraints/iam.disableServiceAccountKeyCreation",
            "subject": "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com?configvalue=SERVICE_ACCOUNT_ID%40PROJECT_ID.iam.gserviceaccount.com",
            "description": "Key creation is not allowed on this service account."
          }
        ]
      }
    ]
  }
}

Empfohlene Lösung für Fehler beim Erstellen von Dienstkontoschlüsseln

Wenn eine Organisationsrichtlinie das Erstellen eines Dienstkontoschlüssels verhindert, empfehlen wir Ihnen Folgendes:

  1. Prüfen Sie, ob ein Dienstkontoschlüssel erforderlich ist.

    Wir empfehlen nicht, Dienstkontoschlüssel für die Authentifizierung zu verwenden. Das liegt daran, dass Dienstkontoschlüssel zu einem Sicherheitsrisiko werden können, wenn sie nicht ordnungsgemäß verwaltet werden, wodurch Ihre Sicherheitslücken wie Bedrohungen durch Datenlecks, Rechteausweitung, Offenlegung von Informationen und Nachweisbarkeit erhöht werden.

    In den meisten Fällen sollten Sie anstelle eines Dienstkontoschlüssels eine sichere Alternative zur Authentifizierung verwenden.

  2. Wenn für Ihren Anwendungsfall ein Dienstkontoschlüssel erforderlich ist, deaktivieren Sie die Einschränkung iam.disableServiceAccountKeyCreation für Ihr Projekt.

Wenn Sie die Einschränkung für die Organisationsrichtlinie deaktivieren möchten, können Sie entweder die Erzwingung für die Einschränkung deaktivieren oder Ihr Projekt von der Erzwingung ausnehmen:

  • So deaktivieren Sie die Erzwingung der Einschränkung für die gesamte Organisation:

    1. Sie benötigen die Rolle „Administrator für Organisationsrichtlinien“ (roles/orgpolicy.policyAdmin) auf Organisationsebene. Diese Rolle kann nur für Organisationen gewährt werden und ist nicht in der Rollenliste für Projekte aufgeführt.

      Informationen zum Zuweisen von Rollen auf Ebene der Organisation finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    2. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

      Zu den Organisationsrichtlinien

    3. Wählen Sie in der Projektauswahl die Organisation aus, für die Sie die Einschränkung iam.disableServiceAccountKeyCreation deaktivieren möchten.

    4. Geben Sie im Filter iam.disableServiceAccountKeyCreation ein: Klicken Sie dann in der Richtlinienliste auf Erstellen von Dienstkontoschlüsseln deaktivieren.

    5. Klicken Sie auf Richtlinie verwalten.

    6. Achten Sie darauf, dass im Abschnitt Richtlinienquelle die Option Richtlinie der übergeordneten Ressource überschreiben ausgewählt ist.

    7. Deaktivieren Sie unter Erzwingung die Erzwingung für diese Einschränkung der Organisationsrichtlinie.

    8. Klicken Sie auf Richtlinie festlegen.

  • So setzen Sie Ihr Projekt von der Durchsetzung aus:

    1. Sie benötigen die Rolle „Tag Administrator“ (roles/resourcemanager.tagAdmin) und die Rolle „Administrator für Organisationsrichtlinien“ (roles/orgpolicy.policyAdmin) auf Organisationsebene. Informationen zum Zuweisen von Rollen auf Organisationsebene finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
    2. Erstellen Sie auf Organisationsebene einen Tag-Schlüssel und einen Tag-Wert, mit denen Sie festlegen, ob eine Ressource von der Organisationsrichtlinie ausgenommen werden soll. Wir empfehlen, ein Tag mit dem Schlüssel disableServiceAccountKeyCreation und den Werten enforced und not_enforced zu erstellen.

      Informationen zum Erstellen von Tag-Schlüsseln und -Werten finden Sie unter Neues Tag erstellen und definieren.

    3. Hängen Sie das Tag disableServiceAccountKeyCreation an die Organisation an und legen Sie es auf den Wert enforced fest. Alle Ressourcen in der Organisation übernehmen diesen Tag-Wert, sofern er nicht mit einem anderen Tag-Wert überschrieben wird.

      Informationen zum Anhängen von Tags an Ressourcen finden Sie unter Tags an Ressourcen anhängen.

    4. Hängen Sie für jedes Dienstkonto, das Sie von der Organisationsrichtlinie ausschließen möchten, das Tag disableServiceAccountKeyCreation an und legen Sie als Wert not_enforced fest. Wenn Sie einen Tag-Wert für ein Dienstkonto auf diese Weise festlegen, wird der von der Organisation übernommene Tag-Wert überschrieben.
    5. Erstellen oder aktualisieren Sie die Organisationsrichtlinie, die das Erstellen von Dienstkontoschlüsseln verhindert, damit die Einschränkung nicht für ausgenommene Ressourcen erzwungen wird. Diese Richtlinie sollte die folgenden Regeln enthalten:

      • Konfigurieren Sie die Einschränkung iam.disableServiceAccountKeyCreation so, dass sie für Ressourcen mit dem Tag disableServiceAccountKeyCreation: not_enforced nicht erzwungen wird. Die Bedingung in dieser Regel sollte so aussehen:

        "resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyCreation', 'not_enforced')"
        
      • Konfigurieren Sie die Einschränkung iam.disableServiceAccountKeyCreation so, dass sie für alle anderen Ressourcen erzwungen wird.

Fehlerbehebung bei deaktivierter Erstellung von Dienstkonten

Wenn die Einschränkung iam.disableServiceAccountCreation für Ihre Organisation erzwungen wird, können Sie in keinem Projekt in Ihrer Organisation Dienstkonten erstellen. Weitere Informationen zu dieser Einschränkung finden Sie unter Erstellen von Dienstkonten deaktivieren.

Fehler beim Erstellen des Dienstkontos

Wenn Sie versuchen, ein Dienstkonto zu erstellen, die Aktion aber durch die Einschränkung iam.disableServiceAccountCreation blockiert wird, erhalten Sie die folgende Fehlermeldung:

Console

In der Google Cloud Console wird ein Dialogfeld mit der Überschrift Erstellen des Dienstkontos fehlgeschlagen angezeigt. Im Dialogfeld wird angezeigt: Die versuchte Aktion ist fehlgeschlagen. Bitte versuchen Sie es noch einmal.

gcloud

ERROR: (gcloud.iam.service-accounts.create) FAILED_PRECONDITION: Service account
creation is not allowed on this project.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: Service account creation is not allowed on this project.
    subject: projects/PROJECT_ID/serviceAccounts/?configvalue=
    type: constraints/iam.disableServiceAccountCreation

REST

{
  "error": {
    "code": 400,
    "message": "Service account creation is not allowed on this project.",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "constraints/iam.disableServiceAccountCreation",
            "subject": "projects/PROJECT_ID/serviceAccounts/?configvalue=",
            "description": "Service account creation is not allowed on this project."
          }
        ]
      }
    ]
  }
}

Empfohlene Lösung für Fehler beim Erstellen eines Dienstkontos

Wenn eine Organisationsrichtlinie das Erstellen eines Dienstkontos verhindert, empfehlen wir Ihnen Folgendes:

  1. Prüfen Sie, ob ein Dienstkonto erforderlich ist.

    Sehen Sie sich den Artikel Verwendungsbedingungen für Dienstkonten an, um zu prüfen, ob für Ihren Anwendungsfall ein Dienstkonto erforderlich ist.

  2. Wenn für Ihren Anwendungsfall ein Dienstkonto erforderlich ist, deaktivieren Sie die Einschränkung iam.disableServiceAccountCreation für Ihr Projekt.

Wenn Sie die Einschränkung für die Organisationsrichtlinie deaktivieren möchten, können Sie entweder die Erzwingung für die Einschränkung deaktivieren oder Ihr Projekt von der Erzwingung ausnehmen:

  • So deaktivieren Sie die Erzwingung der Einschränkung für die gesamte Organisation:

    1. Sie benötigen die Rolle „Administrator für Organisationsrichtlinien“ (roles/orgpolicy.policyAdmin) auf Organisationsebene. Diese Rolle kann nur für Organisationen gewährt werden und ist nicht in der Rollenliste für Projekte aufgeführt.

      Informationen zum Zuweisen von Rollen auf Ebene der Organisation finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    2. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

      Zu den Organisationsrichtlinien

    3. Wählen Sie in der Projektauswahl die Organisation aus, für die Sie die Einschränkung iam.disableServiceAccountCreation deaktivieren möchten.

    4. Geben Sie im Filter iam.disableServiceAccountCreation ein: Klicken Sie dann in der Richtlinienliste auf Erstellen von Dienstkonten deaktivieren.

    5. Klicken Sie auf Richtlinie verwalten.

    6. Achten Sie darauf, dass im Abschnitt Richtlinienquelle die Option Richtlinie der übergeordneten Ressource überschreiben ausgewählt ist.

    7. Deaktivieren Sie unter Erzwingung die Erzwingung für diese Einschränkung der Organisationsrichtlinie.

    8. Klicken Sie auf Richtlinie festlegen.

  • So setzen Sie Ihr Projekt von der Durchsetzung aus:

    1. Sie benötigen die Rolle „Tag Administrator“ (roles/resourcemanager.tagAdmin) und die Rolle „Administrator für Organisationsrichtlinien“ (roles/orgpolicy.policyAdmin) auf Organisationsebene. Informationen zum Zuweisen von Rollen auf Organisationsebene finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
    2. Erstellen Sie auf Organisationsebene einen Tag-Schlüssel und einen Tag-Wert, mit denen Sie festlegen, ob eine Ressource von der Organisationsrichtlinie ausgenommen werden soll. Wir empfehlen, ein Tag mit dem Schlüssel disableServiceAccountCreation und den Werten enforced und not_enforced zu erstellen.

      Informationen zum Erstellen von Tag-Schlüsseln und -Werten finden Sie unter Neues Tag erstellen und definieren.

    3. Hängen Sie das Tag disableServiceAccountCreation an die Organisation an und legen Sie es auf den Wert enforced fest. Alle Ressourcen in der Organisation übernehmen diesen Tag-Wert, sofern er nicht mit einem anderen Tag-Wert überschrieben wird.

      Informationen zum Anhängen von Tags an Ressourcen finden Sie unter Tags an Ressourcen anhängen.

    4. Hängen Sie für jedes Projekt oder jeden Ordner, den Sie von der Organisationsrichtlinie ausschließen möchten, das Tag disableServiceAccountCreation an und legen Sie als Wert not_enforced fest. Wenn Sie einen Tag-Wert für ein Projekt oder einen Ordner auf diese Weise festlegen, wird der von der Organisation übernommene Tag-Wert überschrieben.
    5. Erstellen oder aktualisieren Sie die Organisationsrichtlinie, die das Erstellen von Dienstkonten verhindert, damit die Einschränkung nicht für ausgenommene Ressourcen erzwungen wird. Diese Richtlinie sollte die folgenden Regeln enthalten:

      • Konfigurieren Sie die Einschränkung iam.disableServiceAccountCreation so, dass sie für Ressourcen mit dem Tag disableServiceAccountCreation: not_enforced nicht erzwungen wird. Die Bedingung in dieser Regel sollte so aussehen:

        "resource.matchTag('ORGANIZATION_ID/disableServiceAccountCreation', 'not_enforced')"
        
      • Konfigurieren Sie die Einschränkung iam.disableServiceAccountCreation so, dass sie für alle anderen Ressourcen erzwungen wird.

Fehlerbehebung beim Zuweisen von Rollen für Standarddienstkonten

Standarddienstkonten werden automatisch erstellt, wenn Sie bestimmte Google Cloud-Dienste verwenden. Sie haben die folgenden Kennungen:

  • Standarddienstkonto des App Engine-Dienstes: PROJECT_ID@appspot.gserviceaccount.com
  • Standardmäßiges Compute Engine-Dienstkonto: PROJECT_NUMBER-compute@developer.gserviceaccount.com

Allen Standarddienstkonten wird beim Erstellen automatisch die Rolle „Bearbeiter“ (roles/editor) zugewiesen, es sei denn, die Einschränkung der Organisationsrichtlinie iam.automaticIamGrantsForDefaultServiceAccounts wird für Ihr Projekt erzwungen. Diese Einschränkung verhindert, dass die Rolle „Bearbeiter“ automatisch den Standarddienstkonten zugewiesen wird.

Fehler beim Zuweisen grundlegender Rollen zu Dienstkonten

Wenn die Einschränkung iam.automaticIamGrantsForDefaultServiceAccounts für Ihr Projekt erzwungen wird, können bei Arbeitslasten in Ihrem Projekt, die die Standarddienstkonten verwenden, Fehler aufgrund unzureichender Berechtigungen auftreten. Informationen dazu, welche Rollen einem Standarddienstkonto zugewiesen werden sollten, finden Sie unter Empfohlene Lösung zum Zuweisen von Rollen zu Standarddienstkonten.

Die iam.automaticIamGrantsForDefaultServiceAccounts-Einschränkung führt nicht von selbst zu Fehlern. Aufgrund dieser Einschränkung kann es jedoch sein, dass eine Arbeitslast, für die das Standarddienstkonto verwendet wird, nicht über die erforderlichen Berechtigungen verfügt.

Empfohlene Lösung zum Zuweisen von Rollen für Standarddienstkonten

Wenn eine Organisationsrichtlinie Sie daran hindert, einem Standarddienstkonto die Rolle „Bearbeiter“ oder „Inhaber“ zuzuweisen, sollten Sie eine weniger freizügige Rolle für das Dienstkonto finden. Welche Rolle das Dienstkonto benötigt, hängt vom verwendeten Dienst und von den Aufgaben ab, die Sie ausführen möchten.

In der folgenden Tabelle sehen Sie, welche Rolle Sie dem jeweiligen Standarddienstkonto je nach verwendetem Dienst zuweisen müssen:

Dienst Standarddienstkonto Zu gewährende Rolle
App Engine App Engine-Standarddienstkonto (PROJECT_ID@appspot.gserviceaccount.com) Rolle „Cloud Build-Konto“ (roles/cloudbuild.builds.builder)
Compute Engine Standardmäßiges Compute Engine-Dienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com)

Welche Rollen das Standarddienstkonto benötigt, hängt von der Aufgabe ab, die Sie ausführen möchten. Welche Rollen erforderlich sind, erfahren Sie in der Dokumentation für die Aufgabe, die Sie ausführen möchten, oder unter Vordefinierte Rollen auswählen.

Berücksichtigen Sie bei der Entscheidung, welche Rolle Sie gewähren möchten, die Best Practices, die auf der Seite Dienstkonten in der Compute Engine-Dokumentation beschrieben sind.

Cloud Build Standardmäßiges Compute Engine-Dienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com) Rolle „Cloud Build-Dienstkonto“ (roles/cloudbuild.builds.builder)
Cloud Deploy Standardmäßiges Compute Engine-Dienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com) Welche Rollen Sie diesem Dienstkonto zuweisen müssen, erfahren Sie in der Cloud Deploy-Kurzanleitung, die Ihrem Anwendungsfall entspricht. Weisen Sie dann die darin beschriebenen Rollen zu. Eine Liste der Cloud Deploy-Kurzanleitungen finden Sie in der Cloud Deploy-Dokumentation unter Kurzanleitungen.
Cloud Run-Funktionen und Cloud Functions Standardmäßiges Compute Engine-Dienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com)

Zum Bereitstellen von Funktionen: Cloud Build-Kontorolle (roles/cloudbuild.builds.builder)

Weitere Informationen finden Sie unter Benutzerdefiniertes Dienstkonto für Cloud Build.

Cloud Run Standardmäßiges Compute Engine-Dienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com)

Welche Rollen das Standarddienstkonto benötigt, hängt von der Aufgabe ab, die Sie ausführen möchten. Welche Rollen erforderlich sind, erfahren Sie in der Dokumentation für die Aufgabe, die Sie ausführen möchten, oder unter Vordefinierte Rollen auswählen.

Weitere Informationen zu Cloud Run-Rollen finden Sie in der Cloud Run-Dokumentation unter Zugriffssteuerung mit IAM.

Google Kubernetes Engine Standardmäßiges Compute Engine-Dienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com)

Rolle „Kubernetes Engine Default Node Service Account“ (roles/container.defaultNodeServiceAccount)

Weitere Informationen finden Sie unter IAM-Dienstkonten mit geringsten Berechtigungen verwenden.

Workflows Standardmäßiges Compute Engine-Dienstkonto (PROJECT_NUMBER-compute@developer.gserviceaccount.com)

Welche Rollen das Standarddienstkonto benötigt, hängt von der Aufgabe ab, die Sie ausführen möchten. Welche Rollen erforderlich sind, erfahren Sie in der Dokumentation für die Aufgabe, die Sie ausführen möchten, oder unter Vordefinierte Rollen auswählen.

Folgen Sie den Best Practices, die auf der Seite Zugriff auf Google Cloud-Ressourcen für einen Workflow gewähren in der Dokumentation zu Workflows beschrieben sind.