Nutzung von Dienstkonten einschränken

Im Resource Manager sind Einschränkungen verfügbar, mit denen Sie in Organisationsrichtlinien die Nutzung von IAM-Dienstkonten (Identity and Access Management) begrenzen können.

Viele dieser Einschränkungen bestimmen, ob Dienstkonten und andere Ressourcen auf bestimmte Weise erstellt oder konfiguriert werden können. Diese Einschränkungen sind nicht rückwirkend. Sie haben keinen Einfluss auf bereits erstellte und konfigurierte Dienstkonten.

Hinweis

Sie müssen die Berechtigung haben, Organisationsrichtlinien zu ändern, um Einschränkungen festzulegen. Die Rolle orgpolicy.policyAdmin hat beispielsweise die Berechtigung zum Festlegen von Einschränkungen für Organisationsrichtlinien. Lesen Sie unter Einschränkungen verwenden, wie Richtlinien auf Organisationsebene verwaltet werden.

Boolesche Einschränkungen

Die folgenden Einschränkungen sind Typen von booleschen Einschränkungen, die auf wahr oder falsch gesetzt sind.

Standarddienstberechtigungen für Standarddienstkonten deaktivieren

Einige Google Cloud-Dienste erstellen automatisch Standarddienstkonten. Wenn ein Standarddienstkonto erstellt wird, erhält es automatisch die Rolle "Bearbeiter" (roles/editor) für Ihr Projekt.

Zur Verbesserung der Sicherheit empfehlen wir Ihnen dringend, die automatische Rollenzuweisung zu deaktivieren. Verwenden Sie die boolesche Einschränkung iam.automaticIamGrantsForDefaultServiceAccounts, um die automatische Rollenzuweisung zu deaktivieren.

Erstellen von Dienstkonten deaktivieren

Sie können die boolesche Einschränkung iam.disableServiceAccountCreation verwenden, um die Erstellung neuer Dienstkonten zu deaktivieren. Auf diese Weise können Sie die Verwaltung von Dienstkonten zentralisieren, ohne die anderen Projektberechtigungen Ihrer Entwickler einzuschränken.

Wenn Sie diese Einschränkung in einem Projekt erzwingen, können einige Google Cloud-Dienste nicht automatisch Standarddienstkonten erstellen. Wenn das Projekt Arbeitslasten ausführt, für die eine Identitätsübernahme des Dienstkontos erforderlich ist, enthält das Projekt möglicherweise kein Dienstkonto, das von der Arbeitslast verwendet werden kann. Zur Behebung dieses Problems können Sie die Identitätswechsel zwischen Dienstkonten über Projekte hinweg aktivieren. Wenn Sie dieses Feature aktivieren, können Sie Dienstkonten in einem zentralisierten Projekt erstellen und diese Dienstkonten dann an Ressourcen in anderen Projekten anhängen.

Weitere Informationen zum Organisieren von Dienstkonten finden Sie unter Wo werden Dienstkonten erstellt?

Erstellen von Dienstkontoschlüsseln deaktivieren

Sie können die boolesche Einschränkung iam.disableServiceAccountKeyCreation verwenden, um die Erstellung neuer externer Dienstkontoschlüssel zu deaktivieren. Damit können Sie die Verwendung von nicht verwalteten, langfristigen Anmeldedaten für Dienstkonten steuern. Wenn diese Einschränkung festgelegt ist, können keine von Nutzern verwalteten Anmeldedaten für Dienstkonten in Projekten erstellt werden, die von der Einschränkung betroffen sind.

Hochladen von Dienstkontoschlüsseln deaktivieren

Mit der booleschen Einschränkung iam.disableServiceAccountKeyUpload können Sie das Hochladen externer öffentlicher Schlüssel in Dienstkonten deaktivieren. Wenn diese Einschränkung festgelegt ist, können Nutzer keine öffentlichen Schlüssel in Dienstkonten in Projekten hochladen, die von der Einschränkung betroffen sind.

Anhängen von Dienstkonten an Ressourcen in anderen Projekten deaktivieren

Jedes Dienstkonto befindet sich in einem Projekt. Sie können die boolesche Einschränkung iam.disableCrossProjectServiceAccountUsage verwenden, um zu verhindern, dass Dienstkonten in einem Projekt an Ressourcen in anderen Projekten angehängt werden.

