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

本文档介绍了如何以非根用户身份创建和运行 Batch 作业。

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

准备工作

  1. 如果您之前未使用过 Batch,请查看开始使用 Batch 并完成项目和用户的前提条件,以启用 Batch。
  2. 如果您尚未启用 OS Login API,请运行以下命令来启用:

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

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

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

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

通过执行以下操作,创建一个通过您自己的用户账号运行可执行文件的 Batch 作业:

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

"runAsNonRoot": true

例如,以非根用户身份运行可执行文件的作业的 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"
    }
}

后续步骤