Azure CLI gebruiken om ACL's te beheren in Azure Data Lake Storage
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.
ACL-overname is al beschikbaar voor nieuwe onderliggende items die onder een bovenliggende map zijn gemaakt. 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 opslagblobgegevens is 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.
Zorg ervoor dat u de juiste versie van Azure CLI hebt geïnstalleerd
Open De Azure Cloud Shell of open een opdrachtconsoletoepassing zoals Windows PowerShell als u de Azure CLI lokaal hebt geïnstalleerd .
Controleer of de versie van Azure CLI die u hebt 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 met het account
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.
Als uw identiteit is gekoppeld aan meer dan één abonnement en u niet wordt gevraagd het abonnement te selecteren, stelt u uw actieve abonnement in op het abonnement van het opslagaccount waarop u wilt werken. Vervang in dit voorbeeld de waarde van de
<subscription-id>
tijdelijke aanduiding door de id van uw abonnement.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.
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 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.
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 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-directory
ingesteld. 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.
Referentie
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.