Cloud Storage-Authentifizierung

Die meisten Vorgänge in Cloud Storage müssen authentifiziert werden. Die einzige Ausnahme sind Operationen an Objekten, auf die anonym zugegriffen werden kann. Objekte sind dann anonym zugänglich, wenn der Gruppe allUsers die Berechtigung READ gewährt wurde. Zur Gruppe allUsers gehört jeder im Internet.

OAuth 2.0

Authentifizierung

Cloud Storage nutzt OAuth 2.0 für die API-Authentifizierung und -Autorisierung. Bei der Authentifizierung wird die Identität eines Clients ermittelt. Der genaue Ablauf der Authentifizierung hängt davon ab, wie Sie auf Cloud Storage zugreifen. Es gibt jedoch zwei grundlegende Arten:

  • Bei einem serverbezogenen Ablauf kann eine Anwendung die Anmeldedaten eines Dienstkontos direkt bereithalten, um sich zu authentifizieren. Verwenden Sie diesen Ablauf, wenn Ihre Anwendung mit eigenen Daten anstatt mit denen von Nutzern arbeitet. Google Cloud Platform-Projekte haben Standarddienstkonten, die Sie verwenden können. Alternativ erstellen Sie ein neues.

  • Bei einem nutzerbezogenen Ablauf kann die Anwendung Anmeldedaten von einem Endnutzer abrufen. Der Nutzer meldet sich an, um sich zu authentifizieren. Verwenden Sie diesen Ablauf, wenn Ihre Anwendung auf Nutzerdaten zugreifen muss. Im Abschnitt Anmeldedaten von Nutzerkonten weiter unten auf der Seite finden Sie Szenarien, in denen ein nutzerbezogener Ablauf angemessen ist.

Sie können auch beide Authentifizierungsarten gemeinsam in derselben Anwendung verwenden. Weitere Hintergrundinformationen zum Thema Authentifizierung finden Sie im Autorisierungsleitfaden für die Google Cloud Platform.

Bereiche

Die Autorisierung dient dazu festzustellen, welche Berechtigungen eine authentifizierte Identität bei einer Reihe von Ressourcen hat. OAuth setzt Bereiche ein, um zu ermitteln, ob eine authentifizierte Identität autorisiert ist. Anwendungen verwenden Anmeldedaten, die sie im Rahmen eines nutzer- oder serverbezogenen Authentifizierungsablaufs erhalten haben, zusammen mit einem oder mehreren Bereichen, um für den Zugriff auf geschützte Ressourcen ein Zugriffstoken von einem Google-Autorisierungsserver anzufordern. Beispiel: Anwendung A mit einem Zugriffstoken mit dem Bereich read-only kann nur Daten lesen, während Anwendung B mit einem Zugriffstoken mit dem Bereich read-write Daten lesen und ändern kann. Keine der beiden Anwendungen kann jedoch Zugriffssteuerungslisten für Objekte und Buckets lesen oder ändern. Nur eine Anwendung mit dem Bereich full-control ist dazu in der Lage.

Typ Beschreibung Bereichs-URL
read-only Gewährt nur Lesezugriff auf Daten, einschließlich des Auflistens von Buckets. https://www.googleapis.com/auth/devstorage.read_only
read-write Gewährt Zugriff zum Lesen und Ändern von Daten, jedoch nicht von Metadaten wie IAM-Richtlinien. https://www.googleapis.com/auth/devstorage.read_write
full-control Gewährt vollständige Kontrolle über Daten, einschließlich der Fähigkeit, IAM-Richtlinien zu ändern. https://www.googleapis.com/auth/devstorage.full_control
cloud-platform.read-only Daten für alle Google Cloud Platform-Dienste anzeigen. Bei Cloud Storage entspricht dies devstorage.read-only. https://www.googleapis.com/auth/cloud-platform.read-only
cloud-platform Daten für alle Google Cloud Platform-Dienste anzeigen und verwalten. Bei Cloud Storage entspricht dies devstorage.full-control. https://www.googleapis.com/auth/cloud-platform

gsutil-Authentifizierung

Wenn gsutil mit dem Cloud SDK installiert wurde, sollten Sie sich mit Dienstkonto-Anmeldedaten authentifizieren.

  1. Nutzen Sie ein vorhandenes Dienstkonto oder erstellen Sie ein neues Konto. Laden Sie anschließend den zugehörigen privaten Schlüssel herunter.

  2. Verwenden Sie gcloud auth activate-service-account, um sich mit dem Dienstkonto zu authentifizieren:

    gcloud auth activate-service-account --key-file [KEY_FILE]

    Dabei ist [KEY_FILE] der Name der Datei, die die Dienstkonto-Anmeldedaten enthält.

