将自定义角色分配给 Azure 上的 Packer 应用程序

Assigning a Custom Role to an Packer Application on Azure

我们目前有一个 Packer 企业应用程序,它是 运行 订阅级别的贡献者角色。

但是,我们觉得应用程序的范围太大了。相反,我们只想为 一个 资源组授予它贡献者级别的访问权限。

因此,Packer 将能够在一个资源组中创建用于创建图像的临时资源,并且不需要订阅中其他任何内容的权限。

我通过 JSON 创建了一个自定义角色,如下所示:(我已更改为示例订阅 ID 和资源名称)

{
  "assignableScopes": [
    "/subscriptions/123456789/resourceGroups/packer"
  ],
  "description": "Custom role for packer app, with granular permssions for packer resource group",
  "id": "/subscriptions/123456789/providers/Microsoft.Authorization/roleDefinitions/123456-1234-1234-1234-12345678",
  "name": "123456-1234-1234-1234-12345678",
  "permissions": [
    {
      "actions": [
        "Microsoft.Authorization/*/Delete",
        "Microsoft.Authorization/*/Write",
        "Microsoft.Authorization/elevateAccess/Action",
        "Microsoft.Blueprint/blueprintAssignments/write",
        "Microsoft.Blueprint/blueprintAssignments/delete"
      ],
      "dataActions": [],
      "notActions": [],
      "notDataActions": []
    }
  ],
  "roleName": "PackerRole",
  "roleType": "CustomRole",
  "type": "Microsoft.Authorization/roleDefinitions"
} 

然后我使用 Azure CLI 创建了角色:

az role definition create --role-definition PackerRole.json --subscription 123456789

但是,我不知道如何将它分配给 Packer 应用程序。它无法分配,也不会出现在订阅范围内——大概是因为自定义角色只有 1 个资源组的范围。

我尝试转到 Azure Active Directory --> 应用程序注册 --> Packer,但这里没有任何地方可以分配我自定义创建的角色。 'Roles and Administrators' 选项卡让我不清楚,因为我们的自定义角色 none 在这里,并且创建新角色似乎只允许 microsoft.[=35= 格式的权限操作]/

查看此应用程序的托管应用程序页面也没有提供任何答案,只允许用户和组分配。

我已经搜索了文档,但到目前为止还没有找到与此用例相关的任何内容。

您不需要为此自定义角色。贡献者角色是内置的,可以分配给任何范围。看不到您的自定义角色的原因是您缺少对象根目录中的 "isCustom": true 设置。

如果您希望在资源组级别分配贡献者,您可以使用门户、PowerShell、Azure CLI,甚至是 REST API。这称为 角色分配 。 由于您似乎在使用 CLI,因此您可以按如下方式在 RG 范围内分配角色:

假设您的应用程序 运行 使用服务主体:

az role assignment create --assignee <packer-service-principal> --role Contributor --scope /subscriptions/123456789/resourceGroups/packer --assignee-principal-type ServicePrincipal

如果你想使用Portal,你可以去Resource Groups -> packer -> Access control (IAM) -> Role assignments -> Add