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:
- Installeer de Azure PowerShell-module.
- Maak een sleutelkluis.
- Maak een Azure-opslagaccount. De naam van het opslagaccount mag alleen kleine letters en cijfers bevatten. De naam moet bestaan uit 3 tot 24 tekens.
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.