Opslagaccountsleutels beheren met Key Vault en de Azure CLI (verouderd)

Belangrijk

Key Vault Managed Storage-accountsleutels (verouderd) worden ondersteund zonder dat er updates meer zijn gepland. Alleen account-SAS wordt ondersteund met SAS-definities ondertekend opslagserviceversie uiterlijk 2018-03-28.

Belangrijk

Ondersteuning voor beheerde opslagaccountsleutels in Azure CLI is verwijderd in versie 2.54. U moet Azure CLI versie 2.53.1 of voorheen gebruiken voor opdrachten in deze zelfstudie.

Belangrijk

We raden u aan Azure Storage-integratie te gebruiken met Microsoft Entra ID, de cloudservice voor identiteits- en toegangsbeheer van Microsoft. Microsoft Entra-integratie is beschikbaar voor Azure-blobs, wachtrijen en tabellen en biedt OAuth2-tokentoegang tot Azure Storage (net als Azure Key Vault). Met Microsoft Entra ID kunt u uw clienttoepassing verifiëren met behulp van een toepassing of gebruikersidentiteit, in plaats van referenties van het opslagaccount. U kunt een door Microsoft Entra beheerde identiteit gebruiken wanneer u op Azure uitvoert. Door beheerde identiteiten te gebruiken, zijn clientverificatie en opslag van referenties in of met uw toepassing niet meer nodig. Gebruik de onderstaande oplossing alleen als Microsoft Entra-verificatie niet mogelijk is.

Een Azure-opslagaccount gebruikt referenties die bestaan uit een accountnaam en een sleutel. De sleutel wordt automatisch gegenereerd en fungeert als een wachtwoord in plaats van een cryptografische sleutel. Key Vault beheert de sleutels voor opslagaccounts door ze periodiek opnieuw te genereren in het opslagaccount en biedt SAS-tokens (Shared Access Signature) voor gedelegeerde toegang tot resources in uw opslagaccount.

U kunt de functie voor sleutels van beheerde opslagaccounts van Key Vault gebruiken om de sleutels voor een Azure-opslagaccount op te vragen (synchroniseren) en om de sleutels periodiek opnieuw te genereren (roteren). U kunt sleutels beheren voor zowel opslagaccounts als klassieke opslagaccounts.

Houd rekening met het volgende wanneer u de functie voor sleutels van beheerde opslagaccounts gebruikt:

  • Sleutelwaarden worden nooit geretourneerd als antwoord op een aanroep.
  • De sleutels van uw opslagaccount mogen alleen door Key Vault worden beheerd. Beheer de sleutels niet zelf en voorkom conflicten met Key Vault-processen.
  • De sleutels van een opslagaccount mogen alleen door één Key Vault-object worden beheerd. Sta geen sleutelbeheer door meerdere objecten toe.
  • Genereer sleutels alleen opnieuw met behulp van Key Vault. Genereer de sleutels voor uw opslagaccount niet handmatig opnieuw.

Belangrijk

Het opnieuw genereren van de sleutel rechtstreeks in het opslagaccount breekt de installatie van het beheerde opslagaccount af en kan SAS-tokens ongeldig maken en leiden tot een storing.

Toepassings-id in de vorm van een service-principal

Een Microsoft Entra-tenant biedt elke geregistreerde toepassing met een service-principal. De service-principal fungeert als de toepassings-id, die wordt gebruikt tijdens het instellen van de autorisatie voor toegang tot andere Azure-resources via Azure Role Base-toegangsbeheer (Azure RBAC).

Key Vault is een Microsoft-toepassing die vooraf is geregistreerd in alle Microsoft Entra-tenants. Key Vault wordt in elke Azure-cloud geregistreerd onder dezelfde toepassings-id.

Tenants Cloud Toepassings-id
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Openbare Azure-peering cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Overige Alle cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Vereisten

Als u deze handleiding wilt voltooien, moet u eerst de volgende stappen uitvoeren:

Sleutels voor opslagaccounts beheren

Verbinding maken met uw Azure-account

Verifieer uw Azure CLI-sessie met behulp van de az login-opdrachten.

az login

Key Vault toegang geven tot uw opslagaccount

