Hantera lagringskontonycklar med Key Vault och Azure CLI (äldre)

Viktigt!

Nyckelvalvshanterade lagringskontonycklar (äldre) stöds i befintligt format utan att fler uppdateringar planeras. Endast konto-SAS stöds med SAS-definitioner signerad lagringstjänstversion senast 2018-03-28.

Viktigt!

Stöd för hanterade lagringskontonycklar i Azure CLI togs bort i version 2.54. Du måste använda Azure CLI version 2.53.1 eller tidigare för kommandon i den här självstudien.

Viktigt!

Vi rekommenderar att du använder Azure Storage-integrering med Microsoft Entra ID, Microsofts molnbaserade tjänst för identitets- och åtkomsthantering. Microsoft Entra-integrering är tillgängligt för Azure-blobbar, köer och tabeller och ger OAuth2 tokenbaserad åtkomst till Azure Storage (precis som Azure Key Vault). Med Microsoft Entra-ID kan du autentisera klientprogrammet med hjälp av ett program eller en användaridentitet, i stället för autentiseringsuppgifter för lagringskontot. Du kan använda en Microsoft Entra-hanterad identitet när du kör på Azure. Hanterade identiteter tar bort behovet av klientautentisering och lagring av autentiseringsuppgifter i eller med ditt program. Använd endast lösningen nedan när Microsoft Entra-autentisering inte är möjlig.

Ett Azure Storage-konto använder autentiseringsuppgifter som består av ett kontonamn och en nyckel. Nyckeln genereras automatiskt och fungerar som ett lösenord i stället för en kryptografisk nyckel. Key Vault hanterar lagringskontonycklar genom att regelbundet återskapa dem i lagringskontot och ger signaturtoken för delad åtkomst för delegerad åtkomst till resurser i ditt lagringskonto.

Du kan använda key vault-funktionen för hanterade lagringskonton för att lista (synkronisera) nycklar med ett Azure-lagringskonto och återskapa (rotera) nycklarna med jämna mellanrum. Du kan hantera nycklar för både lagringskonton och klassiska lagringskonton.

Tänk på följande när du använder nyckelfunktionen för det hanterade lagringskontot:

  • Nyckelvärden returneras aldrig som svar till en anropare.
  • Endast Key Vault ska hantera dina lagringskontonycklar. Hantera inte nycklarna själv och undvik att störa Key Vault-processer.
  • Endast ett enda Key Vault-objekt ska hantera lagringskontonycklar. Tillåt inte nyckelhantering från flera objekt.
  • Återskapa nycklar med endast Key Vault. Återskapa inte lagringskontonycklarna manuellt.

Viktigt!

Om du återskapar nyckeln direkt i lagringskontot bryts konfigurationen av det hanterade lagringskontot och kan ogiltigförklara SAS-token som används och orsaka ett avbrott.

Program-ID för tjänstens huvudnamn

En Microsoft Entra-klientorganisation tillhandahåller varje registrerat program med tjänstens huvudnamn. Tjänstens huvudnamn fungerar som program-ID, som används under auktoriseringskonfigurationen för åtkomst till andra Azure-resurser via azure-rollbasåtkomstkontroll (Azure RBAC).

Key Vault är ett Microsoft-program som är förregistrerat i alla Microsoft Entra-klienter. Key Vault registreras under samma program-ID i varje Azure-moln.

Klientorganisationer Moln Program-ID:t
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Azure, offentlig cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Övrigt Alla cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Förutsättningar

För att slutföra den här guiden måste du först utföra följande steg:

Hantera lagringskontonycklar

Anslut till ditt Azure-konto

Autentisera din Azure CLI-session med hjälp av az login-kommandona .

az login

Ge Key Vault åtkomst till ditt lagringskonto

