Hantera lagringskontonycklar med Key Vault och Azure CLI

Viktigt

Vi rekommenderar Azure Storage integrering med Azure Active Directory (Azure AD), Microsofts molnbaserade tjänst för identitets- och åtkomsthantering. Azure AD-integrering är tillgängligt för Azure-blobaroch köer och ger OAuth2-tokenbaserad åtkomst till Azure Storage (precis som Azure Key Vault). Med Azure AD kan du autentisera klientprogrammet med hjälp av ett program eller en användaridentitet i stället för autentiseringsuppgifterna för lagringskontot. Du kan använda en hanterad Azure AD-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 Azure AD-autentisering inte är möjligt.

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 som en kryptografisk nyckel. Key Vault hanterar lagringskontonycklar genom att regelbundet återskapa dem i lagringskontot och tillhandahåller signaturer för delad åtkomst för delegerad åtkomst till resurser i ditt lagringskonto.

Du kan använda funktionen Key Vault för hanterade lagringskontonycklar för att lista (synkronisera) nycklar med ett Azure-lagringskonto och återskapa (rotera) nycklarna regelbundet. 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 hanterat lagringskonto:

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

Viktigt

Omgenerering av nyckeln direkt i lagringskontot bryter 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 Azure AD-klientorganisation ger varje registrerat program ett huvudnamn för tjänsten. Tjänstens huvudnamn fungerar som program-ID, som används vid auktoriseringskonfigurationen för åtkomst till andra Azure-resurser via Azure RBAC.

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

Klientorganisationer Moln Program-ID:t
Azure AD Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Azure AD Azure, offentlig cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Annat Valfri cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Förutsättningar

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

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 "Storage-kontonyckeloperatörsroll". Den här rollen begränsar åtkomstomfånget till ditt lagringskonto. För ett klassiskt lagringskonto skickar du "Classic Storage Account Key Operator Service Role" 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 Goverment-molnet använder du "--assignee-object-id" i stället, se Program-ID för tjänstens huvudnamn.)
  • --scope: Skicka resurs-ID:t för ditt lagringskonto, som har formen /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName> . Om du vill hitta ditt prenumerations-ID använder du kommandot Azure CLI az account list. Om du vill hitta namnet på ditt lagringskonto och resursgruppen för lagringskontot använder du 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 användarkontot behörighet till hanterade lagringskonton

Använd cmdleten Azure CLI az keyvault-set-policy för att uppdatera Key Vault-åtkomstprincipen och bevilja lagringskontobehörigheter 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

Observera att behörigheter för lagringskonton inte är tillgängliga på sidan Åtkomstprinciper för lagringskontot i Azure Portal.

Skapa ett Key Vault hanterat lagringskonto

Skapa ett Key Vault hanterat lagringskonto med hjälp av Azure CLI-kommandot az keyvault storage. Ange en återskapandeperiod på 90 dagar. När det är dags att rotera återskapar KeyVault nyckeln som inte är aktiv och anger sedan den nya nyckeln som aktiv. Endast en av nycklarna används för att utfärda SAS-token åt gången. 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 resurs-ID:t för ditt lagringskonto, som har formen /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName> . Om du vill hitta ditt prenumerations-ID använder du kommandot Azure CLI az account list. Om du vill hitta namnet på ditt lagringskonto och resursgruppen för lagringskontot använder du 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 P90D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Signaturtoken för delad åtkomst

Du kan också be Key Vault att generera signaturer 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 utför följande åtgärder:

  • Ange en signaturdefinition för delad åtkomst för ett <YourSASDefinitionName> konto. Definitionen anges på ett Key Vault lagringskonto <YourStorageAccountName> i nyckelvalvet <YourKeyVaultName> .
  • Skapa en signaturtoken för delad åtkomst för blob-, fil-, tabell- och kötjänster. Token skapas för resurstyper, tjänst, container och objekt. Token skapas med alla behörigheter, över https och med de angivna start- och slutdatumen.
  • Ange en Key Vault signaturdefinition för delad åtkomst för hanterad lagring i valvet. Definitionen har mall-URI för den signaturtoken för delad åtkomst som skapades. Definitionen har signaturtypen för delad åtkomst account och är giltig i N dagar.
  • Kontrollera att signaturen för delad åtkomst har sparats i nyckelvalvet som en hemlighet.

Skapa en signaturtoken för delad åtkomst

Skapa en signaturdefinition för delad åtkomst med hjälp av kommandot Azure CLI az storage account generate-sas. Den här åtgärden kräver storage setsas behörigheterna och .

az storage account generate-sas --expiry 2020-01-01 --permissions rw --resource-types sco --services bfqt --https-only --account-name <YourStorageAccountName> --account-key 00000000

När åtgärden har slutförts kopierar du utdata.

"se=2020-01-01&sp=***"

Dessa utdata skickas till --template-uri parametern i nästa steg.

Generera en definition för signatur för delad åtkomst

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

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

Verifiera definitionen för signatur för delad åtkomst

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

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

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

Nästa steg