【问题标题】:Add RoleAssignment to a Resource Group programmatically以编程方式将 RoleAssignment 添加到资源组
【发布时间】:2020-12-15 10:54:00
【问题描述】:

我正在用 Java 实现一个应用程序,该应用程序可以通过安全主体访问 Azure 并创建一些资源组。 在给定通过配置指定的 AD 组名称的情况下,我想将该 AD 组的特定角色分配添加到资源组。 通过 Azure Java SDK 是否可行,或者我需要使用 REST API? 服务主体需要哪些权限:

  1. 根据名称读取 AD 组
  2. 为该 AD 组新创建的资源组分配 RolePermission

我需要询问我们的 ActiveDirectory 团队必须为我的服务主体启用哪个权限。

TIA 最好的问候

【问题讨论】:

    标签: active-directory roles azure-sdk


    【解决方案1】:

    我不知道我们是否可以使用 java sdk 来实现这个需求,但我知道我们可以请求 rest api 来实现它。请参考以下步骤:

    1.我们需要通过请求thisapi:GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?api-version=2015-07-01 获取角色定义的id

    URI 参数{scope} 应该类似于/subscriptions/{your subscription id}/resourceGroups/{your resource group name}

    例如,这里我得到了“Contributor”角色的 id。

    2. 然后请求this api:PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentName}?api-version=2015-07-01 创建角色分配(将资源组贡献者的角色分配给您的广告组)。

    {scope} 应该是 /subscriptions/{your subscription id}/resourceGroups/{your resource group name},您可以根据需要指定 {roleAssignmentName}(应该是有效的 GUID)。

    请求正文应如下所示:

    {
        properties: {
        "roleDefinitionId": "{the id of Contributor role which we get in step 1}",
        "principalId": "{the object id of your AD group}"
      }
    }
    

    3. 完成上面的两个api请求,我们可以发现AD组已经被分配了资源组的“Contributor”角色。

    【讨论】:

    • 嗨,沉沉,我能够执行第一个 REST GET API,但是当我尝试为组分配贡献者角色时,我得到了 403 Forbidden 结果。您知道必须为应用程序服务主体分配哪个权限才能执行此 API?
    • @FlavioBarisone 如果要进行分配操作,您至少应该首先成为资源组的所有者。如果仍然可以进行分配操作,可能您需要成为订阅的所有者。
    • @FlavioBarisone 请问您的问题是否已解决?如果解决方案有效,您能否请accept 将其作为答案(单击我的答案旁边的复选标记以将其从灰色切换为已填充)。先谢谢了~
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2012-09-09
    • 1970-01-01
    相关资源
    最近更新 更多