《CDP企业数据云平台从入门到实践》——CDP之数据储存(4) https://developer.aliyun.com/article/1226399?groupCode=ClouderaCDP
2. Ozone 安全架构
Apache Ozone 是一种可扩展的分布式高性能对象存储,针对大数据工作负载进行了优化,可以处理数十亿个不同大小的对象。使用 Apache Spark、Apache YARN 和Apache Hive 等框架的应用程序无需任何修改即可在 Ozone 上原生运行。因此,必须拥有强大的安全机制来保护您的集群并保护您在 Ozone 中的数据。
Apache Ozone 中提供了多种身份验证和授权机制。
1) Ozone 认证
身份验证是识别 Ozone 组件的用户身份的过程。Apache Ozone 支持使用 Kerberos和安全令牌的强身份验证。
a) 基于 Kerberos 的身份验证
Ozone 依靠 Kerberos 来保证集群的安全。要在 Ozone 集群中启用安全性,您必须设置以下参数:
下图说明了服务组件,例如 Ozone Manager(OM)、Storage Container Manager (SCM)、DataNodes 和 Ozone Clients 如何通过 Kerberos 相互验证:
每个服务都必须配置一个有效的 Kerberos Principal Name 和一个相应的 keytab 文件,该文件用于在服务启动时以安全模式登录。相应地,Ozone 客户端必须提供有效的 Kerberos 票证或安全令牌才能访问 Ozone 服务,例如用于元数据的 OM 和用于读/写块的 DataNode。
b) 安全令牌
由于 Ozone 每秒处理数以千计的请求,每次通过 Kerberos 进行身份验证可能会造成负担过重且效率低下。因此,一旦身份验证完成,Ozone 就会向在 Kerberos 帮助下进行身份验证的用户或客户端应用程序发出委托和块令牌,以便他们可以对集群执行指定的操作,就好像他们拥有有效的 kerberos 票证一样。
Ozone 安全令牌具有令牌标识符以及来自发行者的签名。令牌的签名可以由令牌验证器验证,以验证发行者的身份,并且有效的令牌持有者可以使用令牌对集群执行操作。
c) 委托令牌
委托令牌允许用户或客户端应用程序模拟用户的 kerberos 凭证。客户端最初通过Kerberos 向 OM 进行身份验证,并从 OM 获取委托令牌。OM 发行的委托令牌允许令牌持有者访问 OM 提供的元数据服务,例如创建卷或列出存储桶中的对象。
当 OM 收到带有委托令牌的客户端请求时,它会使用其公钥检查签名来验证令牌。委托令牌可以转移到其他客户端进程。当令牌过期时,原始客户端必须请求一个新的委托令牌,然后将其传递给其他客户端进程。
委托令牌操作(例如获取、更新和取消)只能在经过 Kerberos 身份验证的连接上执行。
d) 区块令牌
块令牌类似于委托令牌,因为它们是由 OM 发行/签名的。块令牌允许用户或客户端应用程序读取或写入数据节点中的块。与通过获取、更新或取消 API 请求的委托令牌不同,块令牌透明地提供给客户端,其中包含有关密钥或块位置的信息。当DataNodes 收到来自客户端的读/写请求时,DataNodes 使用颁发者(OM)的证书或公钥验证块令牌。
客户端不能更新区块令牌。当块令牌过期时,客户端必须检索密钥/块位置以获取新的块令牌。
e) S3 令牌
Ozone 通过 Ozone S3 Gateway 支持 Amazon S3 协议。在安全模式下,OM 向使用 S3 API 访问 Ozone 的 Kerberos 身份验证用户或客户端应用程序发出 S3 密钥。可以在 Ozone 的 AWS 配置文件中添加访问密钥 ID 秘密访问密钥,以确保特定用户或客户端应用程序可以访问 Ozone 存储桶。
S3 令牌由 Amazon S3 客户端创建的 S3 密钥签名。Ozone S3 网关为每个 S3 客户端请求创建令牌。用户必须拥有 S3 密钥才能创建 S3 令牌,与块令牌类似,S3 令牌对客户端是透明处理的。
f) Ozone 安全令牌如何工作?
Ozone 安全使用基于证书的方法来验证安全令牌,这使得令牌更加安全,因为共享密钥永远不会通过网络传输。
在安全模式下,SCM 将自身引导为证书颁发机构(CA)并创建自签名 CA 证书。OM和 DataNode 必须通过证书签名请求(CSR)向 SCM CA 注册。SCM 通过 Kerberos验证 OM 和 DataNode 的身份并签署组件的证书。然后 OM 和 DataNode 使用签名的证书来证明它们的身份。这对于签署和验证委托或块令牌特别有用。
在块令牌的情况下,OM(令牌发行者)使用其私钥对令牌进行签名,而 DataNodes(令牌验证器)使用 OM 的证书来验证块令牌,因为 OM 和 DataNode 信任 SCM 签名的证书。
在委托令牌的情况下,当 OM(既是令牌发行者又是令牌验证者)在高可用性(HA)模式下运行时,有多个 OM 实例同时运行。当领导 OM 实例发生变化时,由 OM 实例 1 签发和签署的委托令牌可以由 OM 实例 2 验证。这是可能的,因为两个实例都信任 SCM CA 签名证书。
g) 高可用性 SCM 的基于证书的身份验证
Ozone 服务(例如 Storage Container Manager(SCM)、Ozone Manager(OM)和 DataNodes)之间的身份验证是使用证书实现的,并确保 Ozone 集群中的安全通信。证书在安装期间由 SCM 颁发给其他服务。
下图说明了 SCM 如何向其他 Ozone 服务颁发证书:
HA 配置中的原始 SCM 使用自签名证书启动根证书颁发机构(CA)。原始 SCM 向自身和 HA 配置中的其他自举 SCM 颁发签名证书。原始 SCM 也有一个从属 CA,带有来自根 CA 的签名证书。
当一个 SCM 被引导时,它会从原始 SCM 收到一个签名证书并启动它自己的从属 CA。在 HA 配置中成为领导者的任何 SCM 的从属 CA 都会向 Ozone 集群中的 Ozone 管理器和 DataNodes 颁发签名证书。
《CDP企业数据云平台从入门到实践》——CDP之数据储存(6) https://developer.aliyun.com/article/1226380?groupCode=ClouderaCDP