Wenn Sie die Verwendung von Dienstkonten über Projekte hinweg zulassen möchten, finden Sie weitere Informationen unter Identitätswechsel für Dienstkonten über Projekte hinweg aktivieren.

Entfernen von Projektsperren einschränken, wenn Dienstkonten projektübergreifend verwendet werden

Wenn Sie zulassen, dass die Dienstkonten eines Projekts an Ressourcen in anderen Projekten angehängt werden, fügt IAM eine Projektsperre hinzu, die das Löschen des Projekts verhindert. Standardmäßig kann jeder, der die Berechtigung resourcemanager.projects.updateLiens für das Projekt hat, die Sperre löschen.

Wenn Sie die boolesche Einschränkung iam.restrictCrossProjectServiceAccountLienRemoval erzwingen, können Hauptkonten nur dann gelöscht werden, wenn sie die Berechtigung resourcemanager.projects.updateLiens für die Organisation haben.

Wir empfehlen, diese Einschränkung zu erzwingen, wenn eines Ihrer Projekte den projektübergreifenden Identitätswechsel für Dienstkonten zulässt.

Workload Identity-Clustererstellung deaktivieren

Sie können die boolesche Einschränkung iam.disableWorkloadIdentityClusterCreation verwenden, um zu verlangen, dass bei neuen Google Kubernetes Engine-Clustern die Funktion Workload Identity bei ihrer Erstellung deaktiviert ist. Wenn Sie den Zugriff auf Dienstkonten in Ihrer Organisation streng kontrollieren möchten, möchten Sie möglicherweise zusätzlich zur Erstellung von Dienstkonten und Dienstkontenschlüsseln die Workload Identity deaktivieren.

Bestehende GKE-Cluster mit aktivierter Workload Identity sind nicht betroffen und funktionieren weiterhin wie gewohnt.

Boolesche Einschränkung erzwingen

Console

So legen Sie eine Organisationsrichtlinie fest, die eine Einschränkung erzwingt, um die Verwendung von Dienstkonten zu beschränken:

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

    Zu den Organisationsrichtlinien

  2. Wählen Sie in der Projektauswahl die Organisation aus, für die Sie die Dienstkontonutzung einschränken möchten.

  3. Klicken Sie auf eine der auf dieser Seite aufgeführten booleschen Einschränkungen für die Verwendung des Dienstkontos.

  4. Klicken Sie auf Richtlinie verwalten.

  5. Wählen Sie unter Gilt für die Option Richtlinie der übergeordneten Ressource überschreiben aus.

  6. Klicken Sie auf Regel hinzufügen.

  7. Wählen Sie unter Erzwingung die Option An aus.

  8. Klicken Sie auf Richtlinie festlegen, um die Richtlinie zu erzwingen.

gcloud

Richtlinien können über die Google Cloud CLI festgelegt werden.

Führen Sie den folgenden Befehl aus, um die Verwendung des Dienstkontos einzuschränken:

gcloud resource-manager org-policies enable-enforce \
    --organization 'ORGANIZATION_ID' \
    BOOLEAN_CONSTRAINT

Dabei ist BOOLEAN_CONSTRAINT die boolesche Einschränkung, die Sie erzwingen möchten.

Zur Deaktivierung der Erzwingung kann der gleiche Befehl mit

disable-enforce
-Befehl.

Weitere Informationen zur Verwendung von Einschränkungen in Organisationsrichtlinien finden Sie unter Einschränkungen verwenden.

Beispielrichtlinie mit boolescher Einschränkung

Das folgende Code-Snippet zeigt eine Organisationsrichtlinie, die die boolesche Einschränkung iam.disableServiceAccountCreation erzwingt, die verhindert, dass Dienstkonten erstellt werden:

name: organizations/012345678901/policies/iam.disableServiceAccountCreation
spec:
  rules:
  - enforce: true

Listeneinschränkungen

Die folgenden Einschränkungen sind Arten von Listeneinschränkung die auf eine Liste von Werten festgelegt sind.

Lebensdauer von OAuth 2.0-Zugriffstokens verlängern

