Dataproc Metastore의 gRPC 엔드포인트 액세스

이 페이지에서는 Google Cloud 사용자 계정 또는 서비스 계정에 gRPC 엔드포인트 프로토콜을 사용하는 Dataproc Metastore 서비스에 대한 액세스 권한을 부여하는 방법을 설명합니다.

gRPC 메타데이터 역할 부여 정보

계정에 메타데이터 액세스 권한을 부여할 때는 다음 개념을 고려하세요.

  • 제공할 액세스 수준. 부여하는 액세스 수준에 따라 계정이 액세스할 수 있는 메타데이터 수준이 결정됩니다. 예를 들어 특정 데이터베이스의 특정 테이블에 저장된 메타데이터에 대한 액세스 권한을 제공하도록 선택하거나 전체 프로젝트에 대한 액세스 권한을 제공할 수 있습니다.
  • 액세스가 필요한 주 구성원. IAM 주 구성원(ID)을 사용하여 작업을 실행합니다. 예를 들어 사용자 계정 또는 서비스 계정(일반적으로 Dataproc VM 서비스 계정)을 사용하여 Dataproc 클러스터 작업을 실행할 수 있습니다.

    Dataproc Metastore에 사용할 수 있는 계정에 대한 자세한 내용은 Dataproc 서비스 계정을 참조하세요.

필요한 제어 범위에 따라 다음 사전 정의된 IAM 역할 중 하나를 주 구성원에 부여합니다.

  • 메타데이터 리소스에 대해 전체 액세스 권한을 부여하려면 다음 안내를 따르세요. 메타데이터 소유자 역할(roles/metastore.metadataOwner)이 필요합니다.
  • 메타데이터에 대해 읽기/쓰기 액세스 권한을 부여하려면 메타데이터 편집자 역할(roles/metastore.metadataEditor)이 필요합니다.
  • 메타데이터에 대해 읽기 액세스 권한을 부여하려면 메타데이터 뷰어 역할(roles/metastore.metadataViewer)이 필요합니다.

시작하기 전에

  • 프로젝트에서 Dataproc Metastore를 사용 설정합니다.
  • gRPC 프로토콜을 사용하는 메타스토어 서비스를 만듭니다.
  • 프로젝트별 네트워킹 요구사항을 숙지합니다.

    • gRPC 및 Virtual Private Cloud(VPC) 요구사항. gRPC를 사용하는 경우 공유 VPC를 구성하거나 추가 네트워크 구성을 설정할 필요가 없습니다. 기본적으로 gRPC 엔드포인트는 모든 VPC에서 연결할 수 있습니다.

    그러나 한 가지 예외가 있습니다. 프로젝트가 VPC-SC 서비스 경계를 사용하는 경우에는 해당 경계의 프로젝트에 속하는 VPC에서만 gRPC 엔드포인트에 연결할 수 있습니다. 자세한 내용은 Dataproc Metastore로 VPC 서비스 제어를 참조하세요.

필요한 역할

주 구성원에 Dataproc Metastore 메타데이터에 대한 액세스 권한을 부여하는 데 필요한 권한을 얻으려면 관리자에게 최소 권한의 원칙에 따라 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 주 구성원에 Dataproc Metastore 메타데이터에 대한 액세스 권한을 부여하기 위해 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.

필수 권한

주 구성원에 Dataproc Metastore 메타데이터 액세스 권한을 부여하려면 다음 권한이 필요합니다.

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

특정 Dataproc Metastore 역할 및 권한에 대한 자세한 내용은 Dataproc Metastore IAM 개요를 참조하세요.

주 구성원 계정에 메타데이터에 대한 액세스 권한 부여

프로젝트 수준, 서비스 수준, 데이터베이스 수준, 테이블 수준에서 주 구성원 계정에 메타데이터 액세스 권한을 부여할 수 있습니다.

프로젝트 수준에서 액세스 부여

프로젝트 수준에서 모든 Dataproc Metastore 메타스토어에 대해 액세스 권한을 부여하려면 주 구성원 계정에 메타데이터 역할을 부여해야 합니다.

gcloud CLI

지정된 프로젝트에서 모든 Dataproc Metastore 서비스에 메타데이터 역할을 부여하려면 다음 gcloud projects add-iam-policy-binding 명령어를 실행합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=PRINCIPAL \
    --role=METASTORE_ROLE

다음을 바꿉니다.

  • PROJECT_ID: 메타데이터 액세스 권한을 부여할 Google Cloud 프로젝트 ID입니다.
  • PRINCIPAL: 주 구성원의 유형 및 이메일 ID(이메일 주소)
    • 사용자 계정: user:EMAIL_ID
    • 서비스 계정: serviceAccount:EMAIL_ID
    • Google 그룹스: group:EMAIL_ID
    • 다른 주 구성원 유형: ID 관련 개념
  • METASTORE_ROLE: 주 구성원에 부여하려는 액세스 범위에 따라 roles/metastore.metadataViewer, roles/metastore.metadataEditor, roles/metastore.metadataOwner 역할 중 하나

서비스 수준에서 액세스 부여

