Dienstkonten

Auf dieser Seite werden Dienstkonten, Zugriffsbereiche sowie Identitäts- und Zugriffsmanagement (IAM)-Rollen beschrieben, die für Dienstkonten gelten. Wie Sie Dienstkonten erstellen und verwenden, erfahren Sie unter Dienstkonten für Instanzen erstellen und aktivieren.

Ein Dienstkonto ist ein spezielles Konto, das von Diensten und Anwendungen, die auf Ihrer Compute Engine-Instanz ausgeführt werden, zum Interagieren mit anderen Google Cloud Platform-APIs verwendet wird. Anwendungen können Dienstkonto-Anmeldedaten nutzen, um sich für eine Reihe von APIs zu autorisieren und im Rahmen der dem Dienstkonto und der VM-Instanz erteilten Berechtigungen Aktionen auszuführen. Außerdem können Sie Firewallregeln erstellen, durch die Traffic zu und von einer Instanz entsprechend dem mit ihr verknüpften Dienstkonto zugelassen oder verweigert wird.

Was sind Dienstkonten?

Ein Dienstkonto ist eine Identität, die eine Instanz oder eine Anwendung zum Ausführen von API-Anfragen in Ihrem Namen verwenden kann. Diese Identität dient dazu, die auf Ihren VM-Instanzen ausgeführten Anwendungen gegenüber anderen Google Cloud Platform-Diensten zu identifizieren. Wenn Sie zum Beispiel eine Anwendung schreiben, die Dateien auf Google Cloud Storage liest oder schreibt, muss diese sich zuerst bei der Google Cloud Storage API authentifizieren. Sie können ein Dienstkonto erstellen und dem Dienstkonto Rechte auf die Cloud Storage API erteilen. Anschließend bearbeiten Sie Ihren Anwendungscode so, dass er die Anmeldedaten des Dienstkontos an die Cloud Storage API übergibt. So kann sich Ihre Anwendung nahtlos bei der API authentifizieren, ohne geheime Schlüssel oder Nutzeranmeldedaten in Ihre Instanz, Ihr Image oder Ihren Anwendungscode einzubauen.

Wenn die Dienstkonten die erforderlichen IAM-Berechtigungen haben, können diese Dienstkonten Instanzen und andere Ressourcen erstellen und verwalten. Ressourcen können von den Dienstkonten nur dann geändert oder gelöscht werden, wenn Sie dem Dienstkonto auf Projekt- oder Ressourcenebene die erforderlichen IAM-Berechtigungen erteilen. Sie können einer Instanz auch ein anderes Dienstkonto zuordnen.

Einer Instanz kann nur ein Dienstkonto zugeordnet werden, und das Dienstkonto muss in demselben Projekt erstellt worden sein wie die Instanz.

Für Compute Engine-Instanzen stehen zwei Arten von Dienstkonten zur Verfügung:

  • Nutzerverwaltete Dienstkonten
  • Von Google verwaltete Dienstkonten

Nutzerverwaltete Dienstkonten

Zu den nutzerverwalteten Dienstkonten gehören neue Dienstkonten, die Sie explizit erstellen, und das standardmäßige Compute Engine-Dienstkonto.

Neue Dienstkonten

Sie können Ihre eigenen Dienstkonten mithilfe von Google Identity and Access Management erstellen und verwalten. Nachdem Sie es erstellt haben, weisen Sie dem Konto IAM-Rollen zu und richten Instanzen so ein, dass sie als das Dienstkonto ausgeführt werden. Anwendungen, die auf Instanzen laufen, die mit dem Dienstkonto aktiviert wurden, können die Anmeldedaten des Kontos nutzen, um Anfragen an andere Google APIs zu stellen.

Zum Anlegen und Einrichten eines neuen Dienstkontos siehe Dienstkonten für Instanzen erstellen und aktivieren.

Standardmäßiges Compute Engine-Dienstkonto

Für neu erstellte Projekte gibt es das Compute Engine-Standarddienstkonto, das mit der folgenden E-Mail identifiziert werden kann:

[PROJECT_NUMBER]-compute@developer.gserviceaccount.com

Das Standarddienstkonto wird von Google erstellt und automatisch zu Ihrem Konto hinzugefügt, aber Sie haben volle Kontrolle über das Konto.

