Zugriff auf eine Quelle konfigurieren: Microsoft Azure Storage

Bevor Sie Daten aus einem Azure Storage-Bucket übertragen, müssen Sie den Zugriff auf diesen Bucket so konfigurieren, dass der Storage Transfer Service seine Objekte abrufen kann.

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

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

  • Azure Shared Keys können im Secret Manager gespeichert und das Secret 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 zum Hinzufügen von IP-Adressen von Storage Transfer Service-Workern zur Azure Storage-Firewall, um den Zugriff zu ermöglichen. Weitere Informationen finden Sie unter IP-Einschränkungen.

Unterstützte Regionen

Der Storage Transfer Service kann Daten aus den folgenden Microsoft Azure Storage-Regionen übertragen:
  • Amerika:USA, Osten, USA, Osten 2, USA, Westen, USA, Westen 2, USA, Westen 3, USA, Mitte, USA, Nordmitte, USA, Südmitte, USA, Westmitte, Kanada, Mitte, Kanada, Osten, Brasilien, Süden
  • Asiatisch-pazifischer Raum: Australien, Mitte, Australien, Osten, Australien , Südosten, Indien, Mitte, Indien, Süden, Indien, Westen, Südostasien, Ost asien, Japan, Osten, Japan, Westen, Korea, Süden, Korea, Mitte
  • Europa, Naher Osten, Afrika (EMEA): Frankreich, Mitte, Deutschland, Westmitte, Norwegen, Osten, Schweden, Mitte, Schweiz, Norden, Nordeuropa, Westeuropa, Großbritannien, Süden, Großbritannien, Westen, Katar, Mitte, Vereinigte Arabische Emirate, Norden, Südafrika, Norden

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 Shared Key oder SAS-Token im 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. Die zulässigen Dienste müssen Blob enthalten.

    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 hinzufügen.

    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. Die zulässigen Protokolle sollten Nur HTTPS sein.

  3. Notieren Sie sich nach der Erstellung 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 Shared Key oder SAS-Token im Secret Manager authentifizieren

Secret Manager ist ein sicherer Dienst, der sensible Daten wie Passwörter speichert und verwaltet. Er verwendet eine starke Verschlüsselung, rollenbasierte Zugriffssteuerung und Audit-Logging, um Ihre Secrets zu schützen.

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

Wenn Sie einen Azure Shared Key verwenden möchten, müssen Sie den Schlüssel im Secret Manager speichern. SAS-Tokens können im Secret Manager gespeichert oder direkt übergeben werden.

Wenn Sie einen Shared Key angeben, verwendet der Storage Transfer Service diesen Schlüssel, um ein Dienst-SAS zu generieren, dessen Umfang auf den im Übertragungs job angegebenen Azure-Container beschränkt ist.

API aktivieren

Aktivieren Sie die Secret Manager API.

Rollen, die zum Aktivieren von APIs erforderlich sind

Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Informationen zum Zuweisen von Rollen.

API aktivieren

Zusätzliche Berechtigungen konfigurieren

Nutzerberechtigungen

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

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

Informationen zum Zuweisen einer Rolle .

Berechtigungen des Dienst-Agents

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

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

So weisen Sie Ihrem Dienst-Agent die Rolle zu:

Cloud Console

  1. Folgen Sie der Anleitung, um die E‑Mail-Adresse Ihres Dienst-Agents 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. Suchen Sie im Drop-down-Menü Rolle auswählen nach Zugriffsperson für Secret Manager-Secret und wählen Sie diese Option aus.

  6. Klicken Sie auf Speichern.

gcloud

Fügen Sie Ihrem Dienst-Agent mit dem Befehl gcloud projects add-iam-policy-binding die IAM-Rolle hinzu.

  1. Folgen Sie der Anleitung, um die E‑Mail-Adresse Ihres Dienst-Agents 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 im Textfeld Secret-Wert Ihre Anmeldedaten 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 nach der Erstellung des Secrets den vollständigen Ressourcennamen des Secrets:

    1. Wählen Sie den Tab Übersicht aus.

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

      projects/1234567890/secrets/SECRET_NAME

gcloud

Wenn Sie mit dem gcloud-Befehlszeilentool ein neues Secret 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. Er 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 des Jobs übergeben

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

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

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 einer Übertragung finden Sie unter Übertragungen 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 Anfragen an Azure Storage über registrierte Azure-Anwendungen senden, sodass Anmeldedaten nicht direkt an den Storage Transfer Service übergeben werden müssen.

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

Google Cloud-Anmeldedaten konfigurieren

