이 가이드에서는 Spark 개발자, Spark 관리자, Spark 뷰어에게 Managed Service for Apache Spark 서버리스 일괄 워크로드 및 대화형 세션을 시작하는 데 필요한 권한을 얻는 방법을 보여줍니다.
| 페르소나 | 조직 내에서의 역할 | IAM에서 필요한 사항 |
|---|---|---|
| Spark 개발자 | 플랫폼의 빌더 및 소비자입니다. PySpark 및 Spark 작업을 작성하고 실행하며, 노트북과 세션에서 개발하고, 데이터 세트를 읽고 쓰고, 워크로드를 모니터링하고 문제를 해결합니다. 데이터 엔지니어, 데이터 과학자, 개발자가 포함됩니다. | 워크로드를 제출, 실행, 모니터링, 문제 해결하고 작업에서 사용하는 데이터를 읽고 쓸 수 있는 권한 |
| Spark 관리자 | 플랫폼 소유자 및 관리자 프로젝트를 설정하고, 워크로드 인증 방법을 결정하고, Spark 개발자를 온보딩하고, 공유 서비스 계정을 관리하고, 조직 가드레일 및 최소 권한을 적용합니다. 플랫폼 관리자라고도 합니다. | 다른 사용자에게 액세스 권한을 부여하고, 실행 ID (최종 사용자 사용자 인증 정보 또는 공유 서비스 계정)를 구성하고, 프로젝트 전체 서버리스 리소스를 관리할 수 있는 권한입니다. |
| Spark 뷰어 | 플랫폼의 관찰자 및 감사자입니다. 워크로드를 제출하거나 수정하지 않고 작업 완료, 실행 기록, 측정항목, 대시보드를 추적합니다. 분석가, 프로젝트 관리자, FinOps, 규정 준수 감사자가 포함됩니다. | 일괄, 세션, 작업, 상태 대시보드를 볼 수 있는 읽기 전용 권한입니다. |
런타임 버전 선택
권장되는 런타임 버전은 워크로드가 실행되는 Apache Spark 버전에 따라 다릅니다.
런타임
3.x(권장): Spark4을 사용하며 온보딩 및 사용이 더 간단합니다. 기본적으로 워크로드는 사용자의 최종 사용자 사용자 인증 정보 (EUC)를 사용하여 제출하는 사용자로 실행되므로 사용자에게 단일 IAM 역할을 부여해야 합니다. 관리자는 고급 사용을 위해 워크로드 커스텀 서비스 계정을 구성할 수 있습니다.런타임
2.x: Spark3.5을 사용하고 별도의 제출자 및 워크로드 계정을 사용합니다. 기본적으로 제출자는 사용자 ID이고 Compute Engine 기본 서비스 계정은 워크로드 ID입니다. 관리자는 세부적인 액세스 제어를 위해 맞춤 워크로드 서비스 계정을 구성할 수 있습니다.
자세한 내용은 Managed Service for Apache Spark 런타임 출시를 참고하세요.
기능 비교
런타임 3.x는 2.x 구성요소와 기능을 업그레이드하고 간소화된 설정을 제공합니다.
| 기능 및 워크플로 | 런타임 3.x (권장) |
런타임 2.x |
|---|---|---|
| Apache Spark 버전 | Spark 4 | Spark 3.5 (이전 3.x) |
| 대화형 개발 | Spark Connect 세션 (업계 표준 대화형 Spark 클라이언트) | Jupyter 세션 |
| R 일괄 워크로드 | sparklyr |
SparkR 일괄 |
| 실행 ID | 최종 사용자 인증 정보 (EUC)1 | 서비스 계정 1 |
| 작업 스테이징용 스토리지 | 필요하지 않음 (내부에서 관리) | Cloud Storage 스테이징 버킷 |
| 로그 출력 형식 | 구조화된 JSON 형식 (jsonPayload) |
일반 텍스트 형식 (textPayload) |
1 워크로드 또는 세션에 커스텀 서비스 계정이 지정되지 않은 경우 런타임 3.x은 제출자의 최종 사용자 인증 정보 (EUC)로 기본 설정됩니다.
런타임 2.x은 워크로드 또는 세션에 맞춤 서비스 계정이 지정되지 않는 한 기본적으로 Compute Engine 기본 서비스 계정으로 설정됩니다.
일반적인 데이터 및 서비스 역할
Managed Service for Apache Spark는 일반적으로 다른Google Cloud 서비스에서 읽고 쓰기 위해 사용됩니다. 이 섹션에는 일반적으로 액세스하는 서비스와 연결된 역할이 나열되어 있습니다.
- 런타임
3.x(기본 EUC ID): Spark 개발자 (사용자 또는 그룹)에게 역할을 부여합니다. - 런타임
2.x: 워크로드 서비스 계정 (Compute Engine 기본 서비스 계정 또는 커스텀 워크로드 서비스 계정)에 역할을 부여합니다.
| 서비스 또는 API | 역할 | 목적 |
|---|---|---|
| Cloud Storage | roles/storage.objectViewerroles/storage.objectAdmin |
입력 데이터와 스테이징된 스크립트를 읽습니다. 출력 데이터를 씁니다. |
| BigLake 및 Lakehouse 런타임 카탈로그 | roles/biglake.viewerroles/biglake.editorroles/biglake.admin |
BigLake REST 카탈로그 (Lakehouse REST 카탈로그 (LRC))를 사용하여 Apache Iceberg, Delta Lake와 같은 개방형 테이블 형식을 쿼리하고 관리합니다. |
| Bigtable | roles/bigtable.readerroles/bigtable.user |
Bigtable 테이블을 읽습니다. Bigtable 데이터를 읽고 씁니다. |
| Dataproc Metastore (DPMS) | roles/metastore.metadataViewerroles/metastore.editor |
Hive 메타데이터를 읽습니다. 메타데이터 스키마와 테이블을 관리합니다. DPMS는 기존 메타스토어입니다. 고객은 BigLake Lakehouse REST 카탈로그 (LRC)를 사용하는 것이 좋습니다. |
BigQuery는 다양한 세부적인 IAM 역할과 리소스 수준 ACL을 제공합니다. 자세한 내용은 BigQuery IAM 역할 및 권한을 참고하세요.
역할 부여
다음 섹션에는 Managed Service for Apache Spark 서버리스 3.x 및 2.x 일괄 워크로드와 대화형 세션을 설정, 제출, 모니터링하는 데 관련된 각 페르소나에 역할을 부여하는 방법이 나와 있습니다.
런타임 3.x
기본적으로 3.x 워크로드는 제출 사용자의 최종 사용자 인증 정보 (EUC)로 실행됩니다. 관리자는 사용자에게 단일 역할을 부여하며 공유 서비스 계정이나 스테이징 버킷이 필요하지 않습니다. 관리자는 전용 서비스 ID가 필요한 경우 맞춤 서비스 계정을 구성할 수 있습니다.
개발자
Spark 개발자 (런타임 3.x)
Spark 개발자는 사용자 인증 정보와 함께 런타임 3.x을 사용하여 Spark 워크로드를 개발, 제출, 모니터링, 문제 해결하고 데이터에 직접 액세스할 수 있습니다.
서버리스 편집자 역할을 요청합니다. 관리자에게 프로젝트에 대한
roles/dataproc.serverlessEditor권한을 부여해 달라고 요청하세요.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.serverlessEditor"이 역할을 사용하면 Spark 일괄 워크로드와 대화형 Spark Connect 세션을 제출, 모니터링, 문제 해결, 취소할 수 있습니다.
데이터 및 서비스에 액세스합니다. 워크로드가 사용자로 실행되므로 사용자 ID가 Spark 애플리케이션이 사용하는 서비스와 데이터 세트에 액세스할 수 있어야 합니다 (일반적인 데이터 및 서비스 역할 참고).
예를 들어 입력 Cloud Storage 버킷에 대한 읽기 액세스 권한을 자신에게 부여합니다.
gcloud storage buckets add-iam-policy-binding gs://INPUT_BUCKET \ --member="user:DEVELOPER_EMAIL" \ --role="roles/storage.objectViewer"테스트 워크로드를 제출합니다. 테스트 일괄 워크로드를 제출하여 설정을 확인합니다.
gcloud dataproc batches submit spark \ --region=REGION \ --version=3.0 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000참고:
최종 사용자 사용자 인증 정보 (EUC)로
3.x워크로드를 처음 제출하는 경우 일회성 OAuth 동의를 요청하는 메시지가 표시됩니다. 동의를 부여한 다음 워크로드를 다시 제출합니다.프로젝트에
defaultVPC 네트워크가 없는 경우subnet플래그 또는 필드를 사용하여 리전 서브넷을 지정합니다 (Managed Service for Apache Spark 서버리스 네트워크 구성 참고).PySpark 워크로드를 실행하고 Cloud Storage, BigLake, BigQuery 전반에서 필요한 권한을 구성하는 엔드 투 엔드 예시는 데이터 변환 및 Apache Iceberg 테이블에 쓰기를 참고하세요.
커스텀 워크로드 서비스 계정 (런타임 3.x)
조직에서 워크로드가 최종 사용자 사용자 인증 정보 대신 감사 가능한 전용 ID로 실행되어야 하는 경우 런타임 3.x이 있는 커스텀 서비스 계정을 사용합니다 (IAM 서비스 계정 권장사항 참고).
커스텀 서비스 계정으로 워크로드를 실행할 권한을 가져옵니다. 관리자에게 맞춤 서비스 계정에 대한
roles/iam.serviceAccountUser권한을 부여해 달라고 요청하세요.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"커스텀 서비스를 지정합니다.
gcloud dataproc batches submit spark \ --region=REGION \ --service-account=WORKLOAD_SA_EMAIL \ --version=3.0 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000데이터 세트 액세스 권한을 부여합니다. 커스텀 서비스 계정을 사용하는 경우
WORKLOAD_SA_EMAIL에 데이터 수준 역할을 직접 부여합니다 (일반적인 데이터 및 서비스 역할 참고).
관리자
Spark 관리자 (런타임 3.x)
Spark 관리자는 프로젝트를 설정하고, 워크로드 인증 방법을 결정하고, Spark 개발자에게 액세스 권한을 부여합니다.
워크로드는 이름이 지정된 default VPC 서브넷을 자동으로 사용합니다. 프로젝트에 default 네트워크가 없거나 커스텀 VPC를 사용하는 경우 Managed Service for Apache Spark 서버리스 네트워크 구성을 참고하여 워크로드 및 세션의 서브넷을 설정하고 지정하세요.
최종 사용자 인증 정보로 런타임 3.x 사용 설정 (권장)
이는 최소 권한, 최소 유지관리 설정입니다. 각 Spark 개발자는 사용자 ID로 워크로드를 실행합니다. 관리자는 워크로드 서비스 계정을 설정하고 관리할 필요가 없습니다.
Spark 개발자에게
roles/dataproc.serverlessEditor권한을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.serverlessEditor"읽기 전용 뷰어에게
roles/dataproc.serverlessViewer권한을 부여합니다.워크로드를 제출하거나 수정하지 않고 작업 상태와 로그를 모니터링해야 하는 감사자, 대시보드 소비자, 팀 구성원에게 이 역할을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:VIEWER_EMAIL" \ --role="roles/dataproc.serverlessViewer"개발자가 데이터에 액세스할 수 있는지 확인합니다.
기본적으로 런타임
3.x워크로드는 제출하는 사용자로 실행됩니다. Spark 개발자 또는 Spark 개발자가 포함된 Google 그룹에roles/storage.objectViewer또는roles/storage.objectAdmin과 같은 데이터 액세스 역할을 부여합니다 (일반적인 데이터 및 서비스 역할 참고).
워크로드 커스텀 서비스 계정 사용 설정 (런타임 3.x)
워크로드가 최종 사용자 사용자 인증 정보 대신 감사 가능한 전용 ID로 실행되어야 하는 경우 런타임 3.x이 있는 커스텀 서비스 계정을 사용합니다 (IAM 서비스 계정 권장사항 참고).
워크로드 커스텀 서비스 계정에
roles/iam.serviceAccountUser권한을 부여합니다.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"워크로드 커스텀 서비스 계정에
roles/dataproc.serverlessNode권한을 부여합니다.이 역할을 통해 서비스 계정은 워크로드 실행 중에 컴퓨팅 노드 풀을 관리하고 Spark 애플리케이션과 통신할 수 있습니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:WORKLOAD_SA_EMAIL" \ --role="roles/dataproc.serverlessNode"애플리케이션 데이터에 대한 액세스 권한을 부여합니다.
애플리케이션 데이터 세트를 읽고 쓸 수 있도록 워크로드 서비스 계정에 데이터 수준 역할을 직접 부여합니다 (일반적인 데이터 및 서비스 역할 참고). 워크로드에서 스테이징된 스크립트 또는 맞춤 JAR를 사용하는 경우 해당 Cloud Storage 버킷에 대한 읽기 액세스 권한도 부여합니다.
제출자 맞춤 서비스 계정 사용 설정 (런타임 3.x)
자동화된 시스템 (예: Managed Service for Apache Airflow, Cloud Scheduler, CI 또는 CD 파이프라인)이 대화형 사용자 없이 워크로드를 제출하는 경우 제출자 커스텀 서비스 계정을 사용합니다.
이 시나리오에서는 제출자 서비스 계정이 작업을 시작하는
gcloud명령어를 실행합니다.gcloud사용의 예는 다음과 같습니다.gcloud dataproc batches submit spark \ --service-account=WORKLOAD_SA_EMAIL \ ...워크로드 서비스 계정은 컴퓨팅 노드에서 Spark 코드를 실행하고 애플리케이션 데이터 세트에 액세스합니다.
- 제출자 커스텀 서비스 계정에
roles/dataproc.serverlessEditor권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/dataproc.serverlessEditor"제출자 맞춤 서비스 계정으로 런타임
3.x을 사용하는 경우 워크로드를 실행하려면 맞춤 워크로드 서비스 계정이 필요합니다. 대화형 최종 사용자가 없으므로 런타임이 최종 사용자 인증 정보 (EUC)로 대체될 수 없습니다. 작업은 지정된 워크로드 서비스 계정 (--service-account)으로 실행되어야 합니다.- 제출자 커스텀 서비스 계정에
워크로드 커스텀 서비스 계정에
roles/iam.serviceAccountUser권한을 부여합니다.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/iam.serviceAccountUser"워크로드 커스텀 서비스 계정을 구성합니다.
WORKLOAD_SA_EMAIL에roles/dataproc.serverlessNode및 애플리케이션 데이터 역할을 부여합니다.
Spark 관리자 역할 참조 (런타임 3.x)
다음 표에는 런타임 3.x로 부여할 역할이 요약되어 있습니다.
| 제출자 | 워크로드 아이덴티티 | 제출자에게 부여 | 워크로드 서비스 계정에 부여 |
|---|---|---|---|
| 최종 사용자 (기본값) | 최종 사용자 (EUC) | roles/dataproc.serverlessEditor (사용자의 데이터 역할 포함) |
(없음—SA가 사용되지 않음) |
| 최종 사용자 | 맞춤 SA | 맞춤 SA에서 roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser |
roles/dataproc.serverlessNode + 데이터 역할 |
| 맞춤 SA (자동화) | 맞춤 SA | 맞춤 SA에서 roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser |
roles/dataproc.serverlessNode + 데이터 역할 |
뷰어
Spark 뷰어 (런타임 3.x)
Spark 뷰어는 워크로드를 제출하거나 수정하지 않고도 일괄 워크로드, 대화형 세션, 실행 측정항목, 로그, 상태 대시보드를 볼 수 있습니다.
관리자에게 roles/dataproc.serverlessViewer 권한을 부여해 달라고 요청하세요.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:VIEWER_EMAIL" \
--role="roles/dataproc.serverlessViewer"
이 역할은 서버리스 일괄 워크로드, 대화형 세션, 작업 상태를 볼 수 있는 읽기 전용 액세스 권한을 부여합니다.
세부 권한
자세한 권한 (런타임 3.x)
이 섹션에는 런타임 3.x와 연결된 IAM 역할에 포함된 IAM 권한이 나와 있습니다.
서버리스 편집자 역할 (roles/dataproc.serverlessEditor)
이 역할과 권한은 런타임 3.x 서버리스 일괄 워크로드 및 대화형 세션에 대한 읽기 및 쓰기 액세스 권한을 제공합니다.
| 권한 | 설명 |
|---|---|
dataproc.batches.create |
새 일괄 워크로드를 만들어 제출합니다. |
dataproc.batches.get |
일괄 워크로드 상태 및 세부정보를 가져옵니다. |
dataproc.batches.list |
프로젝트 또는 리전의 모든 일괄 워크로드를 나열합니다. |
dataproc.batches.delete |
완료되거나 종료된 일괄 삭제 |
dataproc.batches.cancel |
실행 중인 배치 워크로드를 취소합니다. |
dataproc.sessions.create |
대화형 Spark Connect 세션을 만듭니다. |
dataproc.sessions.get |
세션 상태 및 세부정보를 가져옵니다. |
dataproc.sessions.list |
프로젝트 또는 리전의 모든 세션을 나열합니다. |
dataproc.sessions.delete |
종료된 세션을 삭제합니다. |
dataproc.sessions.terminate |
실행 중인 대화형 세션을 종료합니다. |
dataproc.operations.get |
비동기 작업 상태를 폴링합니다 (gcloud CLI에 필요). |
서버리스 노드 역할 (roles/dataproc.serverlessNode)
런타임 3.x 커스텀 워크로드 서비스 계정에 노드 풀 관리 및 내부 Spark 통신 권한을 제공합니다.
이 역할과 권한은 런타임 3.x와 함께 커스텀 워크로드 서비스 계정을 사용할 때 필요합니다. 기본 3.x 최종 사용자 인증 정보 (EUC)로 실행되는 워크로드는 워크로드 서비스 계정을 사용하지 않습니다.
| 권한 | 설명 |
|---|---|
dataproc.batches.sparkApplicationWrite |
일괄 워크로드의 Spark 애플리케이션 통신 |
dataproc.sessions.sparkApplicationWrite |
대화형 세션을 위한 Spark 애플리케이션 통신입니다. |
dataprocrm.nodePools.create |
컴퓨팅 노드 풀을 만듭니다. |
dataprocrm.nodePools.delete |
컴퓨팅 노드 풀을 삭제합니다. |
dataprocrm.nodePools.resize |
노드 풀을 동적으로 확장합니다. |
dataprocrm.nodePools.get |
노드 풀 상태를 읽습니다. |
dataprocrm.nodePools.list |
노드 풀을 나열합니다. |
dataprocrm.nodePools.update |
노드 풀 구성을 업데이트합니다. |
dataprocrm.nodePools.deleteNodes |
풀에서 특정 노드를 삭제합니다. |
dataprocrm.nodes.list |
풀의 노드를 나열합니다. |
dataprocrm.nodes.delete |
작업 완료 시 노드를 삭제합니다. |
dataprocrm.nodes.get |
노드 상태를 읽습니다. |
dataprocrm.nodes.heartbeat |
노드 상태 및 하트비트 보고 |
dataprocrm.nodes.mintOAuthToken |
노드 작업을 위한 OAuth 토큰을 생성합니다. |
dataprocrm.operations.get |
인프라 작업 상태를 확인합니다. |
서버리스 뷰어 역할 (roles/dataproc.serverlessViewer)
제출자 커스텀 서비스 계정과 함께 런타임 3.x를 사용하는 경우 이 역할과 권한이 필요합니다. 런타임 3.x 서버리스 일괄 워크로드, 대화형 세션, 작업 상태에 대한 읽기 전용 액세스 권한을 제공합니다.
| 권한 | 설명 |
|---|---|
dataproc.batches.get |
일괄 워크로드 상태 및 세부정보를 읽습니다. |
dataproc.batches.list |
일괄 워크로드를 나열합니다. |
dataproc.sessions.get |
세션 상태 및 세부정보를 읽습니다. |
dataproc.sessions.list |
세션을 나열합니다. |
dataproc.operations.get |
작업 상태를 읽습니다. |
dataproc.operations.list |
작업을 나열합니다. |
서비스 계정 위임 역할 (roles/iam.serviceAccountUser)
사용자 또는 자동화된 시스템이 커스텀 서비스 계정으로 워크로드를 연결하고 실행할 수 있습니다. 워크로드는 제출하는 사용자의 최종 사용자 인증 정보 (EUC)가 아닌 해당 서비스 계정에 부여된 권한 및 리소스 액세스 권한으로 실행됩니다.
| 권한 | 설명 |
|---|---|
iam.serviceAccounts.actAs |
제출자가 지정된 서비스 계정으로 워크로드를 실행할 수 있습니다. |
런타임 2.x
기본적으로 런타임 2.x 워크로드는 Compute Engine 기본 서비스 계정으로 실행됩니다. 제출자 (사용자 또는 자동화된 시스템)는 워크로드 또는 세션을 실행할 때 이 계정으로 작동합니다.
개발자
Spark 개발자 (런타임 2.x)
런타임 2.x를 사용하는 Spark 개발자는 Spark 워크로드를 개발, 제출, 모니터링하고 문제를 해결하며 데이터에 액세스합니다. 워크로드는 사용자 ID가 아닌 서비스 계정으로 실행되므로 관리자는 워크로드 서비스 계정으로 워크로드를 실행할 수 있도록 IAM 편집자 역할과 서비스 계정 사용자 역할을 부여합니다.
편집자 역할을 요청합니다. 관리자에게 프로젝트에 대한
roles/dataproc.editor권한을 부여해 달라고 요청하세요.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.editor"위임 권한을 요청합니다. 관리자에게 워크로드 서비스 계정에 대한
roles/iam.serviceAccountUser권한을 부여해 달라고 요청하세요.기본 워크로드 서비스 계정은 Compute Engine 기본 서비스 계정인
PROJECT_NUMBER-compute@developer.gserviceaccount.com입니다.gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"스테이징 버킷 액세스 권한을 가져옵니다. 런타임
2.x제출자에게는 스크립트와 JAR을 업로드할 권한이 필요하고 워크로드 서비스 계정에는 임시 파일과 로그를 관리할 권한이 필요합니다. 이러한 권한은roles/storage.objectAdmin역할에 포함되어 있습니다.# Grant submitter access to upload staged files gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/storage.objectAdmin" # Grant workload service account access for staging, temporary files, and logs gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin"테스트 배치 워크로드를 제출합니다. 테스트 일괄 워크로드를 제출하여 설정을 확인합니다.
gcloud dataproc batches submit spark \ --region=REGION \ --version=2.2 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000참고:
워크로드가 워크로드 서비스 계정으로 실행되므로 사용자 계정이 아닌 해당 계정에 작업에서 읽고 쓰는 데이터에 대한 액세스 권한이 필요합니다 (일반적인 데이터 및 서비스 역할 참고).
프로젝트에
defaultVPC 네트워크가 없는 경우subnet플래그 또는 필드를 사용하여 리전 서브넷을 지정합니다 (Managed Service for Apache Spark 서버리스 네트워크 구성 참고).PySpark 워크로드를 실행하고 Cloud Storage, BigLake, BigQuery 전반에서 필요한 권한을 구성하는 엔드 투 엔드 예시는 데이터 변환 및 Apache Iceberg 테이블에 쓰기를 참고하세요.
커스텀 워크로드 커스텀 서비스 계정 (런타임 2.x)
조직에서 공유 Compute Engine default service_account 대신 감사 가능한 전용 ID로 워크로드를 실행해야 하는 경우 커스텀 서비스 계정을 사용합니다 (IAM 서비스 계정 권장사항 참고).
커스텀 서비스 계정으로 워크로드를 실행할 권한을 가져옵니다. 관리자에게 맞춤 서비스 계정에 대한
roles/iam.serviceAccountUser권한을 부여해 달라고 요청하세요.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"워크로드를 제출할 때
--service-account플래그를 사용하여 커스텀 서비스 계정을 지정합니다.gcloud dataproc batches submit spark \ --region=REGION \ --service-account=WORKLOAD_SA_EMAIL \ --version=2.2 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000데이터 세트 액세스: 워크로드가 데이터 세트에 액세스할 수 없는 경우 워크로드 커스텀 서비스 계정 (사용자 계정 아님)에 필요한 데이터 액세스 역할을 부여합니다 (일반적인 데이터 및 서비스 역할 참고).
관리자
Spark 관리자 (런타임 2.x)
Spark 관리자는 프로젝트를 설정하고, 서비스 계정을 구성하고, Spark 개발자에게 액세스 권한을 부여합니다.
워크로드는 이름이 지정된 default VPC 서브넷을 자동으로 사용합니다. 프로젝트에 default 네트워크가 없거나 커스텀 VPC를 사용하는 경우 Managed Service for Apache Spark 서버리스 네트워크 구성을 참고하여 워크로드 및 세션의 서브넷을 설정하고 지정하세요.
기본 런타임 2.x 사용 설정
기본 런타임 2.x을 사용하면 워크로드가 Compute Engine 기본 서비스 계정으로 실행됩니다.
개발자에게
roles/dataproc.editor권한을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.editor"기본 서비스 계정에
roles/iam.serviceAccountUser권한을 부여합니다.gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"워크로드 서비스 계정에
roles/dataproc.worker권한을 부여합니다.이 역할을 통해 서비스 계정은 VM 에이전트를 등록하고, 컴퓨팅 작업을 임대 및 실행하고, Cloud Logging 및 Cloud Monitoring에 로그와 측정항목을 내보낼 수 있습니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/dataproc.worker"스테이징 버킷 스토리지에 대한
roles/storage.objectAdmin권한을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin"워크로드 서비스 계정에 데이터 세트 액세스 권한을 부여합니다.
워크로드 서비스 계정에 데이터 수준 역할을 부여하여 Spark 애플리케이션 데이터 세트에 액세스하도록 합니다 (일반적인 데이터 및 서비스 역할 참고).
워크로드 커스텀 서비스 계정 사용 설정 (런타임 2.x)
공유 Compute Engine 기본 서비스 계정을 사용하는 대신 런타임 2.x에서 워크로드 커스텀 서비스 계정을 사용하여 워크로드를 격리합니다.
개발자에게 커스텀 서비스 계정의
roles/iam.serviceAccountUser권한을 부여합니다.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"커스텀 서비스 계정에
roles/dataproc.worker권한을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:WORKLOAD_SA_EMAIL" \ --role="roles/dataproc.worker"애플리케이션 데이터 및 스테이징 액세스 권한을 부여합니다.
워크로드 커스텀 서비스 계정에 데이터 수준 역할을 직접 부여하고 (일반적인 데이터 및 서비스 역할 참고) 스테이징 및 임시 버킷에
roles/storage.objectAdmin권한을 부여합니다.
제출자 커스텀 서비스 계정 사용 설정 (런타임 2.x)
자동화된 시스템 (예: Managed Service for Apache Airflow, Cloud Scheduler 또는 CI/CD 파이프라인)이 대화형 사용자 없이 워크로드를 제출하는 경우 제출자 커스텀 서비스 계정을 사용합니다.
제출자 서비스 계정에
roles/dataproc.editor권한을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/dataproc.editor"워크로드 서비스 계정에
roles/iam.serviceAccountUser권한을 부여합니다.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/iam.serviceAccountUser"워크로드 서비스 계정을 구성합니다.
WORKLOAD_SA_EMAIL에roles/dataproc.worker및 데이터 세트 액세스 권한을 부여합니다.
Spark 관리자 역할 참조 (런타임 2.x)
다음 표에는 런타임 2.x에 부여할 IAM 역할이 요약되어 있습니다.
| 제출자 | 워크로드 아이덴티티 | 제출자에게 부여 | 워크로드 서비스 계정에 부여 |
|---|---|---|---|
| 최종 사용자 (기본값) | Compute Engine 기본 SA | 기본 SA에서 roles/dataproc.editor + roles/iam.serviceAccountUser |
roles/dataproc.worker + roles/storage.objectAdmin + 데이터 역할 |
| 최종 사용자 | 맞춤 SA | 맞춤 SA에서 roles/dataproc.editor + roles/iam.serviceAccountUser |
roles/dataproc.worker + roles/storage.objectAdmin + 데이터 역할 |
| 맞춤 SA (자동화) | 맞춤 SA | 맞춤 SA에서 roles/dataproc.editor + roles/iam.serviceAccountUser |
roles/dataproc.worker + roles/storage.objectAdmin + 데이터 역할 |
뷰어
Spark 뷰어 (런타임 2.x)
Spark 뷰어는 워크로드를 제출하거나 수정하지 않고도 일괄 워크로드, 대화형 세션, 실행 측정항목, 로그, 상태 대시보드를 볼 수 있습니다.
관리자에게 다음 권한을 부여해 달라고 요청하세요.roles/dataproc.viewer
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:VIEWER_EMAIL" \
--role="roles/dataproc.viewer"
이 역할은 클러스터, 작업, 배치, 세션, 작업과 같은 Managed Service for Apache Spark 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.
세부 권한
세부 권한 (런타임 2.x)
이 섹션에는 런타임 2.x와 연결된 IAM 역할에 포함된 IAM 권한이 나열되어 있습니다.
편집자 역할(roles/dataproc.editor)
이 역할은 런타임 2.x 서버리스 워크로드 및 세션은 물론 Compute Engine의 Managed Service for Apache Spark 클러스터 및 작업을 제어할 수 있는 권한을 제공합니다.
| 권한 | 서버리스에 필요 | 설명 |
|---|---|---|
dataproc.batches.create |
예 | 새 일괄 워크로드를 만들어 제출합니다. |
dataproc.batches.get |
예 | 일괄 워크로드 상태 및 세부정보를 가져옵니다. |
dataproc.batches.list |
예 | 프로젝트 또는 리전의 모든 일괄 워크로드를 나열합니다. |
dataproc.batches.delete |
예 | 완료되거나 종료된 일괄 삭제 |
dataproc.batches.cancel |
예 | 실행 중인 배치 워크로드를 취소합니다. |
dataproc.sessions.create |
예 | 대화형 세션을 만듭니다. |
dataproc.sessions.get |
예 | 세션 상태 및 세부정보를 가져옵니다. |
dataproc.sessions.list |
예 | 프로젝트 또는 리전의 모든 세션을 나열합니다. |
dataproc.sessions.delete |
예 | 종료된 세션을 삭제합니다. |
dataproc.sessions.terminate |
예 | 실행 중인 대화형 세션을 종료합니다. |
dataproc.operations.get |
예 | 비동기 작업 상태를 폴링합니다 (gcloud CLI에 필요). |
compute.networks.get |
예 | VPC 네트워크 구성을 확인합니다. |
compute.networks.list |
예 | 사용 가능한 VPC 네트워크 및 서브넷을 나열합니다. |
dataproc.clusters.* |
아니요 (클러스터만) | Compute Engine 기반 Managed Service for Apache Spark 클러스터를 만들고, 관리하고, 사용합니다. |
dataproc.jobs.* |
아니요 (클러스터만) | Compute Engine 기반 Managed Service for Apache Spark 클러스터에서 작업을 제출하고 관리합니다. |
dataproc.autoscalingPolicies.* |
아니요 (클러스터만) | Compute Engine 기반 클러스터의 자동 확장 정책입니다. |
dataproc.nodeGroups.* |
아니요 (클러스터만) | Compute Engine 기반 클러스터의 맞춤 노드 그룹 |
dataproc.workflowTemplates.* |
아니요 (클러스터만) | Compute Engine 기반 클러스터의 템플릿 워크플로 |
compute.machineTypes.* |
아니요 (클러스터만) | Compute Engine 기반 클러스터의 머신 유형 메타데이터입니다. |
작업자 역할 (roles/dataproc.worker)
이 역할은 런타임 2.x에 워크로드 실행 권한을 제공합니다.
| 권한 | 설명 |
|---|---|
dataproc.agents.create |
VM에 VM 에이전트를 등록합니다. |
dataproc.agents.get |
에이전트 상태를 읽습니다. |
dataproc.agents.update |
에이전트 상태를 업데이트합니다. |
dataproc.agents.delete |
완료되면 에이전트를 등록 해제합니다. |
dataproc.tasks.lease |
실행을 위해 컴퓨팅 작업 임대 |
dataproc.tasks.reportStatus |
작업 실행 상태를 보고합니다. |
storage.objects.create |
스테이징 데이터, 임시 파일, 로그를 작성합니다. |
storage.objects.delete |
임시 파일을 정리하세요. |
storage.objects.get |
부팅 스크립트와 스테이징된 파일을 읽습니다. |
storage.objects.list |
스테이징 및 임시 버킷 콘텐츠를 나열합니다. |
뷰어 역할(roles/dataproc.viewer)
이 역할은 모든 Managed Service for Apache Spark 리소스에 대한 읽기 전용 액세스 권한을 제공합니다.
| 권한 | 서버리스에 필요 | 설명 |
|---|---|---|
dataproc.batches.get |
예 | 일괄 워크로드 상태 및 세부정보를 읽습니다. |
dataproc.batches.list |
예 | 프로젝트 또는 리전의 모든 일괄 워크로드를 나열합니다. |
dataproc.sessions.get |
예 | 세션 상태 및 세부정보를 읽습니다. |
dataproc.sessions.list |
예 | 프로젝트 또는 리전의 모든 세션을 나열합니다. |
dataproc.operations.get |
예 | 비동기 작업 상태를 읽습니다. |
dataproc.operations.list |
예 | 프로젝트 또는 리전의 작업을 나열합니다. |
dataproc.clusters.get |
아니요 (클러스터만) | 클러스터 구성 및 상태를 확인합니다. |
dataproc.clusters.list |
아니요 (클러스터만) | 프로젝트 또는 리전의 클러스터를 나열합니다. |
dataproc.jobs.get |
아니요 (클러스터만) | 클러스터에서 작업 세부정보 및 상태를 확인합니다. |
dataproc.jobs.list |
아니요 (클러스터만) | 클러스터의 작업을 나열합니다. |
dataproc.autoscalingPolicies.get |
아니요 (클러스터만) | 자동 확장 정책 세부정보를 확인합니다. |
dataproc.autoscalingPolicies.list |
아니요 (클러스터만) | 자동 확장 정책을 나열합니다. |
dataproc.workflowTemplates.get |
아니요 (클러스터만) | 워크플로 템플릿 세부정보를 확인합니다. |
dataproc.workflowTemplates.list |
아니요 (클러스터만) | 워크플로 템플릿을 나열합니다. |
서비스 계정 위임 역할 (roles/iam.serviceAccountUser)
사용자 또는 자동화된 시스템이 Compute Engine 기본 서비스 계정 또는 커스텀 서비스 계정으로 워크로드를 연결하고 실행할 수 있도록 허용합니다. 워크로드는 해당 서비스 계정에 부여된 권한 및 리소스 액세스 권한으로 실행됩니다.
| 권한 | 설명 |
|---|---|
iam.serviceAccounts.actAs |
제출자가 지정된 서비스 계정으로 워크로드를 실행할 수 있습니다. |
다음 단계
- PySpark 및 서버리스 Spark 권한을 사용하는 엔드 투 엔드 튜토리얼은 데이터 변환 및 Apache Iceberg 테이블에 쓰기를 참고하세요.
- Managed Service for Apache Spark 서버리스 일괄 워크로드의 수명을 이해합니다.
- Managed Service for Apache Spark 서버리스 네트워크 구성에 대해 알아봅니다.