Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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.0interfejsu 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
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.
Sprawdź, czy zainstalowana wersja interfejsu wiersza polecenia platformy Azure jest
2.14.0lub nowsza, używając następującego polecenia.az --versionJeś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
Jeśli używasz interfejsu wiersza polecenia platformy Azure lokalnie, uruchom polecenie logowania.
az loginJeś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.
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.
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.
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.