如何创建范围为某种资源类型的Azure角色分配

时间:2020-01-07 16:02:58

标签: azure azure-active-directory rbac azure-rbac

我正在尝试创建一个Azure角色分配,该角色将User Access Administrator角色分配给服务主体,但仅分配给Azure Data Factory资源。

我看到了大量关于按订阅,资源组甚至资源设置作用域的文档,但无法弄清楚如何为特定类型的所有资源设置作用域。

我尝试了此PowerShell命令,该命令可以成功运行,但没有达到预期的效果。服务主体仍然无法在ADF资源上执行该角色的操作。

New-AzRoleAssignment -ObjectId ddddddd-dddd-dddd-dddd-dddddddddddd -RoleDefinitionId 18d7d88d-d35e-4fb5-a5c3-7773c20a72d9 -Scope "/providers/Microsoft.DataFactory"

Powershell command runs successfully

我也尝试在范围内尝试使用通配符,但这似乎不受支持:/subscriptions/dddddddd-dddd-dddd-dddd-dddddddddddd/resourceGroups/*/providers/Microsoft.DataFactory/dataFactories/*

这是我已经阅读的文档:

2 个答案:

答案 0 :(得分:1)

角色分配用于为用户分配预定义或自定义角色“角色定义”。

角色定义是定义角色范围的角色。角色的范围必须是订阅,资源组和资源。您无法定义资源的类型。它更像一个或多个位置。

Scope structure

RBAC的结构范围: https://docs.microsoft.com/en-us/azure/role-based-access-control/overview#scope

如何创建自定义角色: https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles

对于您的情况,如果要授予用户处理所有DataFactory上的IAM的权限,则需要手动定义每个datafactory范围。然后使用Microsoft.Authorization提供程序中的操作:https://docs.microsoft.com/en-us/azure/role-based-access-control/resource-provider-operations#microsoftauthorization

在定义分配范围时,可以使用-Scope <String>参数或以下参数的组合来定义它。

   -ResourceGroupName <String>
   -ResourceName <String>
   -ResourceType <String>

资源类型“ -ResourceType”。例如Microsoft.Network/virtualNetworks。应该仅与ResourceGroupName,ResourceName和(可选)ParentResource参数一起使用,以标识资源的相对URI的形式构造层次结构范围。

有关更多详细信息,请参见:https://docs.microsoft.com/en-us/powershell/module/az.resources/new-azroleassignment?view=azps-3.3.0

答案 1 :(得分:0)

现有答案几乎是正确的,但是您可以做一些事情使它起作用:

  1. 最明显的是将所有数据工厂限制为一个资源组(或几个),并向这些资源组授予SP所有者权限(或创建自定义RBAC角色)。
  2. 使用简单的脚本动态分配这些权限

如果不能将所有数据工厂放在同一资源组\资源组集中。脚本看起来像这样(“伪”代码,未经测试,但可以为您提供想法):

0    0.217322
1    0.045818
2    0.038517
3    0.007593
4    0.000658
5    0.000115

并按计划运行

相关问题