Fehlerbehebung bei Organisationsrichtlinien für Dienstkonten

Der Organisationsrichtliniendienst bietet 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 generiert werden und welche Schritte Sie unternehmen können, um diese Fehler zu beheben.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Organization Policy Administrator (roles/orgpolicy.policyAdmin) für die Organisation zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Beheben von Problemen mit Organisationsrichtlinien benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Fehlerbehebung bei deaktiviertem Erstellen 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 Erstellung von Dienstkontoschlüsseln deaktivieren.

Fehler beim Erstellen des Schlüssels

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

Konsole

In der Google Cloud -Konsole wird ein Dialogfeld mit der Überschrift Erstellung von Dienstkontoschlüsseln ist 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 Sie aufgrund einer Organisationsrichtlinie keinen Dienstkontoschlüssel erstellen können, empfehlen wir Ihnen, Folgendes zu tun:

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

    Es wird nicht empfohlen, Dienstkontoschlüssel für die Authentifizierung zu verwenden. Dies 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 sich mit einer sicheren Alternative authentifizieren, anstatt einen Dienstkontoschlüssel zu 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 der Einschränkung deaktivieren oder Ihr Projekt von der Erzwingung ausnehmen:

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

    1. Prüfen Sie, ob Sie die Rolle „Administrator für Organisationsrichtlinien“ (roles/orgpolicy.policyAdmin) auf Organisationsebene haben. Diese Rolle kann nur für Organisationen gewährt werden und wird nicht in der Rollenliste für Projekte angezeigt.

      Informationen zum Zuweisen von Rollen auf Organisationsebene 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 schließen Sie Ihr Projekt von der Durchsetzung aus:

    1. Prüfen Sie, ob Sie die Rolle „Tag Administrator“ (roles/resourcemanager.tagAdmin) und die Rolle „Organization Policy Administrator“ (roles/orgpolicy.policyAdmin) auf Organisationsebene haben. 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, sodass 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 deaktiviertem Erstellen 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 Erstellung von Dienstkonten deaktivieren.

Fehler beim Erstellen des Dienstkontos

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

Konsole

In der Google Cloud Console wird ein Dialogfeld mit der Überschrift Fehler beim Erstellen des Dienstkontos angezeigt. Im Dialogfeld wird die Meldung Fehler bei der Aktion. Bitte versuchen Sie es noch einmal. angezeigt.

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 von Dienstkonten

Wenn Sie aufgrund einer Organisationsrichtlinie kein Dienstkonto erstellen können, empfehlen wir Ihnen, Folgendes zu tun:

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

    Lesen Sie den Abschnitt Wann sind Dienstkonten zu verwenden?, 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 der Einschränkung deaktivieren oder Ihr Projekt von der Erzwingung ausnehmen:

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

    1. Prüfen Sie, ob Sie die Rolle „Administrator für Organisationsrichtlinien“ (roles/orgpolicy.policyAdmin) auf Organisationsebene haben. Diese Rolle kann nur für Organisationen gewährt werden und wird nicht in der Rollenliste für Projekte angezeigt.

      Informationen zum Zuweisen von Rollen auf Organisationsebene 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 Erstellung 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 schließen Sie Ihr Projekt von der Durchsetzung aus:

    1. Prüfen Sie, ob Sie die Rolle „Tag Administrator“ (roles/resourcemanager.tagAdmin) und die Rolle „Organization Policy Administrator“ (roles/orgpolicy.policyAdmin) auf Organisationsebene haben. 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, sodass 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 bestimmteGoogle Cloud -Dienste verwenden. Sie haben die folgenden Kennungen:

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

Allen Standarddienstkonten wird bei der Erstellung automatisch die Rolle „Bearbeiter“ (roles/editor) zugewiesen, sofern dieses Verhalten nicht durch eine Organisationsrichtlinie deaktiviert wird. Es gibt zwei Einschränkungen für Organisationsrichtlinien, die verhindern, dass die Rolle „Bearbeiter“ den Standarddienstkonten zugewiesen wird:

  • iam.automaticIamGrantsForDefaultServiceAccounts: Eine vordefinierte Einschränkung, die verhindert, dass Standarddienstkonten automatisch Rollen zugewiesen werden. Diese Einschränkung verhindert nicht, dass Sie Standarddienstkonten später die Rolle „Bearbeiter“ zuweisen.
  • constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts: Eine verwaltete Einschränkung, die verhindert, dass die Rollen „Bearbeiter“ und „Inhaber“ (roles/owner) jemals den Standarddienstkonten zugewiesen werden.

