Zarządzanie listami ACL w usłudze Azure Data Lake Storage Gen2 przy użyciu interfejsu wiersza polecenia platformy Azure

W tym artykule pokazano, jak za pomocą interfejsu wiersza polecenia platformy Azure pobierać, ustawiać i aktualizować listy kontroli dostępu katalogów i plików.

Dziedziczenie listy ACL jest już dostępne dla nowych elementów podrzędnych utworzonych w katalogu nadrzędnym. Można jednak również dodawać, aktualizować i usuwać listy ACL cyklicznie w istniejących elementach podrzędnych katalogu nadrzędnego bez konieczności wprowadzania tych zmian indywidualnie dla każdego elementu podrzędnego.

| Przykłady referencyjne | — prześlij opinię

Wymagania wstępne

  • Subskrypcja platformy Azure. Aby uzyskać więcej informacji, zobacz Uzyskiwanie bezpłatnej wersji próbnej platformy Azure.

  • Konto magazynu z włączoną hierarchiczną przestrzenią nazw. Postępuj zgodnie z tymi instrukcjami, aby je utworzyć.

  • Wersja interfejsu wiersza polecenia platformy Azure lub nowsza 2.14.0 .

  • Jedno z następujących uprawnień zabezpieczeń:

    • Aprowizowana jednostka zabezpieczeń identyfikatora entra firmy Microsoft, która została przypisana do roli właściciela danych obiektu blob usługi Storage, w zakresie kontenera docelowego, konta magazynu, nadrzędnej grupy zasobów lub subskrypcji.

    • Właścicielem kontenera docelowego lub katalogu, do którego planujesz zastosować ustawienia listy ACL. Aby ustawić listy ACL cyklicznie, obejmuje to wszystkie elementy podrzędne w kontenerze docelowym lub katalogu.

    • Klucz konta magazynu.

Upewnij się, że masz zainstalowaną poprawną wersję interfejsu wiersza polecenia platformy Azure

  1. Otwórz usługę Azure Cloud Shell lub jeśli interfejs wiersza polecenia platformy Azure został zainstalowany lokalnie, otwórz aplikację konsolową poleceń, taką jak program Windows PowerShell.

  2. Sprawdź, czy zainstalowana wersja interfejsu wiersza polecenia platformy Azure jest 2.14.0 lub nowsza, używając następującego polecenia.

     az --version
    

    Jeśli wersja interfejsu wiersza polecenia platformy Azure jest niższa niż 2.14.0, zainstaluj nowszą wersję. Aby uzyskać więcej informacji, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Połączenie do konta

  1. Jeśli używasz interfejsu wiersza polecenia platformy Azure lokalnie, uruchom polecenie logowania.

    az login
    

    Jeśli interfejs wiersza polecenia może otworzyć domyślną przeglądarkę, zrobi to i załaduje stronę logowania platformy Azure.

    W przeciwnym razie otwórz stronę przeglądarki pod https://aka.ms/devicelogin adresem i wprowadź kod autoryzacji wyświetlany w terminalu. Następnie zaloguj się przy użyciu poświadczeń konta w przeglądarce.

    Aby dowiedzieć się więcej na temat różnych metod uwierzytelniania, zobacz Autoryzowanie dostępu do danych obiektów blob lub kolejek za pomocą interfejsu wiersza polecenia platformy Azure.

  2. Jeśli tożsamość jest skojarzona z więcej niż jedną subskrypcją, ustaw aktywną subskrypcję na subskrypcję konta magazynu, które będzie hostować statyczną witrynę internetową.

    az account set --subscription <subscription-id>
    

    Zastąp wartość symbolu <subscription-id> zastępczego identyfikatorem subskrypcji.

Uwaga

W przykładzie przedstawionym w tym artykule przedstawiono autoryzację firmy Microsoft Entra. Aby dowiedzieć się więcej na temat metod autoryzacji, zobacz Autoryzowanie dostępu do danych obiektów blob lub kolejek za pomocą interfejsu wiersza polecenia platformy Azure.

Uzyskiwanie list ACL

Pobierz listę ACL katalogu przy użyciu polecenia az storage fs access show .

Ten przykład pobiera listę ACL katalogu, a następnie drukuje listę ACL w konsoli.

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

Uzyskaj uprawnienia dostępu do pliku przy użyciu polecenia az storage fs access show .

Ten przykład pobiera listę ACL pliku, a następnie drukuje listę ACL w konsoli programu .

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

Na poniższej ilustracji przedstawiono dane wyjściowe po otrzymaniu listy ACL katalogu.

Get ACL output

W tym przykładzie użytkownik, który jest właścicielem, ma uprawnienia do odczytu, zapisu i wykonywania. Grupa będąca właścicielem ma tylko uprawnienia do odczytu i wykonywania. Aby uzyskać więcej informacji na temat list kontroli dostępu, zobacz Kontrola dostępu w usłudze Azure Data Lake Storage Gen2.