Instanzen, die Sie mit dem gcloud-Befehlszeilentool oder der Google Cloud Platform Console erstellen, werden automatisch als Standarddienstkonto mit den folgenden Zugriffsbereichen aktiviert:

  • Nur-Lese-Zugriff auf Google Cloud Storage:
    https://www.googleapis.com/auth/devstorage.read_only
  • Schreibzugriff, um Compute Engine-Logs zu schreiben:
    https://www.googleapis.com/auth/logging.write
  • Schreibzugriff, um Messdaten über Ihre Google Cloud-Projekte zu veröffentlichen:
    https://www.googleapis.com/auth/monitoring.write
  • Lesezugriff auf die für Google Cloud Endpoints(Alpha) erforderlichen Service Management-Funktionen:
    https://www.googleapis.com/auth/service.management.readonly
  • Lese-/Schreibzugriff auf die für Google Cloud Endpoints(Alpha) erforderlichen Service Control-Funktionen:
    https://www.googleapis.com/auth/servicecontrol

Das Standarddienstkonto kann in der Google Cloud Platform Console geändert werden.

Wenn Sie eine Instanz durch eine direkte API-Anfrage und nicht mithilfe des Befehlszeilentools gcloud oder der Google Cloud Platform Console erstellen, dann wird der Instanz nicht das Standarddienstkonto zugewiesen. Sie können das Standarddienstkonto jedoch immer noch aktivieren, indem Sie es explizit in der Nutzlast der Anfrage spezifizieren.

Sie können dieses Dienstkonto aus Ihrem Projekt löschen, dies kann aber dazu führen, dass alle Anwendungen fehlschlagen, die auf die Anmeldedaten des Dienstkontos angewiesen sind. Wenn Sie das Standarddienstkonto versehentlich löschen, können Sie sich mit dem Compute Engine-Team in Verbindung setzen, um zu versuchen, das Konto wieder Ihrem Projekt hinzuzufügen.

Das Standarddienstkonto hat kurz gesagt also folgende Eigenschaften:

  • Es wird automatisch vom Google Cloud Platform Console-Projekt erstellt und mit automatisch generiertem Namen und E-Mail-Adresse versehen.
  • Es wird Ihrem Projekt automatisch als Projektbearbeiter hinzugefügt.
  • Es ist auf allen Instanzen aktiviert, die mit dem gcloud-Befehlszeilentool und der GCP Console mit einem bestimmten Berechtigungssatz erstellt wurden. Sie können dies überschreiben, indem Sie beim Erstellen der Instanz ein anderes Dienstkonto angeben oder Dienstkonten für diese Instanz explizit deaktivieren.

Von Google verwaltete Dienstkonten

Diese Dienstkonten werden von Google erstellt und verwaltet und Ihrem Projekt automatisch zugewiesen. Diese Konten repräsentieren verschiedene Google-Dienste, und jedes Konto hat in gewissem Umfang Zugriff auf Ihr Google Cloud Platform-Projekt.

Google APIs-Dienstkonto

Neben dem Standarddienstkonto haben alle Projekte, die mit der Compute Engine aktiviert wurden, ein Google APIs-Dienstkonto, das an dieser E-Mail erkennbar ist:

[PROJECT_NUMBER]@cloudservices.gserviceaccount.com

Dieses Dienstkonto ist speziell dafür vorgesehen, interne Google-Prozesse in Ihrem Namen auszuführen. Das Konto ist Eigentum von Google und ist nicht im Abschnitt Dienstkonten der GCP Console aufgeführt. Standardmäßig wird dem Konto automatisch die Projektbearbeiterrolle für das Projekt zugewiesen und das Konto ist im Abschnitt IAM der GCP Console aufgeführt. Dieses Dienstkonto wird erst dann gelöscht, wenn das Projekt gelöscht wird. Allerdings können Sie die Rollen ändern, die diesem Konto zugewiesen sind. Sie können ihm auch jeden Zugriff auf Ihr Projekt entziehen.

Bestimmte Ressourcen sind auf dieses Dienstkonto und die standardmäßigen Bearbeiterrechte, die ihm erteilt sind, angewiesen. So nutzen zum Beispiel verwaltete Instanzgruppen und die automatische Skalierung die Anmeldedaten dieses Kontos, um Instanzen zu erstellen, zu löschen und zu verwalten. Wenn Sie dem Dienstkonto Berechtigungen entziehen oder die Berechtigungen so verändern, dass es keine Berechtigungen erteilt, Instanzen zu erstellen, wird dies dazu führen, dass verwaltete Instanzgruppen und automatische Skalierung nicht mehr funktionieren.

