为 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 集群生成的默认 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 值。它包含主节点的主机名。

(可选)添加新的主账号

  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
    

后续步骤