Apache Spark용 관리형 서비스 서비스 계정

이 페이지에서는 서비스 계정 및 VM 액세스 범위에 대해 설명하고, Managed Service for Apache Spark에서 서비스 계정을 사용하는 방법에 대해 알아봅니다.

2020년 8월 3일부터 보안 요구사항: Managed Service for Apache Spark 사용자는 클러스터를 만들고 작업을 제출하는 등 Managed Service for Apache Spark 리소스를 배포하려면 서비스 계정 ActAs 권한이 있어야 합니다. 서비스 계정 사용자 역할에 이 권한이 포함되어 있습니다. 필요한 Managed Service for Apache Spark 역할에 대한 자세한 내용은 서비스 계정 인증 역할 을 참조하세요.

기존 Managed Service for Apache Spark 사용자의 선택: 2020년 8월 3일 기준으로 기존의 Managed Service for Apache Spark 사용자는 이 보안 요구사항을 선택할 수 있습니다 (Managed Service for Apache Spark, Dataflow, Cloud Data Fusion 보호 참조).

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

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

Managed Service for Apache Spark 클러스터 서비스 계정

다음 서비스 계정에는 클러스터가 있는 프로젝트에서 Managed Service for Apache Spark 작업을 수행하는 데 필요한 권한이 있어야 합니다.

Managed Service for Apache Spark VM 서비스 계정

Managed Service for Apache Spark 클러스터의 VM은 Managed Service for Apache Spark 데이터 영역 작업에 서비스 계정을 사용합니다. 클러스터를 만들 때 커스텀 서비스 계정을 지정하지 않으면 Compute Engine 기본 서비스 계정 project_number-compute@developer.gserviceaccount.com가 VM 서비스 계정으로 사용됩니다. VM 서비스 계정에는 Managed Service for Apache Spark 데이터 영역 작업에 필요한 권한이 포함된 Managed Service for Apache Spark 작업자 역할이 있어야 합니다. 자세한 내용은 Managed Service for Apache Spark 역할을 참조하세요.

VM 서비스 계정 역할 보기

Managed Service for Apache Spark VM 서비스 계정에 부여된 역할을 보려면 다음 단계를 따르세요.

  1. 콘솔에서 IAM 페이지로 이동합니다. Google Cloud

    IAM으로 이동

  2. Google 제공 역할 부여 포함을 클릭합니다.

  3. VM 서비스 계정에 나열된 역할을 확인합니다. 다음 이미지는 Managed Service for Apache Spark에서 기본적으로 VM 서비스 계정으로 사용하는 Compute Engine 기본 서비스 계정 (project_number-compute@developer.gserviceaccount.com)에 나열된 필수 Dataproc 작업자 역할을 보여줍니다.

  4. 서비스 계정 행에 표시된 연필 아이콘을 클릭하여 서비스 계정 역할을 부여하거나 삭제할 수 있습니다.

Managed Service for Apache Spark 서비스 에이전트 서비스 계정

Managed Service for Apache Spark는 서비스 에이전트 서비스 계정을 만들고 service-project_number@dataproc-accounts.iam.gserviceaccount.com 서비스 계정에 Managed Service for Apache Spark 서비스 에이전트 역할을 프로젝트에 부여합니다. Google Cloud 이 서비스 계정은 Managed Service for Apache Spark 컨트롤 플레인 작업(클러스터 VM 생성, 업데이트, 삭제 등)을 수행합니다. 클러스터를 만들 때 이 서비스 계정을 커스텀 VM 서비스 계정으로 바꿀 수 없습니다.

공유 VPC 네트워크의 서비스 에이전트 서비스 계정에 역할 부여

Managed Service for Apache Spark 클러스터에서 공유 VPC 네트워크를 사용하는 경우 공유 VPC 관리자가 Managed Service for Apache Spark 서비스 에이전트 서비스 계정네트워크 사용자 역할을 공유 VPC 호스트 프로젝트에 부여해야 합니다. 자세한 내용은 다음을 참조하세요.