Gebruik de Azure CLI-opdracht az role assignment create om Key Vault toegang tot uw opslagaccount te geven. Geef de opdracht de volgende parameterwaarden:

  • --role: Geef de Azure-rol sleuteloperatorservice voor opslagaccounts door. Deze rol beperkt het toegangsbereik voor uw opslagaccount. Geef voor een klassiek opslagaccount de rol 'servicerol Sleuteloperator voor klassieke opslagaccounts' door.
  • --assignee: Geef de waarde 'https://vault.azure.net"door. Dit is de URL voor Key Vault in de openbare Azure-cloud. (Voor azure Government-cloud gebruikt u in plaats daarvan '--assigne-object-id'Service-principal-toepassings-id.)
  • --scope: Geef de resource-id van uw opslagaccount door, die in de vorm /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>staat. Zoek uw abonnements-id met behulp van de opdracht Azure CLI az account list . Zoek de naam van uw opslagaccount en de resourcegroep van het opslagaccount met behulp van de opdracht 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>"

Uw gebruikersaccount machtigingen geven voor beheerde opslagaccounts

Gebruik de Azure CLI-cmdlet az keyvault-set-policy om het toegangsbeleid van Key Vault bij te werken en machtigingen voor opslagaccounts te verlenen aan uw gebruikersaccount.

# 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

Machtigingen voor opslagaccounts zijn niet beschikbaar op de pagina Toegangsbeleid voor opslagaccounts in Azure Portal.

Een door Key Vault beheerd opslagaccount maken

Maak een door Key Vault beheerd opslagaccount met behulp van de Azure CLI-opdracht az keyvault storage. Stel een regeneratieperiode van 30 dagen in. Wanneer het tijd is om te draaien, genereert KeyVault de sleutel die niet actief is opnieuw en stelt u de zojuist gemaakte sleutel in als actief. Er wordt slechts één van de sleutels gebruikt om SAS-tokens tegelijk uit te geven. Dit is de actieve sleutel. Geef de opdracht de volgende parameterwaarden:

  • --vault-name: Geef de naam van uw sleutelkluis door. Als u de naam van de sleutelkluis wilt vinden, gebruikt u de Azure CLI-opdracht az keyvault list.
  • -n: Geef de naam van uw opslagaccount door. Als u de naam van uw opslagaccount wilt vinden, gebruikt u de Azure CLI-opdracht az storage account list.
  • --resource-id: Geef de resource-id van uw opslagaccount door, die in de vorm /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>staat. Zoek uw abonnements-id met behulp van de opdracht Azure CLI az account list . Zoek de naam van uw opslagaccount en de resourcegroep van het opslagaccount met behulp van de opdracht 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>"

SAS-tokens

U kunt Key Vault ook instellen om zogenaamde SAS-tokens (Shared Access Signature, handtekening voor gedeelde toegang) te genereren. Een SAS (een handtekening voor gedeelde toegang) biedt gedelegeerde toegang tot resources in uw opslagaccount. Met behulp van een SAS kunt u toegang geven tot resources in uw opslagaccount zonder dat u de sleutels van uw account hoeft te delen. Een SAS biedt een veilige manier om opslagresources te delen zonder dat uw accountsleutels in gevaar komen.

Met de opdrachten in deze sectie voert u de volgende acties uit:

  • Geef een SAS-definitie <YourSASDefinitionName> op voor het account. De definitie wordt ingesteld op een door Key Vault beheerd opslagaccount <YourStorageAccountName> in uw sleutelkluis <YourKeyVaultName>.
  • Geef een definitie op voor de SAS van door Key Vault beheerde opslag in de kluis. De definitie bevat de sjabloon-URI van het SAS-token dat is gemaakt. De definitie heeft het SAS-type account en is N dagen geldig.
  • Controleer of de SAS als een geheim is opgeslagen in de sleutelkluis.

Een handtekeningsjabloon voor gedeelde toegang definiëren

Key Vault maakt gebruik van sas-definitiesjabloon voor het genereren van tokens voor clienttoepassingen.

Voorbeeld van sas-definitiesjabloon:

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

In de volgende stap wordt de SAS-definitiesjabloon doorgegeven aan de --template-uri parameter.

Sas-parameters voor accounts die zijn vereist in de SAS-definitiesjabloon voor Key Vault

SAS-queryparameter Beschrijving
SignedVersion (sv) Vereist. Hiermee geeft u de ondertekende opslagserviceversie op die moet worden gebruikt om aanvragen te autoriseren die zijn gedaan met deze account-SAS. Moet zijn ingesteld op versie 2015-04-05 of hoger. Key Vault ondersteunt versies niet later dan 2018-03-28
SignedServices (ss) Vereist. Hiermee geeft u de ondertekende services die toegankelijk zijn met de account-SAS. Mogelijke waarden zijn onder andere:

