本页介绍了如何为使用 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 集群生成的默认密钥表名称。
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
命令列出键值对文件时,系统会检索_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