跳到主要内容

在 Kubernetes 上

在 Kubernetes 上运行 HivePlus 的快速入门指南[/docs/quick/k8s/run-k8s/kerberos/]包含在 Kubernetes 上使用 Kerberos 认证的说明。本页提供额外的详细信息供您参考。

要求

要使用 Kerberos 认证,应满足以下要求。

  • KDC(密钥分发中心)用于管理 Kerberos 票据,应由管理员设置。
  • 如果 Metastore 以安全模式运行,其服务 keytab 文件应复制到目录kubernetes/key
  • 如果 HiveServer2 使用 Kerberos 认证,其服务 keytab 文件应复制到目录kubernetes/key
  • 为了在 DAGAppMaster 和 ContainerWorkers 中访问 HDFS,用户 keytab 文件应复制到目录kubernetes/key(用于mr3-site.xml中的配置键mr3.keytabmr3.k8s.keytab.mount.file)。只有当访问 HDFS 时才需要用户 keytab 文件。
  • 为了访问加密的(启用 Kerberos 的)HDFS,应设置 Hadoop KMS(密钥管理服务器)来管理模拟和委托令牌。如果加密 HDFS 是安全 Hadoop 集群的一部分,管理员可以重用现有的 KMS。

通常,我们需要两个服务 keytab 文件和一个用户 keytab 文件,用于kubernetes/env.sh中的三个环境变量。

kerberos.keytab.file

实际上,可以为 Metastore 和 HiveServer2 使用一个通用的服务 keytab 文件。此外,也可以使用相同的服务 keytab 文件来处理 HDFS 令牌。因此,用户可以使用单个服务 keytab 文件在 Kubernetes 上运行 HivePlus。

服务主体

使用 Kerberos 认证的一个含义是,在kubernetes/env.sh中,**HIVE_SERVER2_KERBEROS_PRINCIPAL中 principal 的服务名称应与DOCKER_USER中的用户匹配。**例如,hive/mr3@PL是一个有效的 Kerberos 服务主体,因为DOCKER_USER默认设置为hive

这两个值应该匹配的原因有两个。

  • DAGAppMaster 通过比较 1) DAGAppMaster 的用户(在DOCKER_USER中设置)和 2) HiveServer2 的用户(这是主体中的服务名称)来检查 HiveServer2 是否有正确的权限。
  • ContainerWorkers 中的 Shuffle 处理程序将主体的服务名称与中间文件的所有者(在DOCKER_USER中设置)进行比较。
信息

DAGAppMaster 和 ContainerWorkers 使用DOCKER_USER中的用户,因为内部脚本(mr3-setup.sh)将配置键mr3.k8s.pod.master.usermr3.k8s.pod.worker.use设置为DOCKER_USER中的用户。

用户可以通过在mr3-site.xml中将mr3.am.acls.enabled设置为 false 来禁用 DAGAppMaster 中的权限检查。由于 DAGAppMaster 不向外部暴露其地址,HiveServer2 的安全性不会受到损害。