gcloud auth verwendet beim Abrufen eines Zugriffstokens den Bereich cloud-platform.

Wenn Sie gsutil unabhängig vom Cloud SDK installiert haben, finden Sie auf der Seite zur Installation von gsutil Informationen zur Authentifizierung.

Authentifizierung der Clientbibliothek

Clientbibliotheken können Standardanmeldedaten der Anwendung für ein leichtes Authentifizieren mit Google APIs verwenden sowie für das Senden von Anfragen an diese. Sie können mit den Standardanmeldedaten der Anwendung lokal testen und sie ohne Änderungen am zugrunde liegenden Code bereitstellen. Weitere Informationen, einschließlich Beispielcodes, siehe Autorisierungsleitfaden für Google Cloud Platform.

  • Google Cloud Platform

    Wenn Sie Ihre Anwendung in App Engine oder Compute Engine ausführen, stellt die Umgebung bereits Authentifizierungsinformationen eines Dienstkontos bereit, sodass keine weitere Einrichtung erforderlich ist. Bei Compute Engine hängt der Bereich des Dienstkontos davon ab, wie Sie die Instanz erstellt haben (siehe Neue Instanz erstellen, die als Dienstkonto ausgeführt werden soll). Bei App Engine wird der Bereich cloud-platform verwendet.

  • Andere Umgebungen

    Wenn Sie Ihre lokale Entwicklungs- oder Produktionsumgebung initialisieren möchten, erstellen Sie ein GCP-Dienstkonto, laden Sie seinen Schlüssel herunter und legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS so fest, dass sie den Schlüssel verwendet. Eine detaillierte Anleitung mit Verwendung von Cloud Storage-Clientbibliotheken finden Sie unter Authentifizierung einrichten. Statt eine Umgebungsvariable festzulegen, können Sie auch den Dienstkontoschlüssel direkt im Code verwenden.

API-Authentifizierung

Für Anfragen mit OAuth 2.0 an die XML API oder die JSON API von Cloud Storage fügen Sie das Zugriffstoken Ihrer Anwendung in den Authorization-Header jeder Anfrage ein, die authentifiziert werden muss.

Authorization: Bearer <oauth2_token>

Das folgende Beispiel enthält eine Anfrage zum Auflisten von Objekten in einem Bucket.

JSON API

Verwenden Sie die list-Methode der Objektressource:

GET /storage/v1/b/example-bucket/o HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

XML API

Verwenden Sie eine Anfrage zum Auflisten von Objekten:

GET / HTTP/1.1
Host: example-bucket.storage.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Da die Verwaltung und Aktualisierung von Zugriffstokens sehr kompliziert ist und der direkte Umgang mit kryptografischen Anwendungen ein hohes Sicherheitsrisiko birgt, sollten Sie unbedingt eine verifizierte Clientbibliothek verwenden.

Entwicklerschlüssel zur Verwendung mit der XML API für den interoperablen Zugriff mit Amazon S3 finden Sie unter Entwicklerschlüssel für eine einfache Migration verwalten.

Anmeldedaten von Nutzerkonten

Verwenden Sie Nutzerkonto-Anmeldedaten zur Authentifizierung, wenn Ihre Anwendung im Namen eines Nutzers Zugriff auf Daten benötigt. Andernfalls sollten Sie Dienstkonto-Anmeldedaten einsetzen. In den folgenden Szenarien können Nutzerkonto-Anmeldedaten verwendet werden:

  • Webserveranwendungen
  • Installierte Anwendungen und Desktopanwendungen
  • Mobile Apps
  • Clientseitiges JavaScript
  • Anwendungen auf Geräten mit begrenzter Eingabe

Weitere Informationen zu diesen Szenarien finden Sie in den OAuth-Szenarien.

Wenn Sie eine Anwendung entwerfen, die mehrere Authentifizierungsoptionen für Endnutzer enthalten soll, verwenden Sie Firebase Authentication. Dies ermöglicht die E-Mail- und Passwortauthentifizierung sowie die föderierte Anmeldung bei Identitätsanbietern wie Google, Facebook, Twitter und GitHub.

Wenn eine Anwendung in einem nutzerbezogenen Authentifizierungsablauf von einem Nutzer ein Zugriffstoken erhält, hat dieses Token nur die Berechtigungen, die auch der Nutzer hat, der das Token gewährt. Beispiel: Wenn jane@gmail.com read-only-Zugriff auf example-bucket hat, kann eine Anwendung, der Jane read-write-Zugriff gewährt hat, trotzdem nicht in ihrem Namen Daten in example-bucket schreiben.

Weitere Informationen

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

Feedback geben zu...