kerberos主体的hadoop转换规则

简介

我们知道hdfs支持kerberos认证,但是hdfs如何将kerberos的用户映射到本地unix/liunx用户名呢?
在了解这个之前我们先来介绍下kerberos的组成
例如给出hdfs@HADOOP.COM 我们可 可以看出这个有2部分组成
第一部分为:realm component:HADOOP.COM
第二部分为:user component :hdfs
有时候 用户部分会有/ 来分割成2个部分 例如:hdfs/admin@HDAOOP.COM

为什么要将kerberos用户装换成本地用户?

hdfs 默认使用ShellBasedUnixGroupsMapping,这就意味着它使用linux/unix命令来获取特定用户的组详细信息(例如:id username) ,通过组的信息 进一步用户hdfs文件和文件夹访问控制权限检查。

hdfs如何将principal 转换成本地用户

hdfs 使用core-site.xml中定义的一组正则表达式规则来装换kerberos principal
hadoop.security.auth_to_local

默认的规则是从principal里面剥离 realm name
例如:
hdfs@HADOOP.COM is 装换 to hdfs.
正则表达式类似于Perl.中的正则表达式
Lets look at one of the translation rule, it has 3 parts base , filter and substitution
让我们看下装换规则,他由三部分组成,Base基础,Filter过滤,Substitution替换

RULE:[1:$1@$0](hdfs@HADOOP.COM)s/.*/hdfs/

Base 基础:

RULE:[1:$1@$0]

base 中使用$0来表示 装换的域名, $1表示 第一个组件 ,$2表示用户名中的第二个组件
例如:

转换 
hdfs/admin@HADOPOP.COM

$0 = HADOOP.COM
$1 = admin
$2 = admin

Filter过滤

在下面的例子中我们需要过滤hdfs@HADOOP.COM

(hdfs@HADOOP.COM)s/.*/

Substitution替换

最后使用hdfs代替hdfs@HADOOP.COM

如何测试?

Use the following command to test your regex translation rules

hadoop org.apache.hadoop.security.HadoopKerberosName hdfs@HADOOP.COM
Name: hdfs@HADOOP.COM to hdfs

如果没用定义规则则报错信息如下:

hadoop org.apache.hadoop.security.HadoopKerberosName hdfs@TEST.COM
Exception in thread “main” org.apache.hadoop.security.authentication.util.KerberosName$NoMatchingRule: No rules applied to hdfs@TEST.COM
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值