Share via


Verwenden der Azure CLI zum Verwalten von Zugriffssteuerungslisten in Azure Data Lake Storage Gen2

In diesem Artikel erfahren Sie, wie Sie mit der Azure CLI die Zugriffssteuerungslisten von Verzeichnissen und Dateien abrufen, festlegen und aktualisieren.

Die Vererbung von Zugriffssteuerungslisten (ACLs) ist für neue untergeordnete Elemente, die unter einem übergeordneten Verzeichnis erstellt werden, bereits verfügbar. Sie können Zugriffssteuerungslisten aber auch rekursiv für die vorhandenen untergeordneten Elemente eines übergeordneten Verzeichnisses hinzufügen, aktualisieren und entfernen, ohne diese Änderungen für jedes untergeordnete Element einzeln vornehmen zu müssen.

Referenz | Beispiele | Feedback geben

Voraussetzungen

  • Ein Azure-Abonnement. Weitere Informationen finden Sie unter Kostenlose Azure-Testversion.

  • Ein Speicherkonto, für das der hierarchische Namespace aktiviert ist. Befolgen Sie diese Anleitung für die Erstellung.

  • Azure CLI, Version 2.14.0 oder höher.

  • Eine der folgenden Sicherheitsberechtigungen:

    • Ein bereitgestellter Sicherheitsprinzipal für Microsoft Entra ID, dem die Rolle Storage Blob-Datenbesitzer im Bereich des Zielcontainers, der übergeordneten Ressourcengruppe oder des Abonnements zugewiesen wurde.

    • Der Benutzer muss Besitzer des Zielcontainers oder -verzeichnisses sein, in dem Sie die ACL-Einstellungen anwenden möchten. Beim rekursiven Festlegen von ACLs schließt dies alle untergeordneten Elemente im Zielcontainer oder -verzeichnis ein.

    • Speicherkontoschlüssel

Stellen Sie sicher, dass die korrekte Version der Azure CLI installiert ist.

  1. Öffnen Sie Azure Cloud Shell, oder falls Sie die Azure-Befehlszeilenschnittstelle lokal installiert haben, öffnen Sie eine Befehlskonsolenanwendung wie Windows PowerShell.

  2. Überprüfen Sie mit dem folgenden Befehl, ob die installierte Version der Azure-Befehlszeilenschnittstelle 2.14.0 oder höher ist.

     az --version
    

    Wenn Ihre Version der Azure-Befehlszeilenschnittstelle kleiner als 2.14.0 ist, dann installieren Sie eine neuere Version. Weitere Informationen finden Sie unter Installieren der Azure-Befehlszeilenschnittstelle.

Herstellen einer Verbindung mit dem Konto

  1. Wenn Sie die Azure-Befehlszeilenschnittstelle lokal verwenden, führen Sie den Anmeldebefehl aus.

    az login
    

    Die CLI öffnet Ihren Standardbrowser, sofern sie dazu in der Lage ist, und lädt eine Azure-Anmeldeseite.

    Öffnen Sie andernfalls die Browserseite https://aka.ms/devicelogin, und geben Sie den in Ihrem Terminal angezeigten Autorisierungscode ein. Melden Sie sich dann im Browser mit Ihren Anmeldeinformationen an.

    Weitere Informationen zu verschiedenen Authentifizierungsmethoden finden Sie unter Autorisieren des Zugriffs auf Blob- oder Warteschlangendaten mit der Azure CLI.

  2. Wenn Ihre Identität mehreren Abonnements zugeordnet ist, legen Sie das aktive Abonnement auf das Abonnement des Speicherkontos fest, auf dem Ihre statische Website gehostet wird.

    az account set --subscription <subscription-id>
    

    Ersetzen Sie den Platzhalterwert <subscription-id> durch die ID Ihres Abonnements.

Hinweis

Das in diesem Artikel dargestellte Beispiel zeigt die Microsoft Entra-Autorisierung. Weitere Informationen zu Autorisierungsmethoden finden Sie unter Autorisieren des Zugriffs auf Blob- oder Warteschlangendaten mit der Azure CLI.

Abrufen von ACLs

Rufen Sie die Zugriffssteuerungsliste (ACL) für ein Verzeichnis mit dem Befehl az storage fs access show ab.

In diesem Beispiel wird die Zugriffssteuerungsliste eines Verzeichnisses abgerufen und dann auf der Konsole ausgegeben.

