Použití Azure CLI ke správě seznamů ACL ve službě Azure Data Lake Storage Gen2

V tomto článku se dozvíte, jak pomocí Azure CLI získat, nastavit a aktualizovat seznamy řízení přístupu adresářů a souborů.

Dědičnost seznamu ACL je již k dispozici pro nové podřízené položky vytvořené v nadřazené adresáři. Seznamy ACL ale můžete přidávat, aktualizovat a odebírat rekurzivně u existujících podřízených položek nadřazeného adresáře, aniž byste museli provádět tyto změny jednotlivě pro každou podřízenou položku.

Referenční | ukázky | poskytují zpětnou vazbu

Předpoklady

  • Předplatné Azure. Další informace najdete v tématu Získání bezplatné zkušební verze Azure.

  • Účet úložiště s povoleným hierarchickým oborem názvů. Postupujte podle těchto pokynů a vytvořte ho.

  • Verze 2.14.0 Azure CLI nebo vyšší.

  • Jedno z následujících oprávnění zabezpečení:

    • Zřízený objekt zabezpečení Microsoft Entra ID, který má přiřazenou roli Vlastník dat objektu blob služby Storage, vymezený cílový kontejner, účet úložiště, nadřazená skupina prostředků nebo předplatné.

    • Vlastníkem cílového kontejneru nebo adresáře, u kterého plánujete použít nastavení seznamu ACL. Pokud chcete seznamy ACL nastavit rekurzivně, zahrnuje to všechny podřízené položky v cílovém kontejneru nebo adresáři.

    • Klíč účtu úložiště.

Ujistěte se, že máte nainstalovanou správnou verzi Azure CLI.

  1. Otevřete Azure Cloud Shell nebo pokud jste azure CLI nainstalovali místně, otevřete konzolovou aplikaci příkazové konzoly, jako je Windows PowerShell.

  2. Pomocí následujícího příkazu ověřte, jestli je 2.14.0 nainstalovaná verze Azure CLI nebo vyšší.

     az --version
    

    Pokud je vaše verze Azure CLI nižší než 2.14.0, nainstalujte si novější verzi. Další informace najdete v tématu Instalace Azure CLI.

Připojení k účtu

  1. Pokud používáte Azure CLI místně, spusťte příkaz login.

    az login
    

    Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.

    V opačném případě otevřete stránku https://aka.ms/devicelogin prohlížeče a zadejte autorizační kód zobrazený v terminálu. Pak se přihlaste pomocí přihlašovacích údajů k účtu v prohlížeči.

    Další informace o různých metodách ověřování najdete v tématu Autorizace přístupu k datům objektů blob nebo front pomocí Azure CLI.

  2. Pokud je vaše identita přidružená k více než jednomu předplatnému, nastavte aktivní předplatné na předplatné účtu úložiště, které bude hostovat váš statický web.

    az account set --subscription <subscription-id>
    

    <subscription-id> Nahraďte zástupnou hodnotu ID vašeho předplatného.

Poznámka:

Příklad uvedený v tomto článku ukazuje autorizaci Microsoft Entra. Další informace o autorizačních metodách najdete v tématu Autorizace přístupu k datům objektů blob nebo front pomocí Azure CLI.

Získání seznamů ACL

Pomocí příkazu az storage fs access show získejte seznam ACL adresáře.

Tento příklad získá seznam ACL adresáře a potom vypíše seznam ACL do konzoly.

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

Pomocí příkazu az storage fs access show získejte přístupová oprávnění k souboru.

Tento příklad získá seznam ACL souboru a potom vytiskne seznam ACL do konzoly.

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

Následující obrázek ukazuje výstup po získání seznamu ACL adresáře.

Get ACL output

V tomto příkladu má vlastnící uživatel oprávnění ke čtení, zápisu a provádění. Vlastnící skupina má oprávnění jen ke čtení a spouštění. Další informace o seznamech řízení přístupu najdete v tématu Řízení přístupu v Azure Data Lake Storage Gen2.

Nastavení seznamů ACL

Když nastavíte seznam ACL, nahradítecelý seznam ACL včetně všech položek. Pokud chcete změnit úroveň oprávnění objektu zabezpečení nebo přidat nový objekt zabezpečení do seznamu ACL, aniž by to ovlivnilo jiné existující položky, měli byste místo toho aktualizovat seznam ACL. Pokud chcete místo nahrazení aktualizovat seznam ACL, přečtěte si část Aktualizace seznamů ACL tohoto článku.

