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:
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.
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:
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.
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 schließen Sie Ihr Projekt von der Durchsetzung aus:
-
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. -
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, 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 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.
-
-
Prüfen Sie, ob Sie die Rolle „Tag Administrator“ (
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:
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.
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:
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.
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 Erstellung 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 schließen Sie Ihr Projekt von der Durchsetzung aus:
-
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. -
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, 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 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.
-
-
Prüfen Sie, ob Sie die Rolle „Tag Administrator“ (
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 ( 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“ ( 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. |