azure - 如何在天蓝色批处理帐户中指定任务的用户身份“池默认用户(管理员)”?
问题描述
我正在尝试从 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
但似乎我不明白它应该是什么样子的共同点。
解决方案
表示没有足够的权限来执行此操作
当您使用az batch account login -g $resourceGroup -n $batchAccountName
登录时,它使用Auzre AD 身份验证,它使用您登录时使用的帐户的凭据az login
。
如果您使用带--shared-key-auth
参数的命令,它使用共享密钥身份验证,但您的帐户也需要权限才能执行Microsoft.Batch/batchAccounts/listKeys/action
操作。起初我认为Reader
角色就足够了,但根据我的测试,它没有列出批处理帐户密钥的权限。
所以要解决这个问题,你可以让你Owner
的subscription/batch account
用户帐户az login
作为Owner
或Contributor
角色登录。导航到门户中的订阅/批处理帐户 -> 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
参数,根据您的要求,在文件中指定elevationLevel
withnonadmin
或,如下所示。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