如何在Azure批处理帐户中指定任务的用户身份“ Pool默认用户(Admin)”?

时间:2019-12-24 14:39:00

标签: azure azure-cli azure-batch

我正在尝试从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的东西,但似乎我不了解它的共同点。

2 个答案:

答案 0 :(得分:0)

您可以使用--json-file标志通过在命令az batch task create --job-id myjobtest --json-file .\task.json中指定用户身份来创建任务。

有关格式,请参见https://github.com/Azure/azure-docs-cli-python-samples/blob/master/batch/run-job/tasks.json

您还可以通过管理员添加多个任务。任务JSON文件将如下所示:

{
    "id": "mytasktest123",
    "commandLine": "/bin/bash -c \"sudo ls\"",
    "waitForSuccess": true,
    "userIdentity": {
        "autoUser": {
          "elevationLevel": "admin",
          "scope": "pool"
        },
        "userName": null
      }
    }

结果 enter image description here

让我知道是否需要进一步的帮助。

答案 1 :(得分:0)

  

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

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

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

因此,要解决此问题,您可以让Owner中的subscription/batch account提供以az login或{{1} }角色。导航至门户中的订阅/批量帐户-> Owner-> Contributor-> Access control (IAM)->搜索您的用户帐户(或服务主体),并将其添加为{{1 }} / Add角色,详细信息here。然后使用az account clear清除本地缓存并再次运行Add role assignmentOwner会正常工作。

  

如何在Azure批处理帐户中指定任务的用户身份“ Pool默认用户(Admin)”?

方法是使用Contributor参数,根据您的要求,在az batch account login -g $resourceGroup -n $batchAccountName文件中用az batch task create--json-file指定elevationLevel,如下所示。

nonadmin文件:

admin

示例

.json

enter image description here