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 Storage Transfer Service-Worker-IP-Adressen 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, Mitte-Nord, USA, Mitte-Süd, USA, Mitte-West, 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, Mitte-West, 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 für Zulässige Ressourcentypen sowohl Container als auch Objekt aus.

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

    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 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 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 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 Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. 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 die Rolle Ihrem Dienst-Agent 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

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

  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 dem Erstellen 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 von 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

So ermöglichen Sie dem Storage Transfer Service, OpenID Connect-ID-Tokens (OIDC) zu erstellen:

Dienst-Agent

Wenn in Ihrem Übertragungsjob kein serviceAccount angegeben ist (d.h., Sie delegieren keine Berechtigungen des Dienst-Agents an ein nutzerverwaltetes Dienstkonto), weisen Sie dem Dienst-Agent die Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) zu:

  1. Rufen Sie die accountEmail des Dienst-Agents ab:

    1. Rufen Sie die googleServiceAccounts.get Referenzseite auf.
    2. Geben Sie unter Anfrageparameter Ihre Projekt-ID ein.
    3. Klicken Sie auf Ausführen. Die accountEmail und subjectId werden zurückgegeben.
  2. Weisen Sie dem Dienst-Agent die Rolle Ersteller von Dienstkonto-Tokens (roles/iam.serviceAccountTokenCreator) für sich selbst zu. Folgen Sie der Anleitung unter Zugriff auf Dienstkonten verwalten.

Nutzerverwaltetes Dienstkonto

Wenn Sie Berechtigungen des Dienst-Agents an ein nutzerverwaltetes Dienstkonto delegieren, werden Ihre Google-Anmeldedaten konfiguriert, wenn Sie die Berechtigungsdelegierung einrichten. Es sind keine weiteren Schritte erforderlich.

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 auch später auf der Seite Übersicht 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: Je nachdem, ob Sie den Standarddienst-Agent oder ein nutzerverwaltetes Dienstkonto verwenden, geben Sie Folgendes ein:

    • 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 Speicherkonten auf.
  2. Wählen Sie Ihr Speicherkonto und 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 linken Menü auf Zugriffssteuerung (IAM) und wählen Sie den Tab Rollen aus.
  5. Klicken Sie neben einer beliebigen 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 Von Grund auf neu 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. Wählen Sie das Optionsfeld Datenaktionen aus.
  10. Wählen Sie 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 Berechtigungen hinzufügen und suchen Sie nach Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete.
  13. Klicken Sie auf die Karte Microsoft Storage, die angezeigt wird, 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 Buckets 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 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 Überprüfen + zuweisen.

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

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

"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 Azure Storage-Firewalls und virtuelle Netzwerke konfigurieren.