hadoop_UnixUserGroupInformation_以及相关RPC安全的问题

(1)在配置文件中使用hadoop.job.ugi指定用户组信息,用户名+组名(String[]),UnixUserGroupInformation的login方法首先尝试从Configuration中获得用户组信息,如果失败就从配置文件中读,如果失败就Get current user's name and the names of all its groups from Unix,Shell类中的内部类ShellCommandExecutor用来执行Shell程序。如果失败,则用户名为DrWho,组名为Tardis。获得用户名和组名后,会把信息写入Configuration。

(2)ConnectionPermission(继承Permission)被AccessController用来访问控制,其中ConnectionPermission的imply方法最为关键,它决定了Permission之间如何比较,ConnectionPermission中的imply比较protocol域,只有两个protocol域相等或者被比较的Permmision的protocol域为VersionedProtocol的时候才可以通过比较也就是imply返回true。

(3)Service类key表示一项服务的key,当然这里面也有这个服务的Permission,服务的key在配置文件中使用配置可以访问这项服务的用户。AccessControlList类中有两个set,分别表示用户名和组名,布尔值allAllowed表示所有用户和组。ConfiguredPolicy用来提供策略,所谓的策略其实就是什么Principal有哪些Permission,其中allowedPermissions表示所有Principal都具有的Permission,permissions就是表达策略。ConfiguredPolicy 要覆盖几个方法getPermissions,接受一个ProtectionDomain,返回ProtectionDomain中Principal具有的Permission集合,implies判断一个ProtectionDomain是否可以imply一个Permission,refresh重置策略。然后在初始化的时候使用Policy.setPolicy就可以啦。

(4)Subject.doAs会用传入的主体和要做的动作(PrivilegedAction),最终会调用AccessController.doPrivileged使得设置的Policy得以应用,通过Policy可以把执行的主体转化成Permission,利用Permission和PrivilegedAction需要的Permission做比较,问题出现了,Java是通过什么方式判断PrivilegedAction需要哪些Permission的呢?留着问牛人吧

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值