使用 Key Vault 管理其密钥的 Azure 存储帐户

Azure Storage Account with Key Vault to manage its keys

我希望我的 blob 存储帐户密钥由 Key Vault 管理。我正在尝试在 'key1' 和 'key2' 之间自动重新生成过程,间隔为 1 天。

我已按照 Microsoft 网站上的说明进行操作 https://docs.microsoft.com/en-us/powershell/module/az.keyvault/add-azkeyvaultmanagedstorageaccount?view=azps-2.5.0

我有 运行 下面的脚本并且没有错误:

$servicePrincipal = Get-AzADServicePrincipal -ServicePrincipalName cfa8b339-82a2-471a-a3c9-0fc0be7a4093
New-AzRoleAssignment -ObjectId $servicePrincipal.Id -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope $storage.Id
$userPrincipalId = $(Get-AzADUser -SearchString 'Bob Johnson').Id
Set-AzKeyVaultAccessPolicy -VaultName 'AzureBlobVault' -ObjectId $userPrincipalId -PermissionsToStorage get, list, delete, set, update, regeneratekey, getsas, listsas, deletesas, setsas, recover, backup, restore, purge
$regenerationPeriod = [System.Timespan]::FromDays(1)
Add-AzKeyVaultManagedStorageAccount -VaultName 'AzureBlobVault' -StorageAccountName 'john' -AccountResourceId '/subscriptions/XXXXXXX-XXXX-XXXXXXXXXXXXXXXX/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/John' -ActiveKeyName 'key1' -RegenerationPeriod $regenerationPeriod'


The Result:

Id                  : https://azurekeyvaultblob.vault.azure.net:443/storage/john
Vault Name          : AzureBlobVault
AccountName         : john
Account Resource Id : /subscriptions/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/john
Active Key Name     : key1
Auto Regenerate Key : True
Regeneration Period : 1.00:00:00
Enabled             : True

我 运行 脚本时没有任何错误。但它似乎不起作用,因为 Key Vault 没有自动重新生成 Key Vault 中的任何密钥。过去一周我一直在测试这个。

我不确定我是否使用 Blob 存储密钥正确设置了 Key Vault。

I am not sure if I set up the Key Vault with the Blob Storage keys correctly.

我觉得你设置成功了,你可以用下面的命令查看。

Get-AzKeyVaultManagedStorageAccount -VaultName <keyvault name> -name <storage account name>

But it doesn't seem to work because the Key Vault hasn't auto regenerate any of the keys within the Key Vault.

该设置不会自动重新生成密钥库中密钥的标签,它只会自动重新生成存储访问密钥,您需要在您的存储帐户中查看结果 -> Access keys

更新:

我用 $regenerationPeriod = [System.Timespan]::FromDays(1) 测试了它,它有效。

Activity 存储账户日志:

还有注意:

当设置 -ActiveKeyName 'key1' 时,它不会自动重新生成 key1

当活动键集为'key1'时。此密钥将用于生成 sas 令牌。 Key Vault 将在执行此命令后的重新生成周期后重新生成 'key2' 密钥,并将其设置为活动密钥。此自动再生过程将在 'key1' 和 'key2' 之间继续,间隔 RegenerationPeriod 天。