서버리스 Dataproc 서비스 계정

이 문서에서는 Identity and Access Management 서비스 계정 역할을 보고 관리하는 방법을 설명합니다. Dataproc 서버리스 배치 워크로드 또는 대화형 세션은 배치 워크로드를 제출하거나 세션을 만들거나 세션 런타임 템플릿을 만들 때 커스텀 서비스 계정을 지정하지 않는 한 Compute Engine 기본 서비스 계정으로 실행됩니다.

필요한 Dataproc 작업자 역할

Dataproc 서버리스 워크로드 서비스 계정에는 Identity and Access Management Dataproc Worker 역할이 있어야 합니다. Dataproc 서버리스에서 사용하는 Compute Engine 기본 서비스 계정(project_number-compute@developer.gserviceaccount.com)에는 기본적으로 이 역할이 있습니다. 일괄 워크로드, 세션 또는 세션 템플릿에 자체 서비스 계정을 지정하는 경우 서비스 계정에 Dataproc Worker 역할을 부여해야 합니다. BigQuery에 데이터를 읽고 쓰는 등의 다른 작업에는 추가 역할이 필요할 수 있습니다.

IAM 서비스 계정 역할 보기 및 관리

Dataproc Serverless 워크로드 서비스 계정에 부여된 역할을 보고 관리하려면 다음 단계를 따르세요.

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

    IAM으로 이동

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

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

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

교차 프로젝트 서비스 계정

배치 워크로드 프로젝트(배치가 제출된 프로젝트)와 다른 프로젝트의 서비스 계정을 사용하는 Dataproc Serverless 배치 워크로드를 제출할 수 있습니다. 이 섹션에서는 서비스 계정이 있는 프로젝트를 service account project, 일괄 처리가 제출된 프로젝트를 batch project라고 합니다.

교차 프로젝트 서비스 계정을 사용하여 일괄 워크로드를 실행하는 이유는 무엇인가요? 한 가지 이유는 다른 프로젝트의 서비스 계정에 해당 프로젝트의 리소스에 대한 세분화된 액세스 권한을 제공하는 IAM 역할이 할당된 경우일 수 있습니다.

설정 단계

  1. 서비스 계정 프로젝트에서 다음을 실행합니다.

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

    2. Enable the Dataproc API.

      Enable the API

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

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

      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 형식으로 제공합니다.
    4. 서비스 계정에 일괄 프로젝트에 대한 Dataproc 작업자 역할을 부여합니다.

      gcloud CLI 예시:

      gcloud projects add-iam-policy-binding BATCH_PROJECT_ID \
          --member=serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
          --role="roles/dataproc.worker"
      
  2. 일괄 프로젝트에서 다음을 수행합니다.

    1. Dataproc 서비스 에이전트 서비스 계정에 서비스 계정 프로젝트 또는 서비스 계정 프로젝트의 서비스 계정(더욱 세밀하게 제어하려는 경우)에 대한 서비스 계정 사용자서비스 계정 토큰 생성자 역할을 부여합니다. 이렇게 하면 일괄 처리 프로젝트의 Dataproc 서비스 에이전트 서비스 계정이 서비스 계정 프로젝트의 서비스 계정에 대한 토큰을 만들 수 있습니다.

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

      gcloud CLI 예시:

      다음 명령어는 일괄 처리 프로젝트의 Dataproc 서비스 에이전트 서비스 계정에 프로젝트 수준의 서비스 계정 사용자 및 서비스 계정 토큰 생성자 역할을 부여합니다.

      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountUser"
      
      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      

      다음 샘플 명령어는 일괄 처리 프로젝트의 Dataproc 서비스 에이전트 서비스 계정에 서비스 계정 수준의 서비스 계정 사용자 및 서비스 계정 토큰 생성자 역할을 부여합니다.

      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=serviceAccount:service-BATCH_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-BATCH_PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      
    2. 일괄 처리 프로젝트의 Compute Engine 서비스 에이전트 서비스 계정에 서비스 계정 프로젝트 또는 서비스 계정 프로젝트의 서비스 계정(더욱 세밀하게 제어하려는 경우)에 대한 서비스 계정 토큰 생성자 역할을 부여합니다. 이렇게 하면 일괄 처리 프로젝트의 Compute Agent 서비스 에이전트 서비스 계정에 서비스 계정 프로젝트의 서비스 계정에 대한 토큰을 만들 수 있는 권한이 부여됩니다.

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

      gcloud CLI 예시:

      다음 샘플 명령어는 일괄 처리 프로젝트의 Compute Engine 서비스 에이전트 서비스 계정에 프로젝트 수준의 서비스 계정 토큰 생성자 역할을 부여합니다.

      gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      

      다음 샘플 명령어는 클러스터 프로젝트의 Compute Engine 서비스 에이전트 서비스 계정에 서비스 계정 수준의 서비스 계정 토큰 생성자 역할을 부여합니다.

      gcloud iam service-accounts add-iam-policy-binding VM_SERVICE_ACCOUNT_EMAIL \
          --member=serviceAccount:service-BATCH_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
          --role="roles/iam.serviceAccountTokenCreator"
      

일괄 워크로드 제출

설정 단계를 완료하면 배치 워크로드를 제출할 수 있습니다. 서비스 계정 프로젝트의 서비스 계정을 일괄 워크로드에 사용할 서비스 계정으로 지정해야 합니다.