Dataproc 서비스 계정

이 페이지에서는 서비스 계정 및 VM 액세스 범위와 Dataproc에서 서비스 계정을 사용하는 방법에 대해 설명합니다.

서비스 계정이란 무엇인가요?

서비스 계정은 Compute Engine 가상 머신(VM) 인스턴스에서 실행되는 서비스와 애플리케이션이 다른 Google Cloud API와 상호작용하기 위해 사용할 수 있는 특수 계정입니다 애플리케이션은 서비스 계정 사용자 인증 정보를 사용하여 API 집합에 자체적으로 승인하고 서비스 계정에 부여된 권한 내에서 VM에서의 작업을 수행할 수 있습니다.

Dataproc 서비스 계정

다음 서비스 계정에는 클러스터가 있는 프로젝트에서 Dataproc 작업을 수행하는 데 필요한 권한이 부여됩니다.

  • Dataproc 서비스 에이전트 서비스 계정: Dataproc은 Dataproc 서비스 에이전트 역할로 이 서비스 계정을 Dataproc 사용자의 Google Cloud 프로젝트에 만듭니다. 이 서비스 계정은 클러스터를 만들 때 사용자가 지정하는 서비스 계정으로 바꿀 수 없습니다. 이 서비스 에이전트 계정은 클러스터 VM 생성, 업데이트, 삭제와 같은 Dataproc 제어 영역 작업을 수행하는 데 사용됩니다(Dataproc 서비스 에이전트(제어 영역 ID) 참조).

    기본적으로 Dataproc은 service-[project-number]@dataproc-accounts.iam.gserviceaccount.com을 서비스 에이전트 계정으로 사용합니다. 서비스 계정이 없는 경우 Dataproc은 제어 영역 작업에 Google API 서비스 에이전트 계정([project-number]@cloudservices.gserviceaccount.com)을 사용합니다.

공유 VPC 네트워크: 클러스터가 공유 VPC 네트워크를 사용하는 경우 공유 VPC 관리자가 위의 서비스 계정 둘 다에 공유 VPC 호스트 프로젝트의 네트워크 사용자 역할을 부여해야 합니다. 자세한 내용은 다음을 참고하세요.

Dataproc VM 액세스 범위

VM 액세스 범위는 VM 인스턴스에 API에 대한 액세스 권한을 부여하거나 제한하는 데 사용됩니다. VM 서비스 계정과 함께 작동하여 API 액세스 권한을 결정합니다. 예를 들어 클러스터 VM에 https://www.googleapis.com/auth/storage-full 범위만 부여된 경우, 애플리케이션에서 있는 그대로 실행 중인 VM 서비스 계정에 광범위한 권한의 BigQuery 역할이 부여되더라도 클러스터 VM에서 실행되는 애플리케이션은 Cloud Storage API를 호출할 수 있지만 BigQuery에 요청할 수는 없습니다.

기본 Dataproc VM 범위. 클러스터를 만들 때 범위를 지정하지 않으면(gcloud dataproc cluster create --scopes 참조) Dataproc VM의 기본 범위 집합은 다음과 같습니다.

https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

클러스터를 만들 때 범위를 지정하면 지정한 범위()와 (지정하지 않더라도) 다음과 같은 최소 필수 범위 집합이 클러스터 VM에 포함됩니다.

https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

사용자 관리형 VM 서비스 계정으로 클러스터 만들기

클러스터를 만들 때 VM 서비스 계정을 지정할 수 있습니다. Dataproc은 클러스터가 생성된 후 VM 서비스 계정을 지정하거나 변경하는 것을 지원하지 않습니다.

사용자 관리형 VM 서비스 계정을 지정하는 이유는 무엇인가요? 서비스 계정에는 IAM 역할이 부여됩니다. Dataproc 클러스터를 만들 때 사용자 관리형 VM 서비스 계정을 지정하면 프로젝트 리소스에 대한 세분화된 액세스 및 제어를 통해 클러스터를 만들 수 있습니다. 여러 Dataproc 클러스터가 있는 서로 다른 사용자 관리형 VM 서비스 계정을 사용하면 Cloud 리소스에 대한 액세스 권한이 다른 클러스터를 설정할 수 있습니다.

클러스터를 만들기 전에 클러스터를 만들 프로젝트 내에서 서비스 계정을 만듭니다. 서비스 계정에 Dataproc 작업자 역할과 작업에 필요한 추가 역할을 부여합니다. 예를 들어 BigQuery와 같은 Google Cloud 리소스 간에 데이터에 대한 읽기 및 쓰기 권한을 부여합니다.

gcloud 명령어

gcloud clusters create 명령어를 사용하여 사용자 지정 VM 서비스 계정 및 VM 액세스 범위로 새 클러스터를 만듭니다.

gcloud dataproc clusters create cluster-name \
    --region=region \
    --service-account=service-account-name@project-id.iam.gserviceaccount.com \
    --scopes=scope[, ...]

REST API

GceClusterConfig 객체의 serviceAccountserviceAccountScopesclusters.create API 요청의 일부로 설정합니다.

Console

현재 Cloud Console에서 사용자 관리형 Dataproc VM 서비스 계정을 설정하는 것은 지원되지 않습니다. Cloud Console의 Dataproc 클러스터 만들기 페이지에 있는 보안 관리 패널의 프로젝트 액세스 섹션에서 '동일한 프로젝트에 있는 모든 Google Cloud 서비스에 대한 API 액세스 허용'을 클릭하여 클러스터의 VM에서 'cloud-platform' 범위를 설정할 수 있습니다.

다음 단계