hadoop.security.auth_to_local

hadoop.security.auth_to_local参数用于将kerberos的principal映射为比较短的本地用户名称,并且hadoop复用了kerberos语法规则。
参数中包含一组映射规则,将principal由上至下逐一匹配RULE,当找到匹配的映射规则后,会输出一个用户名称,同时忽略未进行匹配的规则。 具体的配置格式:


  hadoop.security.auth_to_local
  
  RULE:[]()
  RULE:[]()
  DEFAULT
  

对于其中某一条具体的映射规则:

RULE:[]()

主要由三部分组成:principal解析(principal translation), 接收过滤器(acceptance filter),名称替换(short name substitution)。

principal translation

基本语法如下:

    [:]

首先,在kerberos中,principal是多个component组成的,以‘/’为分隔符。如pig/[email protected],其由两个component组成,"pig"和"zoo", github.com是realm,不考虑在内。principal解析以":"分割,包括两个部分,左边指定principal中的component个数,只能取1或2。右边是一个特殊的格式化串,可以提取出principal中的部分component,组成一个短名称,供后面的接收过滤器(acceptance filter)使用。在格式化串中,$0 表示realm,$1表示第一个component,$2表示第二个component。举几个例子:

匹配串 pig/[email protected] [email protected]
1: $1 不匹配,principal有两个component city
2: $1@$0 [email protected] 不匹配,仅有一个principal

注:city,[email protected]代表输出的短名称

当不匹配时,则跳过该rule,进行下一条rule的匹配,否则进行下一步。

acceptance filter

接收过滤器是一个标准的正则表达式,用于匹配第一部分——principal translation,输出的短名称,只有当成功匹配时,才会将该短名称传递到第三部分——short name substitution。当不匹配时,则跳过该rule,进行下一条rule的匹配,否则进行下一步。

short name substitution

第三部分可以理解为linux中sed替换命令 (s/.../.../g) ,其输入是principal translation提取出的短名称。这部分是可选的。

DEFAULT

DEFAULT是默认规则,默认将principal的第一个component作为短名称输出。

参考

cloudera

hortonworks

你可能感兴趣的:(hadoop.security.auth_to_local)