az storage fs access show -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

Rufen Sie die Berechtigungen für eine Datei mit dem Befehl az storage fs access show ab.

In diesem Beispiel wird die Zugriffssteuerungsliste einer Datei abgerufen und dann auf der Konsole ausgegeben.

az storage fs access show -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

Die folgende Abbildung zeigt die Ausgabe nach dem Abrufen der Zugriffssteuerungsliste eines Verzeichnisses.

Get ACL output

In diesem Beispiel verfügt der zuständige Benutzer über Berechtigungen zum Lesen, Schreiben und Ausführen. Die zuständige Gruppe verfügt lediglich über Berechtigungen zum Lesen und Ausführen. Weitere Informationen zu Zugriffssteuerungslisten finden Sie unter Zugriffssteuerung in Azure Data Lake Storage Gen2.

Festlegen von ACLs

Wenn Sie eine Zugriffssteuerungsliste festlegen, ersetzen Sie die gesamte Zugriffssteuerungsliste einschließlich aller Einträge. Wenn Sie die Berechtigungsebene eines Sicherheitsprinzipals ändern oder der Zugriffssteuerungsliste einen neuen Sicherheitsprinzipal hinzufügen möchten, ohne dass sich dies auf bereits vorhandene Einträge auswirkt, sollten Sie die Zugriffssteuerungsliste stattdessen aktualisieren. Informationen dazu, wie eine Zugriffssteuerungsliste aktualisiert statt ersetzt wird, finden Sie im Abschnitt Aktualisieren von ACLs in diesem Artikel.

Wenn Sie die Zugriffssteuerungsliste festlegen, müssen Sie einen Eintrag für den besitzenden Benutzer, einen Eintrag für die besitzende Gruppe und einen Eintrag für alle anderen Benutzer hinzufügen. Weitere Informationen zum besitzenden Benutzer, zur besitzenden Gruppe und zu allen anderen Benutzern finden Sie unter Benutzer und Identitäten.

In diesem Abschnitt erfahren Sie Folgendes:

  • Festlegen einer Zugriffssteuerungsliste
  • Rekursives Festlegen von ACLs

Festlegen einer Zugriffssteuerungsliste

Verwenden Sie den Befehl az storage fs access set, um die Zugriffssteuerungsliste für ein Verzeichnis festzulegen.

In diesem Beispiel wird die Zugriffssteuerungsliste auf ein Verzeichnis für den zuständigen Benutzer, die zuständige Gruppe oder andere Benutzer festgelegt und dann auf der Konsole ausgegeben.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

In diesem Beispiel wird die Standard-Zugriffssteuerungsliste auf ein Verzeichnis für den zuständigen Benutzer, die zuständige Gruppe oder andere Benutzer festgelegt und dann in der Konsole ausgegeben.

az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

Verwenden Sie den Befehl az storage fs access set, um die Zugriffssteuerungsliste für eine Datei festzulegen.

In diesem Beispiel wird die Zugriffssteuerungsliste auf eine Datei für den zuständigen Benutzer, die zuständige Gruppe oder andere Benutzer festgelegt und anschließend auf der Konsole ausgegeben.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

Hinweis

Verwenden Sie die entsprechenden Objekt-IDs, um die Zugriffssteuerungsliste einer spezifischen Gruppe oder eines spezifischen Benutzers festzulegen. Wenn Sie z. B. die ACL einer Gruppe festlegen möchten, verwenden Sie group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Um die ACL auf einen Benutzer festzulegen, verwenden Sie user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Die folgende Abbildung zeigt die Ausgabe nach dem Festlegen der Zugriffssteuerungsliste einer Datei.

Get ACL output 2

In diesem Beispiel verfügen der zuständige Benutzer und die zuständige Gruppe nur über Berechtigungen zum Lesen und Schreiben. Alle anderen Benutzer verfügen über Berechtigungen zum Schreiben und Ausführen. Weitere Informationen zu Zugriffssteuerungslisten finden Sie unter Zugriffssteuerung in Azure Data Lake Storage Gen2.

Rekursives Festlegen von ACLs

Zum rekursiven Festlegen von Zugriffssteuerungslisten verwenden Sie den Befehl az storage fs access set-recursive.

