Dienstkonten

Auf dieser Seite werden Dienstkonten, Arten von Dienstkonten und die IAM-Rollen beschrieben, die für Dienstkonten verfügbar sind.

Hinweise

Was sind Dienstkonten?

Ein Dienstkonto ist ein spezieller Kontotyp, der nicht von einer Person, sondern von einer Anwendung oder einer VM-Instanz verwendet wird. Anwendungen verwenden Dienstkonten für autorisierte API-Aufrufe.

Eine Compute Engine-VM kann beispielsweise als Dienstkonto ausgeführt werden, dem Berechtigungen für den Zugriff auf benötigte Ressourcen zugewiesen sind. Damit ist das Dienstkonto die Identität des Dienstes und die Berechtigungen des Dienstkontos bestimmen, auf welche Ressourcen der Dienst zugreifen kann.

Ein Dienstkonto wird durch seine E-Mail-Adresse definiert, die für das Konto spezifisch ist.

Unterschiede zwischen einem Dienstkonto und einem Nutzerkonto

Dienstkonten unterscheiden sich von Nutzerkonten in mehrfacher Hinsicht:

  • Dienstkonten haben keine Passwörter und können sich nicht über Browser oder Cookies anmelden.
  • Dienstkonten sind privaten und öffentlichen RSA-Schlüsselpaaren zugeordnet, die zur Authentifizierung bei Google verwendet werden.
  • Es können Cloud IAM-Berechtigungen erteilt werden, damit andere Nutzer (oder andere Dienstkonten) die Identität eines Dienstkontos übernehmen können.
  • Dienstkonten sind im Gegensatz zu Nutzerkonten keine Mitglieder Ihrer G Suite-Domain. Wenn Sie beispielsweise Inhalte mit allen Mitgliedern in Ihrer G Suite-Domain teilen, werden diese nicht für Dienstkonten freigegeben. Ebenso können alle von einem Dienstkonto erstellten Inhalte nicht von G Suite-Administratoren verwaltet werden.

Dienstkontoschlüssel

Jedem Dienstkonto sind zwei Sätze öffentlicher/privater RSA-Schlüsselpaare zugeordnet, die zur Authentifizierung bei Google verwendet werden: von Google verwaltete Schlüssel und vom Nutzer verwaltete Schlüssel.

Von Google verwaltete Schlüssel

Von Google verwaltete Schlüsselpaare implizieren, dass Google sowohl den öffentlichen als auch den privaten Teil des Schlüssels speichert, sie regelmäßig rotiert (jeder Schlüssel kann maximal zwei Wochen lang zum Signieren verwendet werden) und dass der private Schlüssel treuhänderisch aufbewahrt wird und niemals direkt zugänglich ist. Cloud IAM stellt APIs bereit, um diese Schlüssel für die Anmeldung im Namen des Dienstkontos zu verwenden. Weitere Informationen finden Sie unter Kurzlebige Anmeldedaten für Dienstkonten erstellen.

Nutzerverwaltete Schlüssel

beta feature Uploading public keys for service accounts

Nutzerverwaltete Schlüsselpaare implizieren, dass Sie sowohl den öffentlichen als auch den privaten Teil eines Schlüsselpaars haben. Sie können ein oder mehrere nutzerverwaltete Schlüsselpaare erstellen (sogenannte "externe" Schlüssel), die auch außerhalb von Google Cloud verwendet werden können. Google speichert nur den öffentlichen Teil eines nutzerverwalteten Schlüssels.

Außerdem können Sie einen öffentlichen Schlüssel im entsprechenden Format erstellen und in Google hochladen, wo es dauerhaft mit dem angegebenen Dienstkonto verknüpft ist. Wenn Sie Signaturen für dieses Dienstkonto ausführen müssen, z. B. beim Erstellen von Dienstkontoschlüsseln, wird der hochgeladene öffentliche Schlüssel verwendet.

