Błąd autoryzacji odmowy dostępu 403, gdy bit sticky jest włączony w usłudze ADLS Gen2
Ten artykuł pomaga zrozumieć lepki bit i zawiera informacje na temat sposobu sprawdzania tego ustawienia podczas konfigurowania go w usłudze Azure Data Lake Storage (ADLS) Gen2 i uzyskiwania problemów.
Jaki jest lepki bit w usłudze ADLS Gen2?
Użytkownicy usługi ADLS Gen2 często muszą zarządzać uprawnieniami dla różnych użytkowników. Jednym ze sposobów jest użycie listy kontroli dostępu (ACL). Lista ACL to system kontroli dostępu przypominający poSIX z określonym ustawieniem nazywanym lepkim bitem, który może powodować błędy autoryzacji. Aby uzyskać więcej informacji na temat trybu sterowania uprawnieniami i bitu sticky, zobacz Listy kontroli dostępu (ACL) w usłudze Azure Data Lake Storage Gen2.
Bit sticky jest zaawansowaną funkcją, która nie jest niezbędna w ustawieniu listy ACL konta magazynu usługi ADLS Gen2. Zamiast tego można użyć funkcji maski, aby ograniczyć maksymalne uprawnienia dla nazwanych użytkowników, nazwanych grup i grupy właścicieli. Działa to podobnie do bitu sticky i jest łatwo konfigurowane w witrynie Azure Portal.
Błąd autoryzacji odmowy dostępu 403
Rozważmy następujący scenariusz:
- Konto magazynu usługi ADLS Gen2 ma kontener o nazwie container i ścieżkę folderu o nazwie folder/child-folder.
- Lista ACL jest używana jako metoda autoryzacji.
- W ustawieniu listy ACL konta magazynu usługi ADLS Gen2 skonfigurowano uprawnienie Wykonaj (X) w katalogu głównym i folderze oraz uprawnienie Zapis i wykonywanie (WX) w folderze podrzędnym.
- Bit sticky jest włączony w folderze podrzędnym.
- Spróbuj utworzyć lub przekazać nowy plik, na przykład test.txt, do kontenera /folderu konta magazynu usługi ADLS Gen2/folderu/folderu podrzędnego/.
W tym scenariuszu zostanie wyświetlony błąd autoryzacji odmowy dostępu 403.
Ten błąd występuje z dwóch powodów:
- Nie masz wystarczających uprawnień, aby uzyskać dostęp do ścieżki folderu.
- Masz wystarczające uprawnienia, ale włączenie bitu sticky powoduje, że nie jesteś właścicielem tej ścieżki folderu.
Określenie, czy bit lepki powoduje błąd odmowy dostępu 403
Sprawdź ustawienie listy ACL folderu i folderów nadrzędnych, a następnie porównaj je z typowymi scenariuszami związanymi z uprawnieniami listy ACL. Jeśli uprawnienia są wystarczające, błąd 403 może być spowodowany przez lepki bit.
Weryfikowanie ustawienia sticky bit przy użyciu interfejsu wiersza polecenia platformy Azure
Istnieje wiele sposobów sprawdzania tego ustawienia, takich jak wywołanie interfejsu API REST, polecenie programu PowerShell i interfejs wiersza polecenia platformy Azure. Zalecamy opcję interfejsu wiersza polecenia platformy Azure, ponieważ nie wymaga zainstalowania dodatkowego oprogramowania, a polecenie jest łatwe do zrozumienia.
Aby sprawdzić ustawienie sticky bit przy użyciu interfejsu wiersza polecenia platformy Azure, wykonaj następujące kroki:
Zaloguj się do witryny Azure Portal przy użyciu konta. Upewnij się, że to konto ma przypisanie roli Właściciel danych obiektu blob usługi Storage na koncie magazynu usługi ADLS Gen2.
Wybierz pozycję Cloud Shell w witrynie Azure Portal.
Użyj następującego polecenia, aby pobrać listę ACL i ustawienie bitu sticky bit katalogu kontenera/folderu :
az storage fs access show -p folder -f container --account-name account --auth-mode login
Aby sprawdzić listę ACL i ustawienie bitu sticky bit katalogu głównego, które jest listą ACL na poziomie kontenera i ustawieniem bitu sticky, użyj następującego polecenia:
az storage fs access show -p / -f container --account-name account --auth-mode login
Oto przykładowe dane wyjściowe:
W treści JSON odpowiedzi skoncentruj się na .
permissions
Zwykle zawiera 9 lub 10 bitów z dodatkowym symbolem "+". Aby uzyskać więcej informacji o tych listach, zobacz Użytkownicy i tożsamości.Poprzedni przykład wskazuje, że wszystkie uprawnienia użytkownika są włączone, a bit sticky jest włączony. Aby uzyskać więcej informacji na temat sposobu odczytywania tej notacji uprawnień, zobacz Notation of traditional Unix permissions (Notacja tradycyjnych uprawnień systemu Unix).
Dziewiąta litera ma cztery możliwe wartości: "-", "x", "t" i "T". Jeśli wartość tej litery to "t" lub "T", oznacza to, że bit lepki jest włączony. "t" to "x" z włączonym lepkim bitem, a "T" jest "-" z włączonym lepkim bitem.
"rwxrwxrwt" można wyjaśnić, wykonując następujące czynności:
- Uprawnienia r,w i x są włączone dla właściciela.
- Uprawnienia r,w i x są włączone dla grupy Właściciel.
- Uprawnienia r,w i x są włączone dla innych użytkowników, a bit lepki jest włączony.
Aby lepiej to zrozumieć, oto kolejny przykład "rwxr-xr-T":
- Uprawnienia r,w i x są włączone dla właściciela.
- Uprawnienia r i x są włączone dla grupy Właściciel.
- Tylko uprawnienie języka r jest włączone dla innych użytkowników, a bit lepki jest włączony.
Zgodnie z krótkimi formularzami dla uprawnień, uprawnienia krótkiego formularza są obliczane dla każdej grupy trzech liter ("r" jako 4, "w" jako 2, i "x "as 1). Tak więc wartość "rw-rwx--x" będzie równa 4+2+0, 4+2+1, 0+0+1, 671. Na podstawie tej reguły obliczania wystarczy dodać czwartą literę na początku. Jeśli bit lepki jest włączony, ustaw go jako 1. Jeśli bit lepki jest wyłączony, ustaw go jako 0.
Oto kilka przykładów:
- rwxrwxrwt => 1777
- rwxr-xr-T => 1754
- rw-rwx--x => 0671
Wyłącz/Włącz ustawienie sticky bit
Aby wyłączyć/włączyć ustawienie bitu sticky, ustaw uprawnienia na oczekiwane wartości.
Konto platformy Azure używane do modyfikowania tego ustawienia musi mieć rolę Właściciela danych obiektu blob usługi Storage na docelowym koncie magazynu usługi ADLS Gen2. Istnieje wiele możliwych sposobów modyfikowania ustawienia sticky bit. Oto obsługiwane zestawy SDK:
Oto przykład wyłączania/włączania ustawienia sticky bit za pomocą interfejsu wiersza polecenia platformy Azure.
Zaloguj się do witryny Azure Portal przy użyciu konta z przypisaniem roli Właściciel danych obiektu blob usługi Storage na docelowym koncie magazynu usługi ADLS Gen2.
Wybierz pozycję Cloud Shell w witrynie Azure Portal.
Aby ustawić listę ACL i ustawienie sticky bit katalogu container/folder na uprawnienia "rwxrwxrwt" i włączyć sticky bit, użyj następującego polecenia:
az storage fs access set --permissions rwxrwxrwt -p folder -f container --account-name account --auth-mode login
Aby zmodyfikować ustawienie katalogu głównego, który jest listą ACL na poziomie kontenera i ustawieniem bitu sticky, użyj następującego polecenia:
az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
W
{permission notation}
poprzednim poleceniu można zaakceptować zarówno długie, jak i krótkie notacje. Oznacza to, że następujące polecenie jest również kwalifikowane:az storage fs access set --permissions 1776 -p folder -f container --account-name account --auth-mode login
Oto przykładowe dane wyjściowe:
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.