Azure CLI gebruiken om ACL's te beheren in Azure Data Lake Storage Gen2

In dit artikel leest u hoe u de Azure CLI gebruikt om de toegangsbeheerlijsten van mappen en bestanden op te halen, in te stellen en bij te werken.

Overname van ACL is al beschikbaar voor nieuwe onderliggende items die zijn gemaakt onder een bovenliggende map. U kunt echter ook ACL's recursief toevoegen, bijwerken en verwijderen op de bestaande onderliggende items van een bovenliggende map zonder dat u deze wijzigingen afzonderlijk hoeft aan te brengen voor elk onderliggend item.

Referentievoorbeelden | | feedback geven

Vereisten

  • Een Azure-abonnement. Zie Gratis proefversie van Azure downloaden voor meer informatie.

  • Een opslagaccount waarvoor hiërarchische naamruimte is ingeschakeld. Volg deze instructies om er een te maken.

  • Azure CLI-versie 2.14.0 of hoger.

  • Een van de volgende beveiligingsmachtigingen:

    • Een ingerichte Microsoft Entra ID-beveiligingsprincipaal waaraan de rol Eigenaar van opslagblobgegevensis toegewezen, die is gericht op de doelcontainer, het opslagaccount, de bovenliggende resourcegroep of het abonnement.

    • De gebruiker die eigenaar is van de doelcontainer of map waarop u ACL-instellingen wilt toepassen. Als u ACL's recursief wilt instellen, omvat dit alle onderliggende items in de doelcontainer of map.

    • Sleutel van opslagaccount.

Zorg ervoor dat u de juiste versie van Azure CLI hebt geïnstalleerd

  1. Open De Azure Cloud Shell of open een opdrachtconsoletoepassing zoals Windows PowerShell als u de Azure CLI lokaal hebt geïnstalleerd .

  2. Controleer of de versie van Azure CLI die is geïnstalleerd, is 2.14.0 of hoger met behulp van de volgende opdracht.

     az --version
    

    Als uw versie van Azure CLI lager is dan 2.14.0, installeert u een latere versie. Zie De Azure CLI installeren voor meer informatie.

Verbinding maken naar het account

  1. Als u Azure CLI lokaal gebruikt, voert u de aanmeldingsopdracht uit.

    az login
    

    Als de CLI uw standaardbrowser kan openen, gebeurt dat ook en wordt er een Azure-aanmeldingspagina geladen.

    Als dat niet het geval is, opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in de terminal. Meld u vervolgens aan met uw accountreferenties in de browser.

    Zie Toegang tot blob- of wachtrijgegevens autoriseren met Azure CLI voor meer informatie over verschillende verificatiemethoden.

  2. Als uw identiteit is gekoppeld aan meer dan één abonnement, stelt u uw actieve abonnement in op het abonnement van het opslagaccount dat als host fungeert voor uw statische website.

    az account set --subscription <subscription-id>
    

    Vervang de waarde van de <subscription-id> tijdelijke aanduiding door de id van uw abonnement.

Notitie

In het voorbeeld in dit artikel wordt Microsoft Entra-autorisatie weergegeven. Zie Toegang tot blob- of wachtrijgegevens autoriseren met Azure CLI voor meer informatie over autorisatiemethoden.

ACL's ophalen

Haal de ACL van een map op met behulp van de opdracht az storage fs access show .

In dit voorbeeld wordt de ACL van een map opgehaald en wordt de ACL vervolgens naar de console afgedrukt.

az storage fs access show -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

Haal de toegangsmachtigingen van een bestand op met behulp van de opdracht az storage fs access show .

In dit voorbeeld wordt de ACL van een bestand opgehaald en wordt de ACL vervolgens naar de console afgedrukt.

az storage fs access show -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

In de volgende afbeelding ziet u de uitvoer nadat u de ACL van een map hebt opgehaald.

Get ACL output

In dit voorbeeld heeft de gebruiker die eigenaar is, lees-, schrijf- en uitvoermachtigingen. De groep die eigenaar is, heeft alleen lees- en uitvoermachtigingen. Zie Toegangsbeheer in Azure Data Lake Storage Gen2 voor meer informatie over toegangsbeheerlijsten.

ACL's instellen

Wanneer u een ACL instelt, vervangt u de volledige ACL, inclusief alle vermeldingen. Als u het machtigingsniveau van een beveiligingsprincipaal wilt wijzigen of een nieuwe beveiligingsprincipaal wilt toevoegen aan de ACL zonder dat dit van invloed is op andere bestaande vermeldingen, moet u in plaats daarvan de ACL bijwerken . Als u een ACL wilt bijwerken in plaats van deze te vervangen, raadpleegt u de sectie ACL's bijwerken van dit artikel.

