이 문서에서는 루트가 아닌 사용자로 Batch 작업을 만들고 실행하는 방법을 설명합니다.
기본적으로 Batch는 실행 파일을 루트 사용자로 실행합니다. Batch에서 실행 가능 항목을 루트가 아닌 사용자로 실행하려면(예: 루트 사용자를 허용하지 않는 애플리케이션을 실행하거나 보안 요구사항을 충족하기 위해) OS 로그인을 사용하는 Batch 작업을 만듭니다. Batch 작업에서 OS 로그인을 사용 설정하면 OS 로그인이 작업이 실행되는 VM에서 사용자 계정을 구성합니다. 그러면 작업의 모든 실행 파일은 루트 사용자가 아닌 VM의 사용자 계정에 의해 실행됩니다.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
아직 OS Login API를 사용 설정하지 않았다면 다음 명령어를 실행하여 사용 설정합니다.
gcloud services enable oslogin.googleapis.com
-
루트가 아닌 사용자로 작업을 만들고 실행하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 일괄 작업 편집자(
roles/batch.jobsEditor
) -
기본적으로 기본 Compute Engine 서비스 계정인 작업의 서비스 계정에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
) -
프로젝트에 대한 Compute OS 로그인(
roles/compute.osLogin
) 또는 Compute OS 관리자 로그인(roles/compute.osAdminLogin
) -
프로젝트와 다른 조직에 있는 경우: 프로젝트 조직의 Compute OS 로그인 외부 사용자(
roles/compute.osLoginExternalUser
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
프로젝트에 대한 일괄 작업 편집자(
루트가 아닌 사용자로 실행되는 작업 만들기
다음을 수행하여 자체 사용자 계정을 통해 실행 파일을 실행하는 Batch 작업을 만듭니다.
Google Cloud CLI 또는 REST API를 사용하여 JSON 파일의 본문에서 true
로 설정된 runAsNonRoot
필드가 포함된 작업을 만듭니다.
"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"
}
}
다음 단계
- 작업을 만들거나 실행하는 데 문제가 있는 경우 문제 해결을 참조하기
- 작업 및 태스크 보기
- 작업 만들기 옵션 자세히 알아보기