本篇博客将总结 CDP 私有云基础(PvC Base)集群的安全架构。该架构反映了安全工程最佳实践的四大支柱:边界、数据、访问和可见性。CDP PvC Base的发布对安全架构进行了许多重大改进,包括:
- 用于安全策略管理的 Apache Ranger
- 更新的 Ranger 密钥管理服务
在深入研究这些技术之前,有必要熟悉有助于深度防御的分层方法的关键安全原则。每一层定义如下:
应用这些多层安全性是为了确保数据的机密性、完整性和可用性,以满足最强大的监管要求。CDP 私有云基础提供 3 个级别的安全性来实现这些功能
等级 | 安全 | 特征 |
---|---|---|
0 | 不安全 | 未配置安全性。不应该在生产环境中使用非安全集群,因为它们容易受到任何攻击和被利用。 |
1 | 最小安全 | 配置用于身份验证、授权和审计。首先配置身份验证以确保用户和服务只有在证明其身份后才能访问集群。接下来,应用授权机制为用户和用户组分配权限。审计程序会跟踪访问集群的人员(以及访问方式)。 |
2 | 更多安全 | 敏感数据被加密。密钥管理系统处理加密密钥。已为元存储中的数据设置审计。系统元数据会定期审查和更新。理想情况下,已设置集群以便可以跟踪任何数据对象的血缘(数据治理)。 |
3 | 最多安全 | 安全集群是其中所有数据(包括静态数据和传输中的数据)都经过加密且密钥管理系统具有容错性的集群。审计机制符合行业、政府和监管标准(例如 PCI、HIPAA、NIST),并从集群扩展到与其集成的其他系统。集群管理员训练有素,安全程序经过专家认证,集群可以通过技术审查。 |
就本文档而言,我们将重点关注最安全的第 3 级安全性。
安全架构改进
为符合 第3 级安全实施的监管标准,客户将创建网络拓扑,以确保只有特权管理员才能访问核心 CDP 服务,而应用程序、分析师和开发人员仅限于适当的网关服务,例如 Hue 以及适当的管理和监控 Web 界面. Apache Knox 的加入将显著简化了安全访问的配置,用户受益于强大的单点登录。Apache Ranger 将安全策略管理与基于标签的访问控制、强大的审计以及与现有公司目录的集成相结合。
逻辑架构
集群架构可以拆分为多个区域,如下图所示:
外围是源数据和应用程序,网关区域是管理员和应用程序将与执行工作的核心集群区域交互的地方。然后由维护配置和密钥材料的数据层支持这些。每个区域中的服务使用 kerberos 和传输层安全性 (TLS) 的组合来验证各自主机角色之间的连接和 API 调用,这允许强制执行授权策略并捕获审计事件。Cloudera Manager 将直接针对本地 KDC 或通过公司目录中的中介来生成凭据。同样,Cloudera Manager Auto-TLS 允许每个主机证书由已建立的证书颁发机构生成和签名。如有必要,可以将授权委托给 Cloudera Manager 来签署证书,以简化实施。以下部分将更详细地介绍如何实现每个方面。
验证
通常,集群将与现有的公司目录集成,从而简化凭据管理,并与管理和维护用户和服务帐户的完善的 HR应用保持一致。Kerberos 用于使用在公司目录 (IDM/AD) 中生成并由 Cloudera Manager 分发的凭据对集群内的所有服务帐户进行身份验证。为确保这些过程的安全,重要的是 CM、企业目录和集群主机之间的所有交互都使用 TLS 安全性进行加密。签名证书分发到每个集群主机,使服务角色能够相互验证。这包括 Cloudera Agent进程,它将与 Cloudera Manager 服务器执行 TLS 握手,以便通过加密通道进行配置更改,例如 Kerberos 凭据的生成和分发。除了 CM 代理之外,所有集群服务角色(例如 Impala 守护进程、HDFS 工作角色和管理角色)通常都使用 TLS。
Kerberos
启用 Kerberos 后,所有集群角色只要拥有有效的 kerberos 票证,就能够相互验证。身份验证票证由 KDC 颁发,通常是本地 Active Directory 域控制器、FreeIPA 或 MIT Kerberos 服务器,并在提供有效凭据后与公司 kerberos 基础设施建立信任。Cloudera Manager 使用在其数据库中安全维护的提升权限来生成这些凭据并将其分发给每个服务角色。通常,管理权限将允许在公司目录内的特定组织单元 (OU) 内创建和删除 kerberos Principal. 比较好的做法是首先在 Cloudera Manager 和Agent之间启用 TLS 安全性,以确保 Kerberos Keytab文件通过加密连接传输。
加密
使用 TLS 安全性启用传输中的加密,具有两种部署模式:手动或自动 TLS。对于手动 TLS,客户使用他们自己的脚本来生成他们自己的证书并将其部署到集群主机,然后在 Cloudera Manager 中配置所使用的位置,以便集群服务能够使用它们。
通常,证书等安全工件将存储在本地文件系统 /opt/cloudera/security 中。cloudera-deploy Ansible 自动化使用这种方法。
Auto TLS 使得 Cloudera Manager 能够充当证书颁发机构,独立的或由现有的公司机构委派。然后,CM 可以生成、签名并在集群周围部署签名证书以及任何关联的信任库。一旦到位,证书将用于加密集群服务之间的网络流量。存在三个主要通信通道,HDFS 透明加密、数据传输和远程过程调用,以及与各种用户界面和 API 的通信。参考https://docs.cloudera.com/cdp-private-cloud-base/latest/security-overview/topics/cm-security-authentication-overview.html
静态加密
为了安全地存储敏感数据,确保数据在静态加密的同时也可供具有适当特权的用户和被授予解密能力的服务处理,这一点至关重要。一个安全的 CDP 集群将具有完全透明的 HDFS 加密,通常为各种存储租户和用例提供单独的加密区域。我们警告不要加密整个 HDFS,而是在那些需要加密的目录层次结构进行加密。
与 HDFS 其他关键的本地存储位置(例如 YARN 和 Impala 暂存目录)一样,日志文件也可以使用块加密进行类似的加密。HDFS 和本地文件系统都可以集成到安全的密钥托管服务中,通常部署到一个单独的集群中,该集群负责密钥管理。这确保了集群管理员和负责加密密钥的安全管理员的职责分离。此外,Key Trustee 客户端加密为 Apache Log4j2 CVE-2021-44228等漏洞提供深度防御
逻辑架构
Ranger KMS 服务概述
新的Ranger KMS 服务将老的 Ranger KMS 服务和 Key Trustee KMS 合并为一个服务,该服务既可以支持 Ranger KMS DB 也可以支持 Key Trustee Service 作为服务的后备密钥存储。两种实现都支持 HMS 与 KTS 支持的集成,提供完全的职责分离和更广泛的 HSM,尽管以额外的复杂性和硬件为代价。最好支持 RKMS KTS,以简化操作并大规模运行。Ranger KMS 支持:
- 密钥管理提供使用 Web UI 或 REST API的方式来创建、更新或删除密钥的能力
- 访问控制提供了在 Ranger KMS 中管理访问控制策略的能力。访问策略控制生成或管理密钥的权限,为 HDFS 中加密的数据增加了另一层安全性。
- AuditRanger 提供 Ranger KMS 执行的所有操作的完整审计跟踪。
- 所有政策均由 Ranger 服务维护。
关键的安全服务
Cloudera 安全和治理服务构成集群 SDX 层的一部分,可以使用 Cloudera Manager 进行部署和管理。这些将在以下部分中更详细地描述。
Apache Ranger
Apache Ranger 是一个跨平台启用、监控和管理综合数据安全性的框架。它用于创建和管理策略以访问 CDP 堆栈中所有服务的数据和其他相关对象,并且与早期版本相比具有许多改进:
- 在 CDP 之前,Ranger 仅在策略中支持用户和组。在 CDP 中,Ranger 还添加了以前存在于 Apache Sentry 中的“角色”功能。角色是用于访问给定对象的规则集合。Ranger 为您提供了将这些角色分配给特定组的选项。然后可以为角色或直接在组或个人用户上设置 Ranger 策略,然后在所有 CDP 服务中一致地实施。
- CDP 中为来自 CDH 用户的关键更改之一是用 Apache Ranger 替换 Apache Sentry,它为 YARN、Kafka、Hive、HDFS 和 Solr 服务提供更丰富的插件。HDP 客户将受益于新的Apache Ranger RMS将 Hive 表级授权与以前在 Apache Sentry 中可用的 HDFS 文件系统同步的功能。
更广泛地说,Apache Ranger 提供:
- 集中管理界面和 API
- 跨所有组件的标准化身份验证方法
- 支持基于角色的访问控制和基于属性的访问控制等多种授权方式
- 集中审核管理和审核操作
Apache Ranger 具有许多组件:
- 管理门户 UI 和 API
- Ranger 插件,每个组件的轻量级 Java 插件,旨在从中央管理服务中提取策略并存储在本地。每个用户请求都根据捕获请求的策略进行评估,并通过单独的审计事件发送到 Ranger 审计服务器。
- 用户组同步,从 UNIX 和 LDAP 同步用户和组成员资格,并由门户存储以进行策略定义
客户通常会部署 SSSD 或类似的此类技术,以便在操作系统中解析用户的组成员身份。Ranger 审计服务器随后将使用集群的 Solr 基础架构服务对这些事件进行索引,以促进分析和报告。
注意:注意 Hive 权限同步器。这在 Hive 内运行,并且将每 5 分钟定期检查每个 Hive 对象的权限,这会导致更大的 Hive 内存需求和较差的 Hive 元存储性能,其中有数千个 Hive 对象。仅当客户使用 Beeline 或使用基于 SQL 的语句来操作和审查授权时,才需要该功能。好的做法是至少减慢同步速度 hive.privilege.synchronizer.interval=3600(默认为 720)以每小时检查一次或完全禁用并使用 Ranger UI 管理策略。
安全区
安全区域使您能够将 Ranger 资源和基于标签的策略安排到特定组中,以便可以委派管理。例如在特定的安全区域:
- 安全区域“财务”包括“财务”Hive 数据库中的所有内容。
- 用户和组可以被指定为安全区域的管理员。
- 用户只能在他们是管理员的安全区域中设置策略。
- 在安全区域中定义的策略仅适用于该区域的资源。
- 一个区域可以扩展为包含来自多个服务的资源,例如 HDFS、Hive、HBase、Kafka 等,从而允许一个区域的管理员为其组织在多个服务中拥有的资源设置策略。
Apache Atlas
Atlas 是一组可扩展的核心的基础治理服务——使企业能够有效且高效地满足其在 CDP 中的合规性要求,并允许与整个企业数据生态系统集成。
组织可以构建其数据资产的目录,对这些资产进行分类和治理,并为数据科学家、分析师和数据治理团队提供围绕这些数据资产的协作能力。从逻辑上讲,Apache Atlas 的布局如下:
Apache Knox
Apache Knox 通过充当所有远程访问事件的代理,为 CDP Web UI 和 API 提供单点登录,从而简化了对集群接口的访问。其中许多 API 对于监控和发布动态配置更改很有用。
作为无状态反向代理框架,Knox 可以部署为多个实例,将请求路由到 CDP 的 REST API。随着负载的增加,它通过添加更多的 Knox 节点来线性扩展。负载均衡器可以将请求路由到多个 Knox 实例。
Knox 还拦截 REST/HTTP 调用,并通过一系列可扩展的拦截器管道提供身份验证、授权、审计、URL 重写、Web 漏洞清除等安全服务。
受 Knox 保护的每个 CDP 集群都有其一组 REST API,由单个集群特定的应用程序上下文路径表示。这使得 Knox 网关既可以保护多个集群,又可以为 REST API 使用者提供一个端点,以便跨多个集群访问所需的所有服务。
在 CDP 中,某些提供程序(sso、pam、admin、manager)和拓扑(cdp-proxy、cdp-proxy-api)已经预先配置,并且大部分都集成到 Cloudera Manager 的配置 UI 中。此外,CDP 还为用户提供了一个有用的预配置主页。
集群定义在拓扑部署描述符中定义,并为 Knox 网关提供集群布局,以便在面向用户的 URL 和集群内部之间进行路由和转换。
只需将拓扑部署描述符写入 Knox 安装的拓扑目录,即可处理新的 CDP 集群定义,配置策略实施提供程序,并使应用程序上下文路径可供 API 使用者使用。CDP 私有云基础为客户可以为他们的环境扩展的所有各种集群服务提供了一个预配置的拓扑。
总结
我们总结了 CDP 私有云基础集群的关键的安全特性,后续文章将更详细地介绍所有关键特性的参考实施示例。
- 与公司目录集成
- 创建并保护 Hive 表:
- 描述 Ranger 策略评估流程
- 提供如何通过角色为组或用户启用和保护特定 Hive 对象的示例。
- 描述可应用于 Hive 表和底层 hdfs 目录的基于标记的策略。
- 描述映射 Ranger 审计组和角色的步骤
要了解有关 Cloudera 数据平台安全性的更多信息,请访问https://docs.cloudera.com/cdp-private-cloud-base/7.1.7/cdp-security-overview/topics/security-data-lake-security.html
原文作者:Niel Dunnage
原文链接:https://blog.cloudera.com/security-reference-architecture-summary-for-cloudera-data-platform/