Udostępnij za pomocą


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

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

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

| — 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 2.14.0 interfejsu wiersza polecenia platformy Azure lub wyższa.

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

    • Aprowizowana jednostka zabezpieczeń identyfikatora Microsoft Entra, która otrzymała rolę właściciela danych obiektu blob usługi Storage, przypisaną do docelowego kontenera, konta magazynu, nadrzędnej grupy zasobów lub subskrypcji.

    • Użytkownik będący 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.

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.

Nawiązywanie połączenia z kontem

  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 Twoja tożsamość jest skojarzona z więcej niż jedną subskrypcją i nie zostanie wyświetlony monit o wybranie subskrypcji, ustaw aktywną subskrypcję na tę subskrypcję, z którą jest powiązane konto magazynu, na którym chcesz działać. W tym przykładzie zastąp wartość zastępczą <subscription-id> ID swojej subskrypcji.

    az account set --subscription <subscription-id>
    

    Zamień wartość zastępczą <subscription-id> na identyfikator swojej subskrypcji.

Uwaga

Przykład przedstawiony w tym artykule pokazuje autoryzację Microsoft Entra. Aby dowiedzieć się więcej na temat metod autoryzacji, zobacz Autoryzowanie dostępu do danych obiektów blob lub kolejek za pomocą Azure CLI.

Pobierz listy ACL

Pobierz ACL katalogu za pomocą polecenia az storage fs access show.

Ten przykład pobiera listę ACL katalogu, a następnie wyświetla listę ACL na 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 ACL pliku, a następnie wyświetla ACL w konsoli.

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.

Uzyskaj dane wyjściowe ACL

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.

Ustaw ACL

Kiedy ustawiasz listę ACL, zastępujesz całą listę ACL, włącznie ze wszystkimi jej 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ć ACL, musisz dodać wpis dla użytkownika będącego właścicielem, wpis dla grupy będącej właścicielem 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:

  • Ustaw listę ACL
  • Ustaw listy kontroli dostępu rekursywnie

Ustaw ACL

Użyj polecenia az storage fs access set, aby ustawić listę kontroli dostępu dla 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 domyślna lista ACL jest ustawiana w katalogu dla właściciela katalogu, grupy będącej właścicielem lub innych użytkowników, a następnie lista ACL jest wyświetlana 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ć 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.

Pobierz dane wyjściowe ACL 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.

Rekurencyjne ustawianie list kontroli dostępu

Ustaw listy ACL rekursywnie, używając polecenia az storage fs access set-recursive.

W tym przykładzie ustawiana jest lista kontroli dostępu (ACL) katalogu o nazwie my-parent-directory. Te wpisy zapewniają użytkownikowi uprawnienia do odczytu, zapisu i wykonywania, zapewniają grupie właściciela uprawnienia tylko do odczytu i wykonywania, a wszystkim innym nie dają dostępu. Ostatni wpis listy ACL w tym przykładzie przyznaje określonemu użytkownikowi o identyfikatorze obiektu "xxxxxxxx-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 element 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.

Zaktualizuj listy ACL

Gdy aktualizujesz listę ACL, modyfikujesz ją zamiast zastępować. 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ć ACL, utwórz nowy obiekt ACL z wpisem, który chcesz zaktualizować, a następnie użyj tego obiektu w operacji aktualizacji 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:

  • Zaktualizować listę ACL
  • Rekursywnie aktualizuj listy ACL

Zaktualizuj ACL

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

W tym przykładzie zaktualizowano wpis 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.

Aktualizuj listy ACL rekursywnie

Aktualizuj listy ACL rekurencyjnie używając polecenia az storage fs access update-recursive.

W tym przykładzie zaktualizowano wpis ACL, dodając uprawnienia 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.

Usuń wpisy ACL rekursyjnie

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

Usuń wpisy listy ACL za pomocą 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 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 zakończył się bez przerw z powodu błędów uprawnień, możesz to określić.

Aby upewnić się, że proces zakończył się bez zakłóceń, ustaw parametr --continue-on-failure na wartość true.

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 praktyk rekursywnego 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 czasu wykonywania, uruchom ponownie proces rekursyjnej listy ACL. Listy Kontroli Dostępu (ACL) można ponownie zastosować do elementów bez negatywnego efektu.

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

Jeśli wystąpi wyjątek kontroli dostępu podczas uruchamiania rekurencyjnego procesu ACL, zasada bezpieczeństwa w usłudze AD może nie mieć wystarczających uprawnień do zastosowania ACL do jednego lub więcej elementów podrzędnych 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ć rekurencyjny proces listy ACL. ACL-e można ponownie zastosować do elementów bez powodowania negatywnego wpływu.

Poświadczenia

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

Wydajność

Aby zmniejszyć opóźnienie, zalecamy uruchomienie cyklicznego procesu ACL w maszynie wirtualnej 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ż