Fehler beim Zuweisen von einfachen Rollen zu Dienstkonten

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

Die iam.automaticIamGrantsForDefaultServiceAccounts-Einschränkung führt nicht zu Fehlern. Aufgrund dieser Einschränkung kann es jedoch vorkommen, dass eine Arbeitslast, die das Standarddienstkonto verwendet, nicht die erforderlichen Berechtigungen hat.

Wenn die Einschränkung constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts für Ihr Projekt erzwungen wird, wird eine Fehlermeldung wie die folgende angezeigt, wenn Sie versuchen, einem Standarddienstkonto die Rolle „Inhaber“ oder „Bearbeiter“ zuzuweisen:

Konsole

In der Google Cloud Console wird ein Dialogfeld mit der Überschrift Fehler beim Aktualisieren der IAM-Richtlinie angezeigt. Im Dialogfeld wird angezeigt, dass die Änderungen, die Sie an Ihrer IAM-Richtlinie vornehmen möchten, vom Administrator der Organisationsrichtlinien eingeschränkt wurden. Anschließend werden die Einschränkungen aufgeführt, die die Aktualisierung blockieren. Die aufgeführten Einschränkungen umfassen die Einschränkung customConstraints/custom.cantGrantProjectIamAdmin.

gcloud

ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION: Operation denied by
org policy on resource 'RESOURCE_ID':
["constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts":
"When this constraint is enforced, it prevents anyone from granting the Editor
role (roles/editor) or the Owner role (roles/owner) to the Compute Engine and
App Engine default service accounts, at any time. To learn more about default
service accounts, see
https://cloud.google.com/iam/help/service-accounts/default. Enforcing this
constraint prevents the default service accounts from automatically being
granted the Editor role (roles/editor). This might cause permission issues for
services that use these service accounts. To learn which roles to grant to each
service account, see
https://cloud.google.com/iam/help/service-accounts/troubleshoot-roles-default."].

REST

{
  "error": {
    "code": 400,
    "message": "Operation denied by org policy on resource
    'RESOURCE_ID':
    [\"constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts\":
    \"When this constraint is enforced, it prevents anyone from granting the
    Editor role (roles/editor) or the Owner role (roles/owner) to the Compute
    Engine and App Engine default service accounts, at any time. To learn more
    about default service accounts, see
    https://cloud.google.com/iam/help/service-accounts/default.\n Enforcing this
    constraint prevents the default service accounts from automatically being
    granted the Editor role (roles/editor). This might cause permission issues
    for services that use these service accounts. To learn which roles to grant
    to each service account, see
    https://cloud.google.com/iam/help/service-accounts/troubleshoot-roles-default.\"].",
    "status": "FAILED_PRECONDITION",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "CUSTOM_ORG_POLICY_VIOLATION",
        "domain": "googleapis.com",
        "metadata": {
          "customConstraints": "constraints/iam.managed.preventPrivilegedBasicRolesForDefaultServiceAccounts",
          "resource": "projects/PROJECT_ID"
        }
      }
    ]
  }
}

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

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

In der folgenden Tabelle sehen Sie, welche Rolle welchem Standarddienstkonto zugewiesen werden muss, je nachdem, welchen Dienst Sie verwenden:

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

Die Rollen, die das Standarddienstkonto benötigt, hängen von der Aufgabe ab, die Sie ausführen möchten. Welche Rollen erforderlich sind, erfahren Sie in der Dokumentation für die gewünschte Aufgabe oder unter Die richtigen vordefinierten Rollen finden.

Bei der Entscheidung, welche Rolle Sie zuweisen, sollten Sie die Best Practices befolgen, 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 des Cloud Build-Dienstkontos (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. Eine Liste der Cloud Deploy-Kurzanleitungen finden Sie in der Cloud Deploy-Dokumentation unter Kurzanleitungen.
Cloud Run Functions 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)

Die Rollen, die das Standarddienstkonto benötigt, hängen von der Aufgabe ab, die Sie ausführen möchten. Welche Rollen erforderlich sind, erfahren Sie in der Dokumentation für die gewünschte Aufgabe oder unter Die richtigen vordefinierten Rollen finden.

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)

Die Rollen, die das Standarddienstkonto benötigt, hängen von der Aufgabe ab, die Sie ausführen möchten. Welche Rollen erforderlich sind, erfahren Sie in der Dokumentation für die gewünschte Aufgabe oder unter Die richtigen vordefinierten Rollen finden.

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