Delen via


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:

  1. 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.

  2. Selecteer Cloud Shell in Azure Portal.

    Schermopname van de knop Cloud Shell in Azure Portal.

  3. 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:

    Schermopname van het voorbeeld van de opdrachtuitvoer.

    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.

  1. Meld u aan bij Azure Portal met uw account met de roltoewijzing Opslagblobgegevenseigenaar in het doel-ADLS Gen2-opslagaccount.

  2. Selecteer Cloud Shell in Azure Portal.

    Schermopname van de knop Cloud Shell in Azure Portal.

  3. 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:

    Schermopname van het voorbeeld van de opdrachtuitvoer.

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.