概要描述
hadoop.security.auth_to_local这个参数常常用来配置如何处理来自其他realm中的principal,实现基本的安全过滤功能。
例如,您的Hadoop realm是TDH,您的合作方realm是CORP,然后添加规则,将合作方realm的principal转换为本地用户。可以通过下面这样的配置实现只信任来自realm为CORP的principal
hadoop.security.auth_to_local
RULE:[1:$1@$0](.*@CORP)s/@CORP//
RULE:[2:$1@$0](.*@CORP)s/@CORP//
DEFAULT
该参数分为下面3步来做过滤筛选
- 初始principal转换 – initial principal translation
- 接受过滤器 – acceptance filter
- 替换命令 – substitution command
通配样例(适用two-way trust):
RULE:[1:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/g
RULE:[2:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/g
DEFAULT
单向信任样例(适用one-way trust):
RULE:[1:$1@$0](^.*@TDH$)s/^(.*)@TDH$/$1/g
RULE:[2:$1@$0](^.*@TDH$)s/^(.*)@TDH$/$1/g
DEFAULT
详细说明
Step1: The initial principal translation
最初的principal转换由一个数字和替换字符串组成,第一个数字和principal的part(不包括realm)相匹配,替换字符串定义了principal最初的传输方式。
前面的1/2代表部分的个数,比如kevin@TDH只能匹配1,hdfs/node01@TDH只能匹配2
- $0将被realm替换
- $1将被第一个部分替换
- $2将被第二个部分替换
有关初始principal转换的一些示例,详情参见下表,输出称为initial local name
Step2: The acceptance filter
接受筛选器是一个正则表达式,如果initial local name(即规则第一部分的output)匹配正则表达式,然后substitution命令将在字符串上运行。
Step3: The substitution command
替换命令是一个带有正则表达式pattern和替换字符串的sed风格的替换。匹配的组可以通过将正则表达式的一部分括在圆括号中,并通过数字(例如,\1)在替换字符串中引用来包含。组号由正则表达式中开始括号的顺序决定。参见下表所示的一些子命令示例。替换命令的格式是s/
另外单独提一下这个DEFAULT:默认规则将主体名称缩小为仅其第一部分。
例如,假设默认域是TDH,则默认规则将主体名称hdfs@TDH或hdfs/node01@TDH缩减为hdfs