Använd kommandot Azure CLI az role assignment create för att ge Key Vault åtkomst till ditt lagringskonto. Ange följande parametervärden för kommandot:

  • --role: Skicka Azure-rollen "Lagringskontonyckeloperatörstjänstroll". Den här rollen begränsar åtkomstomfånget till ditt lagringskonto. För ett klassiskt lagringskonto skickar du "Tjänstroll för nyckeloperator för klassiskt lagringskonto" i stället.
  • --assignee: Skicka värdet "https://vault.azure.net", som är URL:en för Key Vault i det offentliga Azure-molnet. (För Azure Government-molnanvändning "--assignee-object-id" i stället, se Program-ID för tjänstens huvudnamn.)
  • --scope: Skicka ditt lagringskontos resurs-ID, som är i formuläret /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Hitta ditt prenumerations-ID med hjälp av kommandot Azure CLI az account list . Leta reda på lagringskontots namn och resursgrupp för lagringskontot med hjälp av kommandot Azure CLI az storage account list .
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>"

Ge ditt användarkonto behörighet till hanterade lagringskonton

Använd cmdleten Azure CLI az keyvault-set-policy för att uppdatera åtkomstprincipen för Key Vault och bevilja lagringskontobehörighet till ditt användarkonto.

# 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

Behörigheter för lagringskonton är inte tillgängliga på sidan Åtkomstprinciper för lagringskontot i Azure-portalen.

Skapa ett Key Vault-hanterat lagringskonto

Skapa ett Key Vault-hanterat lagringskonto med azure CLI az keyvault storage-kommandot . Ange en regenereringsperiod på 30 dagar. När det är dags att rotera återskapar KeyVault nyckeln som inte är aktiv och anger sedan den nyligen skapade nyckeln som aktiv. Endast en av nycklarna används för att utfärda SAS-token samtidigt, det här är den aktiva nyckeln. Ange följande parametervärden för kommandot:

  • --vault-name: Skicka namnet på ditt nyckelvalv. Om du vill hitta namnet på ditt nyckelvalv använder du kommandot Azure CLI az keyvault list .
  • -n: Skicka namnet på ditt lagringskonto. Om du vill hitta namnet på ditt lagringskonto använder du kommandot Azure CLI az storage account list .
  • --resource-id: Skicka ditt lagringskontos resurs-ID, som är i formuläret /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Hitta ditt prenumerations-ID med hjälp av kommandot Azure CLI az account list . Leta reda på lagringskontots namn och resursgrupp för lagringskontot med hjälp av kommandot Azure CLI az storage account list .
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>"

Signaturtoken för delad åtkomst

Du kan också be Key Vault att generera signaturtoken för delad åtkomst. En signatur för delad åtkomst ger delegerad åtkomst till resurser i ditt lagringskonto. Du kan ge klienter åtkomst till resurser i ditt lagringskonto utan att dela dina kontonycklar. En signatur för delad åtkomst ger dig ett säkert sätt att dela dina lagringsresurser utan att äventyra dina kontonycklar.

Kommandona i det här avsnittet slutför följande åtgärder:

  • Ange en definition <YourSASDefinitionName>för signatur för delad åtkomst för ett konto . Definitionen anges för ett Key Vault-hanterat lagringskonto <YourStorageAccountName> i nyckelvalvet <YourKeyVaultName>.
  • Ange en key vault-hanterad definition för signatur för delad åtkomst i valvet. Definitionen har mall-URI:n för signaturtoken för delad åtkomst som skapades. Definitionen har signaturtypen account för delad åtkomst och är giltig i N dagar.
  • Kontrollera att signaturen för delad åtkomst sparades i nyckelvalvet som en hemlighet.

Definiera en definitionsmall för signatur för delad åtkomst

Key Vault använder SAS-definitionsmall för att generera token för klientprogram.

Exempel på SAS-definitionsmall:

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

SAS-definitionsmallen skickas till parametern --template-uri i nästa steg.

Konto-SAS-parametrar som krävs i SAS-definitionsmallen för Key Vault

SAS-frågeparameter beskrivning
SignedVersion (sv) Obligatoriskt. Anger den signerade lagringstjänstversion som ska användas för att auktorisera begäranden som görs med det här kontots SAS. Måste anges till version 2015-04-05 eller senare. Key Vault stöder versioner senast 2018-03-28
SignedServices (ss) Obligatoriska. Anger de signerade tjänster som är tillgängliga med kontots SAS. Möjliga värden omfattar:

– Blob (b)
– Kö (q)
- Tabell (t)
- Fil (f)

Du kan kombinera värden för att ge åtkomst till mer än en tjänst. Till exempel ss=bf anger åtkomst till blob- och filslutpunkterna.
SignedResourceTypes (srt) Obligatoriska. Anger de signerade resurstyper som är tillgängliga med kontots SAS.

– Tjänst (s): Åtkomst till API:er på tjänstnivå (till exempel Get/Set Service Properties, Get Service Stats, List Containers/Queues/Tables/Shares)
– Container (c): Åtkomst till API:er på containernivå (till exempel Skapa/ta bort container, Skapa/ta bort kö, Skapa/ta bort tabell, Skapa/ta bort resurs, Listblobar/Filer och kataloger)
- Objekt (o): Åtkomst till API:er på objektnivå för blobar, kömeddelanden, tabellentiteter och filer (till exempel Put Blob, Query Entity, Get Messages, Create File osv.)

Du kan kombinera värden för att ge åtkomst till mer än en resurstyp. Till exempel srt=sc anger åtkomst till tjänst- och containerresurser.
SignedPermission (sp) Obligatoriska. Anger de signerade behörigheterna för kontots SAS. Behörigheter är endast giltiga om de matchar den angivna signerade resurstypen. annars ignoreras de.

– Läs (r): Giltig för alla signerade resurstyper (tjänst, container och objekt). Tillåter läsbehörighet till den angivna resurstypen.
– Skriv (w): Giltigt för alla signerade resurstyper (tjänst, container och objekt). Tillåter skrivbehörighet till den angivna resurstypen.
– Ta bort (d): Giltigt för resurstyper för container och objekt, förutom kömeddelanden.
– Permanent borttagning (y): Gäller endast för objektresurstypen Blob.
– Lista (l): Gäller endast för tjänst- och containerresurstyper.
– Lägg till (a): Gäller endast för följande objektresurstyper: kömeddelanden, tabellentiteter och tilläggsblobar.
– Skapa (c): Gäller endast för följande objektresurstyper: blobar och filer. Användare kan skapa nya blobar eller filer, men kanske inte skriver över befintliga blobar eller filer.
– Uppdatera (u): Gäller endast för följande objektresurstyper: kömeddelanden och tabellentiteter.
– Process (p): Gäller endast för följande objektresurstyp: kömeddelanden.
– Tagg (t): Gäller endast för följande objektresurstyp: blobar. Tillåter åtgärder för blobtaggen.
– Filter (f): Gäller endast för följande objektresurstyp: blob. Tillåter filtrering efter blobtagg.
– Ange oföränderlighetsprincip (i): Gäller endast för följande objektresurstyp: blob. Tillåter princip för att ange/ta bort oföränderlighet och bevarande av juridiska skäl för en blob.
SignedProtocol (spr) Valfritt. Anger det protokoll som tillåts för en begäran som görs med kontots SAS. Möjliga värden är både HTTPS och HTTP (https,http) eller endast HTTPS (https). Standardvärdet är https,http.

ENDAST HTTP är inte ett tillåtet värde.

Mer information om konto-SAS finns i: Skapa ett KONTO SAS

Kommentar

Key Vault ignorerar livslängdsparametrar som "Signerad utgång", "Signerad start" och parametrar som introducerades efter 2018-03-28-versionen

Ange signaturdefinition för delad åtkomst i Key Vault

Använd kommandot Azure CLI az keyvault storage sas-definition create och skicka SAS-definitionsmallen från föregående steg till parametern --template-uri för att skapa en signaturdefinition för delad åtkomst. Du kan ange det namn som du väljer för parametern -n .

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

Verifiera signaturdefinitionen för delad åtkomst

Du kan kontrollera att signaturdefinitionen för delad åtkomst har lagrats i nyckelvalvet med hjälp av kommandot Azure CLI az keyvault storage sas-definition show .

Du kan nu använda kommandot az keyvault storage sas-definition show och id egenskapen för att visa innehållet i hemligheten.

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

Nästa steg