Der private Teil eines nutzerverwalteten Schlüsselpaars wird im Allgemeinen mit Standardanmeldedaten für Anwendungen verwendet. Der private Schlüssel wird dann zur Authentifizierung von Server-zu-Server-Anwendungen verwendet.

Bei nutzerverwalteten Schlüsseln sind Sie für die Sicherheit des privaten Schlüssels und andere Verwaltungsvorgänge wie die Schlüsselrotation verantwortlich. Nutzerverwaltete Schlüssel können über die Cloud IAM API, mit dem gcloud-Befehlszeilentool oder in der Google Cloud Console auf der Seite "Dienstkonten" verwaltet werden. Sie können bis zu 10 Dienstkontoschlüssel pro Dienstkonto erstellen, um eine Schlüsselrotation zu ermöglichen.

Sie können den Cloud Key Management Service (Cloud KMS) verwenden, um Schlüssel sicher zu verwalten.

Von Nutzern verwaltete Schlüssel eingeschränkt nutzen

Von Nutzern verwaltete Schlüssel sind äußerst leistungsstarke Anmeldedaten und können ein Sicherheitsrisiko darstellen, wenn sie nicht ordnungsgemäß verwaltet werden.

Sie können die Nutzung einschränken. Dazu wenden Sie die Beschränkung für Organisationsrichtlinien constraints/iam.disableServiceAccountKeyCreation auf Projekte, Ordner oder sogar auf Ihre gesamte Organisation an. Nach der Anwendung der Beschränkung können Sie nutzerverwaltete Schlüssel in kontrollierten Umgebungen aktivieren und so das potenzielle Risiko minimieren, das nicht verwaltete Schlüssel verursachen.

Arten von Dienstkonten

Nutzerverwaltete Dienstkonten

Wenn Sie ein neues Google Cloud-Projekt mit der Cloud Console erstellen und für Ihr Projekt die Compute Engine API aktiviert ist, wird standardmäßig ein Compute Engine-Dienstkonto erstellt. Die folgende E-Mail-Adresse dient seiner Identifikation:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Wenn Ihr Projekt eine App Engine-Anwendung enthält, wird für Ihr Projekt standardmäßig das App Engine-Standarddienstkonto erstellt. Die folgende E-Mail-Adresse dient seiner Identifikation:

PROJECT_ID@appspot.gserviceaccount.com

Wenn Sie in Ihrem Projekt ein Dienstkonto erstellen, geben Sie dem Dienstkonto einen Namen und ihm wird eine E-Mail-Adresse mit dem folgenden Format zugewiesen:

SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Mit der IAM API, in der Cloud Console oder mit dem gcloud-Befehlszeilentool können Sie bis zu 100 Dienstkonten pro Projekt erstellen, einschließlich des standardmäßigen Compute Engine-Dienstkontos und des App Engine-Dienstkontos. Diese Standarddienstkonten und die Dienstkonten, die Sie explizit erstellen, sind die nutzerverwalteten Dienstkonten.

Von Google verwaltete Dienstkonten

Zusätzlich zu den nutzerverwalteten Dienstkonten werden in der IAM-Richtlinie Ihres Projekts oder in der Cloud Console möglicherweise zusätzliche Dienstkonten angezeigt. Diese Dienstkonten werden von Google erstellt und sind Eigentum von Google. Diese Konten stellen verschiedene Google-Dienste dar und jedem Konto werden automatisch IAM-Rollen für den Zugriff auf Ihr Google Cloud-Projekt zugewiesen.

Google APIs-Dienstkonto

Ein Beispiel für ein von Google verwaltetes Dienstkonto ist ein Google API-Dienstkonto, das sich anhand der folgenden E-Mail-Adresse identifizieren lässt:

PROJECT_NUMBER@cloudservices.gserviceaccount.com

