zoukankan      html  css  js  c++  java
  • Hadoop Ozone Security模块设计概览

    前言


    任何一个分布式系统,当它的功能实现和设计越趋向于完善的时候,它的安全性就会显得越发的重要。因为一个好用且成熟的系统,依然会存在被恶意者利用安全漏洞攻击的可能性。笔者之前已经聊过些许HDFS安全方面的内容,本文将聊了一个新的系统Hadoop Ozone在这块的设计和实现方式。

    分布式系统的安全设计到的模块


    在阐述Ozone Security方面内容之前,我们需要了解一个概念:Security。当我们总是频繁聊到一个系统的安全性时,我们到底在聊些什么呢?这个“安全性”3个字中包含了多少内容呢?只是简单的认证机制?简单的权限控制?

    以下是笔者暂且想到的:

    • 用户,组件的身份认证,就是我们常说的authentication。
    • 用户,组件的授权,authorization,在认证之前理应先授权。
    • 在授权之前,我们可以有额外简单一点的身份 标识验证,证明”你是你本人“。
    • ACL/UGO控制。
    • 有关键步骤的audit记录。

    OK,下面笔者结合Ozone Security的设计来进行一一阐述。

    ACL/UGO控制


    一般一个系统在构建之初,最容易和快速做到的关于Security方面的改进就属类似ACL的控制了。它还未设计到具体复杂的加密算法,只要在软件层面进行控制即可。

    ACL做的一个主要事情是说,我们可以规定什么用户或组对于资源具有哪些访问权限。ACL其实是对UGO方式的一个扩展。在最开始的时候,我们一般实现到UGO一层就足够了,就是类似于文件系统permission rwx 777那套模式。

    UGO的这套控制方式在用户runtime层面可以拒绝它的越权行为,但是也很容易破解。用户只要在登录时用一个假的用户,就可以绕过这层控制。这时候其实不是真正的用户在执行操作,所以这里我们需要又一套证明”你是你自己的“机制。

    Kerberos认证机制+PKI公共密钥设施验证


    在Ozone中,使用了Kerberos+PKI两种组合使用的认证机制,来作为整体的安全验证。

    首先是利用现有Hadoop已经支持的Kerberos认证来作为服务组件的注册准入的验证,说明此服务是合法,可信赖的服务。

    接下来与HDFS实现不同的一点在在于,Ozone使用了PKI的方式进行后续的认证过程,而在目前HDFS的实现中,它使用的是共享密钥的加密方式。

    那么Ozone采用的PKI的方式和和HDFS的共享密钥的加密方式比,有什么不同点呢:

    从加密方式上来讲,共享密钥方式使用的是对称加密方式,服务方和用户使用的是相同的密钥对数据进行加/解密。所以在这种方式下,密钥需要被接收方都妥善保管。而PKI的方式则是一种非对称加密的算法,它有一对公-私密钥,公钥是完全公开的,而私钥是用户需要保管的。数据用公钥进行加密,需要用户自己的私有密钥进行解密。后者在安全性方面,安全性会更高一些。

    Ozone在目前是使用了基于X.509证书的PKI方式,相比于对称加密算法,X.509的证书管理是一个更加成熟的领域,并且Java内置库是支持此证书调用的。证书管理下,密钥是私自管理的,所以无须进行密钥的分布式分发和重新生成。在HDFS共享密钥的模式下,NN会定期rotate这个共享密钥,然后重新分发下去。

    在X.509证书体系下,SCM会扮演一个CA证书管理机构,证书下发的过程如下:

    1)当DataNode在注册时,通过了Kerberos的基本验证后,会向SCM发起一个证书签名请求,简称CSR(certificate signing request)。
    2)SCM接受到请求后,会返回DataNode一个带有其签名的证书内容,并且将发出的证书记录下来。
    3)DataNode收到证书后,持久化此证书到本地,后续会用此证书进行block访问时的验证。

    Ozone中的KSM服务同样会向SCM的CA进行证书的请求,同样会获得一个证书文件。KSM后续会利用这个证书再进行token的签名。此时相当于DataNode和KSM都将SCM作为可信赖的证书机构,然后基于这个CA派发出的证书,进行后续数据的验证。

    Audit审计日志


    Audit审计记录在分布式系统安全的方面算是比较常见了。这种记录一般用于事后分析比较多,就像一个人的银行流水账单一样。在Audit记录的记录过程中,我们需要确保关键的2点是:1)每行记录包含足够多我们想要的维度信息,2)不能有缺失的操作记录。

    引用


    [1].https://baike.baidu.com/item/PKI/212376?fr=aladdin
    [2].https://issues.apache.org/jira/browse/HDDS-4, Implement security for Hadoop Distributed Storage Layer

  • 相关阅读:
    结对项目——电子书的字段
    痛点分析
    文本统计——字符 单词 行数
    音乐播放器需求分析
    简单的四则运算
    高德地图——一款功能强大的APP
    记一次mysql小版本升级
    Servlet/JSP面试题目-----近期总结
    【转】各种概念POJO、JAVABEAN、DAO、DTO、PO、VO、BO、SSH、EJB
    springMVC框架(二)---springMVC框架高级开发
  • 原文地址:https://www.cnblogs.com/bianqi/p/12183545.html
Copyright © 2011-2022 走看看