Sie können ein OAuth 2.0-Zugriffstoken erstellen, das kurzlebige Anmeldedaten für ein Dienstkonto bereitstellt. Standardmäßig beträgt die maximale Lebensdauer eines Zugriffstokens 1 Stunde (3.600 Sekunden). Sie können die maximale Lebensdauer jedoch auf 12 Stunden verlängern. Identifizieren Sie dazu zuerst die Dienstkonten, bei denen eine verlängerte Lebensdauer für Zugriffstoken festgelegt werden soll. Fügen Sie diese Dienstkonten danach einer Organisationsrichtlinie hinzu, in der die Listeneinschränkung constraints/iam.allowServiceAccountCredentialLifetimeExtension enthalten ist.

Lebensdauer von Dienstkontoschlüsseln beschränken

Mit einem Dienstkontoschlüssel können Sie Authentifizieren einer Anfrage als Dienstkonto. Standardmäßig laufen Dienstkontoschlüssel niemals ab. Sie können diese Standardeinstellung ändern, indem Sie eine Ablaufzeit für alle Nutzer festlegen in Ihrem Projekt, Ordner oder Ihrer Organisation neu erstellte Schlüssel.

Verwenden Sie zum Festlegen einer Ablaufzeit die constraints/iam.serviceAccountKeyExpiryHours Listeneinschränkung zur Angabe der Anzahl der Stunden, in denen ein neu erstellter Schlüssel gültig sein. Nach Ablauf dieser Zeit läuft der Dienstkontoschlüssel ab und Sie können nicht mehr verwenden.

Diese Listeneinschränkung akzeptiert die folgenden ALLOW-Werte: akzeptiert er nicht DENY-Werte. Verwenden Sie als Best Practice die kürzeste Ablaufzeit, die Ihren benötigt:

  • 1h: 1 Stunde
  • 8h: 8 Stunden
  • 24h: 24 Stunden (1 Tag)
  • 168h: 168 Stunden (7 Tage)
  • 336h: 336 Stunden (14 Tage)
  • 720h: 720 Stunden (30 Tage)
  • 1440h: 1.440 Stunden (60 Tage)
  • 2160h: 2.160 Stunden (90 Tage)

Die Einschränkung constraints/iam.serviceAccountKeyExpiryHours kann nicht zusammengeführt werden mit einer übergeordneten Richtlinie. Um diese Einschränkung zu erzwingen, müssen Sie entweder ersetzen oder übergeordnete Richtlinie übernehmen.

Zulässige externe Identitätsanbieter angeben

Wenn Sie die Workload Identity-Föderation verwenden, mit der externe Identitäten auf Google Cloud-Ressourcen zugreifen können, können Sie angeben, welche externen Identitätsanbieter zulässig sind. Standardmäßig sind alle Anbieter zulässig. Verwenden Sie zum Festlegen eines Limits die Listeneinschränkung constraints/iam.workloadIdentityPoolProviders, um URIs für die zulässigen Anbieter in den folgenden Formaten anzugeben:

  • Amazon Web Services (AWS): https://sts.amazonaws.com

    Verwenden Sie die auf dieser Seite beschriebene Listeneinschränkung constraints/iam.workloadIdentityPoolAwsAccounts, um die zulässigen AWS-Konten zu begrenzen.

  • Microsoft Azure: https://sts.windows.net/azure-tenant-id

  • Andere Identitätsanbieter, die OpenID Connect (OIDC) unterstützen: Verwenden Sie den Aussteller-URI Ihres Identitätsanbieters.

Zulässige AWS-Konten angeben

Wenn Sie die Workload Identity-Föderation verwenden, mit der externe Identitäten auf Google Cloud-Ressourcen zugreifen können, können Sie angeben, welche AWS-Konten auf Ihre Ressourcen zugreifen dürfen. Standardmäßig können Arbeitslasten von jedem AWS-Konto auf Ihre Google Cloud-Ressourcen zugreifen. Wenn Sie begrenzen möchten, welche AWS-Konten zulässig sind, geben Sie mit der Listeneinschränkung constraints/iam.workloadIdentityPoolAwsAccounts eine Liste der zulässigen Konto-IDs an.

