Azure bicep 使用来自不同资源组的密钥保管库

Azure bicep use key vault from different resource group

我有一个 Azure Key Vault(KV),它具有共享机密和一个需要拉入不同部署的证书。

例如DEV、TEST、UAT、Production 都有自己的密钥库,但需要访问通配符 ssl 证书的共享 KV。

我尝试了多种方法,但每种方法都有错误。我正在为部署资源组中的 KV 做类似的事情,没有问题

是否可以拥有这个然后将其用作模块?像这样...

sharedKV.bicep

var kvResourceGroup = 'project-shared-rg'
var subscriptionId = subscription().id
var name = 'project-shared-kv'

resource project_shared_kv 'Microsoft.KeyVault/vaults@2021-06-01-preview' existing = {
  name: name
  scope: resourceGroup(subscriptionId, kvResourceGroup )
}

然后像这样使用: template.bicep

module shared_kv './sharedKeyVault/template.bicep' = {
 name: 'sharedKeyVault'
}


resource add_secrect 'Microsoft.KeyVault/vaults/secrets@2021-06-01-preview' = {
  name: '${shared_kv.name}/mySecretKey'
  properties: {
    contentType: 'string'
    value: 'secretValue'
    attributes: {
      enabled: true
    }
  }
}

如果您需要针对与其余部署不同的资源组(and/or 子),模块的范围 属性 需要针对 RG/sub。例如

module shared_kv './sharedKeyVault/template.bicep' = {
  scope: resourceGroup(kvSubscription, kvResourceGroupName)
  name: 'sharedKeyVault'
  params: {
    subId: kvSubscription
    rg: kvResourceGroupName
    ...
  }
}

理想情况下,KV 的 sub/rg 将被传递到模块而不是硬编码(您可能知道,但以防万一...)