Pokud se rozhodnete nastavit seznam ACL, musíte přidat položku pro vlastnícího uživatele, položku pro vlastnící skupinu a položku pro všechny ostatní uživatele. Další informace o vlastnícího uživatele, vlastnící skupině a všech ostatních uživatelích najdete v tématu Uživatelé a identity.

V této části se dozvíte, jak:

  • Nastavení seznamu ACL
  • Rekurzivní nastavení seznamů ACL

Nastavení seznamu ACL

Pomocí příkazu az storage fs access set nastavte seznam ACL adresáře.

Tento příklad nastaví seznam ACL v adresáři pro vlastnícího uživatele, vlastnící skupinu nebo jiné uživatele a potom vytiskne seznam ACL do konzoly.

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

Tento příklad nastaví výchozí seznam ACL v adresáři pro vlastnícího uživatele, vlastnící skupinu nebo jiné uživatele a pak vytiskne seznam ACL do konzoly.

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

K nastavení seznamu acl souboru použijte příkaz az storage fs access set.

Tento příklad nastaví seznam ACL v souboru pro vlastnícího uživatele, vlastnící skupinu nebo jiné uživatele a potom vytiskne seznam ACL do konzoly.

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

Poznámka:

K nastavení seznamu ACL konkrétní skupiny nebo uživatele použijte odpovídající ID objektů. Chcete-li například nastavit seznam ACL skupiny, použijte group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Chcete-li nastavit seznam ACL uživatele, použijte user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Následující obrázek znázorňuje výstup po nastavení seznamu ACL souboru.

Get ACL output 2

V tomto příkladu má vlastnící uživatel a vlastnící skupina oprávnění jen pro čtení a zápis. Všichni ostatní uživatelé mají oprávnění k zápisu a spuštění. Další informace o seznamech řízení přístupu najdete v tématu Řízení přístupu v Azure Data Lake Storage Gen2.

Rekurzivní nastavení seznamů ACL

Seznamy ACL nastavte rekurzivně pomocí příkazu az storage fs access set-recursive .

Tento příklad nastaví seznam ACL adresáře s názvem my-parent-directory. Tyto položky poskytují vlastnícího uživatele oprávnění ke čtení, zápisu a spouštění, dává vlastnící skupině oprávnění jen pro čtení a spouštění a dává všem ostatním přístup. Poslední položka seznamu ACL v tomto příkladu poskytuje konkrétnímu uživateli s ID objektu xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx oprávnění ke čtení a spuštění.

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

Poznámka:

Pokud chcete nastavit výchozí položku seznamu ACL, přidejte předponu default: ke každé položce. Například default:user::rwx nebo default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Aktualizace seznamů ACL

Při aktualizaci seznamu ACL upravíte seznam ACL místo nahrazení seznamu ACL. Můžete například přidat nový objekt zabezpečení do seznamu ACL, aniž by to ovlivnilo jiné objekty zabezpečení uvedené v seznamu ACL. Pokud chcete seznam ACL nahradit místo aktualizace, přečtěte si část Nastavení seznamů ACL tohoto článku.

Chcete-li aktualizovat seznam ACL, vytvořte nový objekt ACL s položkou seznamu ACL, kterou chcete aktualizovat, a pak tento objekt použijte v operaci aktualizace seznamu ACL. Nezískáte stávající seznam ACL, stačí zadat položky seznamu ACL, které se mají aktualizovat.

V této části se dozvíte, jak:

  • Aktualizace seznamu ACL
  • Rekurzivní aktualizace seznamů ACL

Aktualizace seznamu ACL

Aktualizujte seznam ACL souboru pomocí příkazu az storage fs access update-recursive .

Tento příklad aktualizuje položku seznamu ACL oprávněním k zápisu.

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

Pokud chcete aktualizovat seznam ACL konkrétní skupiny nebo uživatele, použijte příslušná ID objektů. Například group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx nebo user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Poznámka:

Azure CLI nepodporuje aktualizaci seznamu ACL jednoho adresáře bez aktualizace seznamu ACL podřízených položek. Chcete-li aktualizovat seznam ACL adresáře beze změny seznamů ACL všech podřízených položek v daném adresáři, použijte některý z dalších podporovaných nástrojů a sad SDK. Podívejte se, jak nastavit seznamy ACL.

