安全化 Ozone

Kerberos

Ozone 集群的安全依赖于 Kerberos。过去 HDFS 支持在隔离的安全网络中运行,因此可以不进行安全化的集群部署。

Ozone 在这方面与 HDFS 保持一致,但不久之后将 默认启用安全机制 。目前,Ozone 集群启用安全机制需要将配置 ozone.security.enabled 设置为 true ,以及将 hadoop.security.authentication 设置为 kerberos

参数
ozone.security.enabledtrue
hadoop.security.authenticationkerberos

Tokens

Ozone 使用 token 的方法来防止 Kerberos 服务器负载过重,当每秒处理上千个请求时,Kerberos 可能无法很好地工作。所以,每次当用户完成一次认证之后,Ozone 会向用户颁发代理 token 和块 token,应用程序可以使用这些 token 来对集群进行特定的操作,就像它们持有 kerberos 凭据一样,Ozone 支持以下类型的 token。

代理 Token

代理 token 允许应用模拟用户的 kerberos 凭据,它基于 kerberos 的身份认证,由 OM 颁发,当集群启用安全机制时,代理 token 功能默认启用。

块 Token

用户通过块 token 来读写一个块,它的作用是让数据节点知道用户是否有对块进行读和修改的权限。

S3AuthInfo

S3 使用了一种不一样的共享秘密的安全机制,Ozone 支持 AWS Signature Version 4 协议,从用户的角度来看,Ozone 的 s3 感觉与 AWS S3 无异。

S3 token 功能在启用安全机制的情况下也默认开启。

Ozone 的每个服务进程都需要一个 Kerberos 服务主体名和对应的 kerberos keytab 文件。

ozone-site.xml 中应进行如下配置:

Storage Container Manager

SCM 需要两个 Kerberos 主体,以及两个对应的 keytab 文件。

配置描述
hdds.scm.kerberos.principalSCM 服务主体,例如:scm/_HOST@REALM.COM
hdds.scm.kerberos.keytab.fileSCM 进程使用的 keytab 文件
hdds.scm.http.kerberos.principalSCM http 服务主体
hdds.scm.http.kerberos.keytabSCM http 服务使用的 keytab 文件

Ozone Manager

和 SCM 一样,OM 也需要两个 Kerberos 主体和对应的 keytab 文件。

配置描述
ozone.om.kerberos.principalOzoneManager 服务主体,例如:om/_HOST@REALM.COM
ozone.om.kerberos.keytab.fileOM 进程使用的 keytab 文件
ozone.om.http.kerberos.principalOM http 服务主体
ozone.om.http.kerberos.keytabOM http 服务使用的 keytab 文件

S3 网关

S3 网关只需要一个服务主体,配置如下:

配置描述
ozone.s3g.authentication.kerberos.principalS3 网关服务主体,例如:HTTP/_HOST@EXAMPLE.COM
ozone.s3g.keytab.fileS3 网关使用的 keytab 文件