Aus diesen Gründen sollten Sie die Rollen dieses Dienstkontos nicht ändern.

Compute Engine System-Dienstkonto

Alle Projekte, für die die Compute Engine API aktiviert wurde, verfügen über ein Compute Engine System-Dienstkonto, das anhand der folgenden Adresse identifizierbar ist:

service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com

Dieses Dienstkonto wurde speziell für Google Compute Engine entwickelt, um Dienstaufgaben für Ihr Projekt auszuführen. Es basiert auf der IAM-Richtlinie "Dienstagent", die Ihrem Google Cloud-Projekt erteilt wurde. Es ist auch das Dienstkonto, mit dem Compute Engine auf das kundeneigene Dienstkonto auf VM-Instanzen zugreift. Das Konto gehört Google, ist aber projektspezifisch und wird in der GCP Console unter Dienstkonten und IAM aufgeführt. Standardmäßig erhält das Konto automatisch die Rolle compute.serviceAgent für Ihr Projekt.

Dieses Dienstkonto wird nur gelöscht, wenn Sie Ihr Projekt löschen. Sie können die diesem Konto zugewiesenen Rollen ändern und über das Konto den gesamten Zugriff auf Ihr Projekt aufheben. Durch den Widerruf oder die Änderung der Berechtigungen für dieses Dienstkonto wird verhindert, dass Compute Engine die Dienstkonten-Identitäten auf Ihren VMs verwenden kann. Dies kann zu Softwareausfällen in Ihren VMs führen.

Aus diesen Gründen sollten Sie die Rollen für dieses Dienstkonto nicht ändern.

Dienstkontoberechtigungen

Wenn Sie eine Instanz einrichten, die als Dienstkonto ausgeführt werden soll, bestimmt die Kombination von Zugriffsbereichen, die der Instanz zugewiesen sind, und der IAM-Rollen, die dem Dienstkonto zugewiesen sind, die Zugriffsebene des Dienstkontos. Sie müssen sowohl die Zugriffsbereiche als auch die IAM-Rollen konfigurieren, um erfolgreich eine Instanz einzurichten, die als Dienstkonto ausgeführt werden soll. Im Wesentlichen gilt:

  • Zugriffsbereiche autorisieren den möglichen Zugriff, den eine Instanz auf API-Methoden hat.
  • IAM schränkt diesen Zugriff durch die Rollen ein, die dem Dienstkonto zugewiesen sind.

Zugriffsbereiche und IAM-Rollen werden in den Abschnitten weiter unten detailliert beschrieben.

Viele Zugriffsbereiche stehen zur Verfügung und können ausgewählt werden. Aber Sie können auch einfach den Zugriffsbereich cloud-platform festlegen, der den Zugriff auf alle Cloud Platform-Dienste autorisiert, und den Zugriff dann über IAM-Rollen einschränken:

https://www.googleapis.com/auth/cloud-platform

Beispiel: Sie aktivieren den Zugriffsbereich cloud-platform auf einer Instanz und weisen dann die folgenden IAM-Rollen zu:

  • roles/compute.instanceAdmin.v1
  • roles/storage.objectViewer
  • roles/compute.networkAdmin

Das Dienstkonto hat dann nur die Berechtigungen, die von den drei IAM-Rollen erteilt werden. Es kann keine Aktionen ausführen, die außerhalb dieser Rollen liegen, obwohl der Zugriffsbereich Cloud Platform aktiviert wurde.

