Vytvoření SAS delegování uživatele pro kontejner nebo objekt blob pomocí Azure CLI

Sdílený přístupový podpis (SAS) umožňuje udělit omezený přístup ke kontejnerům a objektům blob ve vašem účtu úložiště. Při vytváření sdíleného přístupového podpisu zadáte jeho omezení, včetně toho, ke kterým prostředkům Azure Storage má klient povolený přístup, jaká oprávnění k těmto prostředkům má a jak dlouho je SAS platný.

Každý SAS je podepsaný klíčem. Sas můžete podepsat jedním ze dvou způsobů:

  • S klíčem vytvořeným pomocí přihlašovacích údajů Microsoft Entra. SAS podepsaný pomocí přihlašovacích údajů Microsoft Entra je SAS delegování uživatele. Klientovi, který vytvoří SAS delegování uživatele, musí být přiřazena role Azure RBAC, která zahrnuje akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Další informace najdete v tématu Vytvoření SAS delegování uživatele.
  • S klíčem účtu úložiště. Sas služby i SAS účtu jsou podepsané klíčem účtu úložiště. Klient, který vytvoří SAS služby, musí mít buď přímý přístup k klíči účtu, nebo musí mít přiřazené oprávnění Microsoft.Storage/storageAccounts/listkeys/action . Další informace najdete v tématu Vytvoření sdíleného přístupového podpisu služby nebo vytvoření sdíleného přístupového podpisu účtu.

Poznámka:

Sas delegování uživatele nabízí vynikající zabezpečení SAS podepsanému klíčem účtu úložiště. Microsoft doporučuje používat SAS delegování uživatele, pokud je to možné. Další informace najdete v tématu Udělení omezeného přístupu k datům pomocí sdílených přístupových podpisů (SAS).

Tento článek ukazuje, jak pomocí přihlašovacích údajů Microsoft Entra vytvořit SAS delegování uživatele pro kontejner nebo objekt blob pomocí Azure CLI.

Informace o SAS delegování uživatele

Token SAS pro přístup ke kontejneru nebo objektu blob může být zabezpečený pomocí přihlašovacích údajů Microsoft Entra nebo klíče účtu. Sas zabezpečený pomocí přihlašovacích údajů Microsoft Entra se nazývá SAS delegování uživatele, protože token OAuth 2.0 použitý k podepsání SAS se požaduje jménem uživatele.

Microsoft doporučuje používat přihlašovací údaje Microsoft Entra, pokud je to možné jako osvědčený postup zabezpečení, a ne používat klíč účtu, který může být snadněji ohrožen. Když návrh vaší aplikace vyžaduje sdílené přístupové podpisy, použijte přihlašovací údaje Microsoft Entra k vytvoření SAS delegování uživatele pro zajištění vyššího zabezpečení. Další informace o SAS delegování uživatele najdete v tématu Vytvoření SAS delegování uživatele.

Upozornění

Každý klient, který má platný SAS, má přístup k datům ve vašem účtu úložiště, jak to povoluje tento SAS. Je důležité chránit SAS před škodlivým nebo nezamýšleným použitím. Při distribuci sdíleného přístupového podpisu použijte vlastní uvážení a vytvořte plán pro odvolání ohroženého sdíleného přístupového podpisu.

Další informace o sdílených přístupových podpisech najdete v tématu Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů (SAS).

Instalace nejnovější verze Azure CLI

Pokud chcete pomocí Azure CLI zabezpečit SAS pomocí přihlašovacích údajů Microsoft Entra, nejprve se ujistěte, že máte nainstalovanou nejnovější verzi Azure CLI. Další informace o instalaci Azure CLI najdete v tématu Instalace Azure CLI.

Pokud chcete vytvořit SAS delegování uživatele pomocí Azure CLI, ujistěte se, že máte nainstalovanou verzi 2.0.78 nebo novější. Pokud chcete zkontrolovat nainstalovanou az --version verzi, použijte příkaz.

Přihlášení pomocí přihlašovacích údajů Microsoft Entra

Přihlaste se k Azure CLI pomocí svých přihlašovacích údajů Microsoft Entra. Další informace najdete v tématu Přihlášení pomocí Azure CLI.

Přiřazení oprávnění pomocí Azure RBAC

Pokud chcete vytvořit SAS delegování uživatele z Azure PowerShellu, musí mít účet Microsoft Entra použitý k přihlášení k Azure CLI přiřazenou roli, která zahrnuje akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Toto oprávnění umožňuje, aby si účet Microsoft Entra vyžádal klíč delegování uživatele. Klíč delegování uživatele slouží k podepsání SAS delegování uživatele. Role poskytující akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey musí být přiřazena na úrovni účtu úložiště, skupiny prostředků nebo předplatného.

