Använda Azure CLI för att hantera ACL:er i Azure Data Lake Storage Gen2

Den här artikeln visar hur du använder Azure CLI för att hämta, ange och uppdatera åtkomstkontrollistor med kataloger och filer.

ACL-arv är redan tillgängligt för nya underordnade objekt som skapas under en överordnad katalog. Men du kan också lägga till, uppdatera och ta bort ACL:er rekursivt på befintliga underordnade objekt i en överordnad katalog utan att behöva göra dessa ändringar individuellt för varje underordnat objekt.

Referensexempel | | Ge feedback

Förutsättningar

  • En Azure-prenumeration. Mer information finns i Hämta kostnadsfri utvärderingsversion av Azure.

  • Ett lagringskonto som har hierarkiskt namnområde aktiverat. Följ dessa instruktioner för att skapa en.

  • Azure CLI-version 2.14.0 eller senare.

  • En av följande säkerhetsbehörigheter:

    • Ett etablerat Säkerhetsobjekt för Microsoft Entra-ID som har tilldelats rollen Lagringsblobdataägare, begränsad till målcontainern, lagringskontot, den överordnade resursgruppen eller prenumerationen..

    • Ägande användare av målcontainern eller katalogen som du planerar att tillämpa ACL-inställningar på. Om du vill ange ACL:er rekursivt inkluderar detta alla underordnade objekt i målcontainern eller katalogen.

    • Lagringskontonyckel.

Kontrollera att du har rätt version av Azure CLI installerad

  1. Öppna Azure Cloud Shell, eller om du har installerat Azure CLI lokalt öppnar du ett kommandokonsolprogram som Windows PowerShell.

  2. Kontrollera att den version av Azure CLI som har installerats är 2.14.0 eller högre med hjälp av följande kommando.

     az --version
    

    Om din version av Azure CLI är lägre än 2.14.0installerar du en senare version. Mer information finns i Installera Azure CLI.

Anslut till kontot

  1. Om du använder Azure CLI lokalt kör du inloggningskommandot.

    az login
    

    Om CLI kan öppna din standardwebbläsare kommer den att göra det och läsa in en Azure-inloggningssida.

    Annars öppnar du en webbläsarsida på https://aka.ms/devicelogin och anger auktoriseringskoden som visas i terminalen. Logga sedan in med dina kontoautentiseringsuppgifter i webbläsaren.

    Mer information om olika autentiseringsmetoder finns i Auktorisera åtkomst till blob- eller ködata med Azure CLI.

  2. Om din identitet är associerad med mer än en prenumeration ställer du in din aktiva prenumeration på prenumerationen på det lagringskonto som ska vara värd för din statiska webbplats.

    az account set --subscription <subscription-id>
    

    <subscription-id> Ersätt platshållarvärdet med ID:t för din prenumeration.

Kommentar

Exemplet som visas i den här artikeln visar Microsoft Entra-auktorisering. Mer information om auktoriseringsmetoder finns i Auktorisera åtkomst till blob- eller ködata med Azure CLI.

Hämta ACL:er

Hämta ACL för en katalog med kommandot az storage fs access show.

Det här exemplet hämtar ACL:en för en katalog och skriver sedan ut ACL:en till konsolen.

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

Hämta åtkomstbehörigheterna för en fil med kommandot az storage fs access show .

Det här exemplet hämtar ACL:en för en fil och skriver sedan ut ACL:en till konsolen.

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

Följande bild visar utdata när du har hämtat ACL för en katalog.

Get ACL output

I det här exemplet har den ägande användaren läs-, skriv- och körningsbehörigheter. Ägande gruppen har endast läs- och körningsbehörigheter. Mer information om åtkomstkontrollistor finns i Åtkomstkontroll i Azure Data Lake Storage Gen2.

Ange ACL:er

