使用 ARM 模板的资源级 RBAC 不起作用

问题描述 投票:0回答:1

我们尝试在 Azuredevops 中创建一个自动化管道,以便为任何类型的资源分配资源级别的角色。并在下面的模板中用于该目的。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "roleDefinitionId": {
        "type": "string"
      },
      "principalId": {
        "type": "string"
      }
    },
    "variables": {
      "roleAssignmentName": "[guid(parameters('principalId'), parameters('roleDefinitionID'), resourceGroup().id)]"
    },
    "resources": [
      {
        "type": "Microsoft.OperationalInsights/querypacks",
        "apiVersion": "2021-04-01-preview",
        "name": "[variables('roleAssignmentName')]",
        "properties": {
          "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionId'))]",
          "principalId": "[parameters('principalId')]"
        }
      }
    ]
  }

参数.json

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": { 
       "roleDefinitionId": {
         "value": "#{roleDefinitionId}#"
       },
       "principalId": {
         "value": "#{principalId}#"
       }
                            
    } 
  }

创建了 Azuredevops 任务来替换参数文件“principalid”和“roledefinitionid”id,并且在使用更新的模板执行 Arm 部署组任务时失败。

注意:在上面的示例中,我尝试将贡献者分配仅分配给特定组的特定资源 qpck-1。

有没有办法使用相同的模板在资源级别为不同类型的资源分配角色。

azure azure-devops azure-resource-manager azure-rm-template
1个回答
0
投票

模板明确显示了资源

querypacks
,但是,它应该被参数化

所以你可以改变

 "type": "Microsoft.OperationalInsights/querypacks"

"type": "[parameters('resourceType')]"

并在参数文件中添加以下内容

    "resourceType": {
        "value": "#{resourceType}#"
    },
    "resourceName": {
        "value": "#{resourceName}#"
    }

其中

resourceType
可以是您需要的任何类型,例如
"Microsoft.Compute/virtualMachines"
,而
resourceName
云可以是虚拟机的名称,例如
ODS_VM

顺便说一句,最好提供错误消息以确定原因和解决方案。

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.