Offengelegte Dienstkontoschlüssel automatisch deaktivieren

In Google Cloud wird gelegentlich festgestellt, dass ein bestimmter Dienstkontoschlüssel offengelegt wurde, z. B. in einem öffentlichen Repository. Mit der Listeneinschränkung iam.serviceAccountKeyExposureResponse können Sie angeben, wie Google Cloud mit diesen Schlüsseln umgeht.

Diese Listeneinschränkung akzeptiert die folgenden ALLOW-Werte: sie akzeptiert nicht DENY-Werte.

  • DISABLE_KEY: Wenn Google Cloud einen freigelegten Schlüssel erkennt, wird er automatisch deaktiviert. Außerdem wird ein Cloud-Audit-Log-Ereignis erstellt und Projektinhaber und Sicherheitskontakte werden über den freigelegten Schlüssel benachrichtigt.

  • WAIT_FOR_ABUSE: Google Cloud deaktiviert freigegebene Schlüssel nicht proaktiv. Google Cloud kann offengelegte Schlüssel jedoch deaktivieren, wenn sie verwendet werden die sich nachteilig auf die Plattform auswirken. Unabhängig davon, ob der freigegebene Schlüssel deaktiviert ist, erstellt Google Cloud ein Cloud-Audit-Log-Ereignis und sendet eine Benachrichtigung über den freigegebenen Schlüssel an die Projektinhaber und Sicherheitskontakte.

Wenn Google Cloud einen offengelegten Schlüssel erkennt oder einen offengelegten Schlüssel deaktiviert, werden auch die Folgendes:

  • Generiert Cloud-Audit-Log-Ereignisse.

    • Wenn Google Cloud feststellt, dass ein Schlüssel offengelegt wurde, ist ein Missbrauchsereignis die in den Missbrauchsereignisprotokollen erstellt wurden.

    • Wenn Google Cloud einen Schlüssel deaktiviert, enthalten die Audit-Logs die Deaktivierungsaktion durch das Hauptkonto gcp-compromised-key-response@system.gserviceaccount.com.

  • Legt das Feld extendedStatus.value des offengelegten oder deaktivierten Schlüssels fest. Das Feld „Erweiterter Status“ enthält den Ort, an dem die Leckage erkannt wurde.

Wir empfehlen dringend, diese Einschränkung auf DISABLE_KEY festzulegen. Einstellung Durch diese Einschränkung auf WAIT_FOR_ABUSE erhöht sich das Risiko, dass offengelegte Schlüssel missbraucht werden.

Wenn Sie die Beschränkung auf WAIT_FOR_ABUSE festlegen, empfehlen wir Folgendes: Wenn Sie Cloud-Audit-Logs abonnieren, überprüfen Sie Ihre Kontaktdaten für die Sicherheit. unter Wichtige Kontakte und sorgen Sie dafür, dass Ihre Sicherheitskontakte zeitnah auf Benachrichtigungen reagieren.

Die Einschränkung iam.serviceAccountKeyExposureResponse kann nicht mit einem zusammengeführt werden: Parent-Richtlinie. Um diese Einschränkung zu erzwingen, müssen Sie die übergeordnete Richtlinie ersetzen.

Listeneinschränkung festlegen

Console

So legen Sie eine Organisationsrichtlinie fest, die eine Listeneinschränkung enthält:

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

    Zu den Organisationsrichtlinien

  2. Wählen Sie in der Projektauswahl das Projekt aus, für das Sie die Organisationsrichtlinie festlegen möchten.

  3. Wählen Sie auf der Seite Organisationsrichtlinien eine Einschränkung aus der Liste aus. Die Seite Richtliniendetails für diese Einschränkung wird angezeigt.

  4. Klicken Sie zum Aktualisieren der Organisationsrichtlinie für diese Ressource auf Richtlinien verwalten

  5. Wählen Sie unter Richtlinienerzwingung eine Erzwingungsoption aus:

    • Wählen Sie Mit übergeordneter Ressource zusammenführen aus, um die Organisationsrichtlinien zusammenzuführen und zu evaluieren. Weitere Informationen zur Übernahme und zur Ressourcenhierarchie finden Sie unter Informationen zu Evaluierungen der Hierarchie.
    • Wählen Sie Ersetzen aus, um Richtlinien zu überschreiben, die von einer übergeordneten Ressource übernommen wurden.
  6. Klicken Sie auf Regel hinzufügen.

  7. Wählen Sie unter Richtlinienwerte die Option Benutzerdefiniert.

  8. Wählen Sie unter Richtlinientyp Zulassen aus.

  9. Geben Sie unter Benutzerdefinierte Werte den ersten Wert für die Listeneinschränkung ein.

    1. Wenn Sie weitere Werte hinzufügen möchten, klicken Sie auf Wert hinzufügen. und fügen jeder Zeile einen Wert hinzu.
  10. Wenn Sie keine weiteren Werte mehr hinzufügen möchten, klicken Sie auf Fertig.

  11. Klicken Sie auf Richtlinie festlegen, um die Richtlinie zu erzwingen.