När du anger en ACL ersätter du hela ACL:en inklusive alla dess poster. Om du vill ändra behörighetsnivån för ett säkerhetsobjekt eller lägga till ett nytt säkerhetsobjekt i ACL:n utan att påverka andra befintliga poster bör du uppdatera ACL:en i stället. Information om hur du uppdaterar en ACL i stället för att ersätta den finns i avsnittet Uppdatera ACL:er i den här artikeln.

Om du väljer att ange ACL måste du lägga till en post för den ägande användaren, en post för ägande gruppen och en post för alla andra användare. Mer information om den ägande användaren, ägande gruppen och alla andra användare finns i Användare och identiteter.

Det här avsnittet visar hur du:

  • Ange en ACL
  • Ange ACL:er rekursivt

Ange en ACL

Använd kommandot az storage fs access set för att ange ACL för en katalog.

Det här exemplet anger ACL på en katalog för den ägande användaren, ägande gruppen eller andra användare och skriver sedan ut ACL:en till konsolen.

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

Det här exemplet anger standard-ACL på en katalog för den ägande användaren, ägande gruppen eller andra användare och skriver sedan ut ACL:en till konsolen.

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

Använd kommandot az storage fs access set för att ange acl för en fil.

Det här exemplet anger ACL på en fil för den ägande användaren, ägande gruppen eller andra användare och skriver sedan ut ACL:en till konsolen.

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

Kommentar

Om du vill ange ACL för en viss grupp eller användare använder du deras respektive objekt-ID:n. Om du till exempel vill ange ACL för en grupp använder du group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Om du vill ange en användares ACL använder du user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Följande bild visar utdata när du har angett ACL för en fil.

Get ACL output 2

I det här exemplet har ägande användare och ägande grupp endast läs- och skrivbehörigheter. Alla andra användare har skriv- och körningsbehörigheter. Mer information om åtkomstkontrollistor finns i Åtkomstkontroll i Azure Data Lake Storage Gen2.

Ange ACL:er rekursivt

Ange ACL:er rekursivt med hjälp av kommandot az storage fs access set-rekursiv .

I det här exemplet anges ACL för en katalog med namnet my-parent-directory. Dessa poster ger den ägande användaren läs-, skriv- och körningsbehörighet, ger ägande gruppen endast läs- och körningsbehörigheter och ger alla andra ingen åtkomst. Den sista ACL-posten i det här exemplet ger en specifik användare med objekt-ID:t "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" läs- och körningsbehörigheter.

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

Kommentar

Om du vill ange en standardpost för ACL lägger du till prefixet default: för varje post. Exempel: default:user::rwx eller default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Uppdatera ACL:er

När du uppdaterar en ACL ändrar du ACL:en i stället för att ersätta ACL:en. Du kan till exempel lägga till ett nytt säkerhetsobjekt till ACL utan att påverka andra säkerhetsobjekt som anges i ACL: n. Om du vill ersätta ACL:en i stället för att uppdatera den läser du avsnittet Ange ACL:er i den här artikeln.

Om du vill uppdatera en ACL skapar du ett nytt ACL-objekt med den ACL-post som du vill uppdatera och använder sedan objektet i åtgärden uppdatera ACL. Hämta inte den befintliga ACL:en, ange bara ACL-poster som ska uppdateras.

Det här avsnittet visar hur du:

  • Uppdatera en ACL
  • Uppdatera ACL:er rekursivt

Uppdatera en ACL

Uppdatera ACL för en fil med hjälp av kommandot az storage fs access update-rekursiv .

I det här exemplet uppdateras en ACL-post med skrivbehörighet.

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

Om du vill uppdatera ACL för en viss grupp eller användare använder du deras respektive objekt-ID:n. Exempel: group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx eller user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Kommentar

Uppdatering av ACL för en enskild katalog utan att uppdatera ACL för underordnade objekt stöds inte av Azure CLI. Om du vill uppdatera ACL:en för en katalog utan att ändra ACL:er för alla underordnade objekt i katalogen använder du något av de andra verktygen och SDK:erna som stöds. Se Så här ställer du in ACL:er.

