Zugriff auf eine Quelle konfigurieren: Microsoft Azure Storage

Bevor Sie Daten aus einem Azure Storage-Bucket übertragen können, müssen Sie den Zugriff auf diesen Bucket konfigurieren, damit Storage Transfer Service die Objekte abrufen kann.

Der Storage Transfer Service unterstützt die folgenden Azure-Authentifizierungsmethoden:

  • Shared Access Signature (SAS)-Tokens. SAS-Tokens können direkt beim Erstellen eines Übertragungsjobs angegeben oder in Secret Manager gespeichert werden.

  • Azure-Freigabeschlüssel können in Secret Manager gespeichert und beim Erstellen eines Übertragungsjobs übergeben werden.

  • Föderierte Anmeldedaten werden beim Erstellen eines Übertragungsjobs in einem federatedIdentityConfig-Objekt übergeben.

Dieses Dokument enthält auch Informationen dazu, wie Sie Ihrer Azure Storage-Firewall Worker-IP-Adressen des Storage Transfer Service hinzufügen, um den Zugriff zu ermöglichen. Weitere Informationen finden Sie unter IP-Einschränkungen.

Unterstützte Regionen

Mit dem Storage Transfer Service können Daten aus den folgenden Microsoft Azure Storage-Regionen übertragen werden:
  • Amerika: Ost-USA, Ost-USA 2, West-USA, West-USA 2, West-USA 3, Zentral-USA, Nord-Zentral-USA, Süd-Zentral-USA, West-Zentral-USA, Kanada Zentral, Kanada Ost, Brasilien Süd
  • Asiatisch-pazifischer Raum: Australien Zentral, Australien Ost, Australien Südost, Zentral-Indien, Süd-Indien, West-Indien, Südostasien, Ostasien, Japan Ost, Japan West, Korea Süd, Korea Zentral
  • Europa, Naher Osten, Afrika (EMEA): Frankreich Zentral, Deutschland West Zentral, Norwegen Ost, Schweden Zentral, Schweiz Nord, Europa Nord, Europa West, Vereinigtes Königreich Süd, Vereinigtes Königreich West, Katar Zentral, VAE Nord, Südafrika Nord

Option 1: Mit einem SAS-Token authentifizieren

So konfigurieren Sie den Zugriff auf einen Microsoft Azure Storage-Container mit einem SAS-Token: Alternativ können Sie Ihr SAS-Token in Secret Manager speichern. Folgen Sie dazu der Anleitung unter Mit einem Azure-Freigabeschlüssel oder einem SAS-Token in Secret Manager authentifizieren.

  1. Erstellen oder verwenden Sie einen vorhandenen Microsoft Azure Storage-Nutzer, um auf das Speicherkonto für Ihren Microsoft Azure Storage Blob-Container zuzugreifen.

  2. Erstellen Sie ein SAS-Token auf Containerebene. Eine Anleitung finden Sie unter Zugriff auf Azure Storage-Ressourcen mit freigegebenen Zugriffssignaturen gewähren.

    1. Blob muss zu den Zulässigen Diensten gehören.

    2. Wählen Sie unter Zulässige Ressourcentypen sowohl Container als auch Objekt aus.

    3. Die Zulässigen Berechtigungen müssen Lesen und Liste enthalten. Wenn die Übertragung so konfiguriert ist, dass Objekte aus der Quelle gelöscht werden, müssen Sie auch die Berechtigung Löschen angeben.

    4. Die Standardablaufzeit für SAS-Tokens beträgt 8 Stunden. Legen Sie eine angemessene Ablaufzeit fest, damit Sie die Übertragung erfolgreich abschließen können.

    5. Geben Sie im Feld Zulässige IP-Adressen keine IP-Adressen an. Der Storage Transfer Service verwendet verschiedene IP-Adressen und unterstützt keine IP-Adressbeschränkung.

    6. Als Zulässige Protokolle sollte Nur HTTPS festgelegt sein.

  3. Notieren Sie sich nach dem Erstellen des Tokens den zurückgegebenen Wert für SAS-Token. Sie benötigen diesen Wert, wenn Sie die Übertragung mit dem Storage Transfer Service konfigurieren.

Option 2: Mit einem Azure-Freigabeschlüssel oder einem SAS-Token in Secret Manager authentifizieren

Secret Manager ist ein sicherer Dienst, mit dem sensible Daten wie Passwörter gespeichert und verwaltet werden. Zum Schutz Ihrer Geheimnisse werden eine starke Verschlüsselung, die rollenbasierte Zugriffssteuerung und Protokollierung von Prüfungen verwendet.

