如错误信息中所述,如果您并行运行命令来设置访问策略,则会导致ConflictError。
因此,如果您想同时在访问策略中设置一堆用户/服务主体/安全组,更好的选择是使用ARM template,您可以将访问策略部署到现有的密钥保管库,而无需重新部署整个密钥保管库模板,请参阅sample。在这个示例中,只有一个对象,要添加多个对象,只需像下面这样添加它们,将tenantId、objectId、permissions 修改为您的。
"resources": [
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('keyVaultName'), '/add')]",
"apiVersion": "2019-09-01",
"properties": {
"accessPolicies": [
{
"tenantId": "xxxxxxx",
"objectId": "xxxxxxx",
"permissions": {
"keys": [
"Get",
"List",
"Update",
"Create",
"Import",
"Delete",
"Recover",
"Backup",
"Restore",
"UnwrapKey",
"WrapKey"
],
"secrets": [
"Get",
"List",
"Set",
"Delete",
"Recover",
"Backup",
"Restore"
],
"certificates": [
"Get",
"List",
"Update",
"Create",
"Import",
"Delete",
"Recover",
"Backup",
"Restore",
"ManageContacts",
"ManageIssuers",
"GetIssuers",
"ListIssuers",
"SetIssuers",
"DeleteIssuers"
]
}
},
{
"tenantId": "xxxxxxx",
"objectId": "xxxxxxx",
"permissions": {
"keys": [
"Get",
"List",
"Update",
"Create",
"Import",
"Delete",
"Recover",
"Backup",
"Restore"
],
"secrets": [
"Get",
"List",
"Set",
"Delete",
"Recover",
"Backup",
"Restore"
],
"certificates": [
"Get",
"List",
"Import",
"Update",
"Create"
]
}
},
{
"tenantId": "xxxxxxx",
"objectId": "xxxxxxx",
"permissions": {
"keys": [
"Get",
"List",
"Update",
"Create",
"Import",
"Delete",
"Recover",
"Backup",
"Restore"
],
"secrets": [
"Get",
"List",
"Set",
"Delete",
"Recover",
"Backup",
"Restore"
],
"certificates": [
"Get",
"List",
"Update",
"Create",
"Import",
"Delete",
"Recover",
"Backup",
"Restore",
"ManageContacts",
"ManageIssuers",
"GetIssuers",
"ListIssuers",
"SetIssuers",
"DeleteIssuers"
]
}
},
{
"tenantId": "xxxxxxx",
"objectId": "xxxxxxx",
"permissions": {
"secrets": [
"List",
"Get"
],
"keys": [],
"certificates": []
}
}
]
}
}
]