zoukankan      html  css  js  c++  java
  • Apache Hadoop配置Kerberos指南

      通常,一个Hadoop集群的安全使用kerberos来进行保障。在启用Kerberos后,需要用户进行身份验证。用户通过验证后可以使用GRANT/REVOKE语句来进行基于角色的访问控制。本文介绍一下在CDH集群中如何配置kerberos。

    1.KDC安装和配置脚本
      脚本install_kerberos.sh可以完成kerberos服务器所有安装配置和相应的参数配置

     1 #!/bin/bash
     2 
     3 # 
     4 echo "ready to install and config kerberos"
     5 
     6 # 使用root权限运行
     7 cd /root
     8 chmod 755 /etc
     9 chmod 755 /etc/hadoop
    10 
    11 # 安装kerberos组件
    12 yum install -y krb5-server
    13 yum install  -y openldap-clients
    14 yum -y install krb5-workstation
    15 
    16 # 在配置文件中更新域名和主机名
    17 
    18 # 设置域名
    19 sed -i.orig 's/EXAMPLE.COM/CLOUDERA/g' /etc/krb5.conf
    20 # 设置kerberos server主机名
    21 sed -i.m1 's/kerberos.example.com/quickstart.cloudera/g' /etc/krb5.conf
    22 # 设置域名为cloudera
    23 sed -i.m2 's/example.com/cloudera/g' /etc/krb5.conf
    24 
    25 # 从Oracle官网下载JDK到root目录
    26 
    27 mkdir jce
    28 cd jce
    29 unzip ../UnlimitedJCEPolicyJDK7.zip
    30 # 保存原始jar文件做备份
    31 cp /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/local_policy.jar local_policy.jar.orig
    32 cp /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/US_export_policy.jar US_export_policy.jar.orig
    33 
    34 # 将新的jar包拷贝进来
    35 cp /root/jce/UnlimitedJCEPolicy/local_policy.jar /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/local_policy.jar
    36 cp /root/jce/UnlimitedJCEPolicy/US_export_policy.jar /usr/java/jdk1.7.0_67-cloudera/jre/lib/security/US_export_policy.jar
    37 
    38 # 创建kerberos数据库
    39 echo suggested password is cloudera 
    40 
    41 kdb5_util create -s
    42 
    43 # 更新kdc.conf
    44 sed -i.orig 's/EXAMPLE.COM/CLOUDERA/g' /var/kerberos/krb5kdc/kdc.conf
    45 # 票据文件中增加一行
    46 sed -i.m1 '/dict_file/a max_life = 1d' /var/kerberos/krb5kdc/kdc.conf
    47 # 增加可创建的最大文件数
    48 sed -i.m2 '/dict_file/a max_renewable_life = 7d' /var/kerberos/krb5kdc/kdc.conf
    49 # 将新增加的两行缩进
    50 sed -i.m3 's/^max_/  max_/' /var/kerberos/krb5kdc/kdc.conf
    51 
    52 # acl文件需要admin权限
    53 sed -i 's/EXAMPLE.COM/CLOUDERA/' /var/kerberos/krb5kdc/kadm5.acl
    54 
    55 # 修改kdc.conf文件
    56 sed -i.m3 '/supported_enctypes/a default_principal_flags = +renewable, +forwardable' /var/kerberos/krb5kdc/kdc.conf
    57 # 设置缩进
    58 sed -i.m4 's/^default_principal_flags/  default_principal_flags/' /var/kerberos/krb5kdc/kdc.conf
    59 
    60 
    61 # 启动krb5kdc和kadmin服务
    62 service krb5kdc start
    63 service kadmin start
    64 
    65 kadmin.local <# cloudera-scm/admin@YOUR-LOCAL-REALM.COM
    66 
    67 # 在集群中添加admin用户
    68 kadmin.local <

    2.Cloudera Manager Kerberos配置
      在运行脚本之后,我们现在拥有一个正在运行的Kerberos服务器,可以使用它来保护Hadoop集群。ClouderaManager封装了大部分工作,我们只需要配置一些参数值。

      通过浏览器访问http://<your.cm.manager>:7180登录到Cloudera Manager。

      

      直接进入管理> 安全>Kerberos,如下图所示

      

      点击“启用Kerberos”按钮

      列表中这四个选项全部已经由运行的脚本完成。然后选择“继续”。

      

      Kerberos向导需要知道脚本的配置项的值。需要我们填写以下选项:

    •  KDC服务器主机: <your_kdc_server>
    •  Kerberos安全领域: <your_safe_realm>
    •  Kerberos加密类型: aes256-cts-hmac-sha1-96

      点击“继续”。

      

      勾选通过Cloudera Manager管理krb5.conf。点击继续

      

      输入创建的用户名和密码。点击继续,之后提示成功可需要重启集群。重启后我们就构建了一个使用kerberos进行安全保护的hadoop集群。

    3.启动kerberos后集群使用方式

      未开启kerberos时,hdfs用户是hdfs的超级用户,用户可以通过su hdfs来获取对hdfs操作的权限,启用kerberos后使用方式如下:

    kinit hdfs@HADOOP

      使用hdfs命令进行验证

    hadoop fs -mkdir /kongc
    hadoop fs -rmdir /kongc

      使Kerberos·token无效

    kdestroy

      现在已经成功构建了一个正在运行的Kerberos集群!

  • 相关阅读:
    服务器新环境搭建笔记
    mysql存储过程中的异常处理
    Maven为不同环境配置打包
    redis 绑定任意ip
    Redis 【Hash】 一句话说明
    Redis 【string】 一句话说明
    Redis 【keys】 一句话说明
    Redis命令参考【EXPIRE】
    Apache Maven 入门篇 ( 下 )
    Apache Maven 入门篇 ( 上 )
  • 原文地址:https://www.cnblogs.com/kongcong/p/8443639.html
Copyright © 2011-2022 走看看