Rekurzivní aktualizace seznamů ACL

Aktualizujte seznamy ACL rekurzivně pomocí příkazu az storage fs access update-recursive .

Tento příklad aktualizuje položku seznamu ACL oprávněním k zápisu.

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

Poznámka:

Pokud chcete aktualizovat výchozí položku seznamu ACL, přidejte předponu default: ke každé položce. Například, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Rekurzivní odebrání položek seznamu ACL

Jednu nebo více položek seznamu ACL můžete rekurzivně odebrat. Pokud chcete odebrat položku seznamu ACL, vytvořte nový objekt ACL pro položku seznamu ACL, který se má odebrat, a pak tento objekt použijte v operaci odebrání seznamu ACL. Stávající seznam ACL nezískáte, stačí zadat položky seznamu ACL, které se mají odebrat.

Odeberte položky seznamu ACL pomocí příkazu az storage fs access remove-recursive .

Tento příklad odebere položku seznamu ACL z kořenového adresáře kontejneru.

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

Poznámka:

Pokud chcete odebrat výchozí položku seznamu ACL, přidejte předponu default: ke každé položce. Například, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Zotavení po selháních

Při rekurzivní úpravě seznamů ACL může dojít k chybám modulu runtime nebo oprávnění. V případě chyb za běhu restartujte proces od začátku. K chybám oprávnění může dojít v případě, že objekt zabezpečení nemá dostatečná oprávnění k úpravě seznamu ACL adresáře nebo souboru, který je v hierarchii adresářů, který se upravuje. Vyřešte problém s oprávněním a pak se rozhodnete proces obnovit z bodu selhání pomocí tokenu pokračování nebo ho restartovat od začátku. Pokud chcete restartovat od začátku, nemusíte token pokračování používat. Položky seznamu ACL můžete znovu použít bez negativního dopadu.

V případě selhání můžete vrátit token pokračování nastavením parametru --continue-on-failure na falsehodnotu . Po vyřešení chyb můžete proces obnovit z bodu selhání opětovným spuštěním příkazu a následným nastavením --continuation parametru na token pokračování.

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  

Pokud chcete, aby proces dokončil nepřerušený podle chyb oprávnění, můžete to zadat.

Chcete-li zajistit, aby proces byl dokončen bez přerušení, nastavte --continue-on-failure parametr na 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  

Osvědčené postupy

Tato část obsahuje některé pokyny pro osvědčené postupy pro nastavení seznamů ACL rekurzivně.

Zpracování chyb za běhu

K chybě za běhu může dojít z mnoha důvodů (například kvůli výpadku nebo problému s připojením klienta). Pokud dojde k chybě za běhu, restartujte rekurzivní proces seznamu ACL. Seznamy ACL je možné znovu použít u položek, aniž by to způsobilo negativní dopad.

Zpracování chyb oprávnění (403)

Pokud při spuštění rekurzivního procesu seznamu ACL dojde k výjimce řízení přístupu, nemusí mít instanční objekt zabezpečení AD dostatečná oprávnění k použití seznamu ACL pro jednu nebo více podřízených položek v hierarchii adresářů. Pokud dojde k chybě oprávnění, proces se zastaví a poskytne se token pro pokračování. Opravte problém s oprávněním a pak pomocí tokenu pro pokračování zpracujte zbývající datovou sadu. Adresáře a soubory, které už byly úspěšně zpracovány, se nebudou muset znovu zpracovat. Můžete také zvolit restartování rekurzivního procesu seznamu ACL. Seznamy ACL je možné znovu použít u položek, aniž by to způsobilo negativní dopad.

Přihlašovací údaje

Doporučujeme zřídit objekt zabezpečení Microsoft Entra, který má přiřazenou roli Vlastník dat objektů blob služby Storage v oboru cílového účtu úložiště nebo kontejneru.

Výkon

Pokud chcete snížit latenci, doporučujeme spustit rekurzivní proces seznamu ACL ve virtuálním počítači Azure, který se nachází ve stejné oblasti jako váš účet úložiště.

Omezení seznamu ACL

Maximální počet seznamů ACL, které můžete použít pro adresář nebo soubor, je 32 přístupových seznamů ACL a 32 výchozích seznamů ACL. Další informace najdete v tématu Řízení přístupu ve službě Azure Data Lake Storage Gen2.

Viz také