Nutzung von Dienstkonten einschränken

Der Resource Manager bietet Einschränkungen, 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 Arten erstellt oder konfiguriert werden können. Diese Einschränkungen sind nicht rückwirkend. sie haben keine Auswirkungen auf zuvor 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, die eine Identität als Dienstkonto annehmen müssen, enthält das Projekt möglicherweise kein Dienstkonto, das von der Arbeitslast verwendet werden kann. Zur Behebung dieses Problems können Sie den projektübergreifenden Identitätswechsel für Dienstkonten 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 Standorte von Dienstkonten.

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.

Wie Sie Dienstkonten projektübergreifend verwenden, erfahren Sie unter Identitätswechsel für Dienstkonten für Projekte aktivieren.

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

Wenn Sie erlauben, 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 die Sperre nur dann löschen, wenn sie die Berechtigung resourcemanager.projects.updateLiens für die Organisation haben.

Wir empfehlen, diese Einschränkung zu erzwingen, wenn von einem Ihrer Projekte projektübergreifender Identitätswechsel für Dienstkonten zugelassen wird.

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 durchsetzen

Console

So legen Sie eine Organisationsrichtlinie fest, die eine Einschränkung erzwingt, um die Dienstkontonutzung einzuschränken:

  1. Öffnen Sie in der Google Cloud Console die Seite Organisationsrichtlinien.

    Zur Seite "Organisationsrichtlinien"

  2. Klicken Sie am oberen Rand der Seite auf die Drop-down-Liste Organisation und wählen Sie Ihre Organisation aus.
  3. Klicken Sie auf eine der oben aufgeführten booleschen Einschränkungen für die Verwendung des Dienstkontos.
  4. Klicken Sie auf Bearbeiten.
  5. Wählen Sie unter Gilt für die Option Anpassen aus.
  6. Wählen Sie unter Erzwingung die Option An aus.
  7. Klicken Sie auf Speichern. Es wird eine Benachrichtigung angezeigt, in der die Aktualisierung der Richtlinie bestätigt wird.

gcloud

Richtlinien können über das gcloud-Befehlszeilentool 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.

Zum Deaktivieren der Erzwingung kann der gleiche Befehl mit dem

disable-enforce
ausgeführt werden.

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:

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.disableServiceAccountCreation"
  etag: "\a\005L\252\122\321\946\334"
  boolean_policy {
  enforced: true
  }
}

Listeneinschränkungen

Die folgenden Einschränkungen sind Arten von Listeneinschränkungen, die auf eine Liste von Werten gesetzt werden.

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.

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 die Listeneinschränkung constraints/iam.workloadIdentityPoolProviders, um URIs für die zulässigen Anbieter in folgenden Formaten anzugeben:

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

    Verwenden Sie die Listeneinschränkung constraints/iam.workloadIdentityPoolAwsAccounts, wie auf dieser Seite beschrieben, 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 AWS-Konten auf Ihre Google Cloud-Ressourcen zugreifen. Verwenden Sie die Listeneinschränkung constraints/iam.workloadIdentityPoolAwsAccounts, um eine Liste der zulässigen Konto-IDs anzugeben, um die zulässigen AWS-Konten zu begrenzen.

Listeneinschränkung festlegen

Console

So legen Sie eine Organisationsrichtlinie mit einer Listeneinschränkung fest:

  1. Öffnen Sie in der Google Cloud Console die Seite Organisationsrichtlinien.

    Zur Seite "Organisationsrichtlinien"

  2. Klicken Sie am oberen Rand der Seite auf die Drop-down-Liste Organisation und wählen Sie Ihre Organisation aus.
  3. Klicken Sie auf die Einschränkung, die Sie hinzufügen möchten.
  4. Klicken Sie auf Bearbeiten.
  5. Wählen Sie unter Gilt für die Option Anpassen aus.
  6. Wählen Sie unter Richtlinienerzwingung die Option Mit übergeordneter Ressource zusammenführen aus, um diese Richtlinie mit vorhandenen Richtlinien in Ihrer Hierarchie zusammenzuführen.
  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 Neuer Richtlinienwert, um mehr Zeilen zu erstellen. Fügen Sie dann in jede Zeile einen Wert ein.
  10. Klicken Sie auf Speichern. Mit einer Benachrichtigung wird bestätigt, dass die Richtlinie aktualisiert wurde.

gcloud

Richtlinien können über das gcloud-Befehlszeilentool 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 der 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:

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.allowServiceAccountCredentialLifetimeExtension"
  etag: "\a\005L\252\122\321\946\334"
  listPolicy {
    allowedValues:
      - SERVICE_ACCOUNT_ADDRESS
  }
  updateTime: CURRENT_TIME
}

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.