Sie müssen dem Dienst-Agent des Storage Transfer Service die Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) zuweisen, damit OpenID Connect-ID-Tokens (OIDC) 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 den Storage Transfer Service verwenden. So rufen Sie diese Werte ab:

    1. Rufen Sie die googleServiceAccounts.get Referenzseite 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. Die accountEmail und subjectId sind in der Antwort enthalten. Speichern Sie diese Werte.

  2. Weisen Sie dem Dienst-Agent des Storage Transfer Service 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 registrations (App-Registrierungen) auf.
  3. Klicken Sie auf New registration (Neue Registrierung).
  4. Geben Sie einen Namen ein. Beispiel: azure-transfer-app.
  5. Wählen Sie Accounts in this organizational directory only (Nur Konten in diesem Organisationsverzeichnis) aus.
  6. Klicken Sie auf Register (Registrieren). Die Anwendung wird erstellt. Notieren Sie sich die Application (client) ID (Anwendungs-ID (Client)) und die Directory (tenant) ID (Verzeichnis-ID (Mandant)). Sie können diese Werte auch später auf der Seite Overview (Übersicht) der Anwendung abrufen.
  7. Klicken Sie auf Certificates &secrets (Zertifikate und Secrets) und wählen Sie den Tab Federated credentials (Föderierte Anmeldedaten) aus.
  8. Klicken Sie auf Add credential (Anmeldedaten hinzufügen).
  9. Wählen Sie als Szenario Other issuer (Anderer Aussteller) aus und geben Sie die folgenden Informationen ein:
    • Aussteller: https://accounts.google.com
    • Subject Identifier: Die subjectId Ihres Dienst-Agents, 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 als Nächstes Zugriff auf Ihren Azure Storage-Container:

  1. Rufen Sie in Ihrem Azure-Konto die Seite Storage Accounts (Speicherkonten) auf.
  2. Wählen Sie Ihr Speicherkonto und im Bereich Data storage (Datenspeicherung) die Option Containers (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 Access Control (IAM) (Zugriffssteuerung (IAM)) und wählen Sie den Tab Roles (Rollen) aus.
  5. Klicken Sie neben einer beliebigen Rolle auf das Dreipunkt-Menü (...) und wählen Sie Clone (Klonen) aus.
  6. Geben Sie einen Namen für diese benutzerdefinierte Rolle ein und wählen Sie Start from scratch (Von Grund auf neu) aus. Klicken Sie auf Weiter.
  7. Klicken Sie auf Add permissions (Berechtigungen hinzufügen) und suchen Sie nach Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read.
  8. Klicken Sie auf die Karte Microsoft Storage (Microsoft Storage), die angezeigt wird.
  9. Wählen Sie das Optionsfeld Data actions (Datenaktionen) aus.
  10. Wählen Sie Read : Read Blob (Lesen: Blob lesen) aus.
  11. Klicken Sie auf Hinzufügen.
  12. Wenn Sie Objekte nach der Übertragung in der Quelle löschen möchten, klicken Sie noch einmal auf Add permissions (Berechtigungen hinzufügen) und suchen Sie nach Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete.
  13. Klicken Sie auf die Karte Microsoft Storage (Microsoft Storage), wählen Sie Data actions (Datenaktionen) und dann Delete : Delete blob (Löschen: Blob löschen) aus.
  14. Klicken Sie auf Hinzufügen.
  15. Klicken Sie auf Review + create (Überprüfen und erstellen) und dann auf Create (Erstellen). Sie werden zur Seite Access Control (IAM) (Zugriffssteuerung (IAM)) des Buckets zurückgeleitet.
  16. Klicken Sie auf Hinzufügen und wählen Sie Add role assignment (Rollenzuweisung hinzufügen) aus.
  17. Wählen Sie in der Liste der Rollen Ihre 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 Anwendung ein, die Sie zuvor registriert haben. Beispiel: azure-transfer-app.
  20. Klicken Sie auf die Kachel der Anwendung und dann auf Auswählen.
  21. Klicken Sie auf Review + assign (Überprüfen und zuweisen).

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

Die IDs Ihrer Anwendung werden mit einem federatedIdentityConfig-Objekt an den Befehl zum Erstellen des Jobs übergeben. Kopieren Sie die Application (client) ID (Anwendungs-ID (Client)) und die Directory (tenant) ID (Verzeichnis-ID (Mandant)), die Sie bei den Schritten zur Konfiguration der Microsoft-Anmeldedaten gespeichert haben, in die Felder client_id und tenant_id.

"federatedIdentityConfig": {
  "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",
      "federatedIdentityConfig": {
        "client_id": "AZURE_CLIENT_ID",
        "tenant_id": "AZURE_TENANT_ID"
      }
    },
    "gcsDataSink": {
      "bucketName": "CLOUD_STORAGE_BUCKET_NAME"
    }
  }
}

Weitere Informationen zum Erstellen einer Übertragung 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-Bereiche ändern können, veröffentlichen wir die aktuellen Werte als JSON-Datei unter einer permanenten Adresse:

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

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

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

Eine Anleitung zum Hinzufügen dieser Bereiche als zulässige IP-Adressen finden Sie im Microsoft Azure-Artikel Configure Azure Storage firewalls and virtual networks (Azure Storage-Firewalls und virtuelle Netzwerke konfigurieren).