Správa klíčů účtu úložiště pomocí služby Key Vault a Azure CLI (starší verze)

Důležité

Klíče účtu spravovaného úložiště služby Key Vault (starší verze) se podporují, protože se neplánují žádné další aktualizace. U definic podepsaných službou úložiště podepsané službou úložiště jsou podporovány pouze SAS SAS verze 2018-03-28.

Důležité

Podpora klíčů spravovaného účtu úložiště v Azure CLI byla odebrána ve verzi 2.54. Pro příkazy v tomto kurzu musíte použít Azure CLI verze 2.53.1 nebo dřívější .

Důležité

Doporučujeme používat integraci azure Storage s Microsoft Entra ID, cloudovou službou pro správu identit a přístupu od Microsoftu. Integrace Microsoft Entra je k dispozici pro objekty blob, fronty a tabulky Azure a poskytuje přístup založený na tokenech OAuth2 ke službě Azure Storage (stejně jako Azure Key Vault). Microsoft Entra ID umožňuje ověřovat klientskou aplikaci pomocí aplikace nebo identity uživatele místo přihlašovacích údajů účtu úložiště. Spravovanou identitu Microsoft Entra můžete použít při spuštění v Azure. Spravované identity odstraňují potřebu ověřování klientů a ukládání přihlašovacích údajů do nebo ve vaší aplikaci. Následující řešení použijte pouze v případech, kdy ověřování Microsoft Entra není možné.

Účet úložiště Azure používá přihlašovací údaje, které tvoří název účtu a klíč. Klíč se automaticky vygeneruje a slouží jako heslo, nikoli jako kryptografický klíč. Key Vault spravuje klíče účtu úložiště tím, že je pravidelně znovu vygeneruje v účtu úložiště a poskytuje tokeny sdíleného přístupového podpisu pro delegovaný přístup k prostředkům ve vašem účtu úložiště.

Pomocí funkce klíče účtu úložiště spravované službou Key Vault můžete vypsat (synchronizovat) klíče s účtem úložiště Azure a klíče pravidelně znovu vygenerovat (otočit). Klíče můžete spravovat pro účty úložiště i účty úložiště Classic.

Pokud používáte funkci klíče spravovaného účtu úložiště, zvažte následující body:

  • Hodnoty klíče se nikdy nevracejí v reakci na volajícího.
  • Klíče účtu úložiště by měly spravovat jenom služba Key Vault. Nespravujte klíče sami a nezasahujte do procesů služby Key Vault.
  • Klíče účtu úložiště by měl spravovat jenom jeden objekt služby Key Vault. Nepovolujte správu klíčů z více objektů.
  • Znovu vygenerujte klíče pouze pomocí služby Key Vault. Klíče účtu úložiště nevygenerujte ručně.

Důležité

Opětovné vygenerování klíče přímo v účtu úložiště přeruší nastavení spravovaného účtu úložiště a může zneplatnit používané tokeny SAS a způsobit výpadek.

ID aplikace instančního objektu

Tenant Microsoft Entra poskytuje každou zaregistrovanou aplikaci instančnímu objektu. Instanční objekt slouží jako ID aplikace, které se používá při nastavování autorizace pro přístup k jiným prostředkům Azure prostřednictvím řízení přístupu na základě role v Azure (Azure RBAC).

Key Vault je aplikace Microsoftu, která je předem zaregistrovaná ve všech tenantech Microsoft Entra. Key Vault je zaregistrovaný pod stejným ID aplikace v každém cloudu Azure.

Tenanti Cloud ID aplikace
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Veřejný Azure cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Jiný důvod Všechny cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Požadavky

K dokončení této příručky musíte nejprve provést následující kroky:

Správa klíčů účtu úložiště

Připojení k účtu Azure

K ověření relace Azure CLI použijte příkazy az login .

az login

Udělení přístupu ke službě Key Vault k vašemu účtu úložiště

Pomocí příkazu az role assignment create v Azure CLI dejte key Vaultu přístup k vašemu účtu úložiště. Zadejte následující hodnoty parametrů:

  • --role: Předejte roli Azure Operátor klíče účtu úložiště. Tato role omezuje obor přístupu k vašemu účtu úložiště. V případě klasického účtu úložiště předejte místo toho roli operátora klíčů účtu úložiště Classic.
  • --assignee: Předejte hodnotu ;https://vault.azure.net", což je adresa URL služby Key Vault ve veřejném cloudu Azure. (V případě cloudu Azure Government místo toho použijte --assigne-object-id. ID aplikace instančního objektu.)
  • --scope: Předejte ID prostředku účtu úložiště, které je ve formuláři /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Pomocí příkazu az account list v Azure CLI najděte ID předplatného. Pomocí příkazu az storage account list najděte název účtu úložiště a skupinu prostředků účtu úložiště.
