Auf dieser Seite wird erläutert, wie Sie kurzlebige Anmeldedaten für ein Dienstkonto erstellen, mit denen Sie die Identität des Dienstkontos übernehmen können. Je nach erstelltem Tokentyp stellt das kurzlebige Token die Identität (für ID-Tokens) oder die Berechtigungen (für Zugriffstokens) bereit, die dem Dienstkonto zugeordnet sind.
Wenn Sie für Ihre Systemarchitektur eine Reihe von Tokengenerierungsaufrufen verwenden müssen, können Sie eine Delegationskette verwenden, die aus mehreren Dienstkonten besteht. In den meisten Fällen ist die direkte Methode, wie auf dieser Seite erläutert, ausreichend.
Hinweise
-
Enable the IAM and Service Account Credentials APIs:
gcloud services enable iam.googleapis.com
iamcredentials.googleapis.com Richten Sie die Authentifizierung ein.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Go
Wenn Sie die Go Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.
Java
Wenn Sie die Java Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.
Node.js
Wenn Sie die Node.js Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.
Python
Wenn Sie die Python Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten in der Dokumentation zur Google Cloud-Authentifizierung.
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Sie müssen mit IAM-Dienstkonten vertraut sein.
Informationen zur Identitätsübernahme des Dienstkontos.
Sie müssen wissen, welche Art von Token Sie benötigen, und die entsprechenden Schritte in den folgenden Abschnitten verwenden:
Kurzlebiges Zugriffstoken erstellen
Zugriffstokens werden von den meisten Google APIs zur Authentifizierung akzeptiert. Wenn Sie ein Zugriffstoken mithilfe der Dienstkonto-Identitätsübernahme generieren, verfügt das Zugriffstoken über kein Aktualisierungstoken. Wenn das Token abläuft, müssen Sie also den Vorgang der Identitätsübernahme wiederholen, um ein neues zu generieren.
Weitere Informationen finden Sie unter Zugriffstokens.
Führen Sie die folgenden Aufgaben aus, um ein kurzlebiges Zugriffstoken zu erstellen:
- Stellen Sie für den Aufrufer die erforderlichen Berechtigungen bereit.
- Generieren Sie das Zugriffstoken.
Erforderliche Berechtigungen bereitstellen
Eine direkte Anfrage umfasst zwei Identitäten: den Aufrufer, der die Anmeldedaten anfordert, und das Dienstkonto, für das die Anmeldedaten erstellt werden. Wie Sie die Berechtigungen einrichten, hängt davon ab, ob sich der Aufrufer als Dienstkonto oder als Nutzerkonto authentifiziert.
Wenn Sie einen REST- oder gcloud CLI-Befehl auf dieser Seite in einer lokalen Entwicklungsumgebung ausführen möchten, kann der Aufrufer durch Nutzeranmeldedaten repräsentiert werden. Bei automatisierten Arbeitslasten, z. B. einer in Compute Engine ausgeführten Anwendung, muss der Aufrufer durch ein Dienstkonto repräsentiert werden.
Dienstkonto
Wenn die aufrufende Anwendung ein Dienstkonto als Identität verwendet, sind die folgenden Hauptkonten beteiligt:
Dienstkonto des Aufrufers (
CALLER_SA
)Dieses Dienstkonto stellt die aufrufende Anwendung dar, die die Anfrage für die kurzlebigen Anmeldedaten ausgibt.
-
Mit Berechtigungen versehenes Dienstkonto (
PRIV_SA
)Diesem Dienstkonto werden die IAM-Rollen zugewiesen, die für das kurzlebige Token erforderlich sind. Dies ist das Dienstkonto, für das das kurzlebige Token erstellt wird.
Um
CALLER_SA
-Berechtigungen zum Erstellen kurzlebiger Anmeldedaten fürPRIV_SA
zu erteilen, weisen SieCALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) fürPRIV_SA
zu.Weisen Sie die erforderliche Rolle für
PRIV_SA
zu:Console
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos
PRIV_SA
. - Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie unter Hauptkonten mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.
-
Geben Sie die E-Mail-Adresse des Aufrufer-Dienstkontos
CALLER_SA
ein.Beispiel:
demo@my-project.iam.gserviceaccount.com
. -
Wählen Sie die Rolle „Service Account Token Creator“ (
roles/iam.serviceAccountTokenCreator
) aus. - Klicken Sie auf Speichern, um dem Dienstkonto die Rolle zuzuweisen.
gcloud
Mit dem Befehl
gcloud iam service-accounts add-iam-policy-binding
wird einem Dienstkonto eine Rolle zugewiesen.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos, für das das Token generiert wird. -
CALLER_SA
: Die E-Mail-Adresse des Dienstkontos, das die Anwendung darstellt, die das kurzlebige Token anfordert.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die Zulassungsrichtlinie eines Dienstkontos ab.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
JSON-Text anfordern:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Wenn Sie dem Dienstkonto keine Rollen zugewiesen haben, enthält die Antwort lediglich einen
etag
-Wert. Geben Sie diesenetag
-Wert im nächsten Schritt an. -
Ändern Sie die Zulassungsrichtlinie, um
CALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) zuzuweisen.Fügen Sie beispielsweise Folgendes hinzu, um die Beispielantwort aus dem vorherigen Schritt zu ändern:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Schreiben Sie die aktualisierte Zulassungsrichtlinie:
Die Methode
serviceAccounts.setIamPolicy
legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.-
POLICY
: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.Wenn Sie beispielsweise die im vorherigen Schritt gezeigte Zulassungsrichtlinie festlegen möchten, ersetzen Sie
POLICY
durch Folgendes, wobeiCALLER_SA
das Dienstkonto ist, das das kurzlebige Token erstellt:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
JSON-Text anfordern:
{ "policy": POLICY }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die Antwort enthält die aktualisierte Zulassungsrichtlinie:
Nutzeranmeldedaten
Wenn Sie die Google Cloud CLI verwenden möchten, um kurzlebige Tokens zu generieren, oder wenn Sie kurzlebige Tokens aus einer lokalen Entwicklungsumgebung generieren möchten, können Sie ein Nutzerkonto verwenden, um die Tokens zu generieren. Häufig können Sie Ihr eigenes Nutzerkonto verwenden.
Wenn Sie ein Nutzerkonto zum Generieren kurzlebiger Tokens verwenden, sind die folgenden Identitäten beteiligt:
Konto des Aufrufers (
CALLER_ACCOUNT
)Dieses Nutzerkonto wird verwendet, um kurzlebige Anmeldedaten für das mit Berechtigungen versehene Dienstkonto zu generieren.
Mit Berechtigungen versehenes Dienstkonto (
PRIV_SA
)Diesem Dienstkonto werden die IAM-Rollen zugewiesen, die für das kurzlebige Token erforderlich sind. Dies ist das Dienstkonto, für das das kurzlebige Token erstellt wird.
Damit
CALLER_ACCOUNT
kurzlebige Anmeldedaten fürPRIV_SA
erstellen kann, weisen SieCALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) fürPRIV_SA
zu.Weisen Sie die erforderliche Rolle für
PRIV_SA
zu:Console
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos
PRIV_SA
. - Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie unter Hauptkonten mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.
-
Geben Sie die Haupt-ID des Aufruferkontos
CALLER_ACCOUNT
ein.Beispiel:
example-user@example.com
. -
Wählen Sie die Rolle „Service Account Token Creator“ (
roles/iam.serviceAccountTokenCreator
) aus. - Klicken Sie auf Speichern, um dem Nutzerkonto die Rolle zuzuweisen.
gcloud
Mit dem Befehl
gcloud iam service-accounts add-iam-policy-binding
wird einem Dienstkonto eine Rolle zugewiesen.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos, für das das Token generiert wird. -
CALLER_ACCOUNT
: Die E-Mail-Adresse des Nutzerkontos, das zum Anfordern des kurzlebigen Tokens verwendet wird.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die Zulassungsrichtlinie eines Dienstkontos ab.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
JSON-Text anfordern:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Wenn Sie dem Dienstkonto keine Rollen zugewiesen haben, enthält die Antwort lediglich einen
etag
-Wert. Geben Sie diesenetag
-Wert im nächsten Schritt an. -
Ändern Sie die Zulassungsrichtlinie, um
CALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) zuzuweisen.Fügen Sie beispielsweise Folgendes hinzu, um die Beispielantwort aus dem vorherigen Schritt zu ändern:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
Schreiben Sie die aktualisierte Zulassungsrichtlinie:
Die Methode
serviceAccounts.setIamPolicy
legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.-
POLICY
: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.Wenn Sie beispielsweise die im vorherigen Schritt gezeigte Zulassungsrichtlinie festlegen möchten, ersetzen Sie
POLICY
durch Folgendes, wobeiCALLER_ACCOUNT
das Nutzerkonto ist, das das kurzlebige Token erstellt:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
JSON-Text anfordern:
{ "policy": POLICY }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die Antwort enthält die aktualisierte Zulassungsrichtlinie:
Zugriffstoken generieren
Sie können ein OAuth 2.0-Zugriffstoken mit der gcloud CLI, der REST API oder den Cloud-Clientbibliotheken und Google API-Clientbibliotheken generieren.
Wenn Sie die REST API verwenden und Ihr System so konfiguriert ist, dass längere Tokenlebensdauern zugelassen werden, können Sie ein Token mit einer längeren Lebensdauer als der Standardeinstellung erstellen. Die Google Cloud CLI unterstützt nicht das Festlegen einer Lebensdauer für das Token.
Die folgenden Beispiele sind für die Verwendung in einer lokalen Entwicklungsumgebung vorgesehen. Der Aufrufer muss durch ein Nutzerkonto statt durch ein Dienstkonto repräsentiert werden.
So generieren Sie ein OAuth 2.0-Zugriffstoken für ein Dienstkonto:
gcloud
Sie müssen mit dem Nutzerkonto des Aufrufers in der gcloud CLI angemeldet sein.
Erstellen Sie mit dem Befehl
gcloud auth print-access-token
ein Token für das Dienstkonto.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (PowerShell)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (cmd.exe)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Sie sollten eine Antwort ähnlich der folgenden erhalten:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. ya29.c.b0AXv0zTPnzTnDV8F8Aj5Fgy46Yf2v_v8eZIoKq7xGpfbpXuy23aQ1693m3gAuE8AZga7w6kdagN7a9bfdDYbdeoGY0CMHOClsCwIdutL7k_RFC672lOCbUgF5hS8Iu2nCA8hle-11LJXBLmaxFmH08ZTBJLuDrWSNd8cYqGYFunSC1K1qLIPBF18tsa0hxVgKPucI8b1A9L8_MK1JGLGcr0n7-zY77_lmbcdODG3NmIbLOGWOutjJgqSO_YoeCKK2QTUZIp5PG7RkKlXWnmYJA9pEahzNoQrs5sWZctc2bia9af_ITzqqlXC9h1Kj5-me6e8rd734MJvpagqYazRk0gGWpMb03XmMGpgPc_FBp4pnX9rGOzW83SNpcDz8zeFO1Q0Bo3N7CuZougjRce0y8I2_4rtw5ME_nV3wrCWa..................................................................................................................................................................................................................................................................................................
-
REST
Die Methode
serviceAccounts.generateAccessToken
der Service Credentials API generiert ein OAuth 2.0-Zugriffstoken für ein Dienstkonto.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. -
LIFETIME
: Die Zeit in Sekunden, bis das Zugriffstoken abläuft. Beispiel:300s
Standardmäßig beträgt die maximale Tokenlebensdauer 1 Stunde (3.600 Sekunden). Zur Erhöhung der maximalen Lebensdauer dieser Tokens auf 12 Stunden (43.200 Sekunden) fügen Sie das Dienstkonto einer Organisationsrichtlinie hinzu, in der die Listeneinschränkung
constraints/iam.allowServiceAccountCredentialLifetimeExtension
enthalten ist.
HTTP-Methode und URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateAccessToken
JSON-Text anfordern:
{ "scope": [ "https://www.googleapis.com/auth/cloud-platform" ], "lifetime": "LIFETIME" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Wenn die Anfrage
generateAccessToken
erfolgreich war, enthält der Antworttext ein OAuth 2.0-Zugriffstoken und eine Ablaufzeit. DasaccessToken
kann dann verwendet werden, um eine Anfrage im Namen des Dienstkontos zu authentifizieren, bis dieexpireTime
erreicht wurde:{ "accessToken": "eyJ0eXAi...NiJ9", "expireTime": "2020-04-07T15:01:23.045123456Z" }
Go
Java
Node.js
Python
OIDC-ID-Token (OpenID Connect) erstellen
ID-Tokens folgen der OIDC-Spezifikation (OpenID Connect). ID-Tokens werden von einer begrenzten Anzahl von Diensten und Anwendungen akzeptiert.
Weitere Informationen finden Sie unter ID-Tokens und Authentifizierung für Anwendungen, die in Cloud Run oder Cloud Run Functions gehostet werden.
Führen Sie folgende Schritte aus, um ein ID-Token zu erstellen:
Stellen Sie für den Aufrufer die erforderlichen Berechtigungen bereit.
Verwenden Sie zum Erstellen eines ID-Tokens die Rolle „Service Account OpenID Connect Identity Token Creator“ (
roles/iam.serviceAccountOpenIdTokenCreator
). Dies ist eine andere Rolle als die Rolle, die Sie für andere Tokentypen verwenden.
Erforderliche Berechtigungen bereitstellen
Eine direkte Anfrage umfasst zwei Identitäten: den Aufrufer, der die Anmeldedaten anfordert, und das Dienstkonto, für das die Anmeldedaten erstellt werden. Wie Sie die Berechtigungen einrichten, hängt davon ab, ob sich der Aufrufer als Dienstkonto oder als Nutzerkonto authentifiziert.
Wenn Sie einen REST- oder gcloud CLI-Befehl auf dieser Seite in einer lokalen Entwicklungsumgebung ausführen möchten, kann der Aufrufer durch Nutzeranmeldedaten repräsentiert werden. Bei automatisierten Arbeitslasten, z. B. einer in Compute Engine ausgeführten Anwendung, muss der Aufrufer durch ein Dienstkonto repräsentiert werden.
Dienstkonto
Wenn die aufrufende Anwendung ein Dienstkonto als Identität verwendet, sind die folgenden Hauptkonten beteiligt:
Dienstkonto des Aufrufers (
CALLER_SA
)Dieses Dienstkonto stellt die aufrufende Anwendung dar, die die Anfrage für die kurzlebigen Anmeldedaten ausgibt.
-
Mit Berechtigungen versehenes Dienstkonto (
PRIV_SA
)Diesem Dienstkonto werden die IAM-Rollen zugewiesen, die für das kurzlebige Token erforderlich sind. Dies ist das Dienstkonto, für das das kurzlebige Token erstellt wird.
Um
CALLER_SA
Berechtigungen zum Erstellen kurzlebiger Anmeldedaten fürPRIV_SA
zu erteilen, weisen SieCALLER_SA
Rolle „Service Account OpenID Connect Identity Token Creator“ (roles/iam.serviceAccountOpenIdTokenCreator
) fürPRIV_SA
zu.Weisen Sie die erforderliche Rolle für
PRIV_SA
zu:Console
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos
PRIV_SA
. - Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie unter Hauptkonten mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.
-
Geben Sie die E-Mail-Adresse des Aufrufer-Dienstkontos
CALLER_SA
ein.Beispiel:
demo@my-project.iam.gserviceaccount.com
. -
Wählen Sie die Rolle „Service Account OpenID Connect Identity Token Creator“ (
roles/iam.serviceAccountOpenIdTokenCreator
) aus. - Klicken Sie auf Speichern, um dem Dienstkonto die Rolle zuzuweisen.
gcloud
Mit dem Befehl
gcloud iam service-accounts add-iam-policy-binding
wird einem Dienstkonto eine Rolle zugewiesen.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos, für das das Token generiert wird. -
CALLER_SA
: Die E-Mail-Adresse des Dienstkontos, das die Anwendung darstellt, die das kurzlebige Token anfordert.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die Zulassungsrichtlinie eines Dienstkontos ab.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
JSON-Text anfordern:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Wenn Sie dem Dienstkonto keine Rollen zugewiesen haben, enthält die Antwort lediglich einen
etag
-Wert. Geben Sie diesenetag
-Wert im nächsten Schritt an. -
Ändern Sie die Zulassungsrichtlinie, um
CALLER_SA
die Rolle „Service Account OpenID Connect Identity Token Creator“ (roles/iam.serviceAccountOpenIdTokenCreator
) zuzuweisen.Fügen Sie beispielsweise Folgendes hinzu, um die Beispielantwort aus dem vorherigen Schritt zu ändern:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Schreiben Sie die aktualisierte Zulassungsrichtlinie:
Die Methode
serviceAccounts.setIamPolicy
legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.-
POLICY
: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.Wenn Sie beispielsweise die im vorherigen Schritt gezeigte Zulassungsrichtlinie festlegen möchten, ersetzen Sie
POLICY
durch Folgendes, wobeiCALLER_SA
das Dienstkonto ist, das das kurzlebige Token erstellt:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
JSON-Text anfordern:
{ "policy": POLICY }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die Antwort enthält die aktualisierte Zulassungsrichtlinie:
Nutzeranmeldedaten
Wenn Sie die Google Cloud CLI verwenden möchten, um kurzlebige Tokens zu generieren, oder wenn Sie kurzlebige Tokens aus einer lokalen Entwicklungsumgebung generieren möchten, können Sie ein Nutzerkonto verwenden, um die Tokens zu generieren. Häufig können Sie Ihr eigenes Nutzerkonto verwenden.
Wenn Sie ein Nutzerkonto zum Generieren kurzlebiger Tokens verwenden, sind die folgenden Identitäten beteiligt:
Konto des Aufrufers (
CALLER_ACCOUNT
)Dieses Nutzerkonto wird verwendet, um kurzlebige Anmeldedaten für das mit Berechtigungen versehene Dienstkonto zu generieren.
Mit Berechtigungen versehenes Dienstkonto (
PRIV_SA
)Diesem Dienstkonto werden die IAM-Rollen zugewiesen, die für das kurzlebige Token erforderlich sind. Dies ist das Dienstkonto, für das das kurzlebige Token erstellt wird.
Damit
CALLER_ACCOUNT
kurzlebige Anmeldedaten fürPRIV_SA
erstellen kann, weisen SieCALLER_ACCOUNT
die Rolle „Service Account OpenID Connect Identity Token Creator“ (roles/iam.serviceAccountOpenIdTokenCreator
) fürPRIV_SA
zu.Weisen Sie die erforderliche Rolle für
PRIV_SA
zu:Console
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos
PRIV_SA
. - Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie unter Hauptkonten mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.
-
Geben Sie die Haupt-ID des Aufruferkontos
CALLER_ACCOUNT
ein.Beispiel:
example-user@example.com
. -
Wählen Sie die Rolle „Service Account OpenID Connect Identity Token Creator“ (
roles/iam.serviceAccountOpenIdTokenCreator
) aus. - Klicken Sie auf Speichern, um dem Nutzerkonto die Rolle zuzuweisen.
gcloud
Mit dem Befehl
gcloud iam service-accounts add-iam-policy-binding
wird einem Dienstkonto eine Rolle zugewiesen.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos, für das das Token generiert wird. -
CALLER_ACCOUNT
: Die E-Mail-Adresse des Nutzerkontos, das zum Anfordern des kurzlebigen Tokens verwendet wird.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die Zulassungsrichtlinie eines Dienstkontos ab.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
JSON-Text anfordern:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Wenn Sie dem Dienstkonto keine Rollen zugewiesen haben, enthält die Antwort lediglich einen
etag
-Wert. Geben Sie diesenetag
-Wert im nächsten Schritt an. -
Ändern Sie die Zulassungsrichtlinie, um
CALLER_ACCOUNT
die Rolle „Service Account OpenID Connect Identity Token Creator“ (roles/iam.serviceAccountOpenIdTokenCreator
) zuzuweisen.Fügen Sie beispielsweise Folgendes hinzu, um die Beispielantwort aus dem vorherigen Schritt zu ändern:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
Schreiben Sie die aktualisierte Zulassungsrichtlinie:
Die Methode
serviceAccounts.setIamPolicy
legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.-
POLICY
: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.Wenn Sie beispielsweise die im vorherigen Schritt gezeigte Zulassungsrichtlinie festlegen möchten, ersetzen Sie
POLICY
durch Folgendes, wobeiCALLER_ACCOUNT
das Nutzerkonto ist, das das kurzlebige Token erstellt:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
JSON-Text anfordern:
{ "policy": POLICY }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die Antwort enthält die aktualisierte Zulassungsrichtlinie:
ID-Token generieren
Sie können ein OIDC-ID-Token (OpenID Connect) mithilfe der gcloud CLI, der REST API oder der Cloud-Clientbibliotheken und Google API-Clientbibliotheken generieren.
Die folgenden Beispiele sind für die Verwendung in einer lokalen Entwicklungsumgebung vorgesehen. Der Aufrufer muss durch ein Nutzerkonto statt durch ein Dienstkonto repräsentiert werden.
OIDC-ID-Tokens sind 1 Stunde (3.600 Sekunden) lang gültig.
Erstellen Sie ein von Google signiertes OIDC-ID-Token für ein Dienstkonto:
gcloud
Sie müssen mit dem Nutzerkonto des Aufrufers in der gcloud CLI angemeldet sein.
Erstellen Sie mit dem Befehl
gcloud auth print-identity-token
ein Token für das Dienstkonto.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. -
AUDIENCE_NAME
: Die Zielgruppe für das Token, in der Regel die URL der Anwendung oder des Dienstes, auf den mit dem Token zugegriffen wird.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (PowerShell)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (cmd.exe)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Sie sollten eine Antwort ähnlich der folgenden erhalten:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. eyJhbGciOiJSUzI1NiIsImtpZDNhMDg4ZDRmZmMjJkYTVmZTM5MDZjY2MiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ3d3cuZXhhbXBsJhenAiOiIxMTYzwNDYyMDk0ODIiLCJleHAiOjE2NTQ4ODU0MzEsImlhdCI6MTY1NDg4MTgzMSwiaXN6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViIMDQ2MjA5NDgyIn0.F7mu8IHj5VQdu7ItFrnYAKyGd7YqXuOP_rFLc98q8BaFBycAF1zAQnSnwqnSUXba0UK9PDT_-IOry68qLwBObz4XlX9lk0ehpN0O0W9FcFToKLB6wefXXPd4h7xtuPe5KzmpSOqj2Qqv34HriGw00Nqd-oGSgNY_lZ4wGEf4rT4oQa_kEcrY57Q2G6pwd769BhgeFwoLi5aK_Cv2kvf_zfMszC-xlkP9zwWQ8XinJBwe-qcQBa4NTgrbueNtXsEjccBS366zmw
-
REST
Die Methode
serviceAccounts.generateIdToken
der Service Credentials API generiert ein OIDC-ID-Token für ein Dienstkonto.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. -
AUDIENCE_NAME
: Die Zielgruppe für das Token, in der Regel die URL der Anwendung oder des Dienstes, auf den mit dem Token zugegriffen wird.
HTTP-Methode und URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateIdToken
JSON-Text anfordern:
{ "audience": "AUDIENCE_NAME", "includeEmail": "true" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Wenn die Anfrage
generateId
erfolgreich war, enthält der Antworttext ein ID-Token, das eine Stunde lang gültig ist. Mittoken
kann dann eine Anfrage im Namen des Dienstkontos authentifiziert werden:{ "token": "eyJ0eXAi...NiJ9" }
Selbstsigniertes JSON Web Token (JWT) erstellen
Selbstsignierte JSON Web Tokens (JWTs) sind in verschiedenen Szenarien hilfreich:
- Sichere Kommunikation zwischen eigenen Anwendungen. In diesem Szenario kann eine Anwendung ein Token signieren, das zu Authentifizierungszwecken von einer anderen Anwendung bestätigt werden kann.
- Authentifizierung des Aufrufs einer Google API, wie in der Autorisierung von Dienstkonten ohne OAuth beschrieben.
- Authentifizierung bei einer mit API Gateway bereitgestellten API.
- Behandlung eines Dienstkontos als Identitätsanbieter. JWT wird dabei mit beliebigen Anforderungen zu einem Nutzer, Konto oder Gerät signiert.
Führen Sie die folgenden Aufgaben aus, um ein JWT zu erstellen:
Erforderliche Berechtigungen bereitstellen
Eine direkte Anfrage umfasst zwei Identitäten: den Aufrufer, der die Anmeldedaten anfordert, und das Dienstkonto, für das die Anmeldedaten erstellt werden. Wie Sie die Berechtigungen einrichten, hängt davon ab, ob sich der Aufrufer als Dienstkonto oder als Nutzerkonto authentifiziert.
Wenn Sie einen REST- oder gcloud CLI-Befehl auf dieser Seite in einer lokalen Entwicklungsumgebung ausführen möchten, kann der Aufrufer durch Nutzeranmeldedaten repräsentiert werden. Bei automatisierten Arbeitslasten, z. B. einer in Compute Engine ausgeführten Anwendung, muss der Aufrufer durch ein Dienstkonto repräsentiert werden.
Dienstkonto
Wenn die aufrufende Anwendung ein Dienstkonto als Identität verwendet, sind die folgenden Hauptkonten beteiligt:
Dienstkonto des Aufrufers (
CALLER_SA
)Dieses Dienstkonto stellt die aufrufende Anwendung dar, die die Anfrage für die kurzlebigen Anmeldedaten ausgibt.
-
Mit Berechtigungen versehenes Dienstkonto (
PRIV_SA
)Diesem Dienstkonto werden die IAM-Rollen zugewiesen, die für das kurzlebige Token erforderlich sind. Dies ist das Dienstkonto, für das das kurzlebige Token erstellt wird.
Um
CALLER_SA
-Berechtigungen zum Erstellen kurzlebiger Anmeldedaten fürPRIV_SA
zu erteilen, weisen SieCALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) fürPRIV_SA
zu.Weisen Sie die erforderliche Rolle für
PRIV_SA
zu:Console
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos
PRIV_SA
. - Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie unter Hauptkonten mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.
-
Geben Sie die E-Mail-Adresse des Aufrufer-Dienstkontos
CALLER_SA
ein.Beispiel:
demo@my-project.iam.gserviceaccount.com
. -
Wählen Sie die Rolle „Service Account Token Creator“ (
roles/iam.serviceAccountTokenCreator
) aus. - Klicken Sie auf Speichern, um dem Dienstkonto die Rolle zuzuweisen.
gcloud
Mit dem Befehl
gcloud iam service-accounts add-iam-policy-binding
wird einem Dienstkonto eine Rolle zugewiesen.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos, für das das Token generiert wird. -
CALLER_SA
: Die E-Mail-Adresse des Dienstkontos, das die Anwendung darstellt, die das kurzlebige Token anfordert.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die Zulassungsrichtlinie eines Dienstkontos ab.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
JSON-Text anfordern:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Wenn Sie dem Dienstkonto keine Rollen zugewiesen haben, enthält die Antwort lediglich einen
etag
-Wert. Geben Sie diesenetag
-Wert im nächsten Schritt an. -
Ändern Sie die Zulassungsrichtlinie, um
CALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) zuzuweisen.Fügen Sie beispielsweise Folgendes hinzu, um die Beispielantwort aus dem vorherigen Schritt zu ändern:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Schreiben Sie die aktualisierte Zulassungsrichtlinie:
Die Methode
serviceAccounts.setIamPolicy
legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.-
POLICY
: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.Wenn Sie beispielsweise die im vorherigen Schritt gezeigte Zulassungsrichtlinie festlegen möchten, ersetzen Sie
POLICY
durch Folgendes, wobeiCALLER_SA
das Dienstkonto ist, das das kurzlebige Token erstellt:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
JSON-Text anfordern:
{ "policy": POLICY }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die Antwort enthält die aktualisierte Zulassungsrichtlinie:
Nutzeranmeldedaten
Wenn Sie die Google Cloud CLI verwenden möchten, um kurzlebige Tokens zu generieren, oder wenn Sie kurzlebige Tokens aus einer lokalen Entwicklungsumgebung generieren möchten, können Sie ein Nutzerkonto verwenden, um die Tokens zu generieren. Häufig können Sie Ihr eigenes Nutzerkonto verwenden.
Wenn Sie ein Nutzerkonto zum Generieren kurzlebiger Tokens verwenden, sind die folgenden Identitäten beteiligt:
Konto des Aufrufers (
CALLER_ACCOUNT
)Dieses Nutzerkonto wird verwendet, um kurzlebige Anmeldedaten für das mit Berechtigungen versehene Dienstkonto zu generieren.
Mit Berechtigungen versehenes Dienstkonto (
PRIV_SA
)Diesem Dienstkonto werden die IAM-Rollen zugewiesen, die für das kurzlebige Token erforderlich sind. Dies ist das Dienstkonto, für das das kurzlebige Token erstellt wird.
Damit
CALLER_ACCOUNT
kurzlebige Anmeldedaten fürPRIV_SA
erstellen kann, weisen SieCALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) fürPRIV_SA
zu.Weisen Sie die erforderliche Rolle für
PRIV_SA
zu:Console
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos
PRIV_SA
. - Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie unter Hauptkonten mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.
-
Geben Sie die Haupt-ID des Aufruferkontos
CALLER_ACCOUNT
ein.Beispiel:
example-user@example.com
. -
Wählen Sie die Rolle „Service Account Token Creator“ (
roles/iam.serviceAccountTokenCreator
) aus. - Klicken Sie auf Speichern, um dem Nutzerkonto die Rolle zuzuweisen.
gcloud
Mit dem Befehl
gcloud iam service-accounts add-iam-policy-binding
wird einem Dienstkonto eine Rolle zugewiesen.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos, für das das Token generiert wird. -
CALLER_ACCOUNT
: Die E-Mail-Adresse des Nutzerkontos, das zum Anfordern des kurzlebigen Tokens verwendet wird.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die Zulassungsrichtlinie eines Dienstkontos ab.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
JSON-Text anfordern:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Wenn Sie dem Dienstkonto keine Rollen zugewiesen haben, enthält die Antwort lediglich einen
etag
-Wert. Geben Sie diesenetag
-Wert im nächsten Schritt an. -
Ändern Sie die Zulassungsrichtlinie, um
CALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) zuzuweisen.Fügen Sie beispielsweise Folgendes hinzu, um die Beispielantwort aus dem vorherigen Schritt zu ändern:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
Schreiben Sie die aktualisierte Zulassungsrichtlinie:
Die Methode
serviceAccounts.setIamPolicy
legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.-
POLICY
: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.Wenn Sie beispielsweise die im vorherigen Schritt gezeigte Zulassungsrichtlinie festlegen möchten, ersetzen Sie
POLICY
durch Folgendes, wobeiCALLER_ACCOUNT
das Nutzerkonto ist, das das kurzlebige Token erstellt:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
JSON-Text anfordern:
{ "policy": POLICY }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die Antwort enthält die aktualisierte Zulassungsrichtlinie:
JWT generieren
Generieren Sie ein selbstsigniertes JWT:
REST
Die Methode
serviceAccounts.signJwt
der Service Account Credentials API signiert ein JWT mit einem vom System verwalteten privaten Schlüssel des Dienstkontos.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. -
JWT_PAYLOAD
: Die zu signierende JWT-Nutzlast, bei der es sich um ein JSON-Objekt mit einem JWT-Anforderungssatz handelt. Schließen Sie die Anforderungen ein, die für den gewünschten Anwendungsfall erforderlich sind und benötigt werden, um die Validierungsanforderungen des aufzurufenden Dienstes zu erfüllen. Wenn Sie eine Google API aufrufen, lesen Sie die Informationen zu den Anforderungsbedingungen im Google-Authentifizierungsleitfaden.Die Anforderung
exp
(Ablaufzeit) darf höchstens 12 Stunden in der Zukunft liegen. Wenn Sie eine Google API aufrufen, darf dieexp
-Anforderung nicht mehr als eine Stunde in der Zukunft liegen.Die folgende Beispielnutzlast enthält Anforderungen zum Aufrufen einer Google API, wobei
EXP
ein ganzzahliger Zeitstempel ist, der die Ablaufzeit darstellt:{ \"iss\": \"PRIV_SA\", \"sub\": \"PRIV_SA\", \"aud\": \"https://firestore.googleapis.com/\", \"iat\": 1529350000, \"exp\": EXP }
HTTP-Methode und URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signJwt
JSON-Text anfordern:
{ "payload": "JWT_PAYLOAD" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Wenn die
signJwt
-Anfrage erfolgreich war, enthält der Antworttextkörper ein signiertes JWT und die ID des Signaturschlüssels, der zum Signieren des JWT verwendet wurde. Sie können den WertsignedJwt
als Inhabertoken verwenden, um eine Anfrage im Namen des Dienstkontos direkt zu authentifizieren. Das Token ist bis zu der in der Anfrage angegebenen Ablaufzeit gültig:{ "keyId": "42ba1e...fc0a", "signedJwt": "eyJ0eXAi...NiJ9" }
Selbstsigniertes binäres Objekt (Blob) erstellen
Selbstsignierte binäre Objekte oder Blobs werden verwendet, um Binärdaten so zu übertragen, dass der Urheber der Daten bekannt ist (da das Blob selbstsigniert ist). Blobs können zum Erstellen von Signaturen verwendet werden, Cloud Storage-Objekten, die für verschiedene Authentifizierungsabläufe erforderlich ist, einschließlich signierter URLs. Informationen zu Signaturen finden Sie in der Cloud Storage-Dokumentation.
Führen Sie die folgenden Aufgaben aus, um ein selbstsigniertes binäres Objekt zu erstellen:
- Stellen Sie für den Aufrufer die erforderlichen Berechtigungen bereit.
- Generieren Sie das selbstsignierte Blob.
Erforderliche Berechtigungen bereitstellen
Eine direkte Anfrage umfasst zwei Identitäten: den Aufrufer, der die Anmeldedaten anfordert, und das Dienstkonto, für das die Anmeldedaten erstellt werden. Wie Sie die Berechtigungen einrichten, hängt davon ab, ob sich der Aufrufer als Dienstkonto oder als Nutzerkonto authentifiziert.
Wenn Sie einen REST- oder gcloud CLI-Befehl auf dieser Seite in einer lokalen Entwicklungsumgebung ausführen möchten, kann der Aufrufer durch Nutzeranmeldedaten repräsentiert werden. Bei automatisierten Arbeitslasten, z. B. einer in Compute Engine ausgeführten Anwendung, muss der Aufrufer durch ein Dienstkonto repräsentiert werden.
Dienstkonto
Wenn die aufrufende Anwendung ein Dienstkonto als Identität verwendet, sind die folgenden Hauptkonten beteiligt:
Dienstkonto des Aufrufers (
CALLER_SA
)Dieses Dienstkonto stellt die aufrufende Anwendung dar, die die Anfrage für die kurzlebigen Anmeldedaten ausgibt.
-
Mit Berechtigungen versehenes Dienstkonto (
PRIV_SA
)Diesem Dienstkonto werden die IAM-Rollen zugewiesen, die für das kurzlebige Token erforderlich sind. Dies ist das Dienstkonto, für das das kurzlebige Token erstellt wird.
Um
CALLER_SA
-Berechtigungen zum Erstellen kurzlebiger Anmeldedaten fürPRIV_SA
zu erteilen, weisen SieCALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) fürPRIV_SA
zu.Weisen Sie die erforderliche Rolle für
PRIV_SA
zu:Console
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos
PRIV_SA
. - Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie unter Hauptkonten mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.
-
Geben Sie die E-Mail-Adresse des Aufrufer-Dienstkontos
CALLER_SA
ein.Beispiel:
demo@my-project.iam.gserviceaccount.com
. -
Wählen Sie die Rolle „Service Account Token Creator“ (
roles/iam.serviceAccountTokenCreator
) aus. - Klicken Sie auf Speichern, um dem Dienstkonto die Rolle zuzuweisen.
gcloud
Mit dem Befehl
gcloud iam service-accounts add-iam-policy-binding
wird einem Dienstkonto eine Rolle zugewiesen.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos, für das das Token generiert wird. -
CALLER_SA
: Die E-Mail-Adresse des Dienstkontos, das die Anwendung darstellt, die das kurzlebige Token anfordert.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die Zulassungsrichtlinie eines Dienstkontos ab.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
JSON-Text anfordern:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Wenn Sie dem Dienstkonto keine Rollen zugewiesen haben, enthält die Antwort lediglich einen
etag
-Wert. Geben Sie diesenetag
-Wert im nächsten Schritt an. -
Ändern Sie die Zulassungsrichtlinie, um
CALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) zuzuweisen.Fügen Sie beispielsweise Folgendes hinzu, um die Beispielantwort aus dem vorherigen Schritt zu ändern:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Schreiben Sie die aktualisierte Zulassungsrichtlinie:
Die Methode
serviceAccounts.setIamPolicy
legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.-
POLICY
: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.Wenn Sie beispielsweise die im vorherigen Schritt gezeigte Zulassungsrichtlinie festlegen möchten, ersetzen Sie
POLICY
durch Folgendes, wobeiCALLER_SA
das Dienstkonto ist, das das kurzlebige Token erstellt:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
JSON-Text anfordern:
{ "policy": POLICY }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die Antwort enthält die aktualisierte Zulassungsrichtlinie:
Nutzeranmeldedaten
Wenn Sie die Google Cloud CLI verwenden möchten, um kurzlebige Tokens zu generieren, oder wenn Sie kurzlebige Tokens aus einer lokalen Entwicklungsumgebung generieren möchten, können Sie ein Nutzerkonto verwenden, um die Tokens zu generieren. Häufig können Sie Ihr eigenes Nutzerkonto verwenden.
Wenn Sie ein Nutzerkonto zum Generieren kurzlebiger Tokens verwenden, sind die folgenden Identitäten beteiligt:
Konto des Aufrufers (
CALLER_ACCOUNT
)Dieses Nutzerkonto wird verwendet, um kurzlebige Anmeldedaten für das mit Berechtigungen versehene Dienstkonto zu generieren.
Mit Berechtigungen versehenes Dienstkonto (
PRIV_SA
)Diesem Dienstkonto werden die IAM-Rollen zugewiesen, die für das kurzlebige Token erforderlich sind. Dies ist das Dienstkonto, für das das kurzlebige Token erstellt wird.
Damit
CALLER_ACCOUNT
kurzlebige Anmeldedaten fürPRIV_SA
erstellen kann, weisen SieCALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) fürPRIV_SA
zu.Weisen Sie die erforderliche Rolle für
PRIV_SA
zu:Console
-
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos
PRIV_SA
. - Klicken Sie auf den Tab Berechtigungen.
- Klicken Sie unter Hauptkonten mit Zugriff auf dieses Dienstkonto auf Zugriff erlauben.
-
Geben Sie die Haupt-ID des Aufruferkontos
CALLER_ACCOUNT
ein.Beispiel:
example-user@example.com
. -
Wählen Sie die Rolle „Service Account Token Creator“ (
roles/iam.serviceAccountTokenCreator
) aus. - Klicken Sie auf Speichern, um dem Nutzerkonto die Rolle zuzuweisen.
gcloud
Mit dem Befehl
gcloud iam service-accounts add-iam-policy-binding
wird einem Dienstkonto eine Rolle zugewiesen.Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
-
PRIV_SA
: Die E-Mail-Adresse des mit Berechtigungen versehenen Dienstkontos, für das das Token generiert wird. -
CALLER_ACCOUNT
: Die E-Mail-Adresse des Nutzerkontos, das zum Anfordern des kurzlebigen Tokens verwendet wird.
Führen Sie folgenden Befehl aus:
Linux, macOS oder Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Sie sollten eine Antwort ähnlich der folgenden erhalten:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die Zulassungsrichtlinie eines Dienstkontos ab.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
JSON-Text anfordern:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] } ] }
Wenn Sie dem Dienstkonto keine Rollen zugewiesen haben, enthält die Antwort lediglich einen
etag
-Wert. Geben Sie diesenetag
-Wert im nächsten Schritt an. -
Ändern Sie die Zulassungsrichtlinie, um
CALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) zuzuweisen.Fügen Sie beispielsweise Folgendes hinzu, um die Beispielantwort aus dem vorherigen Schritt zu ändern:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:my-user@example.com" ] } ] }
-
Schreiben Sie die aktualisierte Zulassungsrichtlinie:
Die Methode
serviceAccounts.setIamPolicy
legt eine aktualisierte Zulassungsrichtlinie für das Dienstkonto fest.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. POLICY_VERSION
: Die Richtlinienversion, die zurückgegeben werden soll. Anfragen sollten die neueste Richtlinienversion angeben. Diese ist Richtlinienversion 3. Weitere Informationen finden Sie unter Richtlinienversion beim Abrufen einer Richtlinie festlegen.-
POLICY
: Eine JSON-Darstellung der Richtlinie, die Sie festlegen möchten. Weitere Informationen zum Format einer Richtlinie finden Sie in der Richtlinienreferenz.Wenn Sie beispielsweise die im vorherigen Schritt gezeigte Zulassungsrichtlinie festlegen möchten, ersetzen Sie
POLICY
durch Folgendes, wobeiCALLER_ACCOUNT
das Nutzerkonto ist, das das kurzlebige Token erstellt:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
JSON-Text anfordern:
{ "policy": POLICY }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Die Antwort enthält die aktualisierte Zulassungsrichtlinie:
Selbstsigniertes Blob generieren
Erstellen Sie ein selbst signiertes Blob für das Dienstkonto:
REST
Die Methode
serviceAccounts.signBlob
der Service Account Credentials API signiert ein Blob mit einem vom System verwalteten privaten Schlüssel des Dienstkontos.Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
PRIV_SA
: Die E-Mail-Adresse des Dienstkontos mit den Berechtigungen, für das das kurzlebige Token erstellt wird. -
BLOB_PAYLOAD
Ein base64-codierter String aus Byte. Beispiel:VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu
.
HTTP-Methode und URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signBlob
JSON-Text anfordern:
{ "payload": "BLOB_PAYLOAD" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Wenn die
signBlob
-Anfrage erfolgreich war, enthält der Antworttext ein signiertes Blob und die Signierschlüssel-ID, mit der das Blob signiert wurde. Sie können den WertsignedBlob
als Inhabertoken verwenden, um eine Anfrage im Namen des Dienstkontos direkt zu authentifizieren. Das Token ist gültig, bis der vom System verwaltete private Schlüssel des Dienstkontos abläuft. Die ID dieses Schlüssels ist der Wert des FeldeskeyId
in der Antwort.{ "keyId": "42ba1e...fc0a", "signedBlob": "eyJ0eXAi...NiJ9" }
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-12-07 (UTC).