Identitätsübertragung für ein Dienstkonto verwenden

Wenn das verwendete Hauptkonto nicht die Berechtigungen hat, die Sie zum Ausführen Ihrer Aufgabe benötigen, oder wenn Sie ein Dienstkonto in einer Entwicklungsumgebung verwenden möchten, können Sie die Identitätsübernahme des Dienstkontos nutzen.

Wenn Sie die Identitätsübernahme eines Dienstkontos verwenden, beginnen Sie mit einem authentifizierten Hauptkonto (Ihrem Nutzer- oder Dienstkonto) und fordern kurzlebige Anmeldedaten für ein Dienstkonto an, für das die erforderliche Autorisierung vorliegt. Das authentifizierte Hauptkonto muss die erforderlichen Berechtigungen für die Übernahme der Identität des Dienstkontos haben.

Der Identitätswechsel für ein Dienstkonto ist sicherer als die Verwendung eines Dienstkontoschlüssels, da für den Identitätswechsel eines Dienstkontos eine vorherige authentifizierte Identität erforderlich ist und die Anmeldedaten, die mithilfe der Identitätsübertragung erstellt werden, nicht erhalten bleiben. Im Vergleich dazu ist für die Authentifizierung mit einem Dienstkontoschlüssel keine vorherige Authentifizierung erforderlich. Der nichtflüchtige Schlüssel ist bei einer Offenlegung ein hohes Risiko.

Weitere Informationen zu Identitätswechsel für Dienstkonten.

Hinweise

Bevor Sie die Identitätsübernahme des Dienstkontos verwenden, müssen Sie die erforderlichen APIs aktivieren und sicherstellen, dass Sie die erforderlichen Rollen haben.

APIs aktivieren

Um die Identität eines Dienstkontos zu übernehmen, müssen Sie in Ihrem Projekt die Service Account Credentials API aktivieren.

Enable the API

Erforderliche Rollen

Bitten Sie Ihren Administrator, dem Hauptkonto die IAM-Rolle Dienstkonto-Token-Ersteller (roles/iam.serviceAccountTokenCreator) zu gewähren, damit das Hauptkonto die erforderliche Berechtigung hat, die Identität eines Dienstkontos zu übernehmen.. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigung iam.serviceAccounts.getAccessToken, die erforderlich ist, um die Identität eines Dienstkontos zu übernehmen.

Ihr Administrator kann dem Hauptkonto möglicherweise auch diese Berechtigung mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erteilen.

Sie müssen diese Rollen Ihrem Hauptkonto zuweisen, auch wenn Sie in einem von Ihnen erstellten Projekt arbeiten.

Weitere Informationen zu den für die Identitätsübertragung erforderlichen Rollen finden Sie unter Rollen für die Dienstkontoauthentifizierung.

Sie können die Identität des Dienstkontos mithilfe der folgenden Methoden übernehmen:

gcloud CLI verwenden

Die gcloud-CLI bietet eine einfache Möglichkeit, die Identität des Dienstkontos zu verwenden. Diese Methode funktioniert sehr gut, wenn Sie ein Dienstkonto verwenden müssen, um über die gcloud CLI auf Google Cloud-Ressourcen oder -Dienste zuzugreifen.

Sie können die Identität eines Dienstkontos für einen bestimmten gcloud CLI-Befehl übernehmen oder die gcloud CLI so einrichten, dass die Identitätsübertragung für jeden Befehl automatisch verwendet wird.

Identitätsübernahme für einen bestimmten gcloud CLI-Befehl verwenden

Wenn Sie die Identität für einen bestimmten gcloud CLI-Befehl verwenden möchten, verwenden Sie das Flag --impersonate-service-account. Der folgende Befehl listet beispielsweise Storage-Buckets mit der Identität und dem Zugriff des angegebenen Dienstkontos auf:

gcloud storage buckets list --impersonate-service-account=SERVICE_ACCT_EMAIL

Wenn Sie dieses Flag verwenden, fordert die gcloud CLI kurzlebige Anmeldedaten für das angegebene Dienstkonto an und authentifiziert sie bei der API und autorisiert den Zugriff. Das Hauptkonto, das in der gcloud CLI angemeldet ist (normalerweise Ihr Nutzerkonto) muss die erforderliche Berechtigung für das Dienstkonto haben.

Standardmäßigen Identitätswechsel mit der gcloud CLI verwenden

Wenn Sie die gcloud CLI so einrichten möchten, dass standardmäßig die Identität und der Zugriff eines Dienstkontos verwendet werden, verwenden Sie den Befehl der gcloud CLI:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Wenn dieses Konfigurationsattribut festgelegt ist, fordert die gcloud CLI kurzlebige Anmeldedaten für das angegebene Dienstkonto an und autorisiert diesen für die Authentifizierung bei der API und die Autorisierung des Zugriffs auf die Ressource für jeden Befehl. Das Hauptkonto, das in der gcloud CLI angemeldet ist, muss die erforderliche Berechtigung für das Dienstkonto haben.

Standardanmeldedaten für Anwendungen für die Verwendung von Clientbibliotheken einrichten

Sie können den Identitätswechsel für ein Dienstkonto verwenden, um eine lokale ADC-Datei (Standardanmeldedaten für Anwendungen) einzurichten. Clientbibliotheken, die den Identitätswechsel unterstützen, können diese Anmeldedaten automatisch verwenden. Lokale ADC-Dateien, die mit Identitätswechsel erstellt wurden, werden in den folgenden Sprachen unterstützt:

  • C#
  • Go
  • Java
  • Node.js
  • Python

Verwenden Sie die Identität des Dienstkontos, um eine lokale ADC-Datei zu erstellen:

gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL

Sie können jetzt Clientbibliotheken mit den unterstützten Sprachen auf die gleiche Weise verwenden wie nach dem Einrichten einer lokalen ADC-Datei mit Nutzeranmeldedaten. Anmeldedaten werden von den Authentifizierungsbibliotheken automatisch gefunden. Weitere Informationen finden Sie unter Für die Verwendung von Clientbibliotheken authentifizieren.

Kurzlebige Anmeldedaten generieren und verwalten

Wenn keine der vorherigen Methoden auf Ihren Anwendungsfall zutrifft, müssen Sie kurzlebige Tokens generieren und verwalten. Wenn Sie beispielsweise eine andere Art von kurzlebigen Anmeldedaten (andere als ein Zugriffstoken) benötigen oder die Identitätsübertragung in einer Produktionsumgebung verwenden müssen, verwenden Sie diese Methode.

Informationen zum Generieren kurzlebiger Tokens finden Sie unter Kurzlebige Anmeldedaten für ein Dienstkonto erstellen.

Nächste Schritte