Ustawianie list ACL

Po ustawieniu listy ACL należy zastąpićcałą listę ACL wraz ze wszystkimi wpisami. Jeśli chcesz zmienić poziom uprawnień podmiotu zabezpieczeń lub dodać nowego podmiotu zabezpieczeń do listy ACL bez wpływu na inne istniejące wpisy, należy zaktualizować listę ACL. Aby zaktualizować listę ACL zamiast jej zastąpić, zobacz sekcję Aktualizowanie list ACL w tym artykule.

Jeśli zdecydujesz się ustawić listę ACL, musisz dodać wpis dla użytkownika będącego właścicielem, wpis dla grupy właścicieli i wpis dla wszystkich innych użytkowników. Aby dowiedzieć się więcej na temat użytkownika, grupy właścicieli i wszystkich innych użytkowników, zobacz Użytkownicy i tożsamości.

W tej sekcji pokazano, jak wykonać następujące działania:

  • Ustawianie listy ACL
  • Cykliczne ustawianie list kontroli dostępu

Ustawianie listy ACL

Użyj polecenia az storage fs access set, aby ustawić listę ACL katalogu.

W tym przykładzie lista ACL jest ustawiana w katalogu dla użytkownika, grupy właścicieli lub innych użytkowników, a następnie drukuje listę ACL do konsoli.

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

W tym przykładzie ustawiono domyślną listę ACL w katalogu dla użytkownika będącego właścicielem lub innych użytkowników, a następnie wyświetla listę ACL w konsoli.

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

Użyj polecenia az storage fs access set, aby ustawić listę acl pliku.

W tym przykładzie lista ACL jest ustawiana w pliku dla użytkownika, który jest właścicielem grupy lub innych użytkowników, a następnie wyświetla listę ACL w konsoli.

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

Uwaga

Aby ustawić listę ACL określonej grupy lub użytkownika, użyj odpowiednich identyfikatorów obiektów. Aby na przykład ustawić listę ACL grupy, użyj polecenia group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Aby ustawić listę ACL użytkownika, użyj polecenia user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Na poniższej ilustracji przedstawiono dane wyjściowe po ustawieniu listy ACL pliku.

Get ACL output 2

W tym przykładzie właściciel i grupa będąca właścicielem mają uprawnienia tylko do odczytu i zapisu. Wszyscy inni użytkownicy mają uprawnienia do zapisu i wykonywania. Aby uzyskać więcej informacji na temat list kontroli dostępu, zobacz Kontrola dostępu w usłudze Azure Data Lake Storage Gen2.

Cykliczne ustawianie list kontroli dostępu

Ustaw listy ACL rekursywnie za pomocą polecenia az storage fs access set-rekursive .

W tym przykładzie ustawiono listę ACL katalogu o nazwie my-parent-directory. Te wpisy zapewniają użytkownikowi uprawnienia do odczytu, zapisu i wykonywania, zapewniają uprawnienia tylko do odczytu i wykonywania grupy właścicieli i daje wszystkim innym bez dostępu. Ostatni wpis listy ACL w tym przykładzie zawiera określonego użytkownika o identyfikatorze obiektu "xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" uprawnienia do odczytu i wykonywania.

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

Uwaga

Jeśli chcesz ustawić domyślny wpis listy ACL, dodaj prefiks default: do każdego wpisu. Na przykład: default:user::rwx lub default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Aktualizowanie list ACL

Podczas aktualizowania listy ACL należy zmodyfikować listę ACL zamiast zastąpić listę ACL. Można na przykład dodać nowego podmiotu zabezpieczeń do listy ACL bez wpływu na inne podmioty zabezpieczeń wymienione na liście ACL. Aby zastąpić listę ACL zamiast ją zaktualizować, zobacz sekcję Ustawianie list ACL w tym artykule.

Aby zaktualizować listę ACL, utwórz nowy obiekt listy ACL z wpisem listy ACL, który chcesz zaktualizować, a następnie użyj tego obiektu w operacji aktualizacji listy ACL. Nie pobieraj istniejącej listy ACL, po prostu podaj wpisy listy ACL do zaktualizowania.

W tej sekcji pokazano, jak wykonać następujące działania:

  • Aktualizowanie listy ACL
  • Rekursywne aktualizowanie list ACL

Aktualizowanie listy ACL

Zaktualizuj listę ACL pliku przy użyciu polecenia az storage fs access update-rekursive .

W tym przykładzie zaktualizowano wpis listy ACL z uprawnieniami do zapisu.

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

Aby zaktualizować listę ACL określonej grupy lub użytkownika, użyj odpowiednich identyfikatorów obiektów. Na przykład: group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx lub user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Uwaga

Aktualizowanie listy ACL pojedynczego katalogu bez aktualizowania listy ACL elementów podrzędnych nie jest obsługiwane przez interfejs wiersza polecenia platformy Azure. Aby zaktualizować listę ACL katalogu bez modyfikowania list ACL wszystkich elementów podrzędnych w tym katalogu, użyj dowolnego z innych obsługiwanych narzędzi i zestawów SDK. Zobacz Jak ustawić listy ACL.