서비스 수준에서 모든 Dataproc Metastore 메타스토어에 대해 액세스 권한을 부여하려면 주 구성원 계정에 메타데이터 역할을 부여해야 합니다.

gcloud CLI

단일 Dataproc Metastore 서비스의 세분성으로 메타데이터 역할을 부여하려면 다음 gcloud metastore services add-iam-policy-binding 명령어를 실행합니다.

gcloud metastore services add-iam-policy-binding SERVICE_ID \
  --location=LOCATION \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

다음을 바꿉니다.

  • SERVICE_ID: Dataproc Metastore 서비스의 ID 또는 정규화된 식별자입니다.
  • LOCATION: 액세스를 부여하려는 Dataproc Metastore의 리전입니다.
  • PRINCIPAL: 주 구성원의 유형 및 이메일 ID(이메일 주소)입니다.
    • 사용자 계정: user:EMAIL_ID
    • 서비스 계정: serviceAccount:EMAIL_ID
    • Google 그룹스: group:EMAIL_ID
    • 다른 주 구성원 유형: ID 관련 개념
  • METASTORE_ROLE: 주 구성원에 부여하려는 액세스 범위에 따라 roles/metastore.metadataViewer, roles/metastore.metadataEditor, roles/metastore.metadataOwner 역할 중 하나

데이터베이스 수준에서 액세스 부여

특정 데이터베이스에서 모든 Dataproc Metastore 메타스토어에 대해 액세스 권한을 부여하려면 주 구성원 계정에 메타데이터 역할을 추가해야 합니다.

gcloud CLI

특정 데이터베이스의 세분성으로 메타데이터 역할을 부여하려면 다음 gcloud metastore services databases add-iam-policy-binding 명령어를 실행합니다.

gcloud metastore services databases add-iam-policy-binding DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

다음을 바꿉니다.

  • DATABASE_ID: 메타데이터 액세스 권한을 부여할 데이터베이스의 ID입니다. 이 ID는 데이터베이스 스키마에서 가져옵니다.
  • PROJECT: 메타데이터 액세스 권한을 부여할 Dataproc Metastore 서비스가 포함된 Google Cloud 프로젝트 ID입니다.
  • LOCATION: 액세스를 부여하려는 Dataproc Metastore 서비스의 리전입니다.
  • SERVICE_ID: Dataproc Metastore 서비스의 ID 또는 정규화된 식별자입니다.
  • PRINCIPAL: 주 구성원의 유형 및 이메일 ID(이메일 주소)입니다.
    • 사용자 계정: user:EMAIL_ID
    • 서비스 계정: serviceAccount:EMAIL_ID
    • Google 그룹스: group:EMAIL_ID
    • 다른 주 구성원 유형: ID 관련 개념
  • METASTORE_ROLE: 주 구성원에 부여하려는 액세스 범위에 따라 roles/metastore.metadataViewer, roles/metastore.metadataEditor, roles/metastore.metadataOwner 역할 중 하나

테이블 수준에서 액세스 부여

특정 테이블에서 모든 Dataproc Metastore 메타스토어에 대해 액세스 권한을 부여하려면 주 구성원 계정에 메타데이터 역할을 부여해야 합니다.

gcloud CLI

테이블의 세분성으로 메타데이터 역할을 부여하려면 다음 gcloud metastore services databases tables add-iam-policy-binding 명령어를 실행합니다.

gcloud metastore services databases tables add-iam-policy-binding TABLE_ID \
  --database=DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

다음을 바꿉니다.

  • TABLE_ID: 액세스를 부여하려는 테이블의 ID입니다. 이 ID는 데이터베이스 스키마에서 가져옵니다.
  • DATABASE_ID: 메타데이터 액세스를 부여하려는 테이블이 포함된 데이터베이스의 ID입니다. 이 ID는 데이터베이스 스키마에서 가져옵니다.
  • PROJECT: 메타데이터 액세스 권한을 부여할 Dataproc Metastore 서비스가 포함된 Google Cloud 프로젝트 ID입니다.
  • LOCATION: 메타데이터 액세스를 부여하려는 Dataproc Metastore 서비스의 리전입니다.
  • SERVICE_ID: Dataproc Metastore 서비스의 ID 또는 정규화된 식별자입니다.
  • PRINCIPAL: 주 구성원의 유형 및 이메일 ID(이메일 주소)입니다.
    • 사용자 계정: user:EMAIL_ID
    • 서비스 계정: serviceAccount:EMAIL_ID
    • Google 그룹스: group:EMAIL_ID
  • METASTORE_ROLE: 주 구성원에 부여하려는 액세스 범위에 따라 roles/metastore.metadataViewer, roles/metastore.metadataEditor, roles/metastore.metadataOwner 역할 중 하나

메타데이터에 액세스를 부여한 후

서비스 계정에 필요한 역할을 부여한 후 Dataproc Metastore를 Dataproc 클러스터에 연결할 수 있습니다. 그런 후 클러스터에서 Dataproc Metastore 서비스가 Hive Metastore로 사용됩니다.

다음 단계