Błąd autoryzacji odmowy dostępu 403 po włączeniu bitu lepkiego w usłudze ADLS Gen2

Ten artykuł ułatwia zrozumienie lepkiego bitu i zawiera informacje o sposobie 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, a jednym ze sposobów na to jest użycie listy kontroli dostępu (ACL). Lista ACL to system kontroli dostępu podobny do POSIX z określonym ustawieniem nazywanym bitem lepkim, które może powodować błędy autoryzacji. Aby uzyskać więcej informacji na temat trybu kontroli uprawnień i bitu lepkiego, zobacz Listy kontroli dostępu (ACL) w Azure Data Lake Storage Gen2.

Bit lepki to zaawansowana funkcja, która nie jest konieczna 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 będącej właścicielem. Działa to podobnie do bitu lepkiego i jest łatwo skonfigurowane w Azure Portal.

Błąd autoryzacji odmowy dostępu 403

Rozpatrzmy następujący scenariusz:

  • Konto magazynu usługi ADLS Gen2 ma kontener o nazwie kontener i ścieżkę folderu o nazwie folder/folder podrzędny.
  • Lista ACL jest używana jako metoda autoryzacji.
  • W ustawieniu listy ACL konta magazynu usługi ADLS Gen2 skonfigurowano uprawnienie Execute (X) w katalogu głównym i folderze oraz z uprawnieniem Do zapisu i wykonywania (WX) w folderze podrzędnym.
  • Bit lepki jest włączony w folderze podrzędnym.
  • Próbujesz utworzyć lub przekazać nowy plik, na przykład test.txt, do ścieżki folderu konta magazynu usługi ADLS Gen2 kontener/folder/folder-podrzędny/.

W tym scenariuszu zostanie wyświetlony błąd 403 Odmowa dostępu autoryzacji.

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 lepkiego bitu powoduje, że nie jesteś właścicielem tej ścieżki folderu.

Określanie, 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 lepkiego bitu 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 zweryfikować ustawienie lepkiego bitu przy użyciu interfejsu wiersza polecenia platformy Azure, wykonaj następujące kroki:

  1. Zaloguj się do Azure Portal przy użyciu konta. Upewnij się, że to konto ma przypisanie roli Właściciela danych obiektu blob magazynu na koncie magazynu usługi ADLS Gen2.

  2. Wybierz pozycję Cloud Shell z Azure Portal.

    Zrzut ekranu przedstawiający przycisk Cloud Shell w Azure Portal.

  3. Użyj następującego polecenia, aby uzyskać listę ACL i ustawienie lepkiego bitu katalogu kontenera/folderu :

    az storage fs access show -p folder -f container --account-name account --auth-mode login
    

    Aby sprawdzić listę ACL i ustawienie lepkiego bitu katalogu głównego, czyli listę ACL na poziomie kontenera i ustawienie bitów lepkich, 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:

    Zrzut ekranu przedstawiający przykład danych wyjściowych polecenia.

    W treści JSON odpowiedzi skoncentruj się na permissions. Zwykle zawiera 9 lub 10 bitów z dodatkowym symbolem "+". Aby uzyskać więcej informacji na temat tych listów, zobacz Użytkownicy i tożsamości.

    Poprzedni przykład wskazuje, że wszystkie uprawnienia użytkownika są włączone, a bit lepki jest włączony. Aby uzyskać więcej informacji na temat odczytywania tej notacji uprawnień, zobacz 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" jest "x" z włączonym lepkim bitem, a "T" to "-" z włączonym lepkim bitem.

    "rwxrwxrwt" można wyjaśnić następującymi kwestiami:

    • 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.
    • Dla innych użytkowników jest włączone tylko uprawnienie języka r, a bit przyklejony jest włączony.

    Zgodnie z krótkimi formularzami uprawnień, krótkie uprawnienie formularza jest obliczane dla każdej grupy trzech liter ("r" jako 4, "w" jako 2 i "x "as 1). W związku z tym 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ć tylko 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łączanie/włączanie ustawienia lepkiego bitu

Aby wyłączyć/włączyć ustawienie lepkiego bitu, ustaw uprawnienia na oczekiwane wartości.

Konto platformy Azure używane do modyfikowania tego ustawienia musi mieć rolę Właściciela danych obiektu blob magazynu na docelowym koncie magazynu usługi ADLS Gen2. Istnieje wiele możliwych sposobów modyfikowania ustawienia lepkiego bitu. Oto obsługiwane zestawy SDK:

SDK Obsługiwana wersja Więcej informacji
REST API Wersje interfejsu API 2019-12-12 i nowsze Ścieżka
Moduł Az programu PowerShell 5.6.0 i nowsze wersje Zarządzanie listami ACL w Azure Data Lake Storage Gen2 przy użyciu programu PowerShell
Interfejs wiersza polecenia platformy Azure 2.38.0 i nowsze wersje Zarządzanie listami ACL w Azure Data Lake Storage Gen2 przy użyciu interfejsu wiersza polecenia platformy Azure
Zestaw .NET SDK Wersje 12.14.0 i nowsze Zarządzanie listami ACL w Azure Data Lake Storage Gen2 przy użyciu platformy .NET
Java SDK 12.11.0 i nowsze wersje Zarządzanie listami ACL w Azure Data Lake Storage Gen2 przy użyciu języka Java
Python SDK 12.8.0 i nowsze wersje Zarządzanie listami ACL w Azure Data Lake Storage Gen2 przy użyciu języka Python
JavaScript SDK 12.11.0-beta.1 i nowsze wersje Zarządzanie listami ACL w Azure Data Lake Storage Gen2 przy użyciu zestawu SDK języka JavaScript w Node.js
Interfejs wiersza polecenia systemu plików HDFS 3.3.3 i nowsze wersje Korzystanie z interfejsu wiersza polecenia systemu plików HDFS z Data Lake Storage Gen2 i apache Hadoop 3.3.3 — przewodnik po uprawnieniach systemu plików HDFS

Oto przykład wyłączenia/włączenia ustawienia lepkiego bitu za pomocą interfejsu wiersza polecenia platformy Azure.

  1. Zaloguj się do Azure Portal przy użyciu konta z przypisaniem roli Właściciel danych obiektu blob magazynu na docelowym koncie magazynu usługi ADLS Gen2.

  2. Wybierz pozycję Cloud Shell z Azure Portal.

    Zrzut ekranu przedstawiający przycisk Cloud Shell w Azure Portal.

  3. Aby ustawić listę ACL i ustawienie lepkiego bitu katalogu kontenera/folderu na uprawnienia "rwxrwxrwt" i włączyć bit lepki, 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 bitów lepkich, użyj następującego polecenia:

    az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
    

    Polecenie {permission notation} w poprzednim poleceniu może akceptować 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:

    Zrzut ekranu przedstawiający przykładowe dane wyjściowe polecenia.

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 platformy Azure.