将自定义角色分配给 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
我们目前有一个 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