本頁說明如何為使用 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 bucket 或取得現有 bucket 的存取權。您必須將
krb5.conf
檔案儲存在這個 bucket 中。
必要的角色
如要取得建立已設定 Kerberos 的 Dataproc Metastore 所需的權限,請要求管理員根據最低權限原則,授予您專案的下列 IAM 角色:
-
授予 Dataproc Metastore 資源的完整控制權 (
roles/metastore.editor
) -
授予所有 Dataproc Metastore 資源的完整存取權,包括身分與存取權管理政策管理權 (
roles/metastore.admin
) -
授予 Dataproc Metastore 中繼資料的 gRPC 讀寫權 (
roles/metastore.metadataEditor
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這個預先定義的角色具備 metastore.services.create
權限,
這是建立已設定 Kerberos 的 Dataproc Metastore 時的必要權限。
詳情請參閱「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
檔案中,將 hive
使用者新增至 allowed.system.users
屬性。使用者可以執行查詢來存取資料,例如 select * from
。
下列操作說明會示範如何透過 SSH 連線至與 Dataproc Metastore 服務相關聯的主要 Dataproc 叢集,並更新 container-executor.cfg
檔案。
- 前往 Google Cloud 控制台的「VM Instances」(VM 執行個體) 頁面。
在虛擬機器執行個體清單中,找到 Dataproc 主要節點 (
your-cluster-name-m
),然後在該列中按一下「SSH」SSH。瀏覽器視窗會開啟節點上的主目錄。
在 ssh 工作階段中,開啟 Hadoop
container-executor.cfg
檔案。sudo vim /etc/hadoop/conf/container-executor.cfg
在每個 Dataproc 節點上新增下列程式碼。
allowed.system.users=hive
取得 Kerberos 票證
下列操作說明顯示如何產生 Kerberos 票證。
在 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
值。其中包含主要節點的主機名稱。
(選用) 新增主體
如要新增主體,請執行下列指令。
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"
取得 Kerberos 票證。
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive