集团站切换校区

验证码已发送,请查收短信

复制成功
微信号:togogoi
添加微信好友, 详细了解课程
已复制成功,如果自动跳转微信失败,请前往微信添加好友
打开微信
图标

业界新闻

当前位置:首页 > >业界新闻 > >

大数据培训_安全认证原理和认证机制

发布时间: 2019-05-25 11:05:35

  大数据培训_安全认证原理和认证机制

  功能
  Kerberos这一名词来源于希腊神话“三个头的狗——地狱之门守护者”,后来沿用作为安全认证的概念,使用Kerberos的系统在设计上采用“客户端/服务器”结构与AES等加密技术,并且能够进行相互认证(即客户端和服务器端均可对对方进行身份认证)。可以用于防止窃听、防止replay攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。
  结构
  Kerberos的原理架构如图1所示,各模块的说明如表1所示。

  原理架构



  步骤原理说明:
  应用客户端(Application Client)可以是集群内某个服务,也可以是客户二次开发的一个应用程序,应用程序可以向应用服务提交任务或者作业。
  应用程序在提交任务或者作业前,需要向Kerberos服务申请TGT(Ticket-Granting Ticket),用于建立和Kerberos服务器的安全会话。
  Kerberos服务在收到TGT请求后,会解析其中的参数来生成对应的TGT,使用客户端指定的用户名的密钥进行加密响应消息。
  应用客户端收到TGT响应消息后,解析获取TGT,此时,再由应用客户端(通常是rpc底层)向Kerberos服务获取应用服务端的ST(Server Ticket)。
  Kerberos服务在收到ST请求后,校验其中的TGT合法后,生成对应的应用服务的ST,再使用应用服务密钥将响应消息进行加密处理。
  应用客户端收到ST响应消息后,将ST打包到发给应用服务的消息里面传输给对应的应用服务端(Application Server)。
  应用服务端收到请求后,使用本端应用服务对应的密钥解析其中的ST,并校验成功后,本次请求合法通过。
  基本概念
  以下为常见的基本概念,可以帮助用户减少在学习Kerberos框架所花费的时间,有助于更好的理解Kerberos业务。以HDFS安全认证为例:
  TGT
  票据授权票据(Ticket-Granting Ticket),由Kerberos服务生成,提供给应用程序与Kerberos服务器建立认证安全会话,该票据的默认有效期为24小时,24小时后该票据自动过期。
  TGT申请方式:

  通过HDFS提供的接口获取(具体接口信息可以参考HDFS二次开发指南)。

private Boolean login(Configuration conf){

   boolean flag = false;

   UserGroupInformation.setConfiguration(conf);

     try {

        UserGroupInformation.loginUserFromKeytab(conf.get(PRINCIPAL),conf.get(KEYTAB));

        System.out.println("UserGroupInformation.isLoginKeytabBased():" +UserGroupInformation.isLoginKeytabBased());

   flag = true;

         } catch (IOException e) {

   e.printStackTrace();

         }

   return flag;

         }


  通过客户端shell命令以kinit方式获取,具体使用方式可参考Shell操作维护命令说明书。
  ST
  服务票据(Server Ticket),由Kerberos服务生成,提供给应用程序与应用服务建立安全会话,该票据一次性有效。
  ST的生成在FusionInsight产品中,基于hadoop-rpc通信,由rpc底层自动向Kerberos服务端提交请求,由Kerberos服务端生成。

  认证代码实例讲解

private  void init() throws IOException {  

 

        Configuration conf = new Configuration();  

        // conf file  

        conf.addResource(new Path(System.getProperty("user.dir")  

                + File.separator + "conf" + File.separator + "hdfs-site.xml"));  

        conf.addResource(new Path(System.getProperty("user.dir")  

                + File.separator + "conf" + File.separator + "core-site.xml"));  

        // security mode  

        if ("kerberos".equalsIgnoreCase(conf  

                .get("hadoop.security.authentication"))) {  

 

            // [1]  

            conf.set(PRINCIPAL, "hdfstest@HADOOP.COM");  

            // keytab file  

            conf.set(KEYTAB, System.getProperty("user.dir") + File.separator  

                    + "conf" + File.separator + "user.keytab");  

            // kerberos path  

            String krbfilepath = System.getProperty("user.dir")  

                    + File.separator + "conf" + File.separator + "krb5.conf";  

            System.setProperty("java.security.krb5.conf", krbfilepath);  

            login(conf); //[2]

        }  

        // get filesystem  

        try {  

            fSystem = FileSystem.get(conf); //[3]

        } catch (IOException e) {  

            throw new IOException("Get fileSystem failed.");  

        }  

    }

private Boolean login(Configuration conf){  

    boolean flag = false;  

    UserGroupInformation.setConfiguration(conf);  

 

    try {  

      UserGroupInformation.loginUserFromKeytab(conf.get(PRINCIPAL), conf.get(KEYTAB));  

      System.out.println("UserGroupInformation.isLoginKeytabBased(): " +UserGroupInformation.isLoginKeytabBased());  

      flag = true;  

    } catch (IOException e) {  

      e.printStackTrace();  

    }  

    return flag;  

  }

 

上一篇: 大数据培训_hadoop YARN的资源管理之静态资源

下一篇: 大数据培训_Flink业界认可度高的开源流处理引擎

在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!