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
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the IAM and Service Account Credentials APIs:
gcloud services enable iam.googleapis.com
iamcredentials.googleapis.com 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 Google-Konto 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ür PRIV_SA
zu erteilen, weisen Sie CALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) für PRIV_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 „allow”-Richtlinie 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:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Schreiben Sie die aktualisierte „allow”-Richtlinie:
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:admin@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 Google-Konto verwenden.
Wenn Sie ein Nutzerkonto zum Generieren kurzlebiger Tokens verwenden, sind die folgenden Identitäten beteiligt:
Google-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ür PRIV_SA
erstellen kann, weisen Sie CALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) für PRIV_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 Google-Kontos des Aufrufers
CALLER_ACCOUNT
ein.Beispiel:
username@google.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:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die „allow”-Richtlinie 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:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Schreiben Sie die aktualisierte „allow”-Richtlinie:
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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user: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
Melden Sie sich in der Google Cloud CLI als das Google-Konto des Aufrufers an.
gcloud auth login CALLER_ACCOUNT
Erstellen Sie einen Schlüssel für das Dienstkonto.
Der Befehl
gcloud auth print-access-token
generiert ein OAuth 2.0-Zugriffstoken für ein 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. Das accessToken
kann dann verwendet werden, um eine Anfrage im Namen des Dienstkontos zu authentifizieren, bis die expireTime
erreicht wurde:
{ "accessToken": "eyJ0eXAi...NiJ9", "expireTime": "2020-04-07T15:01:23.045123456Z" }
Einfach loslegen (Go)
Bevor Sie diesen Beispielcode verwenden können, müssen Sie Standardanmeldedaten für Anwendungen für das Google-Konto des Aufrufers einrichten, dem Sie zuvor die erforderliche Rolle zugewiesen haben, um die Identität des mit Berechtigungen versehenen Dienstkontos zu übernehmen.
Java
Bevor Sie diesen Beispielcode verwenden können, müssen Sie Standardanmeldedaten für Anwendungen für das Google-Konto des Aufrufers einrichten, dem Sie zuvor die erforderliche Rolle zugewiesen haben, um die Identität des mit Berechtigungen versehenen Dienstkontos zu übernehmen.
Node.js
Bevor Sie diesen Beispielcode verwenden können, müssen Sie Standardanmeldedaten für Anwendungen für das Google-Konto des Aufrufers einrichten, dem Sie zuvor die erforderliche Rolle zugewiesen haben, um die Identität des mit Berechtigungen versehenen Dienstkontos zu übernehmen.
Python
Bevor Sie diesen Beispielcode verwenden können, müssen Sie Standardanmeldedaten für Anwendungen für das Google-Konto des Aufrufers einrichten, dem Sie zuvor die erforderliche Rolle zugewiesen haben, um die Identität des mit Berechtigungen versehenen Dienstkontos zu übernehmen.
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 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 Google-Konto 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ür PRIV_SA
zu erteilen, weisen Sie CALLER_SA
Rolle „Service Account OpenID Connect Identity Token Creator“ (roles/iam.serviceAccountOpenIdTokenCreator
) für PRIV_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 „allow”-Richtlinie 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:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Schreiben Sie die aktualisierte „allow”-Richtlinie:
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:admin@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 Google-Konto verwenden.
Wenn Sie ein Nutzerkonto zum Generieren kurzlebiger Tokens verwenden, sind die folgenden Identitäten beteiligt:
Google-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ür PRIV_SA
erstellen kann, weisen Sie CALLER_ACCOUNT
die Rolle „Service Account OpenID Connect Identity Token Creator“ (roles/iam.serviceAccountOpenIdTokenCreator
) für PRIV_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 Google-Kontos des Aufrufers
CALLER_ACCOUNT
ein.Beispiel:
username@google.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:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die „allow”-Richtlinie 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:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Schreiben Sie die aktualisierte „allow”-Richtlinie:
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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user: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
Melden Sie sich in der Google Cloud CLI als das Google-Konto des Aufrufers an.
gcloud auth login CALLER_ACCOUNT
Erstellen Sie einen Schlüssel für das Dienstkonto.
Mit dem Befehl
gcloud auth print-identity-token
wird ein OIDC-ID-Token für ein Dienstkonto generiert.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. Mit token
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:
- Authentifizierung bei einer mit API Gateway bereitgestellten API.
- Authentifizierung des Aufrufs einer Google API, wie in der Google-Authentifizierungsanleitung beschrieben.
- 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.
- 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 Google-Konto 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ür PRIV_SA
zu erteilen, weisen Sie CALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) für PRIV_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 „allow”-Richtlinie 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:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Schreiben Sie die aktualisierte „allow”-Richtlinie:
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:admin@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 Google-Konto verwenden.
Wenn Sie ein Nutzerkonto zum Generieren kurzlebiger Tokens verwenden, sind die folgenden Identitäten beteiligt:
Google-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ür PRIV_SA
erstellen kann, weisen Sie CALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) für PRIV_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 Google-Kontos des Aufrufers
CALLER_ACCOUNT
ein.Beispiel:
username@google.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:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die „allow”-Richtlinie 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:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Schreiben Sie die aktualisierte „allow”-Richtlinie:
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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user: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 Wert signedJwt
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 Google-Konto 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ür PRIV_SA
zu erteilen, weisen Sie CALLER_SA
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) für PRIV_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 „allow”-Richtlinie 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:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Schreiben Sie die aktualisierte „allow”-Richtlinie:
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:admin@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 Google-Konto verwenden.
Wenn Sie ein Nutzerkonto zum Generieren kurzlebiger Tokens verwenden, sind die folgenden Identitäten beteiligt:
Google-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ür PRIV_SA
erstellen kann, weisen Sie CALLER_ACCOUNT
die Rolle „Service Account Token Creator“ (roles/iam.serviceAccountTokenCreator
) für PRIV_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 Google-Kontos des Aufrufers
CALLER_ACCOUNT
ein.Beispiel:
username@google.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:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lesen Sie die Zulassungsrichtlinie für
PRIV_SA
:Die Methode
serviceAccounts.getIamPolicy
ruft die „allow”-Richtlinie 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:admin@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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Schreiben Sie die aktualisierte „allow”-Richtlinie:
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:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user: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 Wert signedBlob
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 Feldes keyId
in der Antwort.
{ "keyId": "42ba1e...fc0a", "signedBlob": "eyJ0eXAi...NiJ9" }