安全化 Datanode
Hadoop 中 datanode 的安全机制是通过给每个节点创建 Keytab 文件实现的。Ozone 的 datanode 安全机制不依赖 Kerberos,而是改用 datanode 证书。
但是我们也支持传统的基于 Kerberos 的认证来方便现有用户,用户只需要在 hdfs-site.xml 里配置下面参数即可:
参数名 | 描述 |
---|---|
dfs.datanode.kerberos.principal | datanode 的服务主体名 比如:dn/_HOST@REALM.COM |
dfs.datanode.kerberos.keytab.file | datanode 进程所使用的 keytab 文件 |
hdds.datanode.http.auth.kerberos.principal | datanode http 服务器的服务主体名 |
hdds.datanode.http.auth.kerberos.keytab | datanode http 服务器的服务主体登录所使用的 keytab 文件 |
如何安全化 datanode
在 Ozone 中,当 datanode 启动并发现 SCM 的地址之后,datanode 首先创建私钥并向 SCM 发送证书请求。
通过 Kerberos 颁发证书当前模型
SCM 有一个内置的 CA 用来批准证书请求,如果 datanode 已经有一个 Kerberos keytab,SCM 会信任它并自动颁发一个证书。
手动颁发开发中
如果 datanode 是新加入的并且没有 keytab,那么证书请求需要等待管理员的批(手动批准功能尚未完全支持)。换句话说,信任关系链由集群管理员建立。
自动颁发 开发中
如果你通过 Kubernetes 这样的容器编排软件运行 Ozone,Kubernetes 需要为 datanode 创建一次性 token,用于在启动阶段证明 datanode 容器的身份。(这个特性也正在开发中。)
证书颁发后,datanode 的安全就得到了保障,并且 OM 可以颁发块 token。如果 datanode 没有证书或者 SCM 的根证书,datanode 会自动进行注册,下载 SCM 的根证书,并获取自己的证书。