限制标签编辑,同时是资源组的所有者
Restricting Tag Editing, while being Owner of Resource Group
大家好,我有一个订阅,我想为人们创建“沙盒”环境。我的目标是给人们一个资源组,并让他们成为资源组的所有者。他们可以在这个小资源组中做任何他们想做的事情,但不能在订阅中触及它之外的任何东西。当然,他们可以部署的资源有一些限制,但就我的目的而言,这是一个可以接受的解决方案。
我的自动化流程会创建一个 RG,然后向其添加一些标签。谁拥有它(电子邮件)以及创建时间(创建日期)。 30 天后,我想浏览并敬酒任何 30 天前的资源组。访问此环境是有时间限制的。我想我可以读取标签并根据标签日期删除。
我需要一种方法来防止 RG 的所有者以任何方式编辑标签。
输入自定义角色 - 资源组所有者
{
"id": "/subscriptions/<sub-guid>/providers/Microsoft.Authorization/roleDefinitions/1cae04e5-3bd2-4d8d-9c3b-ef5bd8e58408",
"properties": {
"roleName": "Resource Group Owner",
"description": "Assigned at the RG level owns everything within the RG, with the exception of editing tags.",
"assignableScopes": [
"/subscriptions/<sub-guid>"
],
"permissions": [
{
"actions": [
"*"
],
"notActions": [
"Microsoft.Resources/tags/write",
"Microsoft.Resources/tags/delete"
],
"dataActions": [],
"notDataActions": []
}
]
}
}
根据文档,这是正确的。我已经指定了允许的操作,然后在分配的范围(在本例中为资源组)上添加了排除的操作,这些操作应该从允许的操作中减去。我不在乎他们是否可以在 RG 内的资源上添加或删除标签,我只是不想让他们弄乱 RG 标签。
将此角色分配给用户后,他们只能在分配给他们的订阅中看到 RG,但他们仍然可以编辑分配给它的标签。
我做错了什么?
我研究了 Azure 蓝图的拒绝分配,但没有任何示例说明如何在任何地方创建拒绝分配。有关于属性的文档,但没有显示它在蓝图中的样子。
感谢您的帮助。
虽然您在 notActions
中放置了 Microsoft.Resources/tags/write
和 Microsoft.Resources/tags/delete
,但还有另一个资源提供程序操作 Microsoft.Resources/subscriptions/resourceGroups/write
允许用户编辑标签。
您也需要将其放入notActions
。
尽管 document 指出:Microsoft.Resources/subscriptions/resourceGroups/write
是为了 创建或更新资源组 ,但我可以在该资源组中创建任何其他 Azure 资源。
从我的测试结果来看,我认为限制的部分只是更新资源组本身。
您可以试试看是否符合您的要求
大家好,我有一个订阅,我想为人们创建“沙盒”环境。我的目标是给人们一个资源组,并让他们成为资源组的所有者。他们可以在这个小资源组中做任何他们想做的事情,但不能在订阅中触及它之外的任何东西。当然,他们可以部署的资源有一些限制,但就我的目的而言,这是一个可以接受的解决方案。
我的自动化流程会创建一个 RG,然后向其添加一些标签。谁拥有它(电子邮件)以及创建时间(创建日期)。 30 天后,我想浏览并敬酒任何 30 天前的资源组。访问此环境是有时间限制的。我想我可以读取标签并根据标签日期删除。
我需要一种方法来防止 RG 的所有者以任何方式编辑标签。
输入自定义角色 - 资源组所有者
{
"id": "/subscriptions/<sub-guid>/providers/Microsoft.Authorization/roleDefinitions/1cae04e5-3bd2-4d8d-9c3b-ef5bd8e58408",
"properties": {
"roleName": "Resource Group Owner",
"description": "Assigned at the RG level owns everything within the RG, with the exception of editing tags.",
"assignableScopes": [
"/subscriptions/<sub-guid>"
],
"permissions": [
{
"actions": [
"*"
],
"notActions": [
"Microsoft.Resources/tags/write",
"Microsoft.Resources/tags/delete"
],
"dataActions": [],
"notDataActions": []
}
]
}
}
根据文档,这是正确的。我已经指定了允许的操作,然后在分配的范围(在本例中为资源组)上添加了排除的操作,这些操作应该从允许的操作中减去。我不在乎他们是否可以在 RG 内的资源上添加或删除标签,我只是不想让他们弄乱 RG 标签。
将此角色分配给用户后,他们只能在分配给他们的订阅中看到 RG,但他们仍然可以编辑分配给它的标签。
我做错了什么?
我研究了 Azure 蓝图的拒绝分配,但没有任何示例说明如何在任何地方创建拒绝分配。有关于属性的文档,但没有显示它在蓝图中的样子。
感谢您的帮助。
虽然您在 notActions
中放置了 Microsoft.Resources/tags/write
和 Microsoft.Resources/tags/delete
,但还有另一个资源提供程序操作 Microsoft.Resources/subscriptions/resourceGroups/write
允许用户编辑标签。
您也需要将其放入notActions
。
尽管 document 指出:Microsoft.Resources/subscriptions/resourceGroups/write
是为了 创建或更新资源组 ,但我可以在该资源组中创建任何其他 Azure 资源。
从我的测试结果来看,我认为限制的部分只是更新资源组本身。
您可以试试看是否符合您的要求