本页介绍了如何为 Google Cloud 控制台配置 Kerberos 使用 gRPC 端点协议的 Dataproc Metastore 服务。 如果您的 Dataproc Metastore 服务使用 Thrift 端点协议,请参阅 为 Thrift 端点配置 Kerberos。
准备工作
了解 Kerberos。
在以下说明中,您将使用 Dataproc 集群来创建 以下 Kerberos 资产:
- Keytab 文件。
krb5.conf
文件。- Kerberos 正文。
有关这些 Kerberos 资产如何与 Dataproc Metastore 服务,请参阅关于 Kerberos。
创建并托管您自己的 Kerberos KDC 或了解如何使用 Dataproc 集群。
创建 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 服务。
首先,您需要创建一个使用 gRPC 端点的 Dataproc Metastore。之后,您将创建 Kerberos 并与之连接。
创建使用 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
:您要在 Google Cloud 上创建 Dataproc 集群。DATAPROC_METASTORE_NAME
: 您要挂接到集群的 Dataproc Metastore 服务。 采用以下格式:projects/<my_project>/locations/<location>/services/<service_id>
。
在提交作业之前配置 Dataproc
如需运行 Dataproc 作业,请执行以下操作:
必须将 hive
用户添加到 allowed.system.users
Hadoop container-executor.cfg
文件。这样,用户就可以运行查询来访问数据
例如 select * from
。
以下说明介绍了如何通过 SSH 连接到主 Dataproc
与 Dataproc Metastore 服务关联的集群
更新 container-executor.cfg
文件。
- 在 Google Cloud 控制台中,前往虚拟机实例页面。
在虚拟机实例列表中,点击虚拟机实例所在行中的 SSH Dataproc 主节点 (
your-cluster-name-m
)。节点上的主目录中将打开一个浏览器窗口。
在 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.
检索
_HOST
值后, 系统使用klist -kte
命令列出 keytab 文件。它包含 主要节点的主机名
(可选)添加新的主账号
如需添加新的主账号,请运行以下命令。
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