美文网首页
kerberos相关

kerberos相关

作者: Moon_魔宽 | 来源:发表于2018-12-28 11:21 被阅读0次

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/e00f80b5a31b

    LDAP作为账号管理,Kerberos作为认证,sentry作为授权。

    Kerberos又被称为三头狗,它不同于https方式的地方在于,https只能保证server端对于client端安全,而无法保证client对于server安全。而Kerberos的因采用了KDC(密钥分发中心)模式,可以确保双向安全。

    认证原理:

    在使用前所有的client和Server都要加入KDC。加入后会生成KDC与各加入者之间的秘钥。

    会话秘钥:client与server之间的会话秘钥,用来做临时的通信。可以将其理解为“会话通道”。

    因为通信方的秘钥是长期有效的,如果在网络上传输,被截取后是有足够时间可以被破解的,因此用临时会话秘钥来通信。

    【第一阶段,client与KDC交互】

    首先,client询问KDC,我想访问某个server,然后KDC会将会话秘钥用client的秘钥加密后发给client;同时,KDC也会将会话秘钥连同client的基本信息打包用server秘钥加密也发给client,并经clint转发给server,至此client与KDC的交互完成。

    这一阶段,KDC加密了两个包给client:

    1、用client的秘钥加密的会话秘钥;

    2、用server的秘钥加密的会话秘钥和client的基本信息打包;这个加密后的包经client转发给了server。

    【第二阶段,client端解密打包】

    client用自己的秘钥解密KDC传过来的第一个包,解密后获得会话秘钥。然后用这个会话秘钥加密自己的信息和时间戳打包后发给server

    【第三阶段,client和server开始交互】

    Server会收到两个数据包。

    1、一个数据包用会话秘钥加密,含有一份关于client的信息;

    2、一个数据包用server的密钥加密,另一份关于client的信息和时间戳;

    Server先用自己的密钥解密获取数据包2,获取会话秘钥和一份关于client的信息,然后server拿着解密后的会话秘钥再解开另外一个数据包1,获得另一份关于client的信息和时间戳。

    通过两份数据的对比,server就能判断出是不是对的client在访问服务。

    【相关操作】

    列出kerberos中的所有认证用户,即principals

    kadmin.local -q "list_principals"

    添加认证用户,需要输入密码

    kadmin.local -q "addprinc user1"

    抽取秘钥并将其存储在本地keytab文件/etc/krb5.kaytab中

    kadmin.local -q "ktadd kadmin/admin"

    查看生产的kaytab

    klist -k /etc/krb5.keytab

    使用sentry的角色授权机制

    beeline -u "jdbc:hive2://xxx;principal=hive/@abc.com"

    创建角色和授权

    create role admin_role;

    grant all on SERVER server1 TO ROLE admin_role;

    grant ROLE admin_role TO GROUP admin;

    grant ROLE admin_role TO GROUP hive;

    greate role test_role;

    GRANT ALL ON DATABASE filtered to ROLE test_role;

    grant ROLE test_role to GROUP test;

    设置/创建角色:admin_role和test_role,create role role_name

    设置角色权限:

    grant all on SERVER server1 to ROLE admin_role;将服务器server1上的所有权限给admin_role角色;

    grant all on datavase filtered to role test_role;将数据库filtered的所有权限给test_role角色;

    设置/创建用户组:使用LADP即linux用户和用户组的关系

    角色到用户组的映射:

    grant role admin_role to group admin/hive;admin和hive用户组将拥有角色admin_role的权限;

    grant role test_role to group test; test用户组将拥有角色test_role的权限;

    【kerberos配置流程】

    一、KDC安装:

    1、yum install krb5-libs krb5-server krb5-workstation

    2、修改配置文件:

    /etc/krb5.conf

    /var/kerberos/krb5kdc/kdc.conf

    /var/kerberos/krb5kdc/kadm5.acl              该文件内容为: */admin@bdh.COM

    3、创建kerberos数据库

    kdb5_util create -r your_realm -s    (bdh.COM)

    4、创建kerberos管理员账号

    /usr/sbin/kadmin.local -q "addprinc cloudera-scm/admin@BG.COM"

    5、设置kadmin和krb5kdc服务开机启动

    chkconfig kadmin on

    chkconfig krb5kdc on

    service krb5kdc start

    service kadmin start

    6、验证

    kinit admin/admin

    二、安装kerberos客户端(包含CM)

    1、yum -y install krb5-libs krb5-workstation

    2、CM节点额外安装openldap

    yum -y install openldap-clients

    3、将KDC server上的krb5.conf文件拷贝到所有客户端

    三、CDH集群启动kerberos

    生产上采用了LDAP+Kerberos+Sentry的方式做安全体系认证,其中Kerberos的KDC使用了两台Windows服务器做高可用的AD,并与LDAP做了集成。体现了/etc/sssd.conf文件中,并且需要在hdfs、hive等服务中配置ldap与ad的映射。

    相关文章

      网友评论

          本文标题:kerberos相关

          本文链接:https://www.haomeiwen.com/subject/korslqtx.html