Autorisieren des Zugriffs auf Blobs und Dateien mit AzCopy und Microsoft Entra ID

Sie können AzCopy mit Autorisierungsanmeldeinformationen bereitstellen, indem Sie Microsoft Entra ID verwenden. Auf diese Weise müssen Sie nicht jedem Befehl ein Shared Access Signature-Token (SAS) anfügen.

Überprüfen Sie zunächst Ihre Rollenzuweisungen. Wählen Sie dann aus, welchen Typ von Sicherheitsprinzipal Sie autorisieren möchten. Eine Benutzeridentität, eine verwaltete Identität und ein Dienstprinzipal sind jeweils Sicherheitsprinzipaltypen.

Um den Zugriff zu autorisieren, legen Sie In-Memory-Umgebungsvariablen fest. Führen Sie dann einen beliebigen AzCopy-Befehl aus. Der AzCopy-Befehl ruft das erforderliche Authentifizierungstoken für den Vorgang ab. Nach Abschluss des Vorgangs wird das Token aus dem Arbeitsspeicher gelöscht.

AzCopy ruft das OAuth-Token mithilfe der von Ihnen bereitgestellten Anmeldeinformationen ab. Alternativ kann AzCopy das OAuth-Token einer aktiven Azure CLI- oder Azure PowerShell-Sitzung verwenden.

Weitere Informationen zu AzCopy finden Sie unter Erste Schritte mit AzCopy.

Überprüfen von Rollenzuweisungen

Die Ebene der Autorisierung, die Sie benötigen, hängt davon ab, ob Sie planen, Dateien hoch- oder nur herunterzuladen.

Wenn Sie nur Dateien herunterladen möchten, vergewissern Sie sich, dass Ihrer Benutzeridentität, verwalteten Identität oder Ihrem Dienstprinzipal die Rolle Leser von Speicherblobdaten (Azure Blob Storage) oder die Rolle Priviligierter Leser von Speicherdatendateien (Azure Files) zugewiesen wurde.

Wenn Sie Dateien in Azure Blob Storage hochladen möchten, dann überprüfen Sie, ob Ihrem Sicherheitsprinzipal eine dieser Rollen zugewiesen wurde.

Wenn Sie Dateien auf eine Azure-Dateifreigabe hochladen möchten, vergewissern Sie sich, dass Ihrem Sicherheitsprinzipal der Privilegierte Leser für Speicherdateidaten zugewiesen wurde.

Diese Rollen können Ihrem Sicherheitsprinzipal in jedem dieser Bereiche zugewiesen werden:

  • Container (Dateisystem) oder Dateifreigabe
  • Speicherkonto
  • Resource group
  • Subscription

Informationen zum Überprüfen und Zuweisen von Rollen finden Sie unter Zuweisen einer Azure-Rolle für den Zugriff auf BLOB-Daten (Blob Storage) oder Auswählen, wie der Zugriff auf Dateidaten im Azure-Portal (Azure Files) autorisiert werden soll.

Hinweis

Denken Sie daran, dass die Weitergabe von Azure-Rollenzuweisungen bis zu fünf Minuten dauern kann.

Ihrem Sicherheitsprinzipal muss keine dieser Rollen zugewiesen sein, wenn Ihr Sicherheitsprinzipal der Zugriffssteuerungsliste (ACL) des Zielcontainers oder des Verzeichnisses hinzugefügt wurde. In der Zugriffssteuerungsliste benötigt Ihr Sicherheitsprinzipal Schreibberechtigungen für das Zielverzeichnis und Ausführungsberechtigungen für den Container und jedes übergeordnete Verzeichnis.

Weitere Informationen finden Sie unter Zugriffssteuerungsmodell in Azure Data Lake Storage Gen2.

Autorisieren mit AzCopy

AzCopy verwendet die Anmeldeinformationen, die Sie zum Autorisieren des Sicherheitsprinzipals angeben.

Autorisieren einer Benutzeridentität

Nachdem Sie überprüft haben, ob Ihrer Benutzeridentität die erforderliche Berechtigungsstufe gewährt wurde, geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

export AZCOPY_AUTO_LOGIN_TYPE=DEVICE