Wenn Sie umgekehrt einen restriktiveren Zugriffsbereich zuweisen, etwa nur den Lesezugriffsbereich von Cloud Storage (https://www.googleapis.com/auth/devstorage.read_only), und dann die Rolle roles/storage.objectAdmin im Dienstkonto festlegen, ist die Instanz trotz der Rolle roles/storage.ObjectAdmin nicht berechtigt, Google Cloud Storage-Objekte zu verwalten. Im Lesezugriffbereich der Cloud Storage hat die Instanz keine Autorisierung zur Bearbeitung von Speicherdaten.

Wenn Sie umgekehrt einen restriktiveren Zugriffsbereich zuweisen, etwa nur den Lesezugriffsbereich von Cloud Storage ({0}https://www.googleapis.com/auth/devstorage.read_only{/0}) und dann die Rolle {0}roles/storage.objectAdmin{/0} im Dienstkonto festlegen, ist die Instanz trotz der Rolle {0}roles/storage.{/0}{0}ObjectAdmin{/0} nicht berechtigt, Google Cloud Storage-Objekte zu verwalten.{0}{/0}{0}Im Lesezugriffbereich der Cloud Storage hat die Instanz keine Autorisierung zur Bearbeitung von Speicherdaten.{/0}{0}Im Allgemeinen werden in der Dokumentation jeder API-Methode die Zugriffsbereiche angegeben, die für diese Methode benötigt werden.{/0} So wird beispielsweise mit der Methode instances.insert eine Liste der gültigen Zugriffsbereiche im Abschnitt Autorisierung aufgerufen.

Zugriffsbereiche

Zugriffsbereiche sind die alte Methode, Berechtigungen für Ihre Instanz festzulegen. Als es noch keine IAM-Rollen gab, waren Zugriffsbereiche der einzige Mechanismus zur Erteilung von Berechtigungen an Dienstkonten. Auch wenn sie jetzt nicht mehr die primäre Art und Weise sind, Berechtigungen zu erteilen, müssen Sie weiterhin Zugriffsbereiche festlegen, wenn Sie eine Instanz konfigurieren, die als Dienstkonto ausgeführt werden soll.

Zugriffsbereiche sind instanzbezogen: Sie legen Zugriffsbereiche fest, wenn Sie eine Instanz erstellen. Die Zugriffsbereiche sind nur vorhanden, solange die Instanz existiert. Zugriffsbereiche funktionieren nur, wenn Sie die entsprechende API auf dem Projekt aktiviert haben, zu dem das Dienstkonto gehört. Wenn Sie zum Beispiel einer VM-Instanz einen Zugriffsbereich für Google Cloud Storage zuweisen, kann die Instanz die Cloud Storage-API nur dann aufrufen, wenn die Cloud Storage-API im Projekt aktiviert ist. Wenn die API nicht im Projekt aktiviert ist, hat der Zugriffsbereich keine Auswirkungen.

Beispiele für Zugriffsbereiche:

  • https://www.googleapis.com/auth/cloud-platform – vollständiger Zugriff auf alle Google Cloud Platform-Ressourcen.
  • https://www.googleapis.com/auth/compute – vollständige Kontrolle des Zugriffs auf Google Compute Engine-Methoden.
  • https://www.googleapis.com/auth/compute.readonly – Lesezugriff auf Google Compute Engine-Methoden.
  • https://www.googleapis.com/auth/devstorage.read_only – Lesezugriff auf Google Cloud Storage.
  • https://www.googleapis.com/auth/logging.write – Schreibzugriff auf die Google Compute Engine-Logs.

IAM-Rollen

Zusätzlich zur Festlegung der Zugriffsbereiche müssen Sie einem Dienstkonto die richtigen IAM-Rollen zuweisen, um die Zugriffsebene des Dienstkontos festzulegen. Sie können einem Dienstkonto zum Beispiel die IAM-Rollen für die Verwaltung von Google Cloud Storage-Objekten oder für die Verwaltung von Google Cloud Storage-Buckets oder für beides zuweisen und das Konto dadurch auf die Berechtigungen beschränken, die durch diese Rollen erteilt werden.

IAM-Rollen sind kontospezifisch. Das bedeutet: Sobald Sie einem Dienstkonto eine IAM-Rolle zuweisen, kann diese Rolle von jeder Instanz genutzt werden, die als dieses Dienstkonto ausgeführt wird. Berücksichtigen Sie außerdem folgendes:

  • Einige IAM-Rollen sind aktuell in der Betaphase.

    Wenn es für die gewünschte Zugriffsebene keine IAM-Rolle gibt, können Sie eine der einfachen Rollen wie Projektbearbeiter zuweisen.

  • Sie müssen Zugriffsbereiche auf der Instanz festlegen, um den Zugriff zu autorisieren.

    Es reicht nicht aus, beim Erstellen der VM-Instanz dem Dienstkonto nur IAM-Rollen zuzuweisen und die Zugriffsbereiche wegzulassen. Die Zugriffsebene eines Dienstkontos wird durch die Kombination der Zugriffsbereiche und IAM-Rollen bestimmt. Sie müssen für das Dienstkonto also sowohl Zugriffsbereiche als auch IAM-Rollen konfigurieren, damit es ordnungsgemäß funktioniert.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation