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:
- Installera Azure CLI.
- Skapa ett nyckelvalv
- Skapa ett Azure Storage-konto. Lagringskontots namn får bara innehålla gemener och siffror. Namnet måste vara mellan 3 och 24 tecken långt.
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
accountoch ä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
- Läs mer om nycklar, hemligheter och certifikat.
- Läs artiklarna på Azure Key Vault teambloggen.
- Se referensdokumentationen för az keyvault storage.