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

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 PowerShellu.

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 modulu PowerShellu

Pokud chcete vytvořit SAS delegování uživatele pomocí PowerShellu, nainstalujte verzi 1.10.0 nebo novější modulu Az.Storage. Pokud chcete nainstalovat nejnovější verzi modulu, postupujte takto:

  1. Odinstalujte všechny předchozí instalace Azure PowerShellu:

    • Odeberte všechny předchozí instalace Azure PowerShellu z Windows pomocí nastavení Aplikace a funkce v části Nastavení.
    • Odeberte všechny moduly Azure z %Program Files%\WindowsPowerShell\Modulesmodulu .
  2. Ujistěte se, že máte nainstalovanou nejnovější verzi modulu PowerShellGet. Otevřete okno Windows PowerShellu a spuštěním následujícího příkazu nainstalujte nejnovější verzi:

    Install-Module PowerShellGet -Repository PSGallery -Force
    
  3. Po instalaci modulu PowerShellGet zavřete a znovu otevřete okno PowerShellu.

  4. Nainstalujte nejnovější verzi Azure PowerShellu:

    Install-Module Az -Repository PSGallery -AllowClobber
    
  5. Ujistěte se, že jste nainstalovali Azure PowerShell verze 3.2.0 nebo novější. Spuštěním následujícího příkazu nainstalujte nejnovější verzi modulu Azure Storage PowerShell:

    Install-Module -Name Az.Storage -Repository PSGallery -Force
    
  6. Zavřete a znovu otevřete okno PowerShellu.

Pokud chcete zkontrolovat, která verze modulu Az.Storage je nainstalovaná, spusťte následující příkaz:

Get-Module -ListAvailable -Name Az.Storage -Refresh

Další informace o instalaci Azure PowerShellu najdete v tématu Instalace Azure PowerShellu pomocí modulu PowerShellGet.

Přihlášení k Azure PowerShellu pomocí MICROSOFT Entra ID

Voláním příkazu Připojení-AzAccount se přihlaste pomocí účtu Microsoft Entra:

Connect-AzAccount

Další informace o přihlášení pomocí PowerShellu najdete v tématu Přihlášení pomocí Azure PowerShellu.

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 PowerShellu 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. Další informace o oprávněních Azure RBAC k vytvoření SAS delegování uživatele najdete v části Přiřazení oprávnění pomocí Azure RBAC v tématu Vytvoření SAS delegování uživatele.

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:

New-AzRoleAssignment -SignInName <email> `
    -RoleDefinitionName "Storage Blob Data Contributor" `
    -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 PowerShellu, 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ů.

Pokud chcete vytvořit SAS delegování uživatele pro kontejner nebo objekt blob pomocí Azure PowerShellu, nejprve vytvořte nový objekt kontextu služby Azure Storage a zadejte -UseConnectedAccount parametr. Parametr -UseConnectedAccount určuje, že příkaz vytvoří objekt kontextu pod účtem Microsoft Entra, pomocí kterého jste se přihlásili.

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

$ctx = New-AzStorageContext -StorageAccountName <storage-account> -UseConnectedAccount

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

Pokud chcete vrátit token SAS delegování uživatele pro kontejner, zavolejte příkaz New-AzStorageContainerSASToken a předejte objekt kontextu služby Azure Storage, který jste vytvořili dříve.

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:

New-AzStorageContainerSASToken -Context $ctx `
    -Name <container> `
    -Permission racwdl `
    -ExpiryTime <date-time>

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

?sv=2018-11-09&sr=c&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-05T22%3A24%3A36Z&ske=2019-08-07T07%3A
00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=rwdl

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

Pokud chcete vrátit token SAS delegování uživatele pro objekt blob, zavolejte příkaz New-AzStorageBlobSASToken a předejte objekt kontextu služby Azure Storage, který jste vytvořili dříve.

Následující syntaxe vrátí SAS delegování uživatele pro objekt blob. Příklad určuje -FullUri 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:

New-AzStorageBlobSASToken -Context $ctx `
    -Container <container> `
    -Blob <blob> `
    -Permission racwd `
    -ExpiryTime <date-time>
    -FullUri

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?sv=2018-11-09&sr=b&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-06T21%3A16%3A54Z&ske=2019-08-07T07%3A00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=racwd

Poznámka:

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 PowerShellu , zavolejte příkaz Revoke-AzStorageAccountUserDelegationKeys . 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:

Revoke-AzStorageAccountUserDelegationKeys -ResourceGroupName <resource-group> `
    -StorageAccountName <storage-account>

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