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

将自定义角色分配给Azure上的打包程序应用程序,azure,packer,Azure,Packer,我们目前有一个Packer企业应用程序,该应用程序在订阅级别与参与者角色一起运行 但是,我们觉得应用程序的范围太大了。相反,我们希望只为一个资源组提供it贡献者级别的访问权限 因此,Packer将能够创建其临时资源,以便仅在一个资源组中创建图像,而不需要对订阅中的任何其他内容拥有权限 我通过JSON创建了一个自定义角色,如下所示:(我已更改为示例订阅ID和资源名称) 然后,我使用Azure CLI创建了角色: az role definition create --role-definition

我们目前有一个Packer企业应用程序,该应用程序在订阅级别与参与者角色一起运行

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

因此,Packer将能够创建其临时资源,以便仅在一个资源组中创建图像,而不需要对订阅中的任何其他内容拥有权限

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

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

az role definition create --role-definition PackerRole.json --subscription 123456789
但是,我不知道如何将其分配给封隔器应用程序。它无法分配,也不会出现在订阅作用域中——可能是因为自定义角色的作用域只有1个资源组

我已尝试转到Azure Active Directory-->应用程序注册-->打包器,但这里没有地方可以分配我自定义创建的角色。“角色和管理员”选项卡不清楚,因为这里没有自定义角色,创建新角色似乎只允许microsoft.directory/applications格式的权限操作/

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


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

您不应该为此需要自定义角色。参与者角色是内置的,可以分配给任何作用域。无法查看自定义角色的原因是缺少对象根中的
“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
az角色分配创建--受让人--角色贡献人--范围/订阅/123456789/resourceGroups/packer--受让人主体类型ServicePrincipal

如果您想使用该门户,可以转到资源组->打包器->访问控制(IAM)->角色分配->添加

非常感谢iCustom提示。你关于角色分配的信息非常有用。我现在已经准备好了。再次感谢杰米!
az role assignment create --assignee <packer-service-principal> --role Contributor --scope /subscriptions/123456789/resourceGroups/packer --assignee-principal-type ServicePrincipal