Rekursywne aktualizowanie list ACL

Aktualizuj listy ACL rekursywnie za pomocą polecenia az storage fs access update-rekursive .

W tym przykładzie zaktualizowano wpis listy ACL z uprawnieniami do zapisu.

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

Uwaga

Jeśli chcesz zaktualizować domyślny wpis listy ACL, dodaj prefiks default: do każdego wpisu. Na przykład default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Usuwanie wpisów listy ACL rekursywnie

Można usunąć co najmniej jeden wpis listy ACL rekursywnie. Aby usunąć wpis listy ACL, utwórz nowy obiekt listy ACL dla wpisu listy ACL do usunięcia, a następnie użyj tego obiektu w operacji usuwania listy ACL. Nie pobieraj istniejącej listy ACL, po prostu podaj wpisy listy ACL do usunięcia.

Usuń wpisy listy ACL przy użyciu polecenia az storage fs access remove-recursive .

W tym przykładzie usunięto wpis listy ACL z katalogu głównego kontenera.

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

Uwaga

Jeśli chcesz usunąć domyślny wpis listy ACL, dodaj prefiks default: do każdego wpisu. Na przykład default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Odzyskiwanie po awariach

Podczas cyklicznego modyfikowania list ACL mogą wystąpić błędy środowiska uruchomieniowego lub uprawnień. W przypadku błędów środowiska uruchomieniowego uruchom ponownie proces od początku. Błędy uprawnień mogą wystąpić, jeśli podmiot zabezpieczeń nie ma wystarczających uprawnień do modyfikowania listy ACL katalogu lub pliku, który znajduje się w hierarchii katalogów, które są modyfikowane. Rozwiąż problem z uprawnieniami, a następnie wybierz, aby wznowić proces od punktu awarii przy użyciu tokenu kontynuacji lub uruchomić ponownie proces od początku. Jeśli wolisz ponownie uruchomić od początku, nie musisz używać tokenu kontynuacji. Możesz ponownie zastosować wpisy listy ACL bez negatywnego wpływu.

W przypadku awarii można zwrócić token kontynuacji, ustawiając --continue-on-failure parametr na false. Po usunięciu błędów można wznowić proces od punktu awarii, uruchamiając ponownie polecenie, a następnie ustawiając --continuation parametr na token kontynuacji.

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  

Jeśli chcesz, aby proces był nieprzerwany przez błędy uprawnień, możesz to określić.

Aby upewnić się, że proces zakończy się nieprzerwanie, ustaw --continue-on-failure parametr na truewartość .

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  

Najlepsze rozwiązania

Ta sekcja zawiera wskazówki dotyczące najlepszych rozwiązań dotyczących cyklicznego ustawiania list ACL.

Obsługa błędów środowiska uruchomieniowego

Błąd środowiska uruchomieniowego może wystąpić z wielu powodów (na przykład: awaria lub problem z łącznością klienta). Jeśli wystąpi błąd środowiska uruchomieniowego, uruchom ponownie cyklicznego procesu listy ACL. Listy ACL można ponownie zastosować do elementów bez negatywnego wpływu.

Obsługa błędów uprawnień (403)

Jeśli wystąpi wyjątek kontroli dostępu podczas uruchamiania cyklicznego procesu listy ACL, podmiot zabezpieczeń usługi AD może nie mieć wystarczających uprawnień do zastosowania listy ACL do co najmniej jednego elementu podrzędnego w hierarchii katalogów. Po wystąpieniu błędu uprawnień proces zostanie zatrzymany i zostanie udostępniony token kontynuacji. Rozwiąż problem z uprawnieniami, a następnie użyj tokenu kontynuacji, aby przetworzyć pozostały zestaw danych. Katalogi i pliki, które zostały już pomyślnie przetworzone, nie będą musiały zostać ponownie przetworzone. Możesz również ponownie uruchomić cyklicznego procesu listy ACL. Listy ACL można ponownie zastosować do elementów bez negatywnego wpływu.

Poświadczenia

Zalecamy aprowizację podmiotu zabezpieczeń firmy Microsoft, któremu przypisano rolę Właściciela danych obiektu blob usługi Storage w zakresie docelowego konta magazynu lub kontenera.

Wydajność

Aby zmniejszyć opóźnienie, zalecamy uruchomienie cyklicznego procesu listy ACL na maszynie wirtualnej platformy Azure znajdującej się w tym samym regionie co konto magazynu.

Limity listy ACL

Maksymalna liczba list ACL, które można zastosować do katalogu lub pliku, to 32 listy ACL dostępu i 32 domyślne listy ACL. Aby uzyskać więcej informacji, zobacz Kontrola dostępu w usłudze Azure Data Lake Storage Gen2.

Zobacz też