az role assignment create --role "Storage Account Key Operator Service Role" --assignee "https://vault.azure.net" --scope "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Udělení oprávnění ke spravovanému účtu úložiště

Pomocí rutiny Azure CLI az keyvault-set-policy aktualizujte zásady přístupu ke službě Key Vault a udělte účtu úložiště oprávnění k vašemu uživatelskému účtu.

# Give your user principal access to all storage account permissions, on your Key Vault instance

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --storage-permissions get list delete set update regeneratekey getsas listsas deletesas setsas recover backup restore purge

Oprávnění k účtům úložiště nejsou dostupná na stránce Zásady přístupu k účtu úložiště na webu Azure Portal.

Vytvoření účtu spravovaného úložiště služby Key Vault

Pomocí příkazu Azure CLI az keyvault storage vytvořte účet spravovaného úložiště služby Key Vault. Nastavte období regenerace 30 dnů. Když je čas otočit, KeyVault znovu vygeneruje klíč, který není aktivní, a pak nastaví nově vytvořený klíč jako aktivní. K vydávání tokenů SAS se používá pouze jeden z těchto klíčů. Toto je aktivní klíč. Zadejte následující hodnoty parametrů:

  • --vault-name: Předejte název trezoru klíčů. Pokud chcete najít název trezoru klíčů, použijte příkaz Azure CLI az keyvault list .
  • -n: Předejte název účtu úložiště. Pokud chcete najít název účtu úložiště, použijte příkaz Azure CLI az storage account list .
  • --resource-id: Předejte ID prostředku účtu úložiště, které je ve formuláři /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Pomocí příkazu az account list v Azure CLI najděte ID předplatného. Pomocí příkazu az storage account list najděte název účtu úložiště a skupinu prostředků účtu úložiště.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P30D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Tokeny sdíleného přístupového podpisu

Můžete také požádat službu Key Vault, aby vygenerovala tokeny sdíleného přístupového podpisu. Sdílený přístupový podpis poskytuje delegovaný přístup k prostředkům ve vašem účtu úložiště. Klientům můžete udělit přístup k prostředkům ve vašem účtu úložiště bez sdílení klíčů účtu. Sdílený přístupový podpis poskytuje bezpečný způsob sdílení prostředků úložiště bez ohrožení klíčů účtu.

Příkazy v této části provádějí následující akce:

  • Nastavte definici <YourSASDefinitionName>sdíleného přístupového podpisu účtu . Definice je nastavená na spravovaném účtu <YourStorageAccountName> úložiště služby Key Vault ve vašem trezoru <YourKeyVaultName>klíčů .
  • Nastavte v trezoru definici sdíleného přístupového podpisu spravovaného úložiště služby Key Vault. Definice obsahuje identifikátor URI šablony tokenu sdíleného přístupového podpisu, který byl vytvořen. Definice má typ account sdíleného přístupového podpisu a je platný po dobu N dnů.
  • Ověřte, že sdílený přístupový podpis byl uložen v trezoru klíčů jako tajný klíč.

Definování šablony definice sdíleného přístupového podpisu

Key Vault používá šablonu definice SAS k vygenerování tokenů pro klientské aplikace.

Příklad šablony definice SAS:

"sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

Šablona definice SAS bude předána parametru --template-uri v dalším kroku.

Parametry SAS účtu vyžadované v šabloně definice SAS pro Key Vault

Parametr dotazu SAS Popis
SignedVersion (sv) Požadováno. Určuje podepsanou verzi služby úložiště, která se má použít k autorizaci požadavků provedených pomocí sdíleného přístupového podpisu tohoto účtu. Musí být nastavená na verzi 2015-04-05 nebo novější. Key Vault podporuje verze nejpozději 2018-03-28.
SignedServices (ss) Povinný: Určuje podepsané služby přístupné pomocí sdíleného přístupového podpisu účtu. Možné hodnoty zahrnují:

– Objekt blob (b)
– Fronta (q)
- Tabulka (t)
- Soubor (f)

Hodnoty můžete kombinovat a poskytnout tak přístup k více než jedné službě. ss=bf Například určuje přístup ke koncovým bodům Blob a File.
SignedResourceTypes (srt) Povinný: Určuje typy podepsaných prostředků, které jsou přístupné pomocí sdíleného přístupového podpisu účtu.