gcloud

Richtlinien können über die Google Cloud CLI festgelegt werden:

gcloud resource-manager org-policies allow \
    CONSTRAINT_NAME \
    VALUE_1 [VALUE_N ...] \
    --organization=ORGANIZATION_ID \

Ersetzen Sie die folgenden Werte:

  • CONSTRAINT_NAME: Der Name der Listeneinschränkung. Beispiel: constraints/iam.allowServiceAccountCredentialLifetimeExtension
  • VALUE_1, VALUE_N...: Werte für die Listeneinschränkung.

Weitere Informationen zur Verwendung von Einschränkungen in Organisationsrichtlinien finden Sie unter Einschränkungen verwenden.

Beispielrichtlinie mit Listeneinschränkung

Das folgende Code-Snippet zeigt eine Organisationsrichtlinie, die die Listeneinschränkung iam.allowServiceAccountCredentialLifetimeExtension erzwingt, die die maximale Lebensdauer von OAuth 2.0-Zugriffstokens für die aufgeführten Dienstkonten verlängert:

name: organizations/012345678901/policies/iam.allowServiceAccountCredentialLifetimeExtension
spec:
  rules:
  - values:
      allowedValues:
      - SERVICE_ACCOUNT_ADDRESS

Fehlermeldungen

Erstellen von Dienstkonten deaktivieren

Wenn iam.disableServiceAccountCreation erzwungen wird, schlägt das Erstellen eines Dienstkontos fehl und folgende Fehlermeldung wird zurückgegeben:

FAILED_PRECONDITION: Service account creation is not allowed on this project.

Erstellen von Dienstkontoschlüsseln deaktivieren

Wenn iam.disableServiceAccountKeyCreation erzwungen wird, schlägt das Erstellen eines Dienstkontos fehl und folgende Fehlermeldung wird zurückgegeben:

FAILED_PRECONDITION: Key creation is not allowed on this service account.

Workload Identity-Clustererstellung deaktivieren

Wenn iam.disableWorkloadIdentityClusterCreation erzwungen wird, schlägt das Erstellen eines GKE-Clusters mit aktivierter Workload Identity mit dem folgenden Fehler fehl:

FAILED_PRECONDITION: Workload Identity is disabled by the organization
policy constraints/iam.disableWorkloadIdentityClusterCreation. Contact your
administrator to enable this feature.

Bekannte Fehler beheben

Standarddienstkonten

Durch Anwendung der Einschränkung iam.disableServiceAccountCreation wird die Erstellung von Dienstkonten in diesem Projekt verhindert. Diese Einschränkung betrifft auch Google Cloud-Dienste, die bei Aktivierung automatisch Standarddienstkonten im Projekt erstellen, wie zum Beispiel:

  • Compute Engine
  • GKE
  • App Engine
  • Dataflow

Wenn die Einschränkung iam.disableServiceAccountCreation angewendet wird, schlägt das Aktivieren dieser Dienste fehl, da ihre Standarddienstkonten nicht erstellt werden können.

So lösen Sie dieses Problem:

  1. Entfernen Sie vorübergehend die Einschränkung iam.disableServiceAccountCreation.
  2. Aktivieren Sie die gewünschten Dienste.
  3. Erstellen Sie gegebenenfalls weitere Dienstkonten.
  4. Wenden Sie die Einschränkung wieder an.