Delen via


Opslagaccountsleutels beheren met Key Vault en Azure PowerShell (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

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 en -wachtrijen 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 deze 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 wachtwoord in plaats van als 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.

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

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 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

U moet eerst het volgende doen om deze handleiding te voltooien:

Sleutels voor opslagaccounts beheren

Verbinding maken met uw Azure-account

Verifieer uw PowerShell-sessie met de cmdlet Connect-AzAccount.

Connect-AzAccount

Als u meerdere Azure-abonnementen hebt, kunt u deze weergeven met behulp van de cmdlet Get-AzSubscription en vervolgens het gewenste abonnement opgeven met de cmdlet Set-AzContext.

Set-AzContext -SubscriptionId <subscriptionId>

Variabelen instellen

Stel eerst de variabelen in die door de PowerShell-cmdlets moeten worden gebruikt in de volgende stappen. Zorg ervoor dat u de tijdelijke aanduidingen 'YourResourceGroupName', 'YourStorageAccountName' en 'YourKeyVaultName' bijwerkt en $keyVaultSpAppId cfa8b339-82a2-471a-a3c9-0fc0be7a4093 instelt op (zoals opgegeven in de toepassings-id van de service-principal).

We gebruiken ook de cmdlets Azure PowerShell Get-AzContext en Get-AzStorageAccount om uw gebruikers-id en de context van uw Azure-opslagaccount op te halen.

$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

Notitie

Gebruik voor het klassieke opslagaccount 'primair' en 'secundair' voor $storageAccountKey
Gebruik 'Get-AzResource -Name "ClassicStorageAccountName" -ResourceGroupName $resourceGroupName' in plaats van 'Get-AzStorageAccount' voor een klassiek opslagaccount.

Key Vault toegang geven tot uw opslagaccount

Voordat Key Vault toegang kan krijgen tot de sleutels voor uw opslagaccount en deze kan beheren, moet u de toegang tot uw opslagaccount autoriseren. De Key Vault-toepassing vereist machtigingen voor het opvragen en opnieuw genereren van sleutels voor uw opslagaccount. Deze machtigingen worden ingeschakeld via de ingebouwde Azure-rol De servicerol Sleuteloperator voor opslagaccounts.

Wijs deze rol toe aan de service-principal van Key Vault Service om het bereik te beperken tot uw opslagaccount. Gebruik hiervoor de Azure PowerShell-cmdlet 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

Als de rol is toegewezen, ziet u uitvoer die lijkt op het volgende voorbeeld:

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

Als Key Vault al is toegevoegd aan de rol in uw opslagaccount, ontvangt u de tekst 'De roltoewijzing bestaat al'. fout. U kunt de roltoewijzing ook controleren met behulp van de pagina Toegangsbeheer (IAM) van het opslagaccount in Azure Portal.

Uw gebruikersaccount machtigingen geven voor beheerde opslagaccounts

Gebruik de Azure PowerShell-cmdlet Set-AzKeyVaultAccessPolicy om het toegangsbeleid van Key Vault bij te werken en machtigingen voor het opslagaccount te verlenen aan uw gebruikersaccount.

# 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

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

Een beheerd opslagaccount toevoegen aan uw Key Vault-instantie

Gebruik de Azure PowerShell-cmdlet Add-AzKeyVaultManagedStorageAccount om een beheerd opslagaccount te maken in uw instantie van Key Vault. De -DisableAutoRegenerateKey switch geeft aan dat de sleutels van het opslagaccount niet opnieuw moeten worden gegenereerd.

# Add your storage account to your Key Vault's managed storage accounts

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -DisableAutoRegenerateKey

Wanneer het opslagaccount is toegevoegd zonder opnieuw een sleutel te genereren, ziet u uitvoer die lijkt op het volgende voorbeeld:

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                :

Opnieuw genereren van sleutel inschakelen

Als u wilt dat Key Vault de sleutels voor uw opslagaccount periodiek opnieuw genereert, kunt u de Azure PowerShell-cmdlet Add-AzKeyVaultManagedStorageAccount gebruiken om hiervoor een periode in te stellen. In dit voorbeeld stellen we een regeneratieperiode van 30 dagen in. Wanneer het tijd is om te draaien, genereert Key Vault de inactieve sleutel opnieuw en stelt de zojuist gemaakte sleutel vervolgens in als actief. De sleutel die wordt gebruikt om SAS-tokens uit te geven, is de actieve sleutel.

$regenPeriod = [System.Timespan]::FromDays(30)

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -RegenerationPeriod $regenPeriod

Wanneer het opslagaccount is toegevoegd en er een nieuwe sleutel is gegenereerd, ziet u uitvoer die lijkt op het volgende voorbeeld:

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                :

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 op voor het account.
  • 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.

Variabelen instellen

Stel eerst de variabelen in die door de PowerShell-cmdlets moeten worden gebruikt in de volgende stappen. Zorg ervoor dat u de <tijdelijke aanduidingen YourStorageAccountName> en <YourKeyVaultName> bijwerkt.

$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>

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:

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

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 Cmdlet Azure PowerShell Set-AzKeyVaultManagedStorageSasDefinition om een shared access signature-definitie te maken. U kunt elke gewenste naam doorgeven aan de parameter -Name.

Set-AzKeyVaultManagedStorageSasDefinition -AccountName $storageAccountName -VaultName $keyVaultName -Name <YourSASDefinitionName> -TemplateUri $sasTemplate -SasType 'account' -ValidityPeriod ([System.Timespan]::FromDays(1))

De SAS-definitie verifiëren

Gebruik de Azure PowerShell-cmdlet Get-AzKeyVaultSecret om te controleren of de definitie van de SAS is opgeslagen in uw sleutelkluis.

Zoek eerst de definitie van de SAS in uw sleutelkluis.

Get-AzKeyVaultSecret -VaultName <YourKeyVaultName>

Het geheim dat overeenkomt met uw SAS-definitie heeft de volgende eigenschappen:

Vault Name   : <YourKeyVaultName>
Name         : <SecretName>
...
Content Type : application/vnd.ms-sastoken-storage
Tags         :

U kunt nu de cmdlet Get-AzKeyVaultSecret gebruiken met de parameters VaultName en Name om de inhoud van dat geheim te bekijken.

$secretValueText = Get-AzKeyVaultSecret -VaultName <YourKeyVaultName> -Name <SecretName> -AsPlainText
Write-Output $secretValueText

De uitvoer van deze opdracht bevat de tekenreeks van de SAS-definitie.

Volgende stappen