Dieses Dienstkonto wurde speziell für die Ausführung interner Google-Prozesse in Ihrem Namen entwickelt und ist in der Cloud Console unter Dienstkonten nicht aufgeführt. Standardmäßig wird dem Konto automatisch die Rolle "Projektbearbeiter" für das Projekt zugewiesen und es wird in der Cloud Console im Bereich "IAM" aufgeführt. Dieses Dienstkonto wird nur gelöscht, wenn das Projekt gelöscht wird. Google-Dienste können nur genutzt werden, wenn das Konto Zugriff auf Ihr Projekt hat. Daher sollten Sie die Rolle des Dienstkontos in Ihrem Projekt nicht entfernen oder ändern.

Dienstkontoberechtigungen

Ein Dienstkonto ist nicht nur eine Identität, sondern auch eine Ressource, der IAM-Richtlinien zugewiesen sind. Durch diese Richtlinien wird bestimmt, wer das Dienstkonto nutzen kann.

Alice kann beispielsweise die Bearbeiterrolle und Bob die Betrachterrolle für ein Dienstkonto haben. Dies entspricht dem Zuweisen von Rollen für andere Google Cloud-Ressourcen.

Den standardmäßigen Compute Engine- und App Engine-Dienstkonten werden Bearbeiterrollen für das Projekt zugewiesen, wenn sie erstellt werden, wodurch der Code, der in Ihrer App- oder VM-Instanz ausgeführt wird, die erforderlichen Berechtigungen hat. In diesem Fall sind die Dienstkonten Identitäten, denen die Bearbeiterrolle für eine Ressource (Projekt) zugewiesen ist.

Wenn Sie Ihrer Anwendung den Zugriff auf einen Cloud Storage-Bucket gewähren möchten, gewähren Sie dem Dienstkonto, das Ihre Anwendung verwendet, die Berechtigungen zum Lesen des Cloud Storage-Buckets. In diesem Fall ist das Dienstkonto die Identität, der Sie Berechtigungen für eine andere Ressource (den Cloud Storage-Bucket) gewähren.

Rolle "Dienstkontonutzer"

Sie können die Rolle des Dienstkontonutzers (roles/iam.serviceAccountUser) auf Projektebene für alle Dienstkonten im Projekt oder auf Dienstkontoebene zuweisen.

  • Wenn einem Nutzer die Rolle des Dienstkontonutzers für ein Projekt zugewiesen wird, erhält er Zugriff auf alle Dienstkonten im Projekt, einschließlich Dienstkonten, die möglicherweise in Zukunft erstellt werden.

  • Wenn einem Nutzer die Rolle des Dienstkontonutzers für ein bestimmtes Dienstkonto zugewiesen wird, erhält er nur Zugriff auf dieses Dienstkonto.

Nutzer, denen die Rolle des Dienstkontonutzers für ein Dienstkonto zugewiesen wurde, können damit indirekt auf alle Ressourcen zugreifen, auf die das Dienstkonto Zugriff hat. Beispiel: Einem Dienstkonto wurde die Rolle des Compute-Administrators (roles/compute.admin) zugewiesen. Ein Nutzer mit der Rolle "Dienstkontonutzer" (roles/iam.serviceAccountUser) für dieses Dienstkonto kann im Namen dieses Dienstkontos eine Compute Engine-Instanz starten. In diesem Ablauf übernimmt der Nutzer die Identität des Dienstkontos, um mithilfe der ihm zugewiesenen Rollen und Berechtigungen Aufgaben auszuführen.

Weitere Informationen zum Zuweisen von Nutzerrollen für Dienstkonten finden Sie unter Inhaberschaft und Zugriff auf ein Dienstkonto konfigurieren.

Dienstkonten stehen für Ihre Sicherheit auf Dienstebene. Die Sicherheit des Dienstes wird von den Personen bestimmt, die Cloud IAM-Rollen zum Verwalten und Verwenden der Dienstkonten haben, sowie von den Personen, die private externe Schlüssel für diese Dienstkonten haben. Best Practices für die Sicherheit sind z. B. folgende Maßnahmen:

  • Verwenden Sie die Cloud IAM API, um die Dienstkonten, die Schlüssel und die Richtlinien für diese Dienstkonten zu prüfen.
  • Wenn Ihre Dienstkonten keine externen Schlüssel erfordern, löschen Sie diese.
  • Wenn Nutzer keine Berechtigung zum Verwalten oder Verwenden von Dienstkonten benötigen, entfernen Sie sie aus der entsprechenden Cloud IAM-Richtlinie.

