Ozone Security:基于证书的Block Access Token认证

前言


在HDFS中,我们有Block Access Token的机制来保证DataNode数据块访问的安全性控制。同样地,在Ozone中也有类似地一套安全机制。不过Ozone是基于X.509证书体系下的安全机制,所以在这点上和HDFS的内部实现还是有所区别的。本文笔者来简单聊聊这中间的过程,包括Block Access Token如何与这套安全机制紧密联合在一起的。

Block Access Token的作用


首先我们来了解下Block Access Token的作用,它是用来做什么的?
首先正如token本身的意思所说,它是一个“令牌”,一块用来允许访问数据的“令牌”。这个令牌理应由数据控制中心派发给数据访问者,然后数据访问者携带此令牌去访问目标数据。在目标数据所在的节点上,则会进行令牌的检查。如果检查失败,则数据访问将被拒绝。

Block Acess Token的生成


在Ozone的证书体系下,它的block access token生成附带有相关证书的私钥信息并且带上证书签名信息。因为DataNode节点和OzoneManager服务都是信赖同一份从SCM服务得来的证书,所以基于此信息构建出的token是安全可信的。

证书的生成


这里顺带提及下证书的生成过程。在Ozone中,我们是假定SCM为一个Certificate Authority,并且SCM在自启动完毕后,会做一些相关初始化操作,例如自签名操作。然后OM和DN在启动的时候都向SCM获取证书信息,并持久化证书信息在本地store里面。这2个持久化的证书对于OM,DN来说各自意义并不同。

OM:在创建块时使用证书来生成Block Access Token,并派发到对应的用户里。
DN:利用本地证书检查用户携带的Block Access Token信息。

与此同时,SCM也会记录它所派发的证书信息。

注意,这里的Block Access Token的实现还算比较light weight的,并没有被持久化出去。它的安全性很大程度上取决于本地证书的安全性。

Block Access Token流程图


以下是Block Access Token流程处理图,主要包含了2个阶段过程:

1). 纯数字编号的token验证过程
2). 带数字编号的证书处理过程

在这里插入图片描述

原文地址:https://www.cnblogs.com/bianqi/p/12183543.html