Storage Transfer Service unterstützt Secret Manager-Ressourcennamen, die auf Ihre sicher gespeicherten Azure-Anmeldedaten verweisen.

Wenn Sie einen freigegebenen Azure-Schlüssel verwenden möchten, müssen Sie ihn in Secret Manager speichern. SAS-Tokens können in Secret Manager gespeichert oder direkt übergeben werden.

Wenn Sie einen freigegebenen Schlüssel angeben, generiert der Storage Transfer Service mit diesem Schlüssel einen Service-SAS, der auf den im Übertragungsjob angegebenen Azure-Container beschränkt ist.

API aktivieren

Enable the Secret Manager API.

Enable the API

Zusätzliche Berechtigungen konfigurieren

Nutzerberechtigungen

Der Nutzer, der das Secret erstellt, benötigt die folgende Rolle:

  • Secret Manager-Administrator (roles/secretmanager.admin)

Weitere Informationen zum Gewähren einer Rolle

Berechtigungen des Dienst-Agents

Der Storage Transfer Service-Dienst-Agent benötigt die folgende IAM-Rolle:

  • Zugriffsperson für Secret Manager-Secret (roles/secretmanager.secretAccessor)

So weisen Sie Ihrem Kundenservicemitarbeiter die Rolle zu:

Cloud Console

  1. Folgen Sie der Anleitung, um die E-Mail-Adresse Ihres Kundenservicemitarbeiters abzurufen.

  2. Rufen Sie in der Google Cloud Console die Seite IAM auf.

    IAM aufrufen

  3. Klicken Sie auf Zugriff erlauben.

  4. Geben Sie im Textfeld Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents ein.

  5. Wählen Sie im Drop-down-Menü Rolle auswählen die Option Zugriffsperson für Secret Manager-Secret aus.

  6. Klicken Sie auf Speichern.

gcloud

Verwenden Sie den Befehl gcloud projects add-iam-policy-binding, um dem Kundenservicemitarbeiter die IAM-Rolle hinzuzufügen.

  1. Folgen Sie der Anleitung, um die E-Mail-Adresse Ihres Kundenservicemitarbeiters abzurufen.

  2. Geben Sie in der Befehlszeile den folgenden Befehl ein:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member='serviceAccount:SERVICE_AGENT_EMAIL' \
      --role='roles/secretmanager.secretAccessor'
    

Secret erstellen

So erstellen Sie ein Secret mit Secret Manager:

Cloud Console

  1. Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.

    Zu Secret Manager

  2. Klicken Sie auf Secret erstellen.

  3. Geben Sie einen Namen ein.

  4. Geben Sie Ihre Anmeldedaten im Textfeld Secret-Wert in einem der folgenden Formate ein.

    {
      "sas_token" : "SAS_TOKEN_VALUE"
    }
    

    oder:

    {
      "access_key" : "ACCESS_KEY"
    }
    
  5. Klicken Sie auf Secret erstellen.

  6. Notieren Sie sich den vollständigen Ressourcennamen des Secrets, nachdem es erstellt wurde:

    1. Wähle den Tab Übersicht aus.

    2. Kopieren Sie den Wert von Ressourcenname. Sie hat das folgende Format:

      projects/1234567890/secrets/SECRET_NAME

gcloud

Wenn Sie ein neues Secret mit dem gcloud-Befehlszeilentool erstellen möchten, übergeben Sie die Anmeldedaten im JSON-Format an den Befehl gcloud secrets create:

printf '{
  "sas_token" : "SAS_TOKEN_VALUE"
}' | gcloud secrets create SECRET_NAME --data-file=-

oder:

printf '{
  "access_key" : "ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-

Rufen Sie den vollständigen Ressourcennamen des Secrets ab:

gcloud secrets describe SECRET_NAME

Notieren Sie sich den Wert von name in der Antwort. Sie hat das folgende Format:

projects/1234567890/secrets/SECRET_NAME

Weitere Informationen zum Erstellen und Verwalten von Secrets finden Sie in der Secret Manager-Dokumentation.

Secret an den Befehl zum Erstellen von Jobs übergeben

Wenn Sie Secret Manager mit Storage Transfer Service verwenden möchten, müssen Sie mit der REST API einen Übertragungsjob erstellen.

