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:
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.
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:
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.
Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.
Wählen Sie in der Projektauswahl die Organisation aus, für die Sie die Einschränkung
iam.disableServiceAccountKeyCreation
deaktivieren möchten.Geben Sie im Filter
iam.disableServiceAccountKeyCreation
ein: Klicken Sie dann in der Richtlinienliste auf Erstellen von Dienstkontoschlüsseln deaktivieren.Klicken Sie auf Richtlinie verwalten.
Achten Sie darauf, dass im Abschnitt Richtlinienquelle die Option Richtlinie der übergeordneten Ressource überschreiben ausgewählt ist.
Deaktivieren Sie unter Erzwingung die Erzwingung für diese Einschränkung der Organisationsrichtlinie.
Klicken Sie auf Richtlinie festlegen.
So setzen Sie Ihr Projekt von der Durchsetzung aus:
-
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. -
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 Wertenenforced
undnot_enforced
zu erstellen.Informationen zum Erstellen von Tag-Schlüsseln und -Werten finden Sie unter Neues Tag erstellen und definieren.
-
Hängen Sie das Tag
disableServiceAccountKeyCreation
an die Organisation an und legen Sie es auf den Wertenforced
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.
-
Hängen Sie für jedes Dienstkonto, das Sie von der Organisationsrichtlinie ausschließen möchten, das Tag
disableServiceAccountKeyCreation
an und legen Sie als Wertnot_enforced
fest. Wenn Sie einen Tag-Wert für ein Dienstkonto auf diese Weise festlegen, wird der von der Organisation übernommene Tag-Wert überschrieben. -
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 TagdisableServiceAccountKeyCreation: 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.
-
-
Sie benötigen die Rolle „Tag Administrator“ (
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:
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.
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:
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.
Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.
Wählen Sie in der Projektauswahl die Organisation aus, für die Sie die Einschränkung
iam.disableServiceAccountCreation
deaktivieren möchten.Geben Sie im Filter
iam.disableServiceAccountCreation
ein: Klicken Sie dann in der Richtlinienliste auf Erstellen von Dienstkonten deaktivieren.Klicken Sie auf Richtlinie verwalten.
Achten Sie darauf, dass im Abschnitt Richtlinienquelle die Option Richtlinie der übergeordneten Ressource überschreiben ausgewählt ist.
Deaktivieren Sie unter Erzwingung die Erzwingung für diese Einschränkung der Organisationsrichtlinie.
Klicken Sie auf Richtlinie festlegen.
So setzen Sie Ihr Projekt von der Durchsetzung aus:
-
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. -
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 Wertenenforced
undnot_enforced
zu erstellen.Informationen zum Erstellen von Tag-Schlüsseln und -Werten finden Sie unter Neues Tag erstellen und definieren.
-
Hängen Sie das Tag
disableServiceAccountCreation
an die Organisation an und legen Sie es auf den Wertenforced
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.
-
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 Wertnot_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. -
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 TagdisableServiceAccountCreation: 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.
-
-
Sie benötigen die Rolle „Tag Administrator“ (
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 ( 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“ ( 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. |