Kopieren von Blobs zwischen verschiedenen Azure-Tenants mit AzCopy
In diesem Artikel erfahren Sie, wie Sie mit AzCopy Blobs zwischen verschiedenen Azure-Tenants kopieren können, inklusive Lösungen für öffentliche und private Storage Accounts, benutzerdefinierte Routen sowie Automatisierung und Sicherheitsmaßnahmen.

Kopieren von Blobs zwischen verschiedenen Azure-Tenants mit AzCopy
AzCopy
AzCopy ist ein Befehlszeilenhilfsprogramm, das Sie verwenden können, um Blobs oder Dateien in oder aus einem Speicherkonto zu kopieren. Dieser Artikel bietet eine detaillierte Anleitung, wie Sie AzCopy herunterladen, eine Verbindung zu Ihrem Speicherkonto herstellen und Daten übertragen können. Weitere Informationen finden Sie hier: AzCopy-Dokumentation.
Das Übertragen von Blob-Dateien zwischen Storage Accounts in Azure kann auf verschiedene Arten erfolgen. In diesem Artikel zeige ich, wie Sie Blobs zwischen zwei unterschiedlichen Azure-Tenants kopieren können. Dabei werden folgende Szenarien betrachtet:
- Öffentlich erreichbare Storage Accounts
- Storage Accounts hinter einer benutzerdefinierten FrontDoor-Route
- Storage Accounts hinter einer benutzerdefinierten Application Gateway-Route
Für alle Beispiele verwenden wir User-Delegation-Keys, um SAS-Tokens zu generieren. Dies ermöglicht es uns, anstelle des Storage Account spezifischen Account Keys sicherere temporäre Berechtigungen zu verwenden.
"Das SAS-Token ist eine Zeichenfolge, die Sie auf der Clientseite generieren, z.B. mit einer der Azure Storage-Clientbibliotheken. Das SAS-Token wird von Azure Storage in keiner Weise nachverfolgt. Sie können auf der Clientseite eine unbegrenzte Anzahl von SAS-Token erstellen." (Weitere Informationen)
Warum nicht die Azure Blob SDK verwenden?
Die Nutzung der Azure Blob SDK ist in bestimmten Szenarien nicht praktikabel, insbesondere wenn sich Quell- und Ziel-Storage-Accounts in verschiedenen Tenants oder Regionen befinden.
Ein Beispiel: Sie haben einen Storage Account in der Region "France Central" und möchten Daten nach "China North 3" replizieren. Da die chinesische Azure-Infrastruktur physisch und logisch von der globalen Azure-Cloud getrennt ist, können solche Szenarien nicht direkt über die Azure Blob SDK abgedeckt werden.
Weitere Informationen zu den Unterschieden zwischen der globalen Azure-Infrastruktur und der chinesischen Azure-Cloud finden Sie hier: Azure China Connectivity.
Compliance-Anforderungen können zusätzlich verhindern, dass ein Peering zwischen europäischen und chinesischen Infrastrukturen eingerichtet wird. In solchen Fällen ist eine eigenständige Lösung wie AzCopy erforderlich.
Lösung 1: Öffentliche Storage Accounts
Falls Ihre Organisation die Verwendung von öffentlichen Storage Accounts erlaubt, ist dies die einfachste Möglichkeit. Im folgenden Beispiel nutzen wir den AzCopy-Dienst, um die Blob-Dateien zwischen den Storage Accounts zu kopieren.
Weitere Informationen finden Sie hier: AzCopy-Dokumentation zur Kopie.
azcopy copy \
--overwrite=ifSourceNewer \
--check-md5=FailIfDifferent \
"https://{sourceStorageAccountName}.blob.core.windows.net/{containerName}/{yourFilePath}?{sasToken}" \
"https://{targetStorageAccountName}.blob.core.chinacloudapi.cn/{containerName}/{yourFilePath}?{sasToken}" \
--from-to BlobBlob \
--recursive
Dieser AzCopy-Befehl funktioniert bei öffentlichen Storage Accounts ebenso mit der Synchronisation von ganzen Containern oder Ordnern. In diesem Fall geben Sie statt dem spezifischen Dateipfad die Container- bzw. Orderpfade an, und AzCopy übernimmt die Synchronisation der Storage Accounts. Sie erhalten spezifische Informationen über bereits synchronisierte Dateien und einen ausführlichen Statusbericht der Synchronisation.
Hinweis: Diese Methode ist in vielen Organisationen nicht zulässig, da Storage Accounts in der Regel nur über private Netzwerke oder spezifische Zugangsmechanismen wie FrontDoor oder Application Gateway erreichbar sein dürfen.
Lösung 2: Storage Accounts hinter benutzerdefinierten FrontDoor- oder Application Gateway-Routen
Eine weitere Lösung, auf einen Storage Account zuzugreifen, ist die Verwendung von benutzerdefinierten Routen für einen Azure FrontDoor oder ein Azure Application Gateway.
Dabei nutzen wir statt der Standard-Storage-Account-Domäne ".blob.core.windows.net" bzw. ".blob.core.chinacloudapi.cn" eine benutzerdefinierte Domain unserer Organisation. In meinem Beispiel gehen wir sogar einen Schritt weiter und weisen jedem Storage Account im FrontDoor und Application Gateway eine benutzerdefinierte pfadbasierte Route zu.
azcopy copy \
--overwrite=ifSourceNewer \
--check-md5=FailIfDifferent \
"https://{my-custom-domain.de/mysubpath}/{containerName}/{yourFilePath}?{sasToken}" \
"https://{my-china-domain.cn/mysubpath}/{containerName}/{yourFilePath}?{sasToken}" \
--from-to BlobBlob \
--recursive
Wie Sie sehen, hat sich der eigentliche AzCopy-Befehl kaum geändert. Die einzige Änderung besteht in der Ersetzung der Standard-Storage-Account-Domain durch unsere benutzerdefinierte Route.
In unseren Beispielen haben wir uns ausschließlich auf die Verwendung von SAS-Tokens zur Authentifizierung bei unseren Storage-Accounts in Europa und China konzentriert.
Weitere Alternativen finden Sie hier: AzCopy und Azure Active Directory.
Automatisierung und SAS-Token-Management
Manuelles Ausführen der Befehle kann ineffizient sein. Ich empfehle daher die Entwicklung einer kleinen REST-Anwendung, die folgende Aufgaben übernimmt:
Automatische Generierung von SAS-Tokens:
Die Anwendung nutzt eine Azure Managed Identity mit den notwendigen Berechtigungen (z. B. Storage Blob Data Contributor
), um einen User Delegation Key abzurufen und SAS-Tokens zu erstellen.
Planung und Überwachung der Jobs:
Mit dem AzCopy-Befehl azcopy jobs list
können laufende und abgeschlossene Jobs überwacht werden. Diese Informationen können Sie in Ihrer Anwendung nutzen, um den Fortschritt zu verfolgen und Berichte zu erstellen.
Sicherheitsmaßnahmen:
- SAS-Tokens sollten eine maximale Gültigkeitsdauer von 15–30 Minuten haben, um das Risiko bei einem Leak zu minimieren.
- Verwenden Sie least privilege Berechtigungen für User Delegation Keys, um den Zugriff auf spezifische Container oder Aktionen zu beschränken.
Fazit
AzCopy ist ein leistungsstarkes Werkzeug, um Daten effizient und sicher zwischen Storage Accounts zu übertragen – selbst bei komplexen Szenarien wie der Nutzung unterschiedlicher Azure-Tenants oder Regionen. Durch die Kombination von AzCopy mit benutzerdefinierten Routen und automatisierten Anwendungen können Sie robuste Lösungen für Ihre Datenreplikation erstellen.
Ein weiterer Aspekt, den ich in der Zukunft ebenfalls betrachten werde, sind die zusätzlichen Kosten, die durch die Verwendung von FrontDoor- und Application Gateway-Instanzen für die Synchronisation von Storage Accounts auftreten können.
Weitere hilfreiche Ressourcen: