403 Toegang geweigerd autorisatiefout wanneer de plak-bit is ingeschakeld in ADLS Gen2
Dit artikel helpt u inzicht te krijgen in de plak-bit en biedt informatie over het controleren van deze instelling wanneer u deze configureert in Azure Data Lake Storage (ADLS) Gen2 en problemen krijgt.
Wat is de plak-bit in ADLS Gen2?
ADLS Gen2-gebruikers moeten vaak machtigingen voor verschillende gebruikers beheren, en een manier om dit te doen is door een toegangsbeheerlijst (ACL) te gebruiken. ACL is een POSIX-achtig toegangsbeheersysteem met een specifieke instelling genaamd de plak-bit die autorisatiefouten kan veroorzaken. Zie Toegangsbeheerlijsten (ACL's) in Azure Data Lake Storage Gen2 voor meer informatie over de modus voor machtigingsbeheer en de plak-bit.
De plak-bit is een geavanceerde functie die niet nodig is in de ACL-instelling van het ADLS Gen2-opslagaccount. In plaats daarvan kunt u de maskerfunctie gebruiken om de maximummachtigingen voor benoemde gebruikers, benoemde groepen en de groep die eigenaar is te beperken. Dit werkt op dezelfde manier als de plak-bit en is eenvoudig geconfigureerd in Azure Portal.
Fout bij 403-toegang geweigerde autorisatie
Bekijk het volgende scenario:
- Een ADLS Gen2-opslagaccount heeft een container met de naam container en een mappad met de naam map/onderliggende map.
- U gebruikt ACL als autorisatiemethode.
- In de ACL-instelling van het ADLS Gen2-opslagaccount bent u geconfigureerd met de machtiging Uitvoeren (X) voor de hoofdmap en map en met de machtiging Schrijven en Uitvoeren (WX) voor onderliggende map.
- De plak-bit is ingeschakeld voor de onderliggende map.
- U probeert een nieuw bestand te maken of te uploaden, bijvoorbeeld test.txt, naar de mappad van het ADLS Gen2-opslagaccount,container/map/onderliggende map/.
In dit scenario krijgt u de fout 403 Toegang geweigerd.
Deze fout treedt om twee redenen op:
- U beschikt niet over voldoende machtigingen om toegang te krijgen tot het mappad.
- U hebt voldoende machtigingen, maar als u de plak-bit inschakelt, bent u niet de eigenaar van dit mappad.
Vaststellen of de plak-bit een 403-fout 403-toegang geweigerd veroorzaakt
Controleer de ACL-instelling van de map en de bovenliggende mappen en vergelijk deze vervolgens met de algemene scenario's met betrekking tot ACL-machtigingen. Als de machtigingen voldoende zijn, kan de 403-fout worden veroorzaakt door de plak-bit.
De sticky-bitinstelling controleren met behulp van Azure CLI
Er zijn veel manieren om deze instelling te controleren, zoals een REST API-aanroep, PowerShell-opdracht en Azure CLI. We raden de Azure CLI-optie aan omdat hiervoor geen extra software hoeft te worden geïnstalleerd en de opdracht gemakkelijk te begrijpen is.
Voer de volgende stappen uit om de plak-bitinstelling te controleren met behulp van Azure CLI:
Meld u aan bij Azure Portal met uw account. Zorg ervoor dat dit account de rol eigenaar van opslagblobgegevens heeft voor het ADLS Gen2-opslagaccount.
Selecteer Cloud Shell in Azure Portal.
Gebruik de volgende opdracht om de ACL en de plak-bits instelling van de map container/map op te halen:
az storage fs access show -p folder -f container --account-name account --auth-mode login
Gebruik de volgende opdracht om de ACL en de plak-bitsinstelling van de hoofdmap te controleren. Dit is de ACL op containerniveau en de instelling voor plakbits:
az storage fs access show -p / -f container --account-name account --auth-mode login
Hier volgt een voorbeelduitvoer:
Richt u in de hoofdtekst van de antwoord-JSON op
permissions
. Het bevat normaal gesproken 9 of 10 bits met een extra '+'-symbool. Zie Gebruikers en identiteiten voor meer informatie over deze brieven.In het vorige voorbeeld wordt aangegeven dat alle gebruikersmachtigingen zijn ingeschakeld en dat de plak-bit is ingeschakeld. Zie Notatie van traditionele Unix-machtigingen voor meer informatie over het lezen van deze machtigings notatie.
De negende letter heeft vier mogelijke waarden: "-", "x", "t" en "T". Als de waarde van deze letter 't' of 'T' is, betekent dit dat de plak-bit is ingeschakeld. De 't' is 'x' met de plak-bit ingeschakeld en 'T' is '-' met de plak-bit ingeschakeld.
"rwxrwxrwt" kan worden uitgelegd door het volgende:
- r-, w- en x-machtigingen zijn ingeschakeld voor de eigenaar.
- r-, w- en x-machtigingen zijn ingeschakeld voor de groep Eigenaar.
- r-, w- en x-machtigingen zijn ingeschakeld voor andere gebruikers en de plak-bit is ingeschakeld.
Om het beter te begrijpen, volgt hier een ander voorbeeld voor 'rwxr-xr-T':
- r-, w- en x-machtigingen zijn ingeschakeld voor de eigenaar.
- r- en x-machtigingen zijn ingeschakeld voor de groep Eigenaar.
- Alleen r-machtigingen zijn ingeschakeld voor andere gebruikers en de plak-bit is ingeschakeld.
Volgens Korte formulieren voor machtigingen wordt een korte formuliermachtiging berekend voor elke groep van drie letters ('r' als 4, 'w' als 2 en 'x 'als 1'). "rw-rwx--x" is dus gelijk aan 4+2+0, 4+2+1, 0+0+1, 671. Op basis van deze berekeningsregel hoeft u alleen de vierde letter aan het begin toe te voegen. Als de plak-bit is ingeschakeld, stelt u deze in op 1. Als de plak-bit is uitgeschakeld, stelt u deze in op 0.
Hieronder volgen een aantal voorbeelden:
- rwxrwxrwt => 1777
- rwxr-xr-T => 1754
- rw-rwx--x => 0671
De instelling voor plakbit uitschakelen/inschakelen
Als u de instelling voor plakbits wilt uitschakelen of inschakelen, stelt u machtigingen in op verwachte waarden.
Het Azure-account dat wordt gebruikt om deze instelling te wijzigen, moet de rol Eigenaar van opslagblobgegevens hebben voor het adls Gen2-doelopslagaccount. Er zijn veel mogelijke manieren om de plak-bitinstelling te wijzigen. Dit zijn de ondersteunde SDK's:
SDK | Ondersteunde versie | Meer informatie |
---|---|---|
REST-API | API-versies 2019-12-12 en hoger | Pad |
Az-module PowerShell | 5.6.0 en latere versies | PowerShell gebruiken om ACL's te beheren in Azure Data Lake Storage Gen2 |
Azure-CLI | 2.38.0 en nieuwere versies | Azure CLI gebruiken om ACL's te beheren in Azure Data Lake Storage Gen2 |
.NET SDK | 12.14.0 en latere versies | .NET gebruiken om ACL's te beheren in Azure Data Lake Storage Gen2 |
Java-SDK | 12.11.0 en latere versies | Java gebruiken om ACL's te beheren in Azure Data Lake Storage Gen2 |
Python SDK | 12.8.0 en latere versies | Python gebruiken om ACL's te beheren in Azure Data Lake Storage Gen2 |
JavaScript SDK | 12.11.0-beta.1 en latere versies | JavaScript SDK gebruiken in Node.js voor het beheren van ACL's in Azure Data Lake Storage Gen2 |
HDFS CLI | 3.3.3 en latere versies | De HDFS CLI gebruiken met Data Lake Storage Gen2 en Apache Hadoop 3.3.3 – HANDLEIDING voor HDFS-machtigingen |
Hier volgt een voorbeeld van het uitschakelen/inschakelen van de plak-bitinstelling met Azure CLI.
Meld u aan bij Azure Portal met uw account met de roltoewijzing Opslagblobgegevenseigenaar in het doel-ADLS Gen2-opslagaccount.
Selecteer Cloud Shell in Azure Portal.
Gebruik de volgende opdracht om de ACL en de plak-bitsinstelling van de map container/map in te stellen op de machtigingen rwxrwxrwt en om de plak-bit in te schakelen:
az storage fs access set --permissions rwxrwxrwt -p folder -f container --account-name account --auth-mode login
Gebruik de volgende opdracht om de instelling van de hoofdmap, de ACL op containerniveau en de plak-bitsinstelling, te wijzigen:
az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
De
{permission notation}
vorige opdracht kan zowel lange als korte notaties accepteren. Dit betekent dat de volgende opdracht ook is gekwalificeerd:az storage fs access set --permissions 1776 -p folder -f container --account-name account --auth-mode login
Hier volgt een voorbeeld van uitvoer:
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.