首页 > 解决方案 > 如何在天蓝色批处理帐户中指定任务的用户身份“池默认用户(管理员)”?

问题描述

我正在尝试从 Powershell 脚本创建几个批处理任务并寻找如何指定用户身份。Dotnet 核心 API 支持此指定,但 Azure-CLI 不支持。

当我在下面运行脚本时,我的 PowerShell 脚本出现错误,提示没有足够的权限来执行此操作:

az batch account login -g $resourceGroup -n $batchAccountName 
az batch task create --job-id $BatchJobId `
    --task-id "DeployIdHere" `
    --command-line $cmdCommand `
    --account-name $batchAccountName `
    --debug `
    --verbose `
    --output table

我假设找到类似的东西,--elevation-level Admin但似乎我不明白它应该是什么样子的共同点。

标签: azureazure-cliazure-batch

解决方案


表示没有足够的权限来执行此操作

当您使用az batch account login -g $resourceGroup -n $batchAccountName登录时,它使用Auzre AD 身份验证,它使用您登录时使用的帐户的凭据az login

如果您使用带--shared-key-auth参数的命令,它使用共享密钥身份验证,但您的帐户也需要权限才能执行Microsoft.Batch/batchAccounts/listKeys/action操作。起初我认为Reader角色就足够了,但根据我的测试,它没有列出批处理帐户密钥的权限。

所以要解决这个问题,你可以让你Ownersubscription/batch account用户帐户az login作为OwnerContributor角色登录。导航到门户中的订阅/批处理帐户 -> Access control (IAM)-> Add-> Add role assignment-> 搜索您的用户帐户(或服务主体),将其添加为Owner/Contributor角色,详细信息在此处。然后使用az account clear清除本地缓存并az batch account login -g $resourceGroup -n $batchAccountName再次运行,az batch task create将正常工作。

如何在azure批处理帐户中指定任务的用户身份“池默认用户(管理员)”?

方法是使用--json-file参数,根据您的要求,在文件中指定elevationLevelwithnonadmin或,如下所示。admin.json

batch.json文件:

{
  "id": "task1",
  "commandLine": "bash -c 'echo hello'",
  "userIdentity": {
    "autoUser": {
      "scope": "task",
      "elevationLevel": "admin"
    }
  }
}

样品

az batch task create --job-id myjob --json-file C:\Users\joyw\Desktop\batch.json

在此处输入图像描述


推荐阅读