将 Kerberos 与 Vertica 结合使用
如果您将 Kerberos 用于 Vertica 群集并且您的主体有权访问 HDFS,则您可以将 Vertica 配置为对 HDFS 使用相同的凭据。
Vertica 以下面两种方式执行 Hadoop 的身份验证,而这两种方式需要不同的配置:
-
用户身份验证 — 代表用户,通过传递用户现有的 Kerberos 凭据实现。此方法也称为用户模拟。代表特定用户执行的操作(例如执行查询)通常使用用户身份验证。
-
Vertica 身份验证 — 代表访问 ROS 数据或编录的系统进程,通过使用存储在 keytab 文件中的特殊 Kerberos 凭据实现。
注意
Vertica 和 Hadoop 必须使用相同的 Kerberos 服务器 (KDC)。Vertica 可以与多个 Kerberos 领域进行交互。要配置多个领域,请参阅多领域支持。
Vertica 会尝试在 Hadoop 令牌过期之前自动刷新它们。请参阅令牌过期。
用户身份验证
要将 Vertica 与 Kerberos 和 Hadoop 配合使用,客户端用户首先要通过 Hadoop 群集使用的一台 Kerberos 服务器(密钥分发中心或 KDC)的身份验证。例如,用户可能会运行 kinit
或登录到 Active Directory。
通过 Kerberos 服务器身份验证的用户会收到 Kerberos 票证。在客户端会话开始时,Vertica 会自动检索此票证。然后,Vertica 使用此票证获取 Hadoop 令牌,Hadoop 使用该令牌授予访问权限。Vertica 使用此令牌访问 HDFS,例如在代表用户执行查询时。当令牌过期时,Vertica 会自动更新它,并在必要时更新 Kerberos 票证。
用户必须已获得 HDFS 中相关文件的访问权限。此权限将在 Vertica 首次读取 HDFS 数据时接受检查。
如果在领域之间建立了适当的跨领域信任,Vertica 可以使用多个 KDC 服务于多个 Kerberos 领域。
Vertica 身份验证
自动进程(例如 Tuple Mover 或访问 Eon 模式公共存储的进程)不会像用户那样登录。相反,Vertica 使用存储在每个数据库节点上的 keytab 文件中的特殊身份(主体)。(这种方法也用于使用 Kerberos 但不使用 Hadoop 的 Vertica 群集。)配置 keytab 文件后,Vertica 会使用驻留在该文件中的主体自动获取和维护 Kerberos 票证,这与客户端场景中的情况非常相似。在这种情况下,客户端不与 Kerberos 交互。
每个 Vertica 节点均使用其自己的主体;将节点名称纳入主体名称是很常见的。您可以给每个节点均创建一个 keytab 文件,其中仅包含该节点的主体;或者您可以创建包含所有主体的单个 keytab 文件,并将该文件分发到所有节点。无论采用哪种方法,节点均使用其主体获取 Kerberos 票据,并随后使用该票据获取 Hadoop 令牌。
创建 HDFS 存储位置时,Vertica 使用 keytab 文件中的主体,而不是发出 CREATE LOCATION 语句的用户的主体。HCatalog 连接器有时会使用 keytab 文件中的主体,这取决于 Hive 如何对用户进行身份验证。
配置用户和 keytab 文件
如果您尚未针对 Vertica 配置 Kerberos 身份验证,请遵循为 Kerberos 身份验证配置 Vertica中的指示。对于 Hadoop 集成特别重要:
-
每个节点创建一个 Kerberos 主体。
-
将 keytab 文件放在每个数据库节点上的相同位置,并将配置参数 KerberosKeytabFile 设置为该位置。
-
将 KerberosServiceName 设置为主体的名称。(请参阅通知 Vertica 有关 Kerberos 主体的信息。)
如果您使用的是 HCatalog 连接器,请按照 HCatalog 连接器文档的配置安全性中的其他步骤操作。
如果您使用的是 HDFS 存储位置,请向所有节点主体授予将用作存储位置的 HDFS 目录的读写权限。