커스텀 VM 서비스 계정으로 클러스터 만들기

클러스터를 만들 때 클러스터에서 기본 VM 서비스 계정 대신 Managed Service for Apache Spark 데이터 영역 작업에 사용할 커스텀 VM 서비스 계정 을 지정할 수 있습니다(클러스터 가 생성된 후에는 VM 서비스 계정을 변경할 수 없음). IAM 역할이 할당된 VM 서비스 계정을 사용하면 프로젝트 리소스에 대한 세분화된 액세스 권한을 클러스터에 부여할 수 있습니다.

예비 단계

  1. 클러스터가 만들어질 프로젝트 안에 커스텀 VM 서비스 계정을 만드세요.

  2. 커스텀 VM 서비스 계정에 프로젝트에 대한 Managed Service for Apache Spark 작업자 역할 및 작업에 필요한 추가 역할(예: BigQuery 리더 및 작성자 역할)을 부여합니다(Managed Service for Apache Spark 역할 참조).

    gcloud CLI 예시:

    • 다음 샘플 명령어는 클러스터 프로젝트의 커스텀 VM 서비스 계정에 프로젝트 수준의 Dataproc 작업자 역할을 부여합니다.
    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     

클러스터 만들기

  • 프로젝트에 클러스터를 만듭니다.

Google Cloud 콘솔

콘솔에서 Managed Service for Apache Spark VM 서비스 계정을 설정하는 것은 지원되지 않습니다. 클러스터를 만들 때 클러스터 VM에서 cloud-platform 액세스 범위를 설정하려면 다음 단계를 따르세요.

  1. 클러스터 만들기 페이지를 엽니다.
  2. 추가 구성 을 클릭하여 이 섹션을 펼칩니다.
  3. 보안 을 수정합니다.
  4. 열리는 패널의 프로젝트 액세스에서 이 클러스터에 cloud-platform 범위 사용 설정 체크박스를 선택합니다.

gcloud CLI

gcloud dataproc clusters create 명령어를 사용하여 커스텀 VM 서비스 계정이 포함된 클러스터를 만듭니다.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --scopes=SCOPE

다음을 바꿉니다.

REST API

clusters.create API 요청의 일부로 GceClusterConfig를 작성할 때 다음 필드를 설정합니다.

다른 프로젝트의 커스텀 VM 서비스 계정으로 클러스터 만들기

클러스터를 만들 때 클러스터에서 기본 VM 서비스 계정을 사용하는 대신 Managed Service for Apache Spark 데이터 영역 작업에 사용할 커스텀 VM 서비스 계정 을 지정할 수 있습니다(클러스터 가 생성된 후에는 커스텀 VM 서비스 계정을 지정할 수 없음). IAM 역할이 할당된 커스텀 VM 서비스 계정을 사용하면 프로젝트 리소스에 대한 세분화된 액세스 권한을 클러스터에 부여할 수 있습니다.

