gpt4 book ai didi

azure - 创建 Azure 策略以阻止将角色分配给某些主体类型,由指定用户创建的情况除外

转载 作者:行者123 更新时间:2023-12-02 06:08:27 25 4
gpt4 key购买 nike

我要求订阅所有者只能为应用程序创建角色分配,而不能为用户和组创建角色分配。对于允许为用户和组创建角色分配的某些身份应该有一个异常(exception)。

以下策略适用于现有角色分配。由指定 ID 创建的组/用户的现有角色分配是合规的。由其他主体创建的用户/组的现有角色分配不合规。太棒了!

但是,当指定的 ID 之一创建新的角色分配时,它会被拒绝。

{
"properties": {
"displayName": "eslz-restrict role assigments",
"description": "Restrict role assignments to SPNs only, except when granted by specified ids",
"mode": "All",
"metadata": {
"version": "1.0.0",
"category": "RoleAssignments"
},
"parameters": {},
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Authorization/roleAssignments"
},
{
"anyOf": [
{
"field": "Microsoft.Authorization/roleAssignments/principalType",
"equals": "User"
},
{
"field": "Microsoft.Authorization/roleAssignments/principalType",
"equals": "Group"
}
]
},
{
"anyOf": [
{
"not": {
"field": "Microsoft.Authorization/roleAssignments/createdBy",
"in": [
"bcd054a8-7cbf-4317-a673-93d32b7e296a",
"13f29b01-7105-4f63-bd56-259ce07df96d"
]
}
},
{
"not": {
"field": "Microsoft.Authorization/roleAssignments/updatedBy",
"in": [
"bcd054a8-7cbf-4317-a673-93d32b7e296a",
"13f29b01-7105-4f63-bd56-259ce07df96d"
]
}
}
]
}
]
},
"then": {
"effect": "deny"
}
}
}
}

最佳答案

不幸的是 Microsoft.Authorization/roleAssignments/createdByMicrosoft.Authorization/roleAssignments/updatedBy 在这种情况下不可用,现在查找这些还为时过早关于尚未创建的对象的某种值。您可以通过调用 az role assignment create --assignee objectName --role Contributor --scope/subscriptions/000-0030303-0303/resourceGroups/30303030 来亲自查看。这将产生一个 PolicyViolation 响应,其中包含详细的 evaluationDetails ,其中一部分如下所示(如果您尝试通过门户网站,您将看不到如此详细的信息):

{
"result": "False",
"expressionKind": "Field",
"expression": "Microsoft.Authorization/roleAssignments/createdBy",
"path": "properties.createdBy",
"targetValue": [
"5000-0-0-0-0-0--0000"
],
"operator": "In"
}

如您所见,它缺少 expressionValue。这仅仅意味着它无法获取您的表达式的值。

确实找到值的评估看起来像这样:

 {
"result": "True",
"expressionKind": "Field",
"expression": "type",
"path": "type",
"expressionValue": "Microsoft.Authorization/roleAssignments",
"targetValue": "Microsoft.Authorization/roleAssignments",
"operator": "Equals"
},

createdByupdatedBy 以及 createdOnupdatedOn 等属性都受到此问题的影响(我只检查过roleAssignments 的别名,其他对象也有类似的别名,但我没有测试这些)。这些有用的唯一场景是当您想要审核现有分配时。您会注意到这会正常工作,因为当实际编写作业时,它显然具有所有值。

我认为微软处理的逻辑是:只有当 createdOn 属性已知时,我们才能假设 createdBy 属性是什么。并且在策略评估期间永远无法知道createdOn,因为它永远无法确切知道评估完成的时间。也许它有缺陷,但这就是你得到的。

关于azure - 创建 Azure 策略以阻止将角色分配给某些主体类型,由指定用户创建的情况除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74502376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com