我需要修改ARM模板,以便用户在部署过程中有3个选项可以选择参数,每个选项用于特定的Azure RBAC内置角色(所有者,贡献者或读者)。然后,我需要将每个角色与各自的角色ID相关联,这在Azure中是唯一的。我想避免用户必须从roleID中选择,因为它们显然没有描述性,但是在这种情况下,分配必须由roleID完成,仅仅角色定义的名称不足以直接进行分配。
下面的模板被简化了,只有我需要实现的逻辑,但是它只检查参数(Contributor)的一个值。所以我需要做同样的,但为3个不同的值。如果只有2个可能的值,我可以将“json('null')”更改为其他RoleID,但如果有3个值,则会变得更加复杂。
{
"$schema": "https://schema.management.azure.com/schemas/2019-08-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"exampleParameter": {
"defaultValue": "Contributor",
"allowedValues": [
"Contributor",
"Owner",
"Reader"
],
"type": "String",
"metadata": {
"description": "Test parameter"
}
}
},
"variables": {
"exampleVariable": "[if(equals(parameters('exampleParameter'), 'Contributor'), 'ContributorRoleID', json('null'))]"
},
"resources": [],
"outputs": {
"exampleOutput": {
"type": "String",
"value": "[variables('exampleVariable')]"
}
}
}
字符串
我从这个question中得到了一些引用,但我真的没有理解这个例子,因为即使它使用了OR条件,我也没有注意到如何传递true和false求值的值,就像上面的例子中的单个值一样。然后,我尝试了不同的方法来调整它,以满足我的需要,但我真的找不到一种方法来解决这个问题,因为我找不到任何有效的sintaxe使用这个相同的逻辑与多个值。
我很抱歉为此创造了一个新的主题,但我不能在原来的问题上发表评论。
注:如果有其他解决方案可以达到同样的效果,请随时提出建议。我的问题是关于变量/参数中的条件,因为这是我能想象到的唯一关联方式,但我不是ARM模板方面的Maven,也许我的用例有另一个简单的解决方案。
如果有人能帮我我很感激。谢谢你,谢谢
1条答案
按热度按时间ojsjcaue1#
我需要将每个角色关联到各自的角色ID,这些角色ID在Azure中是唯一的。
创建不应直接分配任何RBAC角色的资源。
的数据
创建一个Azure策略定义,以根据选定的角色名称和角色ID分配RBAC角色分配。
字符串
下面是用于处理角色名称与其各自的角色ID之间的相关性的模板。
型
参数根据要求。
的
您需要将Azure策略定义与Azure策略的内置策略规则类型一起使用,特别是“基于角色的访问控制(RBAC)角色分配”策略。