Hadoop-2.2.0中文文档—— Common - 超级用户模拟别的用户

简介

此文档描述了一个超级用户如何在安全的方式下以另一用户的名义提交作业或访问hdfs。

Use Case

下一部分描述的的代码示例对此用户用例是可用的。

一个用户名为'super'的超级用户想要以另一用户joe的名义提交作业或访问hdfs。超级用户有kerberos证书但是用户joe并没有。任务要求以用户joe的角色运行并且namenode上的文件访问也需要由joe完成。需要用户joe以超级用户的kerberos证书能够认证连接到namenode 或 job tracker。换句话说,super模拟了joe。

代码示例

在这个例子中,super的kerberos证书用来登录,并且为joe创建了一个代理用户 ugi 对象。这个操作随代理用户ugi对象生成的时候产生。(?)

    //为 joe 创建 ugi. 登录用户是 'super'.
    UserGroupInformation ugi =
            UserGroupInformation.createProxyUser("joe", UserGroupInformation.getLoginUser());
    ugi.doAs(new PrivilegedExceptionAction<Void>() {
      public Void run() throws Exception {
        //提交一个 job
        JobClient jc = new JobClient(conf);
        jc.submitJob(conf);
        //或访问 hdfs
        FileSystem fs = FileSystem.get(conf);
        fs.mkdir(someFilePath);
      }
    }

配置

超级用户必须配置在 namenode 和 jobtracker 上允许模拟另一个用户。下面的配置是必须的。

   <property>
     <name>hadoop.proxyuser.super.groups</name>
     <value>group1,group2</value>
     <description>Allow the superuser super to impersonate any members of the group group1 and group2</description>
   </property>
   <property>
     <name>hadoop.proxyuser.super.hosts</name>
     <value>host1,host2</value>
     <description>The superuser can connect only from host1 and host2 to impersonate a user</description>
   </property>

如果没有这些配置,模拟将不被允许,连接会失败。

如果较松的安全机制优先,通配符 * 可以用来允许来自任意主机的任意用户模拟。

警告

超级用户必须有kerberos证书,才能模拟另一个用户。这个特性不能使用授权token。如果超级用户添加它自己的token到代理用户ugi,就会出错,因为它会允许代理用户以超级用户的权限连接到服务。

然而,如果超级用户不想把token给joe,它必须首先模拟joe并为joe获得一个token,如上面的代码所示,并添加到joe的ugi上。以此种方式,授权token将以joe作为其拥有者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值