如何在Bicep中用resourceId跨资源组引用密钥保管库URI
修改Bicep模块支持跨资源组密钥保管库配置
要让存储账户能引用不同资源组的密钥保管库,只需做两处调整:
- 添加参数指定密钥保管库所在资源组,默认值设为当前部署资源组,兼容原有同组场景
- 调整
resourceId函数调用,传入密钥保管库的资源组名称
修改后的完整代码:
// 新增参数:密钥保管库所属资源组,默认使用当前部署的资源组 param keyVaultResourceGroupName string = resourceGroup().name resource AssignCMKtoStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: AssignCMKtoStorageAccountName location: location tags: appliedTags kind: 'StorageV2' sku: { name: skuName } identity: { type: 'SystemAssigned' } properties: { publicNetworkAccess: 'Disabled' allowBlobPublicAccess: false networkAcls: { bypass: 'AzureServices' defaultAction: 'Deny' } encryption: { services: { file: { enabled: true } blob: { enabled: true } } keySource: 'Microsoft.Keyvault' keyvaultproperties: { keyname: CMKName // 修改resourceId调用,指定密钥保管库的资源组 keyvaulturi: reference(resourceId(keyVaultResourceGroupName, 'Microsoft.KeyVault/vaults', keyVaultName), '2016-10-01', 'full').properties.vaultUri } } } }
关键说明
keyVaultResourceGroupName参数默认使用当前资源组,所以密钥保管库与存储账户同组时,无需额外传参,保持原有使用逻辑resourceId(keyVaultResourceGroupName, 'Microsoft.KeyVault/vaults', keyVaultName)会生成跨资源组的密钥保管库资源ID,确保reference能正确获取到其URI- 注意:需确保存储账户的系统身份已被授予密钥保管库的
Key Vault Crypto Service Encryption User权限,否则CMK配置会失败
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

