Dataproc Metastore gRPC 엔드포인트의 Kerberos 구성

이 페이지에서는 gRPC 엔드포인트 프로토콜을 사용하는 Dataproc Metastore 서비스에 대해 Kerberos를 구성하는 방법을 설명합니다. Dataproc Metastore 서비스에 Thrift 엔드포인트 프로토콜이 사용되는 경우 Thrift 엔드포인트의 Kerberos 구성을 참조하세요.

시작하기 전에

  • Kerberos의 기본사항을 이해합니다.

    이 안내에서는 Dataproc 클러스터를 사용하여 다음 Kerberos 애셋을 만듭니다.

    • Keytab 파일
    • krb5.conf 파일
    • Kerberos 주 구성원

    이러한 Kerberos 애셋이 Dataproc Metastore 서비스에서 작동하는 방법에 대한 자세한 내용은 Kerberos 정보를 참조하세요.

  • 자체 Kerberos KDC를 만들고 호스팅하거나 Dataproc 클러스터의 로컬 KDC를 사용하는 방법을 알아봅니다.

  • Cloud Storage 버킷을 만들거나 기존 버킷에 대한 액세스 권한을 얻습니다. 이 버킷에 krb5.conf 파일을 저장해야 합니다.

필요한 역할

Kerberos로 구성된 Dataproc Metastore를 만드는 데 필요한 권한을 얻으려면 최소 권한의 원칙에 따라 관리자에게 프로젝트에 대해 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 Kerberos로 구성된 Dataproc Metastore를 만드는 데 필요한 metastore.services.create 권한이 있습니다.

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

특정 Dataproc Metastore 역할 및 권한에 대한 상세 설명은 IAM으로 액세스 관리를 참조하세요.

자세한 내용은 Dataproc Metastore IAM 및 액세스 제어를 참조하세요.

Dataproc Metastore의 Kerberos 구성

다음 안내에서는 gRPC 엔드포인트를 사용하는 Dataproc Metastore 서비스에 대해 Kerberos를 구성하는 방법을 보여줍니다.

먼저 gRPC 엔드포인트를 사용하는 Dataproc Metastore를 만듭니다. 그런 후 Kerberos로 구성된 Dataproc 클러스터를 만들고 여기에 연결합니다.

gRPC 엔드포인트가 포함된 Dataproc Metastore 서비스 만들기

gRPC 엔드포인트를 사용하는 Dataproc Metastore를 만들려면 다음 gcloud metastore services create 명령어를 실행합니다.

gcloud

gcloud metastore services create SERVICE \
     --instance-size=medium \
     --endpoint-protocol=grpc

다음과 같이 바꿉니다.

  • SERVICE: Dataproc Metastore 서비스 이름입니다.

Dataproc 클러스터를 만들고 서비스에 연결

Kerberos로 구성된 Dataproc을 만들려면 다음 gcloud dataproc clusters create 명령어를 실행합니다.

이 명령어에서 --enable-kerberos 옵션은 Kerberos Keytab 파일, krb5.conf 파일, 주 구성원을 만듭니다. 이러한 값은 모두 Dataproc 클러스터에서 설정된 기본 이름과 설정을 사용하여 생성됩니다.

gcloud

gcloud dataproc clusters create CLUSTER_NAME \
    --project PROJECT_ID \
    --region REGION \
    --image-version 2.0-debian10 \
    --dataproc-metastore DATAPROC_METASTORE_NAME \
    --enable-kerberos \
    --scopes 'https://www.googleapis.com/auth/cloud-platform'

다음과 같이 바꿉니다.

  • CLUSTER_NAME: Dataproc 클러스터의 이름입니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • REGION: Dataproc 클러스터를 만들려는 Google Cloud 리전입니다.
  • DATAPROC_METASTORE_NAME: 클러스터에 연결할 Dataproc Metastore 서비스 이름입니다. projects/<my_project>/locations/<location>/services/<service_id> 형식입니다.

작업 제출 전 Dataproc 구성

Dataproc 작업을 실행하려면 Hadoop container-executor.cfg 파일의 allowed.system.users 속성에 hive 사용자를 추가해야 합니다. 이를 통해 사용자는 select * from과 같은 쿼리를 실행하여 데이터에 액세스할 수 있습니다.

다음 안내에서는 Dataproc Metastore 서비스와 연결된 기본 Dataproc 클러스터에 SSH를 연결하고 container-executor.cfg 파일을 업데이트하는 방법을 보여줍니다.

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
  2. 가상 머신 인스턴스 목록의 Dataproc 기본 노드(your-cluster-name-m) 행에서 SSH를 클릭합니다.

    노드의 홈 디렉터리에 브라우저 창이 열립니다.

  3. SSH 세션에서 Hadoop container-executor.cfg 파일을 엽니다.

    sudo vim /etc/hadoop/conf/container-executor.cfg
    

    모든 Dataproc 노드에 다음 줄을 추가합니다.

    allowed.system.users=hive
    

kerberos 티켓 가져오기

다음 안내에서는 Kerberos 티켓을 생성하는 방법을 보여줍니다.

  1. Dataproc 클러스터 ssh 세션에서 kerberos 티켓을 생성하고 Dataproc Metastore 서비스에 연결합니다.

    이 명령어는 Dataproc 클러스터에서 생성된 기본 keytab 이름을 사용합니다.

    sudo klist -kte /etc/security/keytab/hive.service.keytab
    sudo kinit -kt /etc/security/keytab/hive.service.keytab hive/_HOST@${realm}
    sudo klist # gets the ticket information.
    

    klist -kte 명령어를 사용하여 keytab 파일이 나열되면 _HOST 값이 검색됩니다. 여기에는 기본 노드의 호스트 이름이 포함됩니다.

(선택사항) 새 주 구성원 추가

  1. 새 주 구성원을 추가하려면 다음 명령어를 실행합니다.

    sudo kadmin.local -q "addprinc -randkey PRINCIPAL"
    sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
    
  2. kerberos 티켓을 가져옵니다.

    sudo klist -kte /etc/security/keytab/hive.service.keytab
    sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL
    sudo klist
    sudo hive
    

다음 단계