Auf dieser Seite wird erläutert, wie Sie einen öffentlichen Schlüssel für ein Dienstkonto hochladen. Nachdem Sie den öffentlichen Schlüssel hochgeladen haben, können Sie sich mit dem privaten Schlüssel aus dem Schlüsselpaar als Dienstkonto authentifizieren.
Hinweise
Enable the IAM API.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Zentraler Dienstkontoadministrator (roles/iam.serviceAccountKeyAdmin
) für das Projekt oder das Dienstkonto, dessen Schlüssel Sie verwalten möchten, zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Hochladen von Dienstkontenschlüsseln benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Weitere Informationen finden Sie unter Dienstkontenrollen.
Abhängig von der Konfiguration Ihrer Organisationsrichtlinie müssen Sie möglicherweise auch den Upload von Dienstkontoschlüsseln in Ihrem Projekt zulassen, bevor Sie einen Schlüssel hochladen können.
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihre Organisation zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Hochladen von Dienstkontoschlüsseln in ein Projekt benötigen:
-
Organization Policy Administrator (
roles/orgpolicy.policyAdmin
) -
Organisationsbetrachter (
roles/resourcemanager.organizationViewer
) -
Tag-Administrator (
roles/resourcemanager.tagAdmin
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Hochladen von Dienstkontoschlüsseln in ein Projekt erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, damit Dienstkontoschlüssel in ein Projekt hochgeladen werden können:
-
orgpolicy.constraints.list
-
orgpolicy.customConstraints.create
-
orgpolicy.customConstraints.delete
-
orgpolicy.customConstraints.get
-
orgpolicy.customConstraints.list
-
orgpolicy.customConstraints.update
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
-
resourcemanager.organizations.get
-
resourcemanager.projects.listTagBindings
-
resourcemanager.projects.listEffectiveTags
-
resourcemanager.tagKeys.get
-
resourcemanager.tagKeys.list
-
resourcemanager.tagValues.list
-
resourcemanager.tagValues.get
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Hochladen von Dienstkontoschlüsseln zulassen
Bevor Sie einen Dienstkontoschlüssel erstellen, prüfen Sie, ob die Einschränkung der Organisationsrichtlinie iam.disableServiceAccountKeyUpload
für Ihr Projekt nicht erzwungen wird. Wenn diese Einschränkung für Ihr Projekt erzwungen wird, können Sie keine Dienstkontoschlüssel in dieses Projekt hochladen.
Wir empfehlen, diese Einschränkung für die meisten Projekte zu erzwingen und nur Projekte auszunehmen, für die wirklich Dienstkontoschlüssel erforderlich sind. Weitere Informationen zu alternativen Authentifizierungsmethoden finden Sie unter Die richtige Authentifizierungsmethode für Ihren Anwendungsfall auswählen.
Wenn Sie ein Projekt von der Einschränkung der Organisationsrichtlinie iam.disableServiceAccountKeyUpload
ausnehmen möchten, bitten Sie einen Administrator der Organisationsrichtlinie, Folgendes zu tun:
-
Erstellen Sie auf Organisationsebene einen Tag-Schlüssel und einen Tag-Wert, mit denen Sie festlegen, ob eine Ressource von der Organisationsrichtlinie ausgenommen werden soll. Wir empfehlen, ein Tag mit dem Schlüssel
disableServiceAccountKeyUpload
und den Wertenenforced
undnot_enforced
zu erstellen.Informationen zum Erstellen von Tag-Schlüsseln und -Werten finden Sie unter Neues Tag erstellen und definieren.
-
Hängen Sie das Tag
disableServiceAccountKeyUpload
an die Organisation an und legen Sie es auf den Wertenforced
fest. Alle Ressourcen in der Organisation übernehmen diesen Tag-Wert, sofern er nicht mit einem anderen Tag-Wert überschrieben wird.Informationen zum Anhängen von Tags an Ressourcen finden Sie unter Tags an Ressourcen anhängen.
-
Hängen Sie für jedes Projekt oder jeden Ordner, den Sie von der Organisationsrichtlinie ausschließen möchten, das Tag
disableServiceAccountKeyUpload
an und legen Sie als Wertnot_enforced
fest. Wenn Sie einen Tag-Wert für ein Projekt oder einen Ordner auf diese Weise festlegen, wird der von der Organisation übernommene Tag-Wert überschrieben. -
Erstellen oder aktualisieren Sie die Organisationsrichtlinie, die das Hochladen von Dienstkontoschlüsseln verhindert, damit die Einschränkung nicht für ausgenommene Ressourcen erzwungen wird. Diese Richtlinie sollte die folgenden Regeln enthalten:
-
Konfigurieren Sie die Einschränkung
iam.disableServiceAccountKeyUpload
so, dass sie für Ressourcen mit dem TagdisableServiceAccountKeyUpload: not_enforced
nicht erzwungen wird. Die Bedingung in dieser Regel sollte so aussehen:"resource.matchTag('ORGANIZATION_ID/disableServiceAccountKeyUpload', 'not_enforced')"
- Konfigurieren Sie die Einschränkung
iam.disableServiceAccountKeyUpload
so, dass sie für alle anderen Ressourcen erzwungen wird.
-
Öffentlichen Schlüssel für ein Dienstkonto hochladen
Sie können den öffentlichen Schlüsselteil eines nutzerverwalteten Schlüsselpaars hochladen, um ihn mit einem Dienstkonto zu verknüpfen. Nachdem Sie den öffentlichen Schlüssel hochgeladen haben, können Sie den privaten Schlüssel aus dem Schlüsselpaar als Dienstkontoschlüssel verwenden.
Der hochgeladene Schlüssel muss ein öffentlicher RSA-Schlüssel sein, der in ein X.509 v3-Zertifikat eingebunden und base64-codiert ist. Sie können mit Tools wie OpenSSL einen Schlüssel und ein Zertifikat in diesem Format generieren.
Fügen Sie keine privaten Informationen in das X.509-Zertifikat ein. Verwenden Sie insbesondere ein allgemeines Thema und fügen Sie keine optionalen Attribute hinzu. Zertifikate sind öffentlich sichtbar. Alle privaten Informationen im Zertifikat sind für jeden sichtbar, der das Zertifikat abruft. Weitere Informationen finden Sie unter Offenlegung vertraulicher Informationen in hochgeladenen X.509-Zertifikaten vermeiden.
Mit dem folgenden Befehl wird beispielsweise ein 2.048-Bit-RSA-Schlüsselpaar generiert und der öffentliche Schlüssel in ein selbst signiertes Zertifikat eingebunden, das 365 Tage gültig ist:
openssl req -x509 -nodes -newkey rsa:2048 -days 365 \
-keyout /path/to/private_key.pem \
-out /path/to/public_key.pem \
-subj "/CN=unused"
Anschließend können Sie die Datei public_key.pem
als öffentlichen Schlüssel für ein Dienstkonto hochladen.
Console
- Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Die verbleibenden Schritte werden in der Google Cloud Console angezeigt.
- Wählen Sie ein Projekt aus.
- Klicken Sie auf der Seite Dienstkonten auf die E-Mail-Adresse des Dienstkontos, für das Sie einen Schlüssel hochladen möchten.
- Klicken Sie auf den Tab Schlüssel.
- Klicken Sie auf das Drop-down-Menü Schlüssel hinzufügen und wählen Sie dann Vorhandenen Schlüssel hochladen aus.
- Klicken Sie auf Durchsuchen und wählen Sie die Datei mit dem öffentlichen Schlüssel aus. Alternativ können Sie den Inhalt Ihrer öffentlichen Schlüsseldatei kopieren und in das Feld Vorhandenen Schlüssel einfügen einfügen.
- Klicken Sie auf Hochladen.
gcloud
Mit dem Befehl gcloud iam service-accounts keys upload
können Sie einen öffentlichen Schlüssel zum Signieren von Dienstkontoschlüsseln hochladen.
Ersetzen Sie die folgenden Werte:
KEY_FILE
: der Pfad zur Datei mit den hochzuladenden Daten, z. B../public_key.pem
.SA_NAME
: Der Name des Dienstkontos, für das ein Schlüssel hochgeladen werden soll.PROJECT_ID
: Ihre Google Cloud-Projekt-ID.
gcloud iam service-accounts keys upload KEY_FILE \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
Die Ausgabe enthält eine eindeutige Kennzeichnung für den hochgeladenen Schlüssel:
Name: projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0
Um festzustellen, ob der vorherige Befehl erfolgreich ausgeführt wurde, geben Sie den Befehl gcloud iam service-accounts keys list
ein:
gcloud iam service-accounts keys list \ --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
Die Ausgabe enthält die gleiche eindeutige Kennzeichnung, die nach dem Erstellen des Schlüssels zurückgegeben wurde:
KEY_ID | CREATED_AT | EXPIRES_AT | DEAKTIVIERT |
c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0 | 2019-06-26T21:01:42Z | 9999-12-31T23:59:59Z |
REST
Mit der Methode projects.serviceAccounts.keys.upload
können Sie den öffentlichen Schlüssel aus einem vom Nutzer verwalteten Schlüsselpaar hochladen und ihn dem Dienstkonto hinzufügen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
PROJECT_ID
: Ihre Google Cloud-Projekt-ID. Projekt-IDs sind alphanumerische Strings, wiemy-project
.SA_NAME
: Den Namen des Dienstkontos, mit dem der Schlüssel verknüpft werden soll.PUBLIC_KEY_DATA
: Die Daten des öffentlichen Schlüssels für das Schlüsselpaar. Dieser Schlüssel muss ein öffentlicher RSA-Schlüssel sein, der in ein X.509 v3-Zertifikat eingebunden ist. Codieren Sie die Daten des öffentlichen Schlüssels mit base64, einschließlich der ersten Zeile,-----BEGIN CERTIFICATE-----
, und der letzten Zeile,-----END CERTIFICATE-----
.
HTTP-Methode und URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload
JSON-Text anfordern:
{ "publicKeyData": "PUBLIC_KEY_DATA" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "name": "projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com/keys/c7b74879da78e4cdcbe7e1bf5e129375c0bfa8d0", "validAfterTime": "2020-05-17T19:31:19Z", "validBeforeTime": "2021-05-17T19:31:19Z", "keyAlgorithm": "KEY_ALG_RSA_2048", "keyOrigin": "USER_PROVIDED", "keyType": "USER_MANAGED" }
Hochladen von öffentlichen Schlüsseln deaktivieren
Informationen zum Deaktivieren der Funktion zum Hochladen von Schlüsseln für Ihr Projekt finden Sie unter Dienstkontoschlüssel-Upload einschränken.
Nächste Schritte
- Dienstkontoschlüssel erstellen und löschen
- Dienstkontoschlüssel auflisten und abrufen
- Weitere Informationen finden Sie unter Alternativen zu Dienstkontoschlüsseln für die Authentifizierung.
- Dienstkonten mithilfe von Dienstkontoschlüsseln authentifizieren
- Mehr über die Best Practices für die Verwaltung von Dienstkontoschlüsseln.
Jetzt testen
Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
Jetzt kostenlos starten