为 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 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色可提供 metastore.services.create 权限,这是创建使用 Kerberos 配置的 Dataproc Metastore 所必需的。

您也可以使用自定义角色或其他预定义角色来获取此权限。

如需详细了解特定 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 作业,您必须将 hive 用户添加到 Hadoop container-executor.cfg 文件中的 allowed.system.users 属性。这样,用户就可以运行查询来访问数据,例如 select * from

以下说明介绍了如何通过 SSH 连接到与 Dataproc Metastore 服务关联的主要 Dataproc 集群,并更新 container-executor.cfg 文件。

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。
  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 集群生成的默认密钥表名称。

    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 值。其中包含主节点的主机名。

(可选)添加新的主账号

  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
    

后续步骤