Autorisierungsfehler 403 „Zugriff verweigert“, während das Sticky-Bit in ADLS Gen2 aktiviert ist
Dieser Artikel hilft Ihnen, das sticky Bit zu verstehen und Enthält Informationen dazu, wie Sie diese Einstellung überprüfen können, wenn Sie sie in Azure Data Lake Storage (ADLS) Gen2 konfigurieren und Probleme erhalten.
Was ist das sticky Bit in ADLS Gen2?
ADLS Gen2-Benutzer müssen häufig Berechtigungen für verschiedene Benutzer verwalten, und eine Möglichkeit hierfür ist die Verwendung einer Zugriffssteuerungsliste (Access Control List, ACL). ACL ist ein POSIX-ähnliches Zugriffssteuerungssystem mit einer bestimmten Einstellung namens "Sticky Bit", die Autorisierungsfehler verursachen kann. Weitere Informationen zum Berechtigungssteuerungsmodus und zum Sticky-Bit finden Sie unter Zugriffssteuerungslisten (ACLs) in Azure Data Lake Storage Gen2.
Das Sticky-Bit ist ein erweitertes Feature, das in der ACL-Einstellung des ADLS Gen2-Speicherkontos nicht erforderlich ist. Stattdessen können Sie das Maskenfeature verwenden, um die maximalen Berechtigungen für benannte Benutzer, benannte Gruppen und die eigene Gruppe einzuschränken. Dies funktioniert ähnlich wie das klebige Bit und ist einfach im Azure-Portal konfiguriert.
403 Zugriff verweigert Autorisierungsfehler
Nehmen Sie das folgende Szenario als Beispiel:
- Ein ADLS Gen2-Speicherkonto verfügt über einen Container namens "Container " und einen Ordnerpfad namens "Ordner/untergeordneter Ordner".
- Sie verwenden ACL als Autorisierungsmethode.
- In der ACL-Einstellung des ADLS Gen2-Speicherkontos sind Sie mit der Ausführungsberechtigung (X) für das Stammverzeichnis und den Ordner sowie mit der Berechtigung "Write and Execute( WX)" für untergeordnete Ordner konfiguriert.
- Das Sticky-Bit ist im untergeordneten Ordner aktiviert.
- Sie versuchen, eine neue Datei zu erstellen oder hochzuladen, z. B. test.txt, in den ORDNERpfad "ADLS Gen2 Storage Account" container /folder/child-folder/.
In diesem Szenario erhalten Sie einen Autorisierungsfehler von 403 Zugriff verweigert.
Dieser Fehler tritt aus zwei Gründen auf:
- Sie verfügen nicht über ausreichende Berechtigungen für den Zugriff auf den Ordnerpfad.
- Sie verfügen über genügend Berechtigungen, aber das Aktivieren des Sticky-Bits führt dazu, dass Sie nicht der Besitzer dieses Ordnerpfads sind.
Ermitteln, ob das sticky Bit einen Fehler "403 Zugriff verweigert" verursacht
Überprüfen Sie die ACL-Einstellung des Ordners und der übergeordneten Ordner, und vergleichen Sie sie dann mit den allgemeinen Szenarien im Zusammenhang mit ACL-Berechtigungen. Wenn die Berechtigungen ausreichen, kann der Fehler 403 durch das sticky Bit verursacht werden.
Überprüfen der Sticky-Bit-Einstellung mithilfe der Azure CLI
Es gibt viele Möglichkeiten, diese Einstellung zu überprüfen, z. B. einen REST-API-Aufruf, PowerShell-Befehl und Azure CLI. Wir empfehlen die Azure CLI-Option, da keine zusätzliche Software installiert werden muss, und der Befehl ist leicht verständlich.
Führen Sie die folgenden Schritte aus, um die Sticky Bit-Einstellung mithilfe der Azure CLI zu überprüfen:
Melden Sie sich mit Ihrem Konto bei der Azure-Portal an. Stellen Sie sicher, dass dieses Konto über die Rollenzuweisung "Storage Blob Data Owner" für das ADLS Gen2-Speicherkonto verfügt.
Wählen Sie Cloud Shell im Azure-Portal aus.
Verwenden Sie den folgenden Befehl, um die ACL und die Sticky-Bit-Einstellung des Container-/Ordnerverzeichnisses abzurufen:
az storage fs access show -p folder -f container --account-name account --auth-mode login
Verwenden Sie den folgenden Befehl, um die ACL- und die Sticky-Bit-Einstellung des Stammverzeichnisses zu überprüfen, bei dem es sich um die ACL-Containerebene und die Sticky Bit-Einstellung handelt:
az storage fs access show -p / -f container --account-name account --auth-mode login
Hier ist eine Beispielausgabe:
Konzentrieren Sie sich im JSON-Textkörper der Antwort auf
permissions
. Es enthält normalerweise 9 oder 10 Bit mit einem zusätzlichen "+"-Symbol. Weitere Informationen zu diesen Buchstaben finden Sie unter "Benutzer und Identitäten".Im vorherigen Beispiel wird angegeben, dass alle Benutzerberechtigungen aktiviert sind und das Sticky-Bit aktiviert ist. Weitere Informationen zum Lesen dieser Berechtigungsnotation finden Sie unter Notation herkömmlicher Unix-Berechtigungen.
Der neunte Buchstabe hat vier mögliche Werte: "-", "x", "t" und "T". Wenn der Wert dieses Buchstabens "t" oder "T" lautet, bedeutet dies, dass das Sticky-Bit aktiviert ist. Das "t" ist "x" mit aktivierter Sticky-Bit, und "T" ist "-" mit aktivierter Sticky-Bit.
"rwxrwxrwt" kann wie folgt erläutert werden:
- r,w und x-Berechtigungen sind für den Besitzer aktiviert.
- r,w und x-Berechtigungen sind für die Besitzergruppe aktiviert.
- r,w- und x-Berechtigungen sind für andere Benutzer aktiviert, und das Sticky-Bit ist aktiviert.
Um es besser zu verstehen, finden Sie hier ein weiteres Beispiel für "rwxr-xr-T":
- r,w und x-Berechtigungen sind für den Besitzer aktiviert.
- r- und x-Berechtigungen sind für die Besitzergruppe aktiviert.
- Nur r-Berechtigung ist für andere Benutzer aktiviert, und das Sticky-Bit ist aktiviert.
Laut Kurzformularen für Berechtigungen wird für jede Gruppe von drei Buchstaben ("r" als 4, "w" als 2 und "x " als 1) berechnet. "rw-rwx--x" ist also gleich 4+2+0, 4+2+1, 0+0+1, 671. Basierend auf dieser Berechnungsregel müssen Sie nur den vierten Buchstaben am Anfang hinzufügen. Wenn das Sticky-Bit aktiviert ist, legen Sie es als 1 fest. Wenn das sticky Bit deaktiviert ist, legen Sie es als 0 fest.
Im Folgenden finden Sie einige Beispiele:
- rwxrwxrwt => 1777
- rwxr-xr-T => 1754
- rw-rwx--x => 0671
Deaktivieren/Aktivieren der Sticky-Bit-Einstellung
Um die Sticky-Bit-Einstellung zu deaktivieren/zu aktivieren, legen Sie Berechtigungen auf erwartete Werte fest.
Das Azure-Konto, das zum Ändern dieser Einstellung verwendet wird, muss die Rolle "Storage Blob Data Owner" für das ADLS Gen2-Speicherkonto aufweisen. Es gibt viele Möglichkeiten, die Sticky Bit-Einstellung zu ändern. Hier sind die unterstützten SDKs:
Hier ist ein Beispiel zum Deaktivieren/Aktivieren der Sticky-Bit-Einstellung mit Azure CLI.
Melden Sie sich bei der Azure-Portal mit Ihrem Konto an, das über die Rollenzuweisung "Storage Blob Data Owner" für das ADLS Gen2-Speicherkonto verfügt.
Wählen Sie Cloud Shell im Azure-Portal aus.
Um die ACL- und die Sticky-Bit-Einstellung des Container-/Ordnerverzeichnisses auf die Berechtigungen "rwxrwxrwt" festzulegen und das Sticky-Bit zu aktivieren, verwenden Sie den folgenden Befehl:
az storage fs access set --permissions rwxrwxrwt -p folder -f container --account-name account --auth-mode login
Verwenden Sie den folgenden Befehl, um die Einstellung des Stammverzeichnisses zu ändern, bei dem es sich um die ACL-Containerebene und die Sticky-Bit-Einstellung handelt:
az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
Der
{permission notation}
im vorherigen Befehl enthaltene Befehl kann sowohl lange als auch kurzformatige Notationen akzeptieren. Dies bedeutet, dass der folgende Befehl auch qualifiziert ist:az storage fs access set --permissions 1776 -p folder -f container --account-name account --auth-mode login
Hier ist eine Beispielausgabe:
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.