In diesem Beispiel wird die ACL des Verzeichnisses my-parent-directory festgelegt. Mit diesen Einträgen werden dem zuständigen Benutzer Lese-, Schreib- und Ausführungsberechtigungen und der zuständigen Gruppe nur Lese- und Ausführungsberechtigungen gewährt, während allen anderen kein Zugriff gewährt wird. Der letzte ACL-Eintrag in diesem Beispiel gewährt einem bestimmten Benutzer mit der Objekt-ID „xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx“ Lese- und Ausführungsberechtigungen.

az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Hinweis

Wenn Sie einen standardmäßigen ACL-Eintrag festlegen möchten, fügen Sie jedem Eintrag das Präfix default: hinzu. Zum Beispiel: default:user::rwx oder default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Aktualisieren von ACLs

Wenn Sie eine Zugriffssteuerungsliste aktualisieren, ändern Sie die Zugriffssteuerungsliste, anstatt sie zu ersetzen. Beispielsweise können Sie der Zugriffssteuerungsliste einen neuen Sicherheitsprinzipal hinzufügen, ohne dass sich dies auf andere Sicherheitsprinzipale auswirkt, die in der Zugriffssteuerungsliste aufgelistet sind. Informationen dazu, wie eine Zugriffssteuerungsliste ersetzt statt aktualisiert wird, finden Sie im Abschnitt Festlegen von Zugriffssteuerungslisten in diesem Artikel.

Um eine Zugriffssteuerungsliste zu aktualisieren, erstellen Sie ein neues Zugriffssteuerungsliste-Objekt mit dem Zugriffssteuerungslisteneintrag, den Sie aktualisieren möchten, und verwenden Sie dieses Objekt dann im Aktualisierungsvorgang der Zugriffssteuerungsliste. Rufen Sie nicht die vorhandene Zugriffssteuerungsliste ab, stellen Sie lediglich die zu aktualisierenden Zugriffssteuerungslisteneinträge bereit.

In diesem Abschnitt erfahren Sie Folgendes:

  • Aktualisieren einer Zugriffssteuerungsliste (ACL)
  • Rekursives Aktualisieren von Zugriffssteuerungslisten

Aktualisieren einer Zugriffssteuerungsliste (ACL)

Aktualisieren Sie die ACL einer Datei mit dem Befehl az storage fs access update-recursive.

Dieses Beispiel aktualisiert einen ACL-Eintrag mit Schreibberechtigung.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login

Verwenden Sie die entsprechenden Objekt-IDs, um ein Update an der Zugriffssteuerungsliste einer spezifischen Gruppe oder eines spezifischen Benutzers durchzuführen. Zum Beispiel: group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx oder user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Hinweis

Das Aktualisieren der ACL eines einzelnen Verzeichnisses ohne Aktualisierung der ACL von den untergeordneten Elementen wird von der Azure CLI nicht unterstützt. Um die ACL eines Verzeichnisses zu aktualisieren, ohne die ACLs aller untergeordneten Elemente in diesem Verzeichnis zu ändern, verwenden Sie eines der anderen unterstützten Tools und SDKs. Siehe Festlegen von ACLs.

Rekursives Aktualisieren von Zugriffssteuerungslisten

Zum rekursiver Aktualisieren von Zugriffssteuerungslisten verwenden Sie den Befehl az storage fs access update-recursive.

Dieses Beispiel aktualisiert einen ACL-Eintrag mit Schreibberechtigung.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Hinweis

Wenn Sie einen standardmäßigen ACL-Eintrag aktualisieren möchten, fügen Sie jedem Eintrag das Präfix default: hinzu. Beispiel: default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Rekursives Entfernen von ACL-Einträgen

Sie können einen oder mehrere ACL-Einträge rekursiv entfernen. Um einen ACL-Eintrag zu entfernen, erstellen Sie ein neues ACL-Objekt für den zu entfernenden ACL-Eintrag, und verwenden Sie dieses Objekt dann im Entfernungsvorgang der ACL. Rufen Sie nicht die vorhandene ACL ab, stellen Sie lediglich die zu entfernenden ACL-Einträge bereit.

Zum Entfernen von ACL-Einträgen verwenden Sie den Befehl az storage fs access remove-recursive.

In diesem Beispiel wird ein ACL-Eintrag aus dem Stammverzeichnis des Containers entfernt.

az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Hinweis