Uppdatera ACL:er rekursivt

Uppdatera ACL:er rekursivt med hjälp av kommandot az storage fs access update-rekursiv .

I det här exemplet uppdateras en ACL-post med skrivbehörighet.

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

Kommentar

Om du vill uppdatera en standardpost för ACL lägger du till prefixet default: i varje post. Till exempel default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Ta bort ACL-poster rekursivt

Du kan ta bort en eller flera ACL-poster rekursivt. Om du vill ta bort en ACL-post skapar du ett nytt ACL-objekt för ACL-posten som ska tas bort och använder sedan objektet i ta bort ACL-åtgärden. Hämta inte den befintliga ACL:en. Ange bara de ACL-poster som ska tas bort.

Ta bort ACL-poster med hjälp av kommandot az storage fs access remove-rekursiv .

Det här exemplet tar bort en ACL-post från containerns rotkatalog.

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

Kommentar

Om du vill ta bort en ACL-standardpost lägger du till prefixet default: i varje post. Till exempel default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Återställa från fel

Du kan stöta på körnings- eller behörighetsfel när du ändrar ACL:er rekursivt. Starta om processen från början för körningsfel. Behörighetsfel kan inträffa om säkerhetsobjektet inte har tillräcklig behörighet för att ändra ACL för en katalog eller fil som finns i kataloghierarkin som ändras. Åtgärda behörighetsproblemet och välj sedan att antingen återuppta processen från felpunkten med hjälp av en fortsättningstoken eller starta om processen från början. Du behöver inte använda fortsättningstoken om du föredrar att starta om från början. Du kan använda ACL-poster igen utan någon negativ inverkan.

I händelse av ett fel kan du returnera en fortsättningstoken genom att ange parametern --continue-on-failure till false. När du har åtgärdat felen kan du återuppta processen från felpunkten genom att köra kommandot igen och sedan ange parametern --continuation till fortsättningstoken.

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  

Om du vill att processen ska slutföras utan avbrott av behörighetsfel kan du ange det.

För att säkerställa att processen slutförs utan avbrott anger du parametern --continue-on-failure till 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  

Metodtips

Det här avsnittet innehåller några riktlinjer för bästa praxis för att ställa in ACL:er rekursivt.

Hantera körningsfel

Ett körningsfel kan inträffa av många orsaker (till exempel ett avbrott eller ett problem med klientanslutningen). Om du stöter på ett körningsfel startar du om den rekursiva ACL-processen. ACL:er kan tillämpas på objekt igen utan att orsaka en negativ inverkan.

Hantera behörighetsfel (403)

Om du stöter på ett undantag för åtkomstkontroll när du kör en rekursiv ACL-process kanske ditt AD-säkerhetsobjekt inte har tillräcklig behörighet för att tillämpa en ACL på ett eller flera av de underordnade objekten i kataloghierarkin. När ett behörighetsfel inträffar stoppas processen och en fortsättningstoken tillhandahålls. Åtgärda behörighetsproblemet och använd sedan fortsättningstoken för att bearbeta den återstående datauppsättningen. Katalogerna och filerna som redan har bearbetats behöver inte bearbetas igen. Du kan också välja att starta om den rekursiva ACL-processen. ACL:er kan tillämpas på objekt igen utan att orsaka en negativ inverkan.

Autentiseringsuppgifter

Vi rekommenderar att du etablerar ett Microsoft Entra-säkerhetsobjekt som har tilldelats rollen Storage Blob Data Owner i omfånget för mållagringskontot eller containern.

Prestanda

För att minska svarstiden rekommenderar vi att du kör den rekursiva ACL-processen på en virtuell Azure-dator (VM) som finns i samma region som ditt lagringskonto.

ACL-gränser

Det maximala antalet ACL:er som du kan använda för en katalog eller fil är 32 åtkomst-ACL:er och 32 standard-ACL:er. Mer information finns i Åtkomstkontroll i Azure Data Lake Storage Gen2.

Se även