Übergeben Sie den Namen der Secret Manager-Ressource als Wert des Felds transferSpec.azureBlobStorageDataSource.credentialsSecret:

POST https://storagetransfer.googleapis.com/v1/transferJobs

{
  "description": "Transfer with Secret Manager",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "azureBlobStorageDataSource": {
      "storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
      "container": "AZURE_CONTAINER_NAME",
      "credentialsSecret": "SECRET_RESOURCE_ID",
    },
    "gcsDataSink": {
      "bucketName": "CLOUD_STORAGE_BUCKET_NAME"
    }
  }
}

Weitere Informationen zum Erstellen von Überweisungen finden Sie unter Überweisungen erstellen.

Option 3: Mit föderierter Identität authentifizieren

Der Storage Transfer Service unterstützt die Azure-Workload Identity-Föderation mit Google Cloud. Der Storage Transfer Service kann über registrierte Azure-Anwendungen Anfragen an Azure Storage senden. Es ist also nicht erforderlich, Anmeldedaten direkt an den Storage Transfer Service weiterzugeben.

Folgen Sie dieser Anleitung, um die föderierte Identität zu konfigurieren.

Google Cloud-Anmeldedaten konfigurieren

Sie müssen dem Storage Transfer Service-Dienst-Agent die Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) hinzufügen, damit OIDC-ID-Tokens (OpenID Connect) für das Konto erstellt werden können.

  1. Rufen Sie die accountEmail und subjectId des von Google verwalteten Dienst-Agents ab, der automatisch erstellt wird, wenn Sie Storage Transfer Service verwenden. So rufen Sie diese Werte ab:

    1. Rufen Sie die Referenzseite googleServiceAccounts.get auf.

      Es wird ein interaktives Steuerfeld mit dem Titel Diese Methode testen geöffnet.

    2. Geben Sie im Steuerfeld unter Anfrageparameter Ihre Projekt-ID ein. Das hier angegebene Projekt muss das Projekt sein, das Sie zum Verwalten des Storage Transfer Service verwenden.

    3. Klicken Sie auf Ausführen. accountEmail und subjectId sind in der Antwort enthalten. Speichern Sie diese Werte.

  2. Weisen Sie dem Storage Transfer Service-Dienst-Agent die Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) zu. Folgen Sie der Anleitung unter Zugriff auf Dienstkonten verwalten.

Microsoft-Anmeldedaten konfigurieren

Registrieren Sie zuerst eine Anwendung und fügen Sie föderierte Anmeldedaten hinzu:

  1. Melden Sie sich unter https://portal.azure.com an.
  2. Rufen Sie die Seite App-Registrierungen auf.
  3. Klicken Sie auf Neue Registrierung.
  4. Geben Sie einen Namen ein. Beispiel: azure-transfer-app.
  5. Wählen Sie Nur Konten in diesem Organisationsverzeichnis aus.
  6. Klicken Sie auf Registrieren. Die Anwendung wird erstellt. Notieren Sie sich die Application (client) ID und die Directory (tenant) ID. Sie können diese Informationen auch später auf der Übersichtsseite der Anwendung abrufen.
  7. Klicken Sie auf Zertifikate und Secrets und wählen Sie den Tab Föderierte Anmeldedaten aus.
  8. Klicken Sie auf Anmeldedaten hinzufügen.
  9. Wählen Sie als Szenario Anderer Aussteller aus und geben Sie die folgenden Informationen ein:
    • Aussteller: https://accounts.google.com
    • Subject Identifier: Die subjectId Ihres Dienst-Agenten, die Sie unter Google Cloud-Anmeldedaten konfigurieren abgerufen haben.
    • Ein eindeutiger Name für die föderierten Anmeldedaten.
    • Die Zielgruppe muss api://AzureADTokenExchange bleiben.
  10. Klicken Sie auf Hinzufügen.