Weitere Informationen zu Best Practices finden Sie unter Informationen zu Dienstkonten.

Rolle "Ersteller von Dienstkonto-Token"

Diese Rolle ermöglicht den Identitätswechsel von Dienstkonten, um OAuth2-Zugriffstoken zu erstellen oder Blobs oder JWTs zu signieren.

Rolle "Dienstkontonutzer"

Diese Rolle wurde eingestellt. Wenn Sie Vorgänge mit einem Dienstkonto ausführen müssen, verwenden Sie die Rolle Dienstkontonutzer. Sie sollten auch die Rolle Ersteller von Dienstkonto-Tokens zuweisen, um effektiv dieselben Berechtigungen wie für "Dienstkontonutzer" (Service Account Actor) zu gewähren.

Zugriffsbereiche

Zugriffsbereiche sind die Legacy-Methode zum Festlegen von Berechtigungen für Ihre VM. Als es noch keine IAM-Rollen gab, waren Zugriffsbereiche der einzige Mechanismus zur Erteilung von Berechtigungen an Dienstkonten. Obwohl Zugriffsbereiche jetzt nicht mehr die primäre Methode zum Zuweisen von Berechtigungen sind, müssen Sie sie auch weiterhin festlegen, wenn Sie eine Instanz konfigurieren, die als Dienstkonto ausgeführt werden soll. Informationen zu Zugriffsbereichen finden Sie in der Google Compute Engine-Dokumentation.

Kurzlebige Anmeldedaten für das Dienstkonto

Sie können kurzlebige Anmeldedaten erstellen, mit denen Sie die Identität eines Google Cloud-Dienstkontos annehmen können. Diese Anmeldedaten können zur Authentifizierung von Aufrufen an Google Cloud APIs oder Drittanbieter-APIs verwendet werden.

Der häufigste Anwendungsfall für diese Anmeldedaten besteht darin, den Zugriff auf Google Cloud-Ressourcen für verschiedene Projekte, Organisationen oder Konten vorübergehend zu delegieren. Beispielsweise kann ein vorübergehender Notfallzugriff gewährt werden, statt permanente Anmeldedaten für ein Dienstkonto mit wichtigen Berechtigungen für einen externen Aufrufer bereitzustellen. Alternativ kann die Identität eines ausgewiesenen Dienstkontos mit eingeschränkten Berechtigungen von einem externen Aufrufer angenommen werden, ohne dass ein Dienstkonto mit wichtigen Berechtigungen erforderlich ist.

Weitere Informationen finden Sie unter Kurzlebige Anmeldedaten für das Dienstkonto erstellen.

Standardanmeldedaten für Anwendungen

Standardanmeldedaten für Anwendungen erleichtern die Nutzung von Dienstkonten bei der Verwendung innerhalb und außerhalb von Google Cloud sowie in mehreren Google Cloud-Projekten. Der häufigste Anwendungsfall ist das Testen von Code auf einem lokalen Computer, um diesen dann in ein Entwicklungsprojekt in Google Cloud und später in ein Produktionsprojekt in Google Cloud zu verschieben. Mit Standardanmeldedaten für Anwendungen wird sichergestellt, dass das Dienstkonto reibungslos funktioniert. Beim Testen auf Ihrem lokalen Computer wird ein lokal gespeicherter Dienstkontoschlüssel verwendet. Bei der Ausführung in Compute Engine wird jedoch das standardmäßige Compute Engine-Dienstkonto des Projekts verwendet. Weitere Informationen finden Sie unter Standardanmeldedaten für Anwendungen.

Nächste Schritte

Best Practices für die Verwendung von Dienstkonten finden Sie unter Informationen zu Dienstkonten.

Die folgenden Anleitungen enthalten weitere Informationen: