我是二头肌新手,正在尝试部署具有访问策略的 keyvault。在我的场景中,像 dev 和 load 这样的环境可以具有通用的访问策略,但 prod 应该具有特定于区域的访问策略。
下面是kv模块内访问策略代码的代码-
kv-vault.bicep
param objectIds object
resource KeyVault 'Microsoft.KeyVault/vaults@2019-09-01' = {
name: KeyVaultName
location: location
properties: {
tenantId: 'abcdxyz'
accessPolicies: [for objectId in items(objectIds): {
objectId: objectId.value.id
tenantId: 'abcdxyz'
permissions: {
keys:objectId.value.key
secrets: objectId.value.secret
certificates:objectId.value.certificate
}
}]
}
}
下面是我在 main.bicep 文件中调用 kv 模块的方式
主要.二头肌
var objectid = isAME ? (isLOAD || isDEV || isQA ? common.objectIds
: common.objectIds.us)
: isEMA ? (isLOAD || isDEV || isQA ? common.objectIds
: common.objectIds.ema)
: (isLOAD || isDEV || isQA ? common.objectIds
: common.objectIds.apa)
module KeyVault './modules/key-vault.bicep' = {
name: 'keyvaultdeployment-${uniqueName}'
scope: resourceGroup(resourceGroupName)
params: {
objectIds: objectid
KeyVaultName: KeyVaultName
location: rg.outputs.location
dependsOn: [
vnet
rg
]
}
我有一个公共文件,所有对象 ID 都在其中传递。
commom.json
"objectIds":{
"us": {
"id": "abcd-1234",
"key": ["all"],
"secret": ["all"],
"certificate": ["all"]
},
"apa": {
"id": "abcd-4567",
"key": ["all"],
"secret": ["all"],
"certificate": ["all"]
},
"ema": {
"id": "abcd-7890",
"key": ["all"],
"secret": ["all"],
"certificate": ["all"]
}
}
因此,当我尝试在 EMA 的产品中部署时,它应该只从 common.jason 文件中获取“ema”。但我收到一个错误 - “无法评估数组值上的命名属性或非整数索引“id”。”
请帮帮我。如果您需要有关现有代码的更多信息,请告诉我。预先感谢。
我尝试了所有基本的故障排除方法并浏览了 Microsoft 文档,但没有帮助我解决问题。
当您调用 EMA 中的
key-vault.bicep
模块时,传入的值将是:
[
{
"key": "apa",
"value": {
"id": "abcd-4567",
"key": [
"all"
],
"secret": [
"all"
],
"certificate": [
"all"
]
}
},
{
"key": "ema",
"value": {
"id": "abcd-7890",
"key": [
"all"
],
"secret": [
"all"
],
"certificate": [
"all"
]
}
},
{
"key": "us",
"value": {
"id": "abcd-1234",
"key": [
"all"
],
"secret": [
"all"
],
"certificate": [
"all"
]
}
}
]
或
[
{
"key": "certificate",
"value": [
"all"
]
},
{
"key": "id",
"value": "abcd-7890"
},
{
"key": "key",
"value": [
"all"
]
},
{
"key": "secret",
"value": [
"all"
]
}
]
如果是后者,
key-vault.bicep
模板将尝试在循环的第一次迭代中取消引用.id
的["all"]
属性。数组没有 ID 属性,这会导致您看到错误消息。