Führen Sie dann einen beliebigen azcopy-Befehl aus (beispielsweise: azcopy list https://contoso.blob.core.windows.net).

Dieser Befehl gibt einen Authentifizierungscode und die URL einer Website zurück. Öffnen Sie die Website, geben Sie den Code ein, und wählen Sie dann die Schaltfläche Weiter aus.

Erstellen eines Containers

Daraufhin wird ein Anmeldefenster geöffnet. Melden Sie sich in diesem Fenster mit Ihren Azure-Kontoanmeldeinformationen bei Ihrem Azure-Konto an. Nachdem Sie sich erfolgreich angemeldet haben, kann der Vorgang abgeschlossen werden.

Erstellen und Autorisieren einer verwalteten Identität

Dies ist eine gute Option, wenn Sie AzCopy in einem Skript verwenden möchten, das ohne Benutzerinteraktion und über einen virtuellen Azure-Computer ausgeführt wird. Bei Verwendung dieser Option müssen Sie keine Anmeldeinformationen auf dem virtuellen Computer speichern.

Sie können sich bei Ihrem Konto anmelden, indem Sie eine systemweite verwaltete Identität verwenden, die Sie auf dem virtuellen Computer aktiviert haben, oder indem Sie die Client-ID, Objekt-ID oder Ressourcen-ID einer vom Benutzer zugewiesenen verwalteten Identität verwenden, die Sie dem virtuellen Computer zugewiesen haben.

Weitere Informationen zum Aktivieren einer systemweiten verwalteten Identität oder zum Erstellen einer vom Benutzer zugewiesenen verwalteten Identität finden unter Konfigurieren von verwalteten Identitäten für Azure-Ressourcen auf einem virtuellen Computer über das Azure-Portal.

Autorisieren mithilfe einer systemweiten verwalteten Identität

Stellen Sie zunächst sicher, dass Sie eine systemweite verwaltete Identität auf Ihrem virtuellen Computer aktiviert haben. Siehe Systemseitig zugewiesene verwaltete Identität.

Geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

export AZCOPY_AUTO_LOGIN_TYPE=MSI

Führen Sie dann einen beliebigen azcopy-Befehl aus (beispielsweise: azcopy list https://contoso.blob.core.windows.net).

Autorisieren mithilfe einer benutzerseitig zugewiesenen verwalteten Identität

Stellen Sie zunächst sicher, dass Sie eine vom Benutzer zugewiesene verwaltete Identität auf Ihrem virtuellen Computer aktiviert haben. Siehe Benutzerseitig zugewiesene verwaltete Identität.

Geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

export AZCOPY_AUTO_LOGIN_TYPE=MSI

Geben Sie dann einen der folgenden Befehle ein, und drücken Sie die EINGABETASTE.

export AZCOPY_MSI_CLIENT_ID=<client-id>

Ersetzen Sie den Platzhalter <client-id> durch die Client-ID der benutzerseitig zugewiesenen verwalteten Identität.

export AZCOPY_MSI_OBJECT_ID=<object-id>

Ersetzen Sie den Platzhalter <object-id> durch die Objekt-ID der benutzerseitig zugewiesenen verwalteten Identität.

export AZCOPY_MSI_RESOURCE_STRING=<resource-id>

Ersetzen Sie den Platzhalter <resource-id> durch die Ressourcen-ID der benutzerseitig zugewiesenen verwalteten Identität.

Nachdem Sie diese Variablen festgelegt haben, können Sie einen beliebigen azcopy-Befehl ausführen (beispielsweise: azcopy list https://contoso.blob.core.windows.net).

Autorisieren eines Dienstprinzipals

Dies ist eine gute Option, wenn Sie AzCopy in einem Skript verwenden möchten, das ohne Benutzerinteraktion ausgeführt wird, vor allem bei der lokalen Ausführung. Wenn Sie AzCopy auf virtuellen Computern ausführen möchten, die in Azure ausgeführt werden, lässt sich eine verwaltete Dienstidentität einfacher verwalten. Weitere Informationen finden Sie im Abschnitt Autorisieren einer verwalteten Identität in diesem Artikel.

Sie können sich mit einem geheimen Clientschlüssel oder mit dem Kennwort eines Zertifikats, das für die App-Registrierung Ihres Dienstprinzipals verwendet wird, bei Ihrem Konto anmelden.

Informationen zum Hinzufügen eines Dienstprinzipals zu einem Azure AD-Mandanten finden Sie unter Erstellen einer Microsoft Entra-Anwendung und eines Dienstprinzipals mit Ressourcenzugriff über das Portal.

Weitere Informationen zu Dienstprinzipalen im Allgemeinen finden Sie unter Anwendungs- und Dienstprinzipalobjekte in Microsoft Entra ID.

Autorisieren eines Dienstprinzipals unter Verwendung eines geheimen Clientschlüssels

Geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CLIENT_SECRET=<client-secret>
export AZCOPY_TENANT_ID=<tenant-id>

Ersetzen Sie den Platzhalter <application-id> mit der Anwendungs-ID der App-Registrierung Ihres Dienstprinzipals. Ersetzen Sie den Platzhalter <client-secret> durch den geheimen Clientschlüssel. Ersetzen Sie den Platzhalter <tenant-id> mit der Mandanten-ID der Organisation, zu der das Speicherkonto gehört. Wählen Sie Microsoft Entra > Eigenschaften > Verzeichnis-ID im Azure-Portal aus, um die Mandanten-ID zu finden.

Hinweis

Verwenden Sie ggf. eine Eingabeaufforderung, um das Kennwort vom Benutzer zu erfassen. Auf diese Weise wird Ihr Kennwort in Ihrem Befehlsverlauf nicht angezeigt.

Führen Sie dann einen beliebigen azcopy-Befehl aus (beispielsweise: azcopy list https://contoso.blob.core.windows.net).

Autorisieren eines Dienstprinzipals mithilfe eines Zertifikats

Wenn Sie lieber Ihre eigenen Anmeldedaten für die Autorisierung verwenden möchten, dann können Sie ein Zertifikat in Ihre App-Registrierung hochladen und dieses zum Anmelden verwenden.

Sie müssen nicht nur Ihr Zertifikat in Ihre App-Registrierung hochladen, sondern benötigen außerdem eine Kopie des Zertifikat, die auf dem Computer oder dem virtuellen Computer gespeichert ist, auf dem AzCopy ausgeführt wird. Diese Kopie des Zertifikats sollte das .PFX oder .PEM-Format haben und den privaten Schlüssel enthalten. Der private Schlüssel sollte mit einem Kennwort geschützt sein. Wenn Sie Windows verwenden und Ihre Zertifikat nur in einem Zertifikatspeicher ist, dann stellen Sie sicher, dass Sie das Zertifikat als PFX-Datei exportieren (einschließlich des privaten Schlüssels). Eine Anleitung dazu finden Sie unter Export-PfxCertificate.

Geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CERT_PATH=<path-to-certificate-file>
export AZCOPY_SPA_CERT_PASSWORD=<certificate-password>
export AZCOPY_TENANT_ID=<tenant-id>

Ersetzen Sie den Platzhalter <application-id> mit der Anwendungs-ID der App-Registrierung Ihres Dienstprinzipals. Ersetzen Sie den Platzhalter <path-to-certificate-file> mit einem relativen oder vollqualifizierten Pfad zur Zertifikatdatei. AzCopy speichert den Pfad zu diesem Zertifikat, speichert jedoch keine Kopie des Zertifikats. Achten Sie darauf, dass das Zertifikat dort bleibt, wo es ist. Ersetzen Sie den Platzhalter <certificate-password> durch das Kennwort des Zertifikats. Ersetzen Sie den Platzhalter <tenant-id> mit der Mandanten-ID der Organisation, zu der das Speicherkonto gehört. Wählen Sie Microsoft Entra > Eigenschaften > Verzeichnis-ID im Azure-Portal aus, um die Mandanten-ID zu finden.

Hinweis

Verwenden Sie ggf. eine Eingabeaufforderung, um das Kennwort vom Benutzer zu erfassen. Auf diese Weise wird Ihr Kennwort in Ihrem Befehlsverlauf nicht angezeigt.

Führen Sie dann einen beliebigen azcopy-Befehl aus (beispielsweise: azcopy list https://contoso.blob.core.windows.net).

Autorisieren mithilfe des AzCopy-Anmeldebefehls

Als Alternative zur Verwendung von In-Memory-Variablen autorisieren Sie den Zugriff mithilfe des Befehls „azcopy login“.

Mit dem Befehl „azcopy login“ wird ein OAuth-Token abgerufen und in einem Geheimnisspeicher auf Ihrem System gespeichert. Wenn Ihr Betriebssystem über keinen Geheimnisspeicher verfügt (z. B. keyring unter Linux), funktioniert der Befehl „azcopy login“ nicht, da das Token nicht platziert werden kann.

Autorisieren einer Benutzeridentität (Befehl „azcopy login“)

Nachdem Sie überprüft haben, ob Ihrer Benutzeridentität die notwendige Berechtigungsstufe gewährt wurde, öffnen Sie eine Eingabeaufforderung, geben Sie den folgenden Befehl ein, und drücken Sie dann die EINGABETASTE.

azcopy login

Wenn Sie einen Fehler angezeigt bekommen, fügen Sie die Mandanten-ID der Organisation ein, zu der das Speicherkonto gehört.

azcopy login --tenant-id=<tenant-id>

Ersetzen Sie den Platzhalter <tenant-id> mit der Mandanten-ID der Organisation, zu der das Speicherkonto gehört. Wählen Sie Microsoft Entra > Eigenschaften > Verzeichnis-ID im Azure-Portal aus, um die Mandanten-ID zu finden.

Dieser Befehl gibt einen Authentifizierungscode und die URL einer Website zurück. Öffnen Sie die Website, geben Sie den Code ein, und wählen Sie dann die Schaltfläche Weiter aus.

Erstellen eines Containers

Daraufhin wird ein Anmeldefenster geöffnet. Melden Sie sich in diesem Fenster mit Ihren Azure-Kontoanmeldeinformationen bei Ihrem Azure-Konto an. Wenn Sie sich erfolgreich angemeldet haben, können Sie das Browserfenster schließen und mit der Verwendung von AzCopy beginnen.

Autorisieren mithilfe einer systemweiten verwalteten Identität (Befehl „azcopy login“)

Stellen Sie zunächst sicher, dass Sie eine systemweite verwaltete Identität auf Ihrem virtuellen Computer aktiviert haben. Siehe Systemseitig zugewiesene verwaltete Identität.

Geben Sie dann an der Befehlskonsole den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

azcopy login --identity

Autorisieren mithilfe einer benutzerseitig zugewiesenen verwalteten Identität (Befehl „azcopy login“)

Stellen Sie zunächst sicher, dass Sie eine vom Benutzer zugewiesene verwaltete Identität auf Ihrem virtuellen Computer aktiviert haben. Siehe Benutzerseitig zugewiesene verwaltete Identität.

Geben Sie dann an der Befehlskonsole einen der folgenden Befehle ein, und drücken Sie die EINGABETASTE.

azcopy login --identity --identity-client-id "<client-id>"

Ersetzen Sie den Platzhalter <client-id> durch die Client-ID der benutzerseitig zugewiesenen verwalteten Identität.

azcopy login --identity --identity-object-id "<object-id>"

Ersetzen Sie den Platzhalter <object-id> durch die Objekt-ID der benutzerseitig zugewiesenen verwalteten Identität.

azcopy login --identity --identity-resource-id "<resource-id>"

Ersetzen Sie den Platzhalter <resource-id> durch die Ressourcen-ID der benutzerseitig zugewiesenen verwalteten Identität.

Autorisieren eines Dienstprinzipals (Befehl „azcopy login“)

Sie müssen sich interaktiv mindestens ein Mal anmelden, bevor Sie ein Skript ausführen, damit Sie in AzCopy die Anmeldeinformationen Ihres Dienstprinzipals bereitstellen können. Diese Anmeldedaten werden in einer gesicherten, verschlüsseln Datei gespeichert, damit Ihr Skript diese vertraulichen Daten nicht weitergeben muss.

Sie können sich mit einem geheimen Clientschlüssel oder mit dem Kennwort eines Zertifikats, das für die App-Registrierung Ihres Dienstprinzipals verwendet wird, bei Ihrem Konto anmelden.

Informationen zum Hinzufügen eines Dienstprinzipals zu einem Azure AD-Mandanten finden Sie unter Erstellen einer Microsoft Entra-Anwendung und eines Dienstprinzipals mit Ressourcenzugriff über das Portal.

Autorisieren eines Dienstprinzipals unter Verwendung eines geheimen Clientschlüssels (Befehl „azcopy login“)

Beginnen Sie, indem Sie die AZCOPY_SPA_CLIENT_SECRET-Umgebungsvarible auf den geheimen Clientschlüssel der App-Registrierung Ihres Dienstprinzipals festlegen.

Hinweis

Stellen Sie sicher, dass Sie diesen Wert in Ihrer Eingabeaufforderung einrichten und nicht in den Einstellungen der Umgebungsvariable Ihres Betriebssystems. So ist der Wert nur für die aktuelle Sitzung verfügbar.

Dieses Beispiel zeigt Ihnen, wie dies in PowerShell geht.

$env:AZCOPY_SPA_CLIENT_SECRET="$(Read-Host -prompt "Enter key")"

Hinweis

Erwägen Sie, eine Eingabeaufforderung wie in diesem Beispiel zu verwenden. So erscheint das Kennwort nicht im Befehlsverlauf Ihrer Konsole.

Geben Sie dann den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

azcopy login --service-principal  --application-id application-id --tenant-id=tenant-id

Ersetzen Sie den Platzhalter <application-id> mit der Anwendungs-ID der App-Registrierung Ihres Dienstprinzipals. Ersetzen Sie den Platzhalter <tenant-id> mit der Mandanten-ID der Organisation, zu der das Speicherkonto gehört. Wählen Sie Microsoft Entra > Eigenschaften > Verzeichnis-ID im Azure-Portal aus, um die Mandanten-ID zu finden.

Autorisieren eines Dienstprinzipals unter Verwendung eines Zertifikats (Befehl „azcopy login“)

Wenn Sie lieber Ihre eigenen Anmeldedaten für die Autorisierung verwenden möchten, dann können Sie ein Zertifikat in Ihre App-Registrierung hochladen und dieses zum Anmelden verwenden.

Sie müssen nicht nur Ihr Zertifikat in Ihre App-Registrierung hochladen, sondern benötigen außerdem eine Kopie des Zertifikat, die auf dem Computer oder dem virtuellen Computer gespeichert ist, auf dem AzCopy ausgeführt wird. Diese Kopie des Zertifikats sollte das .PFX oder .PEM-Format haben und den privaten Schlüssel enthalten. Der private Schlüssel sollte mit einem Kennwort geschützt sein. Wenn Sie Windows verwenden und Ihre Zertifikat nur in einem Zertifikatspeicher ist, dann stellen Sie sicher, dass Sie das Zertifikat als PFX-Datei exportieren (einschließlich des privaten Schlüssels). Eine Anleitung dazu finden Sie unter Export-PfxCertificate.

Richten Sie jetzt die AZCOPY_SPA_CERT_PASSWORD-Umgebungsvariable mit dem Zertifikatkennwort ein.

Hinweis

Stellen Sie sicher, dass Sie diesen Wert in Ihrer Eingabeaufforderung einrichten und nicht in den Einstellungen der Umgebungsvariable Ihres Betriebssystems. So ist der Wert nur für die aktuelle Sitzung verfügbar.

Dieses Beispiel zeigt Ihnen, wie diese Aufgabe in PowerShell ausgeführt wird.

$env:AZCOPY_SPA_CERT_PASSWORD="$(Read-Host -prompt "Enter key")"

Geben Sie dann den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

azcopy login --service-principal --application-id application-id --certificate-path <path-to-certificate-file> --tenant-id=<tenant-id>

Ersetzen Sie den Platzhalter <application-id> mit der Anwendungs-ID der App-Registrierung Ihres Dienstprinzipals. Ersetzen Sie den Platzhalter <path-to-certificate-file> mit einem relativen oder vollqualifizierten Pfad zur Zertifikatdatei. AzCopy speichert den Pfad zu diesem Zertifikat, speichert jedoch keine Kopie des Zertifikats. Achten Sie darauf, dass das Zertifikat dort bleibt, wo es ist. Ersetzen Sie den Platzhalter <tenant-id> mit der Mandanten-ID der Organisation, zu der das Speicherkonto gehört. Wählen Sie Microsoft Entra > Eigenschaften > Verzeichnis-ID im Azure-Portal aus, um die Mandanten-ID zu finden.

Hinweis

Erwägen Sie, eine Eingabeaufforderung wie in diesem Beispiel zu verwenden. So erscheint das Kennwort nicht im Befehlsverlauf Ihrer Konsole.

Autorisieren mit Azure CLI

Wenn Sie sich mit Azure CLI anmelden, erhält Azure CLI ein OAuth-Token, das AzCopy zum Autorisieren von Vorgängen verwenden kann.

Damit AzCopy dieses Token verwenden kann, geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

export AZCOPY_AUTO_LOGIN_TYPE=AZCLI

Weitere Informationen zum Anmelden mit der Azure CLI finden Sie unter Anmelden mit Azure CLI.

Autorisieren mit Azure PowerShell

Wenn Sie sich mit Azure PowerShell anmelden, erhält Azure PowerShell ein OAuth-Token, das AzCopy zum Autorisieren von Vorgängen verwenden kann.

Damit AzCopy dieses Token verwenden kann, geben Sie den folgenden Befehl ein, und drücken Sie die EINGABETASTE.

$Env:AZCOPY_AUTO_LOGIN_TYPE="PSCRED"

Weitere Informationen zum Anmelden mit Azure PowerShell finden Sie unter Anmelden mit Azure PowerShell.

Nächste Schritte