文档编写目的
Apache Knox网关(“ Knox”)是一种在不降低Hadoop安全性的情况下将Apache™Hadoop®服务的覆盖范围扩展到Hadoop群集之外的用户的系统。Knox还为访问群集数据和执行作业的用户简化了Hadoop安全性。Knox网关被设计为反向代理。
本文主要介绍如何在CDP-DC集群上安装部署Knox。
内容概述
1) Knox功能概述
2) CDP-DC集群上部署Knox
3) Knox功能演示
测试环境
1) CM和Cloudera Runtime版本为7.1.1
2) Redhat7.7
3) 拥有Cloudera Manager的管理员账号
4) 集群已启用Kerberos,CM和Ranger已经配置了LDAP认证
Knox功能概述
CDP数据中心群集的防御层
身份验证:Kerberos
CDP使用Kerberos进行身份验证。Kerberos是一种行业标准,用于对Hadoop集群中的用户和资源进行身份验证。CDP还包括Cloudera Manager,可简化Kerberos的设置、配置和维护。
外围层级安全性:Apache Knox
Apache Knox网关用于帮助确保CDP客户的外围安全。使用Knox,企业可以放心地将Hadoop REST API扩展到没有Kerberos复杂性的新用户,同时还可以保持对企业安全策略的遵从性。Knox为Hadoop REST API提供了一个中央网关,这些API具有不同程度的授权,身份验证,SSL和SSO功能,以为Hadoop提供单个访问点。
授权:Ranger
操作系统安全性:数据加密和HDFS
Apache Knox网关概述
Apache Knox网关(反向代理)的概念概述。
总览
Knox与企业中使用的身份管理和SSO系统集成,并允许将这些系统中的身份用于访问Hadoop集群。
Knox网关为多个Hadoop集群提供安全性,具有以下优点:
• 简化访问:通过将Kerberos封装到集群中来扩展Hadoop的REST / HTTP服务。
• 增强安全性:在不公开网络细节的情况下公开Hadoop的REST / HTTP服务,提供现成的SSL。
• 集中控制:集中实施REST API安全,将请求路由到多个Hadoop集群。
• 企业集成:支持LDAP、Active Directory、SSO、SAML和其他身份验证系统。
典型的安全流程:防火墙,通过Knox网关路由
Knox可以与不安全的Hadoop群集和Kerberos安全的群集一起使用。在采用Kerberos安全群集的企业解决方案中,Apache Knox网关提供了企业安全解决方案,该解决方案:
• 与企业身份管理解决方案完美集成
• 保护Hadoop群集部署的详细信息(主机和端口对最终用户隐藏)
• 简化客户端需要与之交互的服务数量
Knox网关部署架构
外部访问Hadoop的用户可以通过Knox,Apache REST API或Hadoop CLI工具进行访问。
Knox支持的服务矩阵
一个支持矩阵,显示Apache Knox对Kerberized和Non-Kerberized集群支持的代理和SSO服务。
Table 1. Knox Supported Components
Component | SSO | Proxy (API) | Proxy (UI) |
---|---|---|---|
Cloudera Manager | ✓ | ✓ | ✓ |
Ambari Metrics/Grafana | |||
Atlas | ✓ | ✓ | ✓ |
HBase | ✓1 | ||
HDFS | ✓ | ||
Hive (via JDBC) | ✓ | ||
Hive (via WebHCat) | ✓ | ||
Livy | ✓ | ||
Log Search | ✓ | ✓ | |
MapReduce2 | ✓ | ✓ | |
Oozie | ✓ | ✓ | ✓ |
Ranger | ✓2 | ✓ | ✓3 |
SmartSense | |||
Spark 2/Spark History Server | ✓ | ✓ | |
WebHCat/Templeton | ✓ | ||
WebHDFS | ✓ | ||
YARN | ✓ | ✓ | ✓ |
Zeppelin | ✓ | ✓ | ✓ |
Apache Knox
本文档提供有关如何使用Cloudera Data Platform数据中心安装过程部署Apache Knox的说明。
Apache Knox是用于与REST API和UI进行交互的应用程序网关。Knox网关为Cloudera Data Platform集群中的所有REST和HTTP交互提供了单个访问点。
安装Knox时,必须在群集上启用Kerberos。
安装步骤
1)添加服务
从您的Cloudera Manager主页,转到状态选项卡> 群集名称> ... > 添加服务
2) 添加Knox服务
从服务列表中,选择“ knox”,然后单击“ 继续”。
3) 添加依赖项
在“选择依赖项”页面上,选择要Knox设置的依赖项:
HDFS,Ranger,Solr,Zookeeper | 对于需要Apache Ranger进行授权的用户。带Ranger的HDFS。HDFS取决于Zookeeper,而Ranger取决于Solr。 |
---|---|
HDFS,Zookeeper | HDFS取决于Zookeeper。 |
没有可选的依赖 | 对于不希望将Knox与HDFS或Ranger集成的用户。 |
这里选择对HDFS/Ranger/Solr/Zookeeper的依赖项。
4) 分配角色
在“分配角色”页面上,选择依赖项的角色分配,然后单击“继续”:
Knox服务角色 | 描述 | 是否必须? |
---|---|---|
Knox Gateway | 如果安装了Knox,则应至少安装此角色的一个实例。该角色代表Knox网关,该网关为与Apache Hadoop集群的所有REST和HTTP交互提供单个访问点。 | 必须 |
KnoxIDBroker * | 强烈建议将此角色安装在其自己的专用主机上。顾名思义,该角色将使您能够利用Knox的Identity Broker功能,这是一种身份联合解决方案,可以将群集身份验证交换为临时云凭据。* | 可选的* |
网关 | 此角色随CSD框架一起提供。网关结构用于描述安装了网关角色的每个主机上服务的客户端配置。 | 可选的 |
*注意:KnoxIDBroker显示在“分配角色”页面中,但CDP-DC当前不支持它。
我们这里先只选择Knox Gateway角色。
5) 参数配置
在“查看更改”页面上,大多数默认值都是可接受的,但是您必须启用Kerberos身份验证并提供Knox主密钥。在“ Knox安装角色参数”中列出了可以指定或更改的其他参数。
a) 单击启用Kerberos身份验证
启用Knox时需要Kerberos。
b) 提供Knox admin的密码,例如BadPass#1
c) 点击继续。
6)查看命令详细信息
“命令详细信息”页面显示了操作状态。完成后,系统管理员可以在stdout下查看安装日志。
回到Cloudera Manager主页,查看Knox服务
使用Apache Knox Gateway UI
可以通过Knox网关UI配置Knox代理。要设置代理,您将首先定义提供者配置和描述符,然后将基于这些设置自动生成拓扑。
登录到网关UI时,Knox期望可以登录操作系统的用户。
Cloudera Manager创建您需要的大多数拓扑。您可以使用Knox Gateway UI创建其他拓扑或修改现有拓扑。
以下步骤显示了如何设置Knox代理的基本工作流程。它涉及到定义提供程序配置和描述符,这些配置程序和描述符用于生成拓扑,可以定义代理(除其他事项外)。您还可以通过手动配置各个拓扑文件来手动设置Knox代理。
步骤
从Cloudera Manager导航到Knox Gateway UI:Cloudera Manager > 集群> Knox > Knox Gateway UI。
将打开Knox Gateway UI,例如 https://ip-10-0-0-214.ap-southeast-1.compute.internal:8443/gateway/homepage/home
登录到网关UI。
使用前面配置页面中设置的密码,提升密码错误。
这是因为开启了LDAP的缘故。
使用admin的LDAP账户登录成功。
可以展开cdp-proxy,看到已经默认配置的proxy
点击配置的proxy,会SSO登录到对应的页面,例如Yarn ResourceManager Web UI V2和Cloudera Manager Admin Console
接着我们使用另外一个LDAP用户superuser登录Knox
从Knox页面上,目前看不到是哪个用户登录的。
点击配置的proxy,会SSO登录到对应的页面,例如Cloudera Manager Admin Console和Ranger。
Ranger退出当前superuser,使用admin用户登录,查看ranger的登录审计记录:
可以看到有Proxy方式登陆的,有用户密码方式登陆的。
如果需要通过API方式使用SSO,可以展开cdp-proxy-api
如果需要去knox的管理员页面配置信息,则通过Admin UI URL挑战到对应的admin UI页面:
在admin UI中可以配置Provider/Descriptors/Service Definitions等信息。
总结
1.通过Knox设置的SSO,可以对外只保留一个端口,减少了网络端口暴露带来的风险。
2.如果CDP-DC集群已经启用LDAP,则Knox需要使用LDAP的用户登录。
3.Knox依赖Kerberos,在部署Knox时需先启用Kerberos。