以非 root 用户身份创建和运行作业

本文档介绍了如何以非 root 用户身份创建和运行批处理作业。

默认情况下,Batch 会以 root 用户身份执行可运行文件。如果您希望 Batch 以非 root 用户身份执行可运行文件(例如,运行不允许 root 用户或不符合安全要求的应用),请创建使用 OS Login 的批处理作业。在批处理作业中启用 OS Login 后,OS Login 会在作业运行的虚拟机上为您配置用户账号。然后,作业中的所有可运行作业将由虚拟机上的用户账号(而非 root 用户)执行。

准备工作

  1. 如果您之前未使用过批处理功能,请参阅开始使用批处理,并完成适用于项目和用户的前提条件,以启用批处理功能。
  2. 如果您尚未启用 OS Login API,请运行以下命令:

    gcloud services enable oslogin.googleapis.com
    
  3. 如需获得以非 root 用户身份创建和运行作业所需的权限,请让管理员向您授予以下 IAM 角色:

    如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建以非 root 用户身份运行的作业

请执行以下操作,创建通过您自己的用户账号运行可执行文件的批处理作业:

使用 Google Cloud CLI 或 REST API 创建作业,其中 JSON 文件正文中包含设置为 truerunAsNonRoot 字段

"runAsNonRoot": true

例如,以非 root 用户身份运行可执行文件的作业将具有类似如下内容的 JSON 配置文件:

{
    "taskGroups": [
      {
        "taskSpec": {
          "runnables": [
            {
              "script": {
                "text": "echo Hello World! This is task $BATCH_TASK_INDEX executed by $(whoami)."
              }
            }
          ]
        },
        "taskCount": 3,
        "runAsNonRoot": true
      }
    ],
    "logsPolicy": {
        "destination": "CLOUD_LOGGING"
    }
}

后续步骤