Apache Hadoop配置Kerberos指南

Stella981
• 阅读 991

  通常,一个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。

  Apache Hadoop配置Kerberos指南

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

  Apache Hadoop配置Kerberos指南

  点击“启用Kerberos”按钮

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

Apache Hadoop配置Kerberos指南

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

  •  KDC服务器主机: <your_kdc_server>

  • Kerberos安全领域: <your_safe_realm>

  • Kerberos加密类型: aes256-cts-hmac-sha1-96

点击“继续”。

  Apache Hadoop配置Kerberos指南

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

  Apache Hadoop配置Kerberos指南

  输入创建的用户名和密码。点击继续,之后提示成功可需要重启集群。重启后我们就构建了一个使用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集群!

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
DBeaver链接kerberos安全认证的Phoenix集群
DBeaver链接kerberos安全认证的Phoenix集群最近公司的CDH集群,启动了kerberos安全认证,所有的用户验证全部需要依赖kerberos来进行。之前的裸奔集群,总算有了一些安全认证的功能,虽然网上很多人都说不推荐使用kerberos进行集群的安全认证,但是也没有说明使用
Stella981 Stella981
2年前
Kerberos无约束委派的攻击和防御
 0x00前言简介当ActiveDirectory首次与Windows2000Server一起发布时,Microsoft就提供了一种简单的机制来支持用户通过Kerberos对Web服务器进行身份验证并需要授权用户更新后端数据库服务器上的记录的方案。这通常被称为Kerberosdoublehopissue(双跃点问题),
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这