文档首页 > > 开发指南> Kafka应用开发> 环境准备> 准备安全认证

准备安全认证

分享
更新时间:2020/04/14 GMT+08:00

前提条件

MRS服务集群开启了Kerberos认证,没有开启Kerberos认证的集群忽略该步骤。

准备认证机制代码

在开启Kerberos认证的环境下,各个组件之间的相互通信不能够简单的互通,而需要在通信之前进行相互认证,以确保通信的安全性。Kafka应用开发需要进行Kafka、ZooKeeper、Kerberos的安全认证,这些安全认证只需要生成一个jaas文件并设置相关环境变量即可。我们提供了LoginUtil相关接口来完成这些配置,如下样例代码中只需要配置用户自己申请的机机帐号名称和对应的keytab文件名称即可。

认证样例代码:

设置keytab认证文件模块

    /**
     * 用户自己申请的机机账号keytab文件名称
     */
    private static final String USER_KEYTAB_FILE = "用户自己申请的机机账号keytab文件名称";
    
    /**
    * 用户自己申请的机机账号名称
    */
    private static final String USER_PRINCIPAL = "用户自己申请的机机账号名称";

MRS服务Kerberos认证模块,如果服务没有开启kerberos认证,这块逻辑不执行

    public static void securityPrepare() throws IOException
    {
        String filePath = System.getProperty("user.dir") + File.separator + "conf" + File.separator;       
        String krbFile = filePath + "krb5.conf";
        String userKeyTableFile = filePath + USER_KEYTAB_FILE;
        
        //windows路径下分隔符替换
        userKeyTableFile = userKeyTableFile.replace("\\", "\\\\");
        krbFile = krbFile.replace("\\", "\\\\");
        
        LoginUtil.setKrb5Config(krbFile);
        LoginUtil.setZookeeperServerPrincipal("zookeeper/hadoop.hadoop.com");
        LoginUtil.setJaasFile(USER_PRINCIPAL, userKeyTableFile);
    } 

如果修改了集群kerberos域名,需要在代码中增加kerberos.domain.name的配置,并按照hadoop.expr=toLowerCase(%{default_realm}%{KerberosServer})规则配置正确的域名信息。例如:修改域名为HUAWEI.COM,则配置为hadoop.huawei.com。

keytab文件获取方式

  1. 访问开启Kerberos的MRS Manager,访问方式详见《MapReduce服务用户指南》的“访问 MRS Manager->访问支持 Kerberos 认证的 Manager”章节。
  2. 进入“系统设置->用户管理”,在指定的用户所在行单击“更多 >下载认证凭据”。
  3. 将下载获取到的zip文件解压缩,获取krb5.conf和该用户的keytab文件。
  4. 将krb5.conf和该用户的keytab文件拷贝到样例工程的conf目录中。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问