Dataproc 서비스 계정 기반 보안 멀티테넌시

Dataproc 서비스 계정 기반 보안 멀티테넌시(아래에서 '보안 멀티테넌시'라고 함)를 사용하면 클러스터를 만들 때 서비스 계정에 매핑된 사용자 그룹을 사용하여 여러 사용자와 클러스터를 공유할 수 있습니다. 보안 멀티테넌시를 사용하면 사용자가 격리된 사용자 ID가 있는 클러스터에 양방향 워크로드를 제출할 수 있습니다.

사용자가 클러스터에 작업을 제출하면 작업은 다음을 수행합니다.

  • 특정 Kerberos 주 구성원이 있는 특정 OS 사용자로 실행

  • 매핑된 서비스 계정 사용자 인증 정보를 사용하여 Google Cloud 리소스에 액세스

고려사항 및 제한사항

보안 멀티테넌시가 사용 설정된 클러스터를 만드는 경우:

  • Dataproc Jobs API를 통해서만 작업을 제출할 수 있습니다.

  • 매핑된 서비스 계정이 있는 사용자만 클러스터를 사용할 수 있습니다. 예를 들어 매핑되지 않은 사용자는 클러스터에서 작업을 실행할 수 없습니다.

  • 서비스 계정은 Google 그룹이 아닌 Google 사용자에게만 매핑할 수 있습니다.

  • Dataproc 구성요소 게이트웨이는 사용 설정되어 있지 않습니다.

  • 클러스터 VM에서 시작 스크립트를 실행하는 기능과 같은 클러스터 및 Compute Engine 기능에 대한 직접 SSH 액세스가 차단됩니다. 또한 sudo 권한으로 작업을 실행할 수 없습니다.

  • Kerberos는 클러스터에서 클러스터 내 보안 통신을 위해 사용 설정되고 구성됩니다. Kerberos를 통한 최종 사용자 인증은 지원되지 않습니다.

  • Dataproc 워크플로는 지원되지 않습니다.

보안 멀티테넌시 클러스터 만들기

Dataproc 보안 멀티테넌시 클러스터를 만들려면 --secure-multi-tenancy-user-mapping 플래그를 사용하여 사용자-서비스 계정 매핑 목록을 지정합니다.

예:

다음 명령어는 bob@my-company.com 사용자가 service-account-for-bob@iam.gserviceaccount.com 서비스 계정에 매핑되고 alice@my-company.com 사용자가 service-account-for-alice@iam.gserviceaccount.com 서비스 계정에 매핑된 클러스터를 만듭니다.

gcloud dataproc clusters create my-cluster \
    --secure-multi-tenancy-user-mapping="bob@my-company.com:service-account-for-bob@iam.gserviceaccount.com,alice@my-company.com:service-account-for-alice@iam.gserviceaccount.com" \
    --scopes=https://www.googleapis.com/auth/iam \
    --service-account=cluster-service-account@iam.gserviceaccount.com \
    --region=region \
    other args ...

또는 사용자-서비스 계정 매핑 목록을 로컬 또는 Cloud Storage YAML 또는 JSON 파일에 저장할 수 있습니다. --identity-config-file 플래그를 사용하여 파일 위치를 지정합니다.

샘플 ID 구성 파일:

user_service_account_mapping:
  bob@my-company.com: service-account-for-bob@iam.gserviceaccount.com
  alice@my-company.com: service-account-for-alice@iam.gserviceaccount.com

--identity-config-file 플래그를 사용하여 클러스터를 만드는 샘플 명령어:

gcloud dataproc clusters create my-cluster \
    --identity-config-file=local or "gs://bucket" /path/to/identity-config-file \
    --scopes=https://www.googleapis.com/auth/iam \
    --service-account=cluster-service-account@iam.gserviceaccount.com \
    --region=region \
    other args ...

참고:

  • 위의 명령어에 표시된 것처럼 클러스터 --scopes에는 클러스터 서비스 계정이 가장을 수행하는 데 필요한 https://www.googleapis.com/auth/iam이 최소한 포함되어야 합니다.

  • 클러스터 서비스 계정에는 사용자에게 매핑된 서비스 계정을 가장할 수 있는 권한이 있어야 합니다(서비스 계정 권한 참조).

  • 권장사항: 각 클러스터에 서로 다른 클러스터 서비스 계정을 사용하여 각 클러스터 서비스 계정이 제한되고 의도한 매핑된 사용자 서비스 계정 그룹만 가장할 수 있도록 합니다.