Správa klíčů účtu úložiště pomocí služby Key Vault a Azure PowerShellu (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é
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 a fronty 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. Toto řešení použijte pouze v případě, že 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.
Poznámka:
Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Pokud chcete začít, přečtěte si téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
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 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
Abyste mohli tuto příručku dokončit, musíte nejprve provést následující:
- Nainstalujte modul Azure PowerShellu.
- Vytvoření trezoru klíčů
- Vytvoření účtu úložiště Azure: Název účtu úložiště musí používat jenom malá písmena a číslice. Délka názvu musí být 3 až 24 znaků.
Správa klíčů účtu úložiště
Připojení k účtu Azure
Ověřte relaci PowerShellu pomocí rutiny Connect-AzAccount .
Connect-AzAccount
Pokud máte více předplatných Azure, můžete je vypsat pomocí rutiny Get-AzSubscription a zadat předplatné, které chcete použít s rutinou Set-AzContext .
Set-AzContext -SubscriptionId <subscriptionId>
Nastavit proměnné
Nejprve v následujících krocích nastavte proměnné, které mají být používány rutinami PowerShellu. Nezapomeňte aktualizovat zástupné symboly YourResourceGroupName, YourStorageAccountName a YourKeyVaultName a nastavit $keyVaultSpAppId na cfa8b339-82a2-471a-a3c9-0fc0be7a4093
(jak je uvedeno v ID aplikace instančního objektu).
K získání ID uživatele a kontextu účtu úložiště Azure použijeme také rutiny Azure PowerShell Get-AzContext a Get-AzStorageAccount .
$resourceGroupName = <YourResourceGroupName>
$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>
$keyVaultSpAppId = "cfa8b339-82a2-471a-a3c9-0fc0be7a4093"
$storageAccountKey = "key1" #(key1 or key2 are allowed)
# Get your User Id
$userId = (Get-AzContext).Account.Id
# Get a reference to your Azure storage account
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName
Poznámka:
V případě klasického účtu úložiště pro $storageAccountKey použijte primární a sekundární.
Použití rutiny Get-AzResource -Name ClassicStorageAccountName -ResourceGroupName $resourceGroupName místo Get-AzStorageAccount pro klasický účet úložiště
Udělení přístupu ke službě Key Vault k vašemu účtu úložiště
Aby mohl Key Vault přistupovat k klíčům účtu úložiště a spravovat je, musíte autorizovat přístup k účtu úložiště. Aplikace Key Vault vyžaduje oprávnění k výpisu a opětovnému vygenerování klíčů pro váš účet úložiště. Tato oprávnění jsou povolená prostřednictvím role operátora klíče účtu úložiště Azure předdefinované role.
Přiřaďte tuto roli instančnímu objektu služby Key Vault a omezte rozsah na váš účet úložiště pomocí rutiny Azure PowerShell New-AzRoleAssignment .
# Assign Azure role "Storage Account Key Operator Service Role" to Key Vault, limiting the access scope to your storage account. For a classic storage account, use "Classic Storage Account Key Operator Service Role."
New-AzRoleAssignment -ApplicationId $keyVaultSpAppId -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope $storageAccount.Id
Po úspěšném přiřazení role by se měl zobrazit výstup podobný následujícímu příkladu:
RoleAssignmentId : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso/providers/Microsoft.Authorization/roleAssignments/189cblll-12fb-406e-8699-4eef8b2b9ecz
Scope : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
DisplayName : Azure Key Vault
SignInName :
RoleDefinitionName : storage account Key Operator Service Role
RoleDefinitionId : 81a9662b-bebf-436f-a333-f67b29880f12
ObjectId : 93c27d83-f79b-4cb2-8dd4-4aa716542e74
ObjectType : ServicePrincipal
CanDelegate : False
Pokud už je služba Key Vault přidaná do role ve vašem účtu úložiště, zobrazí se "Přiřazení role již existuje". chyba. Přiřazení role můžete také ověřit pomocí stránky Řízení přístupu (IAM) účtu úložiště na webu Azure Portal.
Udělení oprávnění ke spravovanému účtu úložiště
Pomocí rutiny Azure PowerShell Set-AzKeyVaultAccessPolicy 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
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -UserPrincipalName $userId -PermissionsToStorage get, list, delete, set, update, regeneratekey, getsas, listsas, deletesas, setsas, recover, backup, restore, purge
Oprávnění pro účty úložiště nejsou na stránce Zásady přístupu k účtu úložiště na webu Azure Portal k dispozici.
Přidání spravovaného účtu úložiště do instance služby Key Vault
Pomocí rutiny Azure PowerShell Add-AzKeyVaultManagedStorageAccount vytvořte spravovaný účet úložiště v instanci služby Key Vault. Přepínač -DisableAutoRegenerateKey
určuje, že se klíče účtu úložiště negenerují znovu.
# Add your storage account to your Key Vault's managed storage accounts
Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -DisableAutoRegenerateKey
Po úspěšném přidání účtu úložiště bez regenerace klíčů by se měl zobrazit výstup podobný následujícímu příkladu:
Id : https://kvcontoso.vault.azure.net:443/storage/sacontoso
Vault Name : kvcontoso
AccountName : sacontoso
Account Resource Id : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
Active Key Name : key1
Auto Regenerate Key : False
Regeneration Period : 90.00:00:00
Enabled : True
Created : 11/19/2018 11:54:47 PM
Updated : 11/19/2018 11:54:47 PM
Tags :
Povolení regenerace klíčů
Pokud chcete, aby služba Key Vault obnovovala klíče účtu úložiště pravidelně, můžete k nastavení období regenerace použít rutinu Azure PowerShell Add-AzKeyVaultManagedStorageAccount . V tomto příkladu nastavíme období regenerace 30 dnů. Když je čas otočit, Key Vault znovu vygeneruje neaktivní klíč a potom nastaví nově vytvořený klíč jako aktivní. Klíčem použitým k vydávání tokenů SAS je aktivní klíč.
$regenPeriod = [System.Timespan]::FromDays(30)
Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -RegenerationPeriod $regenPeriod
Po úspěšném přidání účtu úložiště s regenerací klíčů by se měl zobrazit výstup podobný následujícímu příkladu:
Id : https://kvcontoso.vault.azure.net:443/storage/sacontoso
Vault Name : kvcontoso
AccountName : sacontoso
Account Resource Id : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
Active Key Name : key1
Auto Regenerate Key : True
Regeneration Period : 30.00:00:00
Enabled : True
Created : 11/19/2018 11:54:47 PM
Updated : 11/19/2018 11:54:47 PM
Tags :
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 sdíleného přístupového podpisu účtu.
- 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íč.
Nastavit proměnné
Nejprve v následujících krocích nastavte proměnné, které mají být používány rutinami PowerShellu. Nezapomeňte aktualizovat <zástupné symboly YourStorageAccountName> a <YourKeyVaultName> .
$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>
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:
$sasTemplate="sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"
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 rutinu Azure PowerShell Set-AzKeyVaultManagedSasDefinition . Parametru můžete zadat název podle svého výběru -Name
.
Set-AzKeyVaultManagedStorageSasDefinition -AccountName $storageAccountName -VaultName $keyVaultName -Name <YourSASDefinitionName> -TemplateUri $sasTemplate -SasType 'account' -ValidityPeriod ([System.Timespan]::FromDays(1))
Ověření definice sdíleného přístupového podpisu
Pomocí rutiny Azure PowerShell Get-AzKeyVaultSecret můžete ověřit, že je definice sdíleného přístupového podpisu uložená ve vašem trezoru klíčů.
Nejprve vyhledejte definici sdíleného přístupového podpisu v trezoru klíčů.
Get-AzKeyVaultSecret -VaultName <YourKeyVaultName>
Tajný klíč odpovídající definici SAS bude mít tyto vlastnosti:
Vault Name : <YourKeyVaultName>
Name : <SecretName>
...
Content Type : application/vnd.ms-sastoken-storage
Tags :
Teď můžete použít rutinu Get-AzKeyVaultSecret s VaultName
parametry a Name
zobrazit obsah tohoto tajného klíče.
$secretValueText = Get-AzKeyVaultSecret -VaultName <YourKeyVaultName> -Name <SecretName> -AsPlainText
Write-Output $secretValueText
Výstup tohoto příkazu zobrazí váš řetězec definice SAS.