このドキュメントでは、root ユーザー以外として Batch ジョブを作成して実行する方法について説明します。
デフォルトでは、Batch は root ユーザーとして runnable を実行します。Batch で root 以外のユーザーとして runnable を実行する場合(たとえば、root ユーザーを許可しないアプリケーションを実行する場合や、セキュリティ要件を満たす場合など)、OS Login を使用する Batch ジョブを作成します。Batch ジョブで OS Login を有効にすると、OS Login によってジョブが実行される VM に対するユーザー アカウントが構成されます。その後、ジョブ内のすべての runnable は、root ユーザーではなく、VM 上のユーザー アカウントによって実行されます。
準備
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
まだ行っていない場合は、次のコマンドを実行して OS Login API を有効にします。
gcloud services enable oslogin.googleapis.com
-
root ユーザー以外としてジョブを作成して実行するための必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
プロジェクトのバッチジョブ編集者(
roles/batch.jobsEditor
) -
ジョブのサービス アカウントのサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)。デフォルトでは Compute Engine のデフォルト サービス アカウントです。 -
プロジェクトに対する Compute OS Login(
roles/compute.osLogin
)または Compute OS 管理者ログイン(roles/compute.osAdminLogin
) -
プロジェクトとは異なる組織に所属している場合: プロジェクトの組織に対するCompute OS Login の外部ユーザー(
roles/compute.osLoginExternalUser
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
-
プロジェクトのバッチジョブ編集者(
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"
}
}
次のステップ
- ジョブの作成または実行に問題がある場合は、トラブルシューティングをご覧ください。
- ジョブとタスクを表示する。
- 別のジョブ作成オプションを学習する。