Gewähren Sie der Anwendung dann Zugriff auf Ihren Azure Storage-Container:

  1. Rufen Sie in Ihrem Azure-Konto die Seite Speicherkonten auf.
  2. Wählen Sie Ihr Speicherkonto und dann im Bereich Datenspeicher die Option Container aus.
  3. Klicken Sie auf den Bucket, für den Sie Zugriff gewähren möchten.
  4. Klicken Sie im Menü auf der linken Seite auf Zugriffssteuerung (IAM) und wählen Sie den Tab Rollen aus.
  5. Klicken Sie neben einer Rolle auf das Dreipunkt-Menü (...) und wählen Sie Klonen aus.
  6. Geben Sie einen Namen für diese benutzerdefinierte Rolle ein und wählen Sie Neu beginnen aus. Klicken Sie auf Weiter.
  7. Klicken Sie auf Berechtigungen hinzufügen und suchen Sie nach Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read.
  8. Klicken Sie auf die Karte Microsoft Storage.
  9. Klicken Sie auf das Optionsfeld Datenaktionen.
  10. Wählen Sie Lesen : Blob lesen aus.
  11. Klicken Sie auf Hinzufügen.
  12. Wenn Sie Objekte nach der Übertragung an der Quelle löschen möchten, klicken Sie noch einmal auf Berechtigungen hinzufügen und suchen Sie nach Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete.
  13. Klicken Sie auf die Karte Microsoft Storage, wählen Sie Datenaktionen und dann Löschen : Blob löschen aus.
  14. Klicken Sie auf Hinzufügen.
  15. Klicken Sie auf Überprüfen + Erstellen und dann auf Erstellen. Sie werden zur Seite Zugriffssteuerung (IAM) des Speicherorts zurückgeleitet.
  16. Klicken Sie auf Hinzufügen und wählen Sie Rollenzuweisung hinzufügen aus.
  17. Wählen Sie in der Liste der Rollen die benutzerdefinierte Rolle aus und klicken Sie auf Weiter.
  18. Klicken Sie auf Mitglieder auswählen.
  19. Geben Sie im Feld Auswählen den Namen der zuvor registrierten Anwendung ein. Beispiel: azure-transfer-app.
  20. Klicken Sie auf die App-Kachel und dann auf Auswählen.
  21. Klicken Sie auf Prüfen + zuweisen.

Anwendungs-IDs an den Befehl zum Erstellen von Jobs übergeben

Die IDs Ihrer Anwendung werden über ein federatedIdentityConfig-Objekt an den Befehl zum Erstellen von Jobs übergeben. Kopieren Sie die Anwendungs- oder Client-ID und die Verzeichnis-ID (Tenant-ID), die Sie bei den Schritten zur Konfiguration von Microsoft-Anmeldedaten gespeichert haben, in die Felder client_id und tenant_id.

"federatedIdentifyConfig": {
  "client_id": "efghe9d8-4810-800b-8f964ed4057f",
  "tenant_id": "abcd1234-c8f0-4cb0-b0c5-ae4aded60078"
}

Eine Beispielanfrage zum Erstellen eines Jobs sieht so aus:

POST https://storagetransfer.googleapis.com/v1/transferJobs

{
  "description": "Transfer with Azure Federated Identity",
  "status": "ENABLED",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "azureBlobStorageDataSource": {
      "storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
      "container": "AZURE_CONTAINER_NAME",
      "federatedIdentifyConfig": {
        "client_id": "AZURE_CLIENT_ID",
        "tenant_id": "AZURE_TENANT_ID"
      }
    },
    "gcsDataSink": {
      "bucketName": "CLOUD_STORAGE_BUCKET_NAME"
    }
  }
}

Weitere Informationen zum Erstellen von Übertragungen finden Sie unter Übertragungen erstellen.

IP-Einschränkungen

Wenn Sie den Zugriff auf Ihre Azure-Ressourcen über eine Azure Storage-Firewall beschränken, müssen Sie die von Storage Transfer Service-Workern verwendeten IP-Bereiche der Liste der zulässigen IP-Adressen hinzufügen.

Da sich diese IP-Adressbereiche ändern können, veröffentlichen wir die aktuellen Werte als JSON-Datei unter einer festen Adresse:

https://www.gstatic.com/storage-transfer-service/ipranges.json

Wenn der Datei ein neuer Bereich hinzugefügt wird, warten wir mindestens sieben Tage, bevor wir diesen Bereich für Anfragen von Storage Transfer Service verwenden.

Wir empfehlen, mindestens einmal pro Woche Daten aus diesem Dokument abzurufen, um Ihre Sicherheitskonfiguration auf dem neuesten Stand zu halten. Ein Beispiel für ein Python-Script, das IP-Bereiche aus einer JSON-Datei abruft, finden Sie in diesem Artikel der Virtual Private Cloud-Dokumentation.

Wenn Sie diese Bereiche als zulässige IP-Adressen hinzufügen möchten, folgen Sie der Anleitung im Microsoft Azure-Artikel Azure Storage-Firewalls und virtuelle Netzwerke konfigurieren.