如何解决如何通过ARM模板在Azure存储账户上添加加密AKV
我正在尝试在存储帐户 (ADLS gen2) 上添加加密。并使用带有服务主体的 ARM 模板(通过门户它工作正常)。 我发现的代码很简单,就像下面要添加到 StorageAccount 的加密部分的 snipet 一样。
"keySource": "Microsoft.Keyvault","keyvaultproperties": {
"keyvaulturi": "https://akv-***.vault.azure.net","keyname":"storageKey","keyversion": "c355****68e52361156"
}
但是它没有这样做,给出错误
状态消息:由于身份验证问题,操作失败 在密钥保管库上。更多 信息,(代码:KeyVaultAuthenticationFailure)
我的 AKS 在另一个资源组中,而我的存储帐户在不同的资源组中(按照公司标准)。这是原因吗?那我该怎么办?
或者我读过的几篇文章建议在“密钥保管库”上添加访问权限以获取、包装和解包存储帐户的权限。我对此表示怀疑,因为我可以手动将同一密钥的加密添加到存储帐户。
会感谢任何帮助吗?
解决方法
当我重现并发现 AKV 和存储帐户应该在同一资源组和同一区域中时,只有您才能在存储帐户上添加 AKV。
将您的 Azure 存储帐户配置为通过 Azure Key Vault 使用客户管理的密钥,然后指定要与存储帐户关联的密钥。
第 1 步:将此 ARM 模板保存在您的 VS 代码中,并使用任意名称保存该文件。
这是一个完整且功能齐全的 ARM 模板,您需要部署 2 次才能对其进行完全配置。第一次运行将创建 Key Vault 和存储帐户。然后,您需要在 Key Vault 中手动创建密钥并再次运行部署以让它完成其余的工作。
此模板使用嵌套部署将带有关键信息的存储帐户的配置与创建 2 个资源分开,以获得完整示例。
模板
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","parameters": {
"keyName": {
"type": "string","defaultValue": "storage-enc-test"
},"keyVersion": {
"type": "string","defaultValue": ""
},"location": {
"type": "string","defaultValue": "[resourceGroup().location]"
},"configureEncryptionKey": {
"type": "bool","defaultValue": false
}
},"variables": {
"uniqueResourceNameBase": "simplekeyvalut7735"
},"resources": [
{
"condition": "[not(parameters('configureEncryptionKey'))]","type": "Microsoft.KeyVault/vaults","name": "[variables('uniqueResourceNameBase')]","apiVersion": "2016-10-01","location": "[parameters('location')]","properties": {
"sku": {
"family": "A","name": "standard"
},"tenantId": "[subscription().tenantid]","accessPolicies": [],"enableSoftDelete": true,"enablePurgeProtection": true
},"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts',variables('uniqueResourceNameBase'))]"
]
},{
"type": "Microsoft.Storage/storageAccounts","sku": {
"name": "Standard_LRS","tier": "Standard"
},"kind": "Storage","apiVersion": "2019-06-01","identity": {
"type": "SystemAssigned"
},"properties": {
"supportsHttpsTrafficOnly": true
},"dependsOn": []
},{
"condition": "[parameters('configureEncryptionKey')]","type": "Microsoft.Resources/deployments","apiVersion": "2019-07-01","name": "updateStorageAccount","dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults',variables('uniqueResourceNameBase'))]"
],"properties": {
"mode": "Incremental","template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion": "0.1.0.0","resources": [
{
"type": "Microsoft.KeyVault/vaults/accessPolicies","name": "[concat(variables('uniqueResourceNameBase'),'/add')]","apiVersion": "2019-09-01","properties": {
"accessPolicies": [
{
"tenantId": "[subscription().tenantid]","objectId": "[reference(resourceId('Microsoft.Storage/storageAccounts',variables('uniqueResourceNameBase')),'2019-06-01','full').identity.principalId]","permissions": {
"keys": [
"wrapkey","unwrapkey","get"
],"secrets": [],"certificates": []
}
}
]
}
},{
"type": "Microsoft.Storage/storageAccounts","sku": {
"name": "Standard_LRS","tier": "Standard"
},"identity": {
"type": "SystemAssigned"
},"properties": {
"encryption": {
"services": {
"file": {
"enabled": true
},"blob": {
"enabled": true
}
},"keySource": "Microsoft.Keyvault","keyvaultproperties": {
"keyvaulturi": "[reference(resourceId('Microsoft.KeyVault/vaults','2016-10-01','full').properties.vaultUri]","keyname": "[parameters('keyName')]","keyversion": "[parameters('keyversion')]"
}
}
},"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults/accessPolicies',variables('uniqueResourceNameBase'),'add')]"
]
}
]
}
}
}
]
}
我选择了一个变量。
"uniqueResourceNameBase": "simplekeyvalut7735" 用于根据您的选择提供存储帐户和 Key Vault 的名称,您可以编辑上述代码并分配其他名称。
第 2 步:输入以下命令以在您的资源组中部署您的模板。
New-AzResourceGroupDeployment -name testdeployment -ResourceGroupName v-rahul********* -TemplateFile C:\Users\v-rash**\venv\Lib\site-packages\pandas\io\azuredeploy.json
第 3 步:如第 1 步所述,再次运行上述命令一次。
第 4 步:手动创建您的密钥。
第 5 步:最后,在将特殊标志 configureEncryptionKey 设置为 true 的情况下运行,以在存储帐户上运行配置步骤。
New-AzResourceGroupDeployment -name testdeployment -ResourceGroupName v-ra###M## -TemplateFile C:\Users\v-rash**\venv\Lib\site-packages\pandas\io\azuredeploy.json -configureEncryptionKey $true -Verbose
您可能会在设置密钥库密钥名称时遇到此错误。我已经手动设置了 storage-enc-test 并再次运行上述命令。
结果:像这样触发第二次部署:
如果我查看 Azure 门户,我们可以看到密钥已正确配置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。