예비 단계

  1. 서비스 계정 프로젝트(커스텀 VM 서비스 계정이 있는 프로젝트)에서 다음을 수행합니다.

    1. 프로젝트 간 서비스 계정 연결 사용 설정

    2. Dataproc API를 사용 설정합니다.

      API 사용 설정에 필요한 역할

      API를 사용 설정하려면 serviceusage.services.enable 권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법을 알아보세요.

      API 사용 설정하기

  2. 이메일 계정(클러스터를 만드는 사용자)에 서비스 계정 프로젝트 또는 서비스 계정 프로젝트의 커스텀 VM 서비스 계정(더욱 세부적으로 제어하려는 경우)에 대한 서비스 계정 사용자 역할 을 부여합니다.

    자세한 내용은 프로젝트 수준에서 역할을 부여하려면 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하고, 서비스 계정 수준에서 역할을 부여하려면 서비스 계정에 대한 액세스 관리를 참조합니다.

    gcloud CLI 예시:

    • 다음 샘플 명령어는 사용자에게 프로젝트 수준의 서비스 계정 사용자 역할을 부여합니다.
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=USER_EMAIL \
        --role="roles/iam.serviceAccountUser"
    

    참고: USER_EMAIL: 사용자 계정 이메일 주소를 user:user-name@example.com 형식으로 제공합니다.

    • 다음 샘플 명령어는 사용자에게 서비스 계정 수준의 서비스 계정 사용자 역할을 부여합니다.
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=USER_EMAIL \
        --role="roles/iam.serviceAccountUser"
    

    참고: USER_EMAIL: 사용자 계정 이메일 주소를 user:user-name@example.com 형식으로 제공합니다.

  3. 커스텀 VM 서비스 계정에 클러스터 프로젝트에 대한 Managed Service for Apache Spark 작업자 역할을 부여합니다.

    gcloud CLI 예시:

    gcloud projects add-iam-policy-binding CLUSTER_PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --role="roles/dataproc.worker"
     
  4. 클러스터 프로젝트의 Managed Service for Apache Spark 서비스 에이전트 서비스 계정 에 서비스 계정 프로젝트 또는 서비스 계정 프로젝트의 커스텀 VM 서비스 계정(더욱 세밀하게 제어하려는 경우) 에 대한 서비스 계정 사용자서비스 계정 토큰 생성자 역할을 부여합니다. 이렇게 하면 클러스터 프로젝트의 Dataproc 서비스 에이전트 서비스 계정이 서비스 계정 프로젝트의 커스텀 Dataproc VM 서비스 계정에 대한 토큰을 만들 수 있습니다.

    자세한 내용은 프로젝트 수준에서 역할을 부여하려면 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하고, 서비스 계정 수준에서 역할을 부여하려면 서비스 계정에 대한 액세스 관리를 참조합니다.

    gcloud CLI 예시:

    • 다음 샘플 명령어는 클러스터 프로젝트의 Managed Service for Apache Spark 서비스 에이전트 서비스 계정에 프로젝트 수준의 서비스 계정 사용자 및 서비스 계정 토큰 생성자 역할을 부여합니다.
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
    • 다음 샘플 명령어는 클러스터 프로젝트의 Managed Service for Apache Spark 서비스 에이전트 서비스 계정에 VM 서비스 계정 수준의 서비스 계정 사용자 및 서비스 계정 토큰 생성자 역할을 부여합니다.
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountUser"
     
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
    
  5. 클러스터 프로젝트의 Compute Engine 서비스 에이전트 서비스 계정에 서비스 계정 프로젝트 또는 서비스 계정 프로젝트의 커스텀 VM 서비스 계정(더욱 세밀하게 제어하려는 경우)에 대한 서비스 계정 토큰 생성자 역할을 부여합니다. 이렇게 하면 클러스터 프로젝트의 Compute Agent 서비스 에이전트 서비스 계정에 서비스 계정 프로젝트의 커스텀 Dataproc VM 서비스 계정에 대한 토큰을 만들 수 있는 권한이 부여됩니다.

    자세한 내용은 프로젝트 수준에서 역할을 부여하려면 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하고, 서비스 계정 수준에서 역할을 부여하려면 서비스 계정에 대한 액세스 관리를 참조합니다.

    gcloud CLI 예시:

    • 다음 샘플 명령어는 클러스터 프로젝트의 Compute Engine 서비스 에이전트 서비스 계정에 프로젝트 수준의 서비스 계정 토큰 생성자 역할을 부여합니다.
    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     
    • 다음 샘플 명령어는 클러스터 프로젝트의 Compute Engine 서비스 에이전트 서비스 계정에 VM 서비스 계정 수준의 서비스 계정 토큰 생성자 역할을 부여합니다.
    gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
        --member=serviceAccount:service-CLUSTER_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
        --role="roles/iam.serviceAccountTokenCreator"
     

클러스터 만들기

다음 단계