이 문서에서는 작업의 VM이 액세스할 수 있는 리소스 및 애플리케이션에 영향을 주는 Batch 작업의 서비스 계정을 지정하는 방법을 설명합니다. 커스텀 서비스 계정을 지정하지 않으면 작업이 기본적으로 프로젝트의 모든 VM에 자동으로 연결되는 Compute Engine 기본 서비스 계정을 사용하도록 지정됩니다. 따라서 커스텀 서비스 계정을 사용하면 작업 권한을 보다 확실하게 관리할 수 있으며 권한을 제한하는 데 효과적입니다.
작업의 서비스 계정에 대해 자세히 알아보세요.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
-
맞춤 서비스 계정을 사용하여 작업의 액세스를 제어하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
작업 만들기:
-
프로젝트에 대한 Batch 작업 편집자(
roles/batch.jobsEditor
) -
작업의 서비스 계정(기본 Compute Engine 서비스 계정이 기본 설정됨)의 서비스 계정 사용자(
roles/iam.serviceAccountUser
)
-
프로젝트에 대한 Batch 작업 편집자(
-
서비스 계정 보기:
프로젝트에서 서비스 계정 보기(
roles/iam.serviceAccountViewer
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
작업 만들기:
-
이 작업에 사용할 서비스 계정을 찾습니다. 이 서비스 계정에 작업을 실행하는 데 필요한 모든 권한이 있는지 확인하세요.
서비스 계정 보기 및 작업의 서비스 계정에 필요한 권한에 대해 자세히 알아보세요.
커스텀 서비스 계정을 사용하는 작업 만들기
커스텀 서비스 계정을 사용하는 작업을 만들려면 다음 방법 중 하나를 선택합니다.
- 이 섹션에 표시된 것처럼 작업 정의에 커스텀 서비스 계정을 지정합니다.
- Compute Engine 인스턴스 템플릿을 사용하고 인스턴스 템플릿과 작업 정의 모두에 커스텀 서비스 계정을 지정합니다.
이 섹션에서는 커스텀 서비스 계정을 사용하는 작업을 만드는 방법에 대한 예시를 제공합니다. gcloud CLI, Batch API, Java, Node.js 또는 Python을 사용하여 커스텀 서비스 계정을 사용하는 작업을 만들 수 있습니다.
gcloud
gcloud CLI를 사용하여 커스텀 서비스 계정을 사용하는 작업을 만들려면 gcloud batch jobs submit
명령어를 사용하여 작업의 구성 파일에 커스텀 서비스 계정을 지정합니다.
예를 들어 커스텀 서비스 계정을 사용하는 스크립트 작업을 만들려면 다음 안내를 따르세요.
현재 디렉터리에 다음 콘텐츠로
hello-world-service-account.json
이라는 JSON 파일을 만듭니다.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello World! This is task $BATCH_TASK_INDEX." } } ] } } ], "allocationPolicy": { "serviceAccount": { "email": "SERVICE_ACCOUNT_EMAIL" } } }
여기서
SERVICE_ACCOUNT_EMAIL
은 서비스 계정의 이메일 주소입니다.serviceAccount
필드를 지정하지 않았으면 값이 기본 Compute Engine 서비스 계정으로 설정됩니다.다음 명령어를 실행합니다.
gcloud batch jobs submit example-service-account-job \ --location us-central1 \ --config hello-world-service-account.json
API
Batch API를 사용하여 커스텀 서비스 계정을 사용하는 작업을 만들려면 jobs.create
메서드를 사용하고 allocationPolicy
필드에 커스텀 서비스 계정을 지정합니다.
예를 들어 커스텀 서비스 계정을 사용하는 스크립트 작업을 만들려면 다음 요청을 수행합니다.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-service-account-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
}
}
],
"allocationPolicy": {
"serviceAccount": {
"email": "SERVICE_ACCOUNT_EMAIL"
}
}
}
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 프로젝트 ID입니다.SERVICE_ACCOUNT_EMAIL
: 서비스 계정의 이메일 주소입니다.serviceAccount
필드를 지정하지 않았으면 값이 기본 Compute Engine 서비스 계정으로 설정됩니다.
Java
Node.js
Python
다음 단계
- 작업을 만들거나 실행하는 데 문제가 있는 경우 문제 해결을 참조하기
- 작업 및 태스크 보기
- 작업 만들기 옵션 자세히 알아보기