root ユーザー以外としてジョブを作成して実行する

このドキュメントでは、root ユーザー以外として Batch ジョブを作成して実行する方法について説明します。

デフォルトでは、Batch は root ユーザーとして runnable を実行します。Batch で root 以外のユーザーとして runnable を実行する場合(たとえば、root ユーザーを許可しないアプリケーションを実行する場合や、セキュリティ要件を満たす場合など)、OS Login を使用する Batch ジョブを作成します。バッチジョブで OS Login を有効にすると、OS Login によって、ジョブが実行される VM にユーザー アカウントが構成されます。その後、ジョブ内のすべての runnable は、root ユーザーではなく、VM 上のユーザー アカウントによって実行されます。

準備

  1. Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
  2. まだ有効にしていない場合は、次のコマンドを実行して OS Login API を有効にします。

    gcloud services enable oslogin.googleapis.com
    
  3. root ユーザー以外としてジョブを作成して実行するための必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

root ユーザー以外として実行されるジョブを作成する

次の手順で、独自のユーザー アカウントで実行可能ファイルを実行する Batch ジョブを作成します。

Google Cloud CLI または REST API を使用して、runAsNonRoot フィールドを含むジョブを作成し、JSON ファイルの本文において、true を設定します。

"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"
    }
}

次のステップ