为 Dataproc Metastore gRPC 端点配置 Kerberos

本页介绍了如何为 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 角色:

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

此预定义角色包含 metastore.services.create 权限 需要 创建配置了 Kerberos 的 Dataproc Metastore。

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

如需详细了解特定 Dataproc Metastore 角色和权限,请参阅使用 IAM 管理访问权限

如需了解详情,请参阅 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 文件。

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。
  2. 在虚拟机实例列表中,点击虚拟机实例所在行中的 SSH Dataproc 主节点 (your-cluster-name-m)。

    节点上的主目录中将打开一个浏览器窗口。

  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.
    

    检索 _HOST 值后, 系统使用 klist -kte 命令列出 keytab 文件。它包含 主要节点的主机名

(可选)添加新的主账号

  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
    

后续步骤