- Blob (b)
- Wachtrij (q)
- Tabel (t)
- Bestand (f)

U kunt waarden combineren om toegang te bieden tot meer dan één service. Hiermee geeft u bijvoorbeeld ss=bf de toegang tot de blob- en bestandseindpunten op.
SignedResourceTypes (srt) Vereist. Hiermee geeft u de ondertekende resourcetypen op die toegankelijk zijn met de account-SAS.

- Service (s): Toegang tot API's op serviceniveau (bijvoorbeeld Get/Set Service Properties, Get Service Stats, List Containers/Queues/Tables/Shares)
- Container (c): Toegang tot API's op containerniveau (bijvoorbeeld Create/Delete Container, Create/Delete Queue, Create/Delete Table, Create/Delete Share, List Blobs/Files and Directory's)
- Object (o): Toegang tot API's op objectniveau voor blobs, wachtrijberichten, tabelentiteiten en bestanden (bijvoorbeeld Put Blob, Query Entity, Get Messages, Create File, etc.)

U kunt waarden combineren om toegang te bieden tot meer dan één resourcetype. Hiermee geeft u bijvoorbeeld srt=sc de toegang tot service- en containerbronnen op.
SignedPermission (sp) Vereist. Hiermee geeft u de ondertekende machtigingen voor de account-SAS. Machtigingen zijn alleen geldig als ze overeenkomen met het opgegeven ondertekende resourcetype; anders worden ze genegeerd.

- Lezen (r): Geldig voor alle ondertekende resourcetypen (Service, Container en Object). Hiermee staat u leesmachtigingen toe voor het opgegeven resourcetype.
- Schrijven (w): Geldig voor alle ondertekende resourcetypen (Service, Container en Object). Hiermee staat u schrijfmachtigingen toe aan het opgegeven resourcetype.
- Verwijderen (d): Geldig voor resourcetypen container en object, met uitzondering van wachtrijberichten.
- Permanent verwijderen (y): alleen geldig voor objectresourcetype blob.
- Lijst (l): alleen geldig voor service- en containerresourcetypen.
- Voeg (a): Alleen geldig voor de volgende objectresourcetypen: wachtrijberichten, tabelentiteiten en toevoeg-blobs.
- Maak (c): Alleen geldig voor de volgende objectresourcetypen: blobs en bestanden. Gebruikers kunnen nieuwe blobs of bestanden maken, maar kunnen bestaande blobs of bestanden mogelijk niet overschrijven.
- Bijwerken (u): Alleen geldig voor de volgende objectresourcetypen: wachtrijberichten en tabelentiteiten.
- Verwerken (p): Alleen geldig voor het volgende objectresourcetype: wachtrijberichten.
- Tag (t): Alleen geldig voor het volgende objectresourcetype: blobs. Staat bewerkingen voor blobtags toe.
- Filter (f): Alleen geldig voor het volgende objectresourcetype: blob. Hiermee kunt u filteren op blobtag.
- Beleid voor onveranderbaarheid instellen (i): Alleen geldig voor het volgende objectresourcetype: blob. Hiermee kunt u beleid voor onveranderbaarheid en juridische bewaring voor een blob instellen/verwijderen.
SignedProtocol (spr) Optioneel. Hiermee geeft u het protocol op dat is toegestaan voor een aanvraag die is gedaan met de account-SAS. Mogelijke waarden zijn zowel HTTPS als HTTP (https,http) of ALLEEN HTTPS (https). De standaardwaarde is https,http.

HTTP is alleen geen toegestane waarde.

Zie voor meer informatie over account-SAS: Een account-SAS maken

Notitie

Key Vault negeert levensduurparameters zoals 'Ondertekend verlopen', 'Ondertekende start' en parameters die zijn geïntroduceerd na versie 2018-03-28

Handtekeningdefinitie voor gedeelde toegang instellen in Key Vault

Gebruik de opdracht Azure CLI az keyvault storage sas-definition create , waarbij u de SAS-definitiesjabloon uit de vorige stap doorgeeft aan de --template-uri parameter, om een definitie voor shared access signature te maken. U kunt elke gewenste naam doorgeven aan de parameter -n.

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

De SAS-definitie verifiëren

U kunt controleren of de SAS-definitie is bewaard in uw sleutelkluis met de Azure CLI-opdracht az keyvault storage sas-definition show.

U kunt nu de opdracht az keyvault storage sas-definition show en de eigenschap id gebruiken om de inhoud van dat geheim weer te geven.

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

Volgende stappen