– Služba (s): Přístup k rozhraním API na úrovni služby (například Get/Set Service Properties, Get Service Stats, List Containers/Queues/Tables/Shares)
– Kontejner (c): Přístup k rozhraním API na úrovni kontejneru (například vytvoření,odstranění kontejneru, vytvoření/odstranění fronty, vytvoření/odstranění tabulky, vytvoření/odstranění sdílené složky, výpis objektů blob/souborů a adresářů)
– Objekt (o): Přístup k rozhraním API na úrovni objektu pro objekty blob, zprávy fronty, entity tabulek a soubory (například Put Blob, Query Entity, Get Messages, Create File atd.)

Hodnoty můžete kombinovat a poskytnout tak přístup k více typům prostředků. Určuje například srt=sc přístup ke službám a prostředkům kontejneru.
SignedPermission (sp) Povinný: Určuje podepsaná oprávnění pro SAS účtu. Oprávnění jsou platná pouze v případě, že odpovídají zadanému podepsanému typu prostředku; jinak jsou ignorovány.

- Čtení (r): Platné pro všechny podepsané typy prostředků (Service, Container a Object). Povoluje oprávnění ke čtení zadaného typu prostředku.
– Zápis (w): Platné pro všechny podepsané typy prostředků (Service, Container a Object). Povoluje oprávnění k zápisu k zadanému typu prostředku.
- Odstranit (d): Platné pro typy prostředků typu kontejner a objekt, s výjimkou zpráv fronty.
- Trvalé odstranění (y): Platné pouze pro typ prostředku objektu blob.
- List (l): Platné pouze pro typy prostředků služby a kontejneru.
- Přidat (a): Platné pouze pro následující typy prostředků objektu: zprávy fronty, entity tabulky a doplňovací objekty blob.
- Vytvořit (c): Platné pouze pro následující typy prostředků objektu: objekty blob a soubory. Uživatelé mohou vytvářet nové objekty blob nebo soubory, ale nemusí přepsat existující objekty blob nebo soubory.
- Update (u): Platné pouze pro následující typy prostředků objektu: zprávy fronty a entity tabulky.
- Proces (p): Platný pouze pro následující typ prostředku objektu: zprávy fronty.
- Značka (t): Platné pouze pro následující typ prostředku objektu: objekty blob. Povoluje operace značek objektů blob.
- Filtr (f): Platné pouze pro následující typ prostředku objektu: objekt blob. Povoluje filtrování podle značky objektu blob.
– Nastavit zásady neměnnosti (i): Platné pouze pro následující typ prostředku objektu: objekt blob. Povoluje nastavení nebo odstranění zásad neměnnosti a blokování z právních důvodů v objektu blob.
SignedProtocol (spr) Nepovinné. Určuje protokol povolený pro požadavek vytvořený pomocí sdíleného přístupového podpisu účtu. Možné hodnoty jsou pouze HTTPS a HTTP (https,http) nebo HTTPS (https). Výchozí hodnota je https,http.

Pouze HTTP není povolená hodnota.

Další informace o SAS účtu najdete v tématu: Vytvoření sdíleného přístupového podpisu účtu

Poznámka:

Key Vault ignoruje parametry životnosti, jako je Podepsaná platnost, Signed Start a parametry zavedené po verzi 2018-03-28.

Nastavení definice sdíleného přístupového podpisu ve službě Key Vault

K vytvoření definice sdíleného přístupového podpisu použijte příkaz az keyvault storage sas-definition create a předáte šablonu definice SAS z předchozího kroku parametru --template-uri . Parametru můžete zadat název podle svého výběru -n .

az keyvault storage sas-definition create --vault-name <YourKeyVaultName> --account-name <YourStorageAccountName> -n <YourSASDefinitionName> --validity-period P2D --sas-type account --template-uri <sasDefinitionTemplate>

Ověření definice sdíleného přístupového podpisu

Pomocí příkazu Azure CLI az keyvault storage sas-definition show můžete ověřit, že definice sdíleného přístupového podpisu byla uložena ve vašem trezoru klíčů.

Teď můžete použít příkaz az keyvault storage sas-definition show a id vlastnost k zobrazení obsahu tohoto tajného klíče.

az keyvault storage sas-definition show --id https://<YourKeyVaultName>.vault.azure.net/storage/<YourStorageAccountName>/sas/<YourSASDefinitionName>

Další kroky