Pokud nemáte dostatečná oprávnění k přiřazování rolí Azure k objektu zabezpečení Microsoft Entra, možná budete muset požádat vlastníka nebo správce účtu, aby přiřadil potřebná oprávnění.

Následující příklad přiřadí roli Přispěvatel dat objektu blob úložiště, která zahrnuje akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Role je vymezena na úrovni účtu úložiště.

Nezapomeňte nahradit zástupné hodnoty v hranatých závorkách vlastními hodnotami:

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Další informace o předdefinovaných rolích, které zahrnují akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey , najdete v tématu Předdefinované role Azure.

Zabezpečení SAS pomocí přihlašovacích údajů Microsoft Entra

Když vytvoříte SAS delegování uživatele pomocí Azure CLI, vytvoří se pro vás implicitně klíč delegování uživatele, který se použije k podepsání SAS. Čas zahájení a doba vypršení platnosti, kterou zadáte pro SAS, se také používají jako čas zahájení a vypršení platnosti klíče delegování uživatele.

Vzhledem k tomu, že maximální interval platnosti klíče delegování uživatele je 7 dnů od počátečního data, měli byste zadat dobu vypršení platnosti sas, která spadá do 7 dnů od času zahájení. Sas je neplatný po vypršení platnosti klíče delegování uživatele, takže sas s dobou vypršení platnosti delší než 7 dnů bude stále platný pouze po dobu 7 dnů.

Při vytváření sdíleného přístupového podpisu --auth-mode login delegování uživatele se vyžaduje a --as-user parameters vyžaduje se. Zadejte přihlašovací jméno pro --auth-mode parametr, aby požadavky provedené ve službě Azure Storage byly autorizované pomocí vašich přihlašovacích údajů Microsoft Entra. Zadejte parametr, --as-user který má označit, že vrácený SAS by měl být SAS delegování uživatele.

Vytvoření SAS delegování uživatele pro kontejner

Pokud chcete vytvořit SAS delegování uživatele pro kontejner pomocí Azure CLI, zavolejte příkaz az storage container generate-sas .

Mezi podporovaná oprávnění pro SAS delegování uživatele v kontejneru patří Přidání, Vytvoření, Odstranění, Seznam, Čtení a Zápis. Oprávnění lze zadat ingly nebo zkombinovat. Další informace o těchto oprávněních najdete v tématu Vytvoření SAS delegování uživatele.

Následující příklad vrátí token SAS delegování uživatele pro kontejner. Nezapomeňte nahradit zástupné hodnoty v závorkách vlastními hodnotami:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

Vrácený token SAS delegování uživatele bude podobný následujícímu:

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Poznámka:

Token SAS vrácený službou Blob Storage neobsahuje znak oddělovače (?) řetězce dotazu adresy URL. Pokud k adrese URL prostředku připojujete token SAS, nezapomeňte také připojit znak oddělovače.

Vytvoření SAS delegování uživatele pro objekt blob

Pokud chcete vytvořit SAS delegování uživatele pro objekt blob pomocí Azure CLI, zavolejte příkaz az storage blob generate-sas .

Mezi podporovaná oprávnění sas delegování uživatele v objektu blob patří přidání, vytvoření, odstranění, čtení a zápis. Oprávnění lze zadat ingly nebo zkombinovat. Další informace o těchto oprávněních najdete v tématu Vytvoření SAS delegování uživatele.

Následující syntaxe vrátí SAS delegování uživatele pro objekt blob. Příklad určuje --full-uri parametr, který vrátí identifikátor URI objektu blob s připojeným tokenem SAS. Nezapomeňte nahradit zástupné hodnoty v závorkách vlastními hodnotami:

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

Vrácený identifikátor URI SAS delegování uživatele bude podobný následujícímu:

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Poznámka:

Token SAS vrácený Azure CLI neobsahuje znak oddělovače (?) řetězce dotazu adresy URL. Pokud k adrese URL prostředku připojujete token SAS, nezapomeňte před připojením tokenu SAS k adrese URL prostředku připojit znak oddělovače.

SAS delegování uživatele nepodporuje definování oprávnění pomocí uložených zásad přístupu.

Odvolání sdíleného přístupového podpisu delegování uživatele

Pokud chcete odvolat SAS delegování uživatele z Azure CLI, zavolejte příkaz az storage account revoke-delegation-keys . Tento příkaz odvolá všechny klíče delegování uživatele přidružené k zadanému účtu úložiště. Všechny sdílené přístupové podpisy přidružené k těmto klíčům jsou neplatné.

Nezapomeňte nahradit zástupné hodnoty v hranatých závorkách vlastními hodnotami:

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

Důležité

Azure Storage ukládá klíč delegování uživatele i přiřazení rolí Azure do mezipaměti, takže mezi zahájením procesu odvolání a neplatným sas delegování uživatele může dojít ke zpoždění.

Další kroky