Wenn Sie einen standardmäßigen ACL-Eintrag entfernen möchten, fügen Sie jedem Eintrag das Präfix default: hinzu. Beispiel: default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Wiederherstellen nach Fehlern

Beim rekursiven Ändern von Zugriffssteuerungslisten können Laufzeit- oder Berechtigungsfehler auftreten. Starten Sie den Prozess bei Laufzeitfehlern vom Anfang neu. Berechtigungsfehler können auftreten, wenn der Sicherheitsprinzipal nicht über ausreichende Berechtigungen verfügt, um die Zugriffssteuerungsliste eines Verzeichnisses oder einer Datei zu ändern, die sich in der geänderten Verzeichnishierarchie befindet. Beheben Sie das Berechtigungsproblem, und setzen Sie dann den Prozess ab dem Zeitpunkt des Fehlers mithilfe eines Fortsetzungstokens fort, oder starten Sie den Prozess vom Anfang neu. Sie müssen das Fortsetzungstoken nicht verwenden, wenn Sie vom Anfang neu starten. Sie können ACL-Einträge ohne negative Auswirkung erneut anwenden.

Im Fall eines Fehlers können Sie ein Fortsetzungstoken zurückgeben, indem Sie den Parameter --continue-on-failure auf false festlegen. Nachdem Sie die Fehler behoben haben, können Sie den Prozess ab dem Fehlerzeitpunkt fortsetzen. Dazu führen Sie den Befehl erneut aus, und legen Sie dann den Parameter --continuation auf das Fortsetzungstoken fest.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Wenn Sie möchten, dass der Prozess ohne Unterbrechung durch Berechtigungsfehler durchgeführt wird, können Sie dies angeben.

Um sicherzustellen, dass der Prozess ohne Unterbrechung durchgeführt wird, legen Sie den Parameter --continue-on-failure auf true fest.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Bewährte Methoden

Dieser Abschnitt enthält einige Richtlinien zu bewährten Methoden für das rekursive Festlegen von Zugriffssteuerungslisten.

Behandeln von Laufzeitfehlern

Ein Laufzeitfehler kann aus vielen Gründen auftreten (z. B. bei einem Ausfall oder einem Clientkonnektivitätsproblem). Wenn ein Laufzeitfehler auftritt, starten Sie den rekursiven ACL-Prozess neu. Zugriffssteuerungslisten können ohne negative Auswirkungen erneut auf Elemente angewandt werden.

Behandeln von Berechtigungsfehlern (403)

Wenn beim Ausführen eines rekursiven ACL-Prozesses eine Zugriffssteuerungsausnahme auftritt, verfügt Ihr AD-Sicherheitsprinzipal möglicherweise nicht über ausreichende Berechtigungen zum Anwenden einer Zugriffssteuerungsliste auf eines der untergeordneten Elemente in der Verzeichnishierarchie. Wenn ein Berechtigungsfehler auftritt, wird der Prozess angehalten, und es wird ein Fortsetzungstoken bereitgestellt. Beheben Sie das Berechtigungsproblem, und verwenden Sie dann das Fortsetzungstoken, um das restliche Dataset zu verarbeiten. Die Verzeichnisse und Dateien, die bereits erfolgreich verarbeitet wurden, müssen nicht erneut verarbeitet werden. Sie können den rekursiven ACL-Prozess auch neu starten. Zugriffssteuerungslisten können ohne negative Auswirkungen erneut auf Elemente angewandt werden.

Anmeldeinformationen

Es wird empfohlen, einen Microsoft Entra-Sicherheitsprinzipal bereitzustellen, dem die Rolle Besitzer von Speicherblobdaten im Bereich des Zielspeicherkontos oder -containers zugewiesen wurde.

Leistung

Um die Latenz zu verringern, empfiehlt es sich, den rekursiven ACL-Prozess auf einem virtuellen Azure-Computer (VM) auszuführen, der sich in derselben Region wie das Speicherkonto befindet.

Einschränkungen bei Zugriffssteuerungslisten

Die maximale Anzahl von Zugriffssteuerungslisten, die Sie auf ein Verzeichnis oder eine Datei anwenden können, beträgt 32 ACLs für den Zugriff und 32 Standard-ACLs. Weitere Informationen finden Sie unter Zugriffssteuerung in Azure Data Lake Storage Gen2.

Weitere Informationen