如何将应用程序角色分配给 ARM 模板中的托管标识
How to assign an application role to a managed identity in the ARM template
我有以下场景。
我的应用程序注册定义了一组应用程序角色
我通过 ARM 模板
使用系统分配的托管标识动态部署规模集
在部署期间,我想将该身份分配给上面定义的特定应用程序角色之一
我使用以下资源更新我的部署模板
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2017-09-01",
"name": "<random Guid>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachineScaleSets/', '<scaleset name>')]"
],
"properties": {
"roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '<app role guid>')]",
"principalId": "[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets', '<scaleset name>'), '2019-07-01', 'Full').Identity.principalId]",
"scope": "[resourceGroup().id]"
}
}
但是部署失败并出现以下异常
The specified role definition with ID '<app role guid>' does not exist.
我的假设是应用程序角色定义 ID 的格式不正确,但我无法在 ARM 模板中找到此类 approle 分配的任何示例。
这可能吗?
这是您如何执行此操作的示例
https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-template#new-service-principal
您需要添加 Serviceprincipal 的 principalType,这是因为根据文档,创建新的 serviceprincipal 时很容易出现延迟,因此如果您不这样做,它将失败。
编辑:抱歉,我没有意识到您正在尝试进行应用角色分配。
我认为 arm 模板目前不支持此功能。您可以使用角色分配分配的 rbac 角色不是应用程序角色。例如。您不能在 arm 模板中分配应用程序角色,目前仅适用于 azure 内置的 azure 资源角色,不适用于应用程序或 azure 广告角色。
供参考https://github.com/MicrosoftDocs/azure-docs/issues/51914#issuecomment-612867662
您可能能够变通并执行类似操作的唯一方法可能是通过部署脚本,如果可能的话,该脚本在 arm 模板中运行 powershell 命令。
我有以下场景。
我的应用程序注册定义了一组应用程序角色
我通过 ARM 模板
使用系统分配的托管标识动态部署规模集
在部署期间,我想将该身份分配给上面定义的特定应用程序角色之一
我使用以下资源更新我的部署模板
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2017-09-01",
"name": "<random Guid>",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachineScaleSets/', '<scaleset name>')]"
],
"properties": {
"roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '<app role guid>')]",
"principalId": "[reference(resourceId('Microsoft.Compute/virtualMachineScaleSets', '<scaleset name>'), '2019-07-01', 'Full').Identity.principalId]",
"scope": "[resourceGroup().id]"
}
}
但是部署失败并出现以下异常
The specified role definition with ID '<app role guid>' does not exist.
我的假设是应用程序角色定义 ID 的格式不正确,但我无法在 ARM 模板中找到此类 approle 分配的任何示例。
这可能吗?
这是您如何执行此操作的示例 https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-template#new-service-principal
您需要添加 Serviceprincipal 的 principalType,这是因为根据文档,创建新的 serviceprincipal 时很容易出现延迟,因此如果您不这样做,它将失败。
编辑:抱歉,我没有意识到您正在尝试进行应用角色分配。 我认为 arm 模板目前不支持此功能。您可以使用角色分配分配的 rbac 角色不是应用程序角色。例如。您不能在 arm 模板中分配应用程序角色,目前仅适用于 azure 内置的 azure 资源角色,不适用于应用程序或 azure 广告角色。 供参考https://github.com/MicrosoftDocs/azure-docs/issues/51914#issuecomment-612867662
您可能能够变通并执行类似操作的唯一方法可能是通过部署脚本,如果可能的话,该脚本在 arm 模板中运行 powershell 命令。