初始 Kerberos 集成

https://blueprints.launchpad.net/sahara/+spec/initial-kerberos-integration

目前尚无法为 Sahara 部署的集群启用 Kerberos 集成。 顺便说一下,默认的管理服务,如 Cloudera Manager 和 Ambari 管理控制台,已经支持为部署的集群配置 Kerberos。 我们应该在 sahara 的 Cloudera 和 Ambari 插件中进行此功能的初步集成。

问题描述

用户希望使用 Kerberos 来提高 Sahara 创建的集群的安全性。

提议的变更

拟议的更改如下

  • 在集群节点上进行初始 MIT KDC 集成。 此外,将为 sahara 用途创建 admin principal(sahara 将使用改进的密钥存储来存储该 principal);

  • 将添加使用 Cloudera Manager API(参见下面的参考资料 [0],[1],[2])和 Ambari(参见下面的参考资料 [3])配置 Kerberos 集群的功能;

  • 需要身份验证的远程操作应包装在 ticket granting 方法中,以便 sahara 能够使用 hdfs 等执行操作;

  • Oozie 客户端应重新实现以反映这些更改。 默认情况下,如果集群未部署 Kerberos(例如 vanilla),我们将继续使用 requests python 库来绑定 Oozie API(无需身份验证)。 在实现 kerberos 的情况下,应实现新的 Oozie 客户端。 该客户端将使用标准的远程实现和 curl 来处理使用 ticket granting 对 Oozie 进行身份验证。 另一种方法是为此目标使用 request-kerberos,但这不是一个好的解决方案,因为该库与 python3 不兼容。

将在集群模板(或集群)的常规部分添加新的配置选项

  • 启用 Kerberos:将为集群启用 kerberos 安全性(Ambari 或 CDH);

作为附加增强功能,可以添加支持使用现有的 KDC 服务器。 在这种情况下,需要其他选项

  • 使用 现有 KDC:将启用使用现有的 KDC 服务器,然后应提供其他数据;

  • Admin principal:admin principal,以便能够创建新的 principals;

  • Admin password:将从 API 输出中隐藏,并将存储在改进的密钥存储中;

  • KDC 服务器 主机名:KDC 服务器的主机名

如果需要其他内容来识别 KDC 服务器,它也将添加到配置的常规部分。

可以在实现上述步骤后进行其他可能的改进。 顺便说一下,初始实现仅包含上述步骤。

替代方案

数据模型影响

无。 如果需要,将使用额外的字段来实现该目标。

REST API 影响

其他最终用户影响

部署者影响

开发者影响

Sahara-image-elements impact

应将 KDC 基础设施所需的所有软件包包含在我们的镜像中。 如果缺少某些内容,则会另外安装。

Sahara-dashboard / Horizon 影响

在 Sahara 仪表板侧不需要任何其他内容,因为所有所需选项都在常规部分,并将像往常一样准备好。

实现

负责人

主要负责人

vgridnev (Vitaly Gridnev) 和 msionkin (Michael Ionkin)

工作项

所有工作项将在拟议的更改中描述。 此外,我们可以在 Sahara CI 上包含测试初始 Kerberos 集成,但仅在完成所有步骤后。 当然,将添加单元测试。

依赖项

取决于 OpenStack 的要求。 作为初步想法,不应将任何其他内容添加到当前的 sahara 要求中,所有需要的软件包将仅包含在 sahara 镜像中。

测试

Sahara CI 将涵盖此更改,并且肯定会添加单元测试。

文档影响

可以添加新的部分,其中包含有关 Ambari 和 Cloudera 中 Kerberos 集成的描述。

参考资料

[0] https://github.com/cloudera/cm_api/blob/f4431606a690d95208457a64d1cc2610d9cfa2bf/python/src/cm_api/endpoints/cms.py#L134 [1] https://github.com/cloudera/cm_api/blob/f4431606a690d95208457a64d1cc2610d9cfa2bf/python/src/cm_api/endpoints/clusters.py#L585 [2] http://www.cloudera.com/documentation/enterprise/5-5-x/topics/cm_sg_using_cm_sec_config.html [3] https://cwiki.apache.org/confluence/display/AMBARI/Automated+Kerberizaton#AutomatedKerberizaton-TheRESTAPI