Anfragen an Compute Engine autorisieren

Wenn Sie die Compute Engine API zur Verwaltung Ihrer Compute Engine-Ressourcen verwenden, können Sie die Anwendungen bei der API authentifizieren, indem Sie Anmeldedaten von einem Compute Engine-Dienstkonto anfordern. Mit Dienstkonten kann Ihre Anwendung sich bei der API authentifizieren, ohne geheime Schlüssel in Ihren Anwendungscode einzubetten.

Dienstkonten werden meist empfohlen, wenn die Anwendung Anfragen an die API autorisieren muss. Wenn Sie jedoch Entwicklungs- oder Verwaltungstools erstellen, bei denen Nutzer den Zugriff auf ihre Google Cloud-Ressourcen erlauben, verwenden Sie eine Nutzerautorisierung.

Zum Abrufen von Anmeldedaten über ein Dienstkonto können Sie eine Compute Engine-Clientbibliothek und Standardanmeldedaten für Anwendungen verwenden. Mit diesen Paketen kann die Anwendung Anmeldedaten von verschiedenen verfügbaren Quellen anfordern, je nachdem, wo die Anwendung ausgeführt wird.

Auf Compute Engine-Instanzen ausgeführte Anwendungen

Bei der Ausführung von Anwendungen auf Compute Engine-Instanzen können Standardanmeldedaten von Anwendungen die Anmeldedaten über integrierte Dienstkonten anfordern. Informationen zum Konfigurieren Ihrer Instanzen mit diesen integrierten Dienstkonten und zum Ausführen Ihrer Anwendung auf einer Compute Engine-Instanz finden Sie unter Anwendungen direkt mit Zugriffstoken authentifizieren.

Außerhalb von Google Cloud ausgeführte Anwendungen

Bei der Ausführung von Anwendungen auf Systemen außerhalb der Google Cloud können Sie Standardanmeldedaten von Anwendungen verwenden, um Anmeldedaten über Umgebungsvariablen auf diesen Systemen anzufordern. Informationen zum Konfigurieren Ihrer Umgebungsvariablen mit den erforderlichen Anmeldedaten finden Sie unter Authentifizierung als Dienstkonto.

Anwendungen im Entwicklungsstadium

Sie können Anwendungen während der lokalen Entwicklung mit dem Befehl gcloud auth application-default login vorübergehend abrufen. Dieser Befehl hilft bei der Bereitstellung von Nutzeranmeldedaten, wenn Sie Code entwickeln, der normalerweise ein Dienstkonto verwenden würde, aber den Code in einer lokalen Entwicklungsumgebung ausführen muss. Die Anmeldedaten gelten für alle API-Aufrufe, die die Clientbibliothek der Standardanmeldedaten für Anwendungen verwenden.

  1. Installieren Sie die gcloud CLI auf Ihren Entwicklungssystemen.

  2. Stellen Sie Ihre Anmeldedaten für das Tool mit dem Befehl gcloud auth application-default login bereit.

Die Anwendung ruft Anmeldedaten vom Tool ab. Später können Sie die Anwendung auf Compute Engine-Instanzen bereitstellen, bei denen die Anwendung die Anmeldedaten automatisch von den integrierten Dienstkonten anfordert, oder auf anderen Systemen, wo die Anmeldedaten in den Umgebungsvariablen angegeben werden.

Beispiel: Authentifizierung über Standardanmeldedaten für Anwendungen

Dieses Beispiel verwendet die Python-Clientbibliothek zum Authentifizieren und zum Stellen einer Anfrage an die Cloud Storage-API, damit die Buckets in einem Projekt aufgelistet werden. In diesem Beispiel wird das folgende Verfahren angewendet:

  1. Rufen Sie die erforderlichen Anmeldedaten zur Authentifizierung für die Cloud Storage API ab und initialisieren Sie den Cloud Storage-Dienst mit der Methode build() und den Anmeldedaten.
  2. Listen Sie Buckets im Cloud Storage auf.

Sie können dieses Beispiel auf einer Instanz ausführen, die Zugriff auf die Verwaltung von Buckets in Cloud Storage hat, auf Ihrem lokalen Computer nach dem Ausführen des Befehls gcloud beta auth application-default login oder nachdem Sie eine Umgebungsvariable festgelegt haben, um die Standardanmeldedaten für Anwendungen zu verwenden.


import argparse

import googleapiclient.discovery

def create_service():
    # Construct the service object for interacting with the Cloud Storage API -
    # the 'storage' service, at version 'v1'.
    # Authentication is provided by application default credentials.
    # When running locally, these are available after running
    # `gcloud auth application-default login`. When running on Compute
    # Engine, these are available from the environment.
    return googleapiclient.discovery.build('storage', 'v1')

def list_buckets(service, project_id):
    buckets = service.buckets().list(project=project_id).execute()
    return buckets

def main(project_id):
    service = create_service()
    buckets = list_buckets(service, project_id)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

Zugriff auf Google Cloud-Ressourcen anfordern, die Nutzern der Anwendung gehören

Wenn Sie Entwicklungs- oder Verwaltungstools erstellen, bei denen Nutzer den Zugriff auf ihre Google Cloud-Ressourcen erlauben, fordern Sie die Autorisierung über einen Standard-OAuth 2.0-Prozess an. Dabei müssen die Nutzer den Zugriff auf ihre Informationen über eine Nutzerautorisierung erlauben. Nachdem Ihre Anwendung Zugriff hat, kann sie die Compute Engine-Ressourcen im Projekt jedes Nutzers anzeigen oder ändern.

Begrenzen Sie in der Anfrage den Zugriffsbereich auf die Methoden und Nutzerinformationen, die die Anwendung benötigt. Geben Sie z. B. den Bereich compute.readonly an, wenn die Anwendung vorhandene Compute Engine-Ressourcen anzeigt, aber keine Ressourcen für die Nutzer erstellt oder ändert.

Compute Engine bietet die folgenden Bereiche:

Geltungsbereich Bedeutung
https://www.googleapis.com/auth/compute Lese-/Schreibzugriff auf Compute Engine-Methoden
https://www.googleapis.com/auth/compute.readonly Lesezugriff auf Compute Engine-Methoden
https://www.googleapis.com/auth/cloud-platform Sie können Ihre Daten in den meisten Google Cloud-Diensten im angegebenen Google Cloud-Projekt aufrufen und verwalten.

Eine vollständige Liste der Dienste und erforderlichen Bereiche in Google Cloud finden Sie unter OAuth 2.0-Bereiche für Google APIs.