本页面介绍了如何为使用 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 角色:
-
授予对 Dataproc Metastore 资源的完全控制权 (
roles/metastore.editor
) -
授予对所有 Dataproc Metastore 资源的完整访问权限,包括 IAM 政策管理 (
roles/metastore.admin
) -
授予 gRPC 对 Dataproc Metastore 元数据的读写权限 (
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 作业,您必须将 hive
用户添加到 Hadoop container-executor.cfg
文件中的 allowed.system.users
属性。这样,用户就可以运行查询来访问数据,例如 select * from
。
以下说明介绍了如何通过 SSH 连接到与 Dataproc Metastore 服务关联的 Dataproc 主集群,并更新 container-executor.cfg
文件。
- 在 Google Cloud 控制台中,转到虚拟机实例页面。
在虚拟机实例列表中,点击 Dataproc 主节点 (
your-cluster-name-m
) 行中的 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