Als u ervoor kiest om de ACL in te stellen , moet u een vermelding toevoegen voor de gebruiker die eigenaar is, een vermelding voor de groep die eigenaar is en een vermelding voor alle andere gebruikers. Zie Gebruikers en identiteiten voor meer informatie over de gebruiker die eigenaar is, de groep die eigenaar is en alle andere gebruikers.

In deze sectie ziet u hoe u het volgende kunt doen:

  • Een ACL instellen
  • ACL's recursief instellen

Een ACL instellen

Gebruik de opdracht az storage fs access set om de ACL van een map in te stellen.

In dit voorbeeld wordt de ACL ingesteld op een map voor de eigenaar van de gebruiker, de groep die eigenaar is of andere gebruikers, en drukt de ACL vervolgens af op de console.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

In dit voorbeeld wordt de standaard-ACL ingesteld op een map voor de gebruiker die eigenaar is van de groep of andere gebruikers en drukt de ACL vervolgens af op de console.

az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-file-system --account-name mystorageaccount --auth-mode login

Gebruik de opdracht az storage fs access set om de acl van een bestand in te stellen.

In dit voorbeeld wordt de ACL ingesteld op een bestand voor de eigenaar van de gebruiker, de groep die eigenaar is of andere gebruikers, en drukt de ACL vervolgens af op de console.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-file-system --account-name mystorageaccount --auth-mode login

Notitie

Als u de ACL van een specifieke groep of gebruiker wilt instellen, gebruikt u de betreffende object-id's. Als u bijvoorbeeld de ACL van een groep wilt instellen, gebruikt u group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Als u de ACL van een gebruiker wilt instellen, gebruikt u user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

In de volgende afbeelding ziet u de uitvoer na het instellen van de ACL van een bestand.

Get ACL output 2

In dit voorbeeld heeft de groep die eigenaar is alleen lees- en schrijfmachtigingen. Alle andere gebruikers hebben schrijf- en uitvoermachtigingen. Zie Toegangsbeheer in Azure Data Lake Storage Gen2 voor meer informatie over toegangsbeheerlijsten.

ACL's recursief instellen

Stel ACL's recursief in met behulp van de opdracht az storage fs access set-recursive .

In dit voorbeeld wordt de ACL van een map met de naam my-parent-directoryingesteld. Deze vermeldingen geven de gebruiker lees-, schrijf- en uitvoermachtigingen, geeft de groep die eigenaar is alleen lees- en uitvoermachtigingen en geeft alle anderen geen toegang. De laatste ACL-vermelding in dit voorbeeld geeft een specifieke gebruiker met de object-id 'xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx' lees- en uitvoermachtigingen.

az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Notitie

Als u een standaard-ACL-vermelding wilt instellen, voegt u het voorvoegsel default: toe aan elke vermelding. Bijvoorbeeld default:user::rwx of default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

ACL's bijwerken

Wanneer u een ACL bijwerkt , wijzigt u de ACL in plaats van de ACL te vervangen. U kunt bijvoorbeeld een nieuwe beveiligingsprincipaal toevoegen aan de ACL zonder dat dit van invloed is op andere beveiligingsprinciplen die worden vermeld in de ACL. Als u de ACL wilt vervangen in plaats van deze bij te werken, raadpleegt u de sectie ACL's instellen van dit artikel.

Als u een ACL wilt bijwerken, maakt u een nieuw ACL-object met de ACL-vermelding die u wilt bijwerken en gebruikt u dat object in de update-ACL-bewerking. Haal de bestaande ACL niet op, geef alleen ACL-vermeldingen op die moeten worden bijgewerkt.

In deze sectie ziet u hoe u het volgende kunt doen:

  • Een ACL bijwerken
  • ACL's recursief bijwerken

Een ACL bijwerken

Werk de ACL van een bestand bij met behulp van de opdracht az storage fs access update-recursive .

In dit voorbeeld wordt een ACL-vermelding bijgewerkt met schrijfmachtigingen.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login

Als u de ACL van een specifieke groep of gebruiker wilt bijwerken, gebruikt u de betreffende object-id's. Bijvoorbeeld group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx of user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Notitie

Het bijwerken van de ACL van één map zonder de ACL van onderliggende items bij te werken, wordt niet ondersteund door de Azure CLI. Als u de ACL van een map wilt bijwerken zonder de ACL's van alle onderliggende items in die map te wijzigen, gebruikt u een van de andere ondersteunde hulpprogramma's en SDK's. Zie ACL's instellen.

ACL's recursief bijwerken

Werk ACL's recursief bij met behulp van de opdracht az storage fs access update-recursive .

In dit voorbeeld wordt een ACL-vermelding bijgewerkt met schrijfmachtigingen.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Notitie

Als u een standaard-ACL-vermelding wilt bijwerken, voegt u het voorvoegsel default: toe aan elke vermelding. Bijvoorbeeld default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

ACL-vermeldingen recursief verwijderen

U kunt een of meer ACL-vermeldingen recursief verwijderen. Als u een ACL-vermelding wilt verwijderen, maakt u een nieuw ACL-object voor de ACL-vermelding die moet worden verwijderd en gebruikt u dat object in de bewerking ACL verwijderen. Haal de bestaande ACL niet op, geef alleen de ACL-vermeldingen op die moeten worden verwijderd.

Verwijder ACL-vermeldingen met behulp van de opdracht az storage fs access remove-recursive .

In dit voorbeeld wordt een ACL-vermelding verwijderd uit de hoofdmap van de container.

az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Notitie

Als u een standaard-ACL-vermelding wilt verwijderen, voegt u het voorvoegsel default: toe aan elke vermelding. Bijvoorbeeld default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Herstellen na fouten

Er kunnen runtime- of machtigingsfouten optreden bij het recursief wijzigen van ACL's. Voor runtimefouten start u het proces opnieuw vanaf het begin. Machtigingsfouten kunnen optreden als de beveiligingsprincipaal niet over voldoende machtigingen beschikt om de ACL te wijzigen van een map of bestand dat zich in de maphiërarchie bevindt die wordt gewijzigd. Los het machtigingsprobleem op en kies er vervolgens voor om het proces te hervatten vanaf het punt van de fout met behulp van een vervolgtoken of start het proces opnieuw vanaf het begin. U hoeft het vervolgtoken niet te gebruiken als u liever opnieuw wilt opstarten vanaf het begin. U kunt ACL-vermeldingen opnieuw gebruiken zonder negatieve gevolgen.

In het geval van een fout kunt u een vervolgtoken retourneren door de --continue-on-failure parameter in te stellen op false. Nadat u de fouten hebt opgelost, kunt u het proces hervatten vanaf het foutpunt door de opdracht opnieuw uit te voeren en vervolgens de --continuation parameter in te stellen op het vervolgtoken.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Als u wilt dat het proces ononderbroken wordt voltooid door machtigingsfouten, kunt u dat opgeven.

Als u ervoor wilt zorgen dat het proces ononderbroken wordt voltooid, stelt u de --continue-on-failure parameter in op true.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Aanbevolen procedures

In deze sectie vindt u enkele aanbevolen richtlijnen voor het recursief instellen van ACL's.

Runtimefouten afhandelen

Een runtimefout kan om verschillende redenen optreden (bijvoorbeeld een storing of een probleem met de clientconnectiviteit). Als er een runtimefout optreedt, start u het recursieve ACL-proces opnieuw. ACL's kunnen opnieuw worden toegepast op items zonder een negatieve impact te veroorzaken.

Machtigingsfouten afhandelen (403)

Als er een uitzondering voor toegangsbeheer optreedt tijdens het uitvoeren van een recursief ACL-proces, beschikt uw AD-beveiligingsprincipaal mogelijk niet over voldoende machtigingen om een ACL toe te passen op een of meer onderliggende items in de adreslijsthiërarchie. Wanneer er een machtigingsfout optreedt, stopt het proces en wordt er een vervolgtoken opgegeven. Los het machtigingsprobleem op en gebruik vervolgens het vervolgtoken om de resterende gegevensset te verwerken. De mappen en bestanden die al zijn verwerkt, hoeven niet opnieuw te worden verwerkt. U kunt er ook voor kiezen om het recursieve ACL-proces opnieuw te starten. ACL's kunnen opnieuw worden toegepast op items zonder een negatieve impact te veroorzaken.

Referenties

U wordt aangeraden een Microsoft Entra-beveiligingsprincipaal in te richten waaraan de rol Eigenaar van opslagblobgegevens is toegewezen in het bereik van het doelopslagaccount of de doelcontainer.

Prestaties

Als u de latentie wilt verminderen, raden we u aan het recursieve ACL-proces uit te voeren op een virtuele Azure-machine (VM) die zich in dezelfde regio bevindt als uw opslagaccount.

ACL-limieten

Het maximum aantal ACL's dat u kunt toepassen op een map of bestand, is 32 toegangs-ACL's en 32 standaard-ACL's. Zie Toegangsbeheer in Azure Data Lake Storage Gen2 voor meer informatie.

Zie ook