tencent cloud

文档反馈

CHDFS Ranger 权限体系解决方案

最后更新时间:2022-03-30 09:30:26

    背景

    大数据用户使用存算分离后,将数据托管在云 HDFS(Cloud HDFS,CHDFS)上。CHDFS 提供了类似 HDFS 的权限体系管控。Hadoop Ranger 在 HDFS 权限基础上,提供了更精细的权限管控,包括用户组权限设置,针对某个前缀的权限设置。同时 Hadoop Ranger 作为一站式的权限体系解决方案, 不仅支持存储端权限管控,还支持 YARN,Hive 等组件权限管控。因此,为了维持方便客户的使用习惯,我们提供了 CHDFS 的 Ranger 接入解决方案,方便客户使用 Ranger 来进行 CHDFS 的权限管控。

    优势

    • 细粒度的权限控制,兼容 Hadoop 权限习惯。
    • 用户统一管理大数据组件与云端托管存储的权限。

    解决方案架构

    Hadoop 权限体系中,认证由 Kerberos 提供,授权鉴权由 Ranger 负责。在此基础上,我们提供以下组件,来支持 CHDFS 的 Ranger 权限方案。

    • CHDFS-Ranger-Plugin:提供 Ranger 服务端的服务定义插件。它们提供了 Ranger 侧的 CHDFS 服务描述,部署了该插件后,用户即可在 Ranger 的控制页面上,填写相应的权限策略。
    • COSRangerService:该服务集成了 Ranger 的客户端,周期性从 Ranger 服务端同步权限策略,在收到客户的鉴权请求后,在本地进行权限校验。 同时它提供了 Hadoop 中 DelegationToken 相关的生成,续租等接口,所有的接口都是通过 Hadoop IPC 定义。
    • CosRangerClient:COSN 插件对其进行动态加载,把权限校验的请求转发给 CosRangerService。

    部署环境

    • Hadoop 环境。
    • ZooKeeper、Ranger、Kerberos 服务(如果有认证需求,则部署)。
    说明:

    以上服务由于是成熟的开源组件,因此客户可自行安装。

    部署组件

    CHDFS-Ranger-Plugin 拓展了 Ranger Admin 控制台上的服务种类, 用户可在 Ranger 控制台上,设置和 CHDFS 相关的操作权限。

    代码地址

    可前往 Github 的 ranger-plugin 目录下获取。

    版本

    V1.2版本及以上。

    部署步骤

    1. 在 Ranger 的服务定义目录下新建 COS 目录(注意:目录权限需要保证至少有 x 与 r 权限)。
    2. 腾讯云的 EMR 环境,路径是 ranger/ews/webapp/WEB-INF/classes/ranger-plugins。
    3. 自建的 hadoop 环境,可以通过在ranger目录下 find hdfs 等方式找到已经接入到 ranger 服务的组件,查找 ranger-plugins 目录位置。
    4. 在 CHDFS 目录下,放入 cos-chdfs-ranger-plugin-xxx.jar(注意: jar 包至少有 r 权限)。
    5. 重启 Ranger 服务。
    6. 在 Ranger 上注册 CHDFS Service。可参考如下命令:
      ##生成服务,需传入 Ranger 管理员账号密码,以及 Ranger 服务的地址。
      ##对于腾讯云 EMR 集群,管理员用户是 root,密码是构建 emr 集群时设置的 root 密码,ranger 服务的 IP 换成 EMR 的 master 节点 IP。
      adminUser=root
      adminPasswd=xxxxxx
      rangerServerAddr=10.0.0.1:6080
      curl -v -u${adminUser}:${adminPasswd} -X POST -H "Accept:application/json" -H "Content-Type:application/json" -d @./chdfs-ranger.json http://${rangerServerAddr}/service/plugins/definitions
      ##如果要删除刚定义的服务,则传入刚刚创建服务时,返回的服务 ID
      serviceId=102
      curl -v -u${adminUser}:${adminPasswd} -X DELETE -H "Accept:application/json" -H "Content-Type:application/json" http://${rangerServerAddr}/service/plugins/definitions/${serviceId}
    7. 创建服务成功后,可在 Ranger 控制台看到 CHDFS 服务。如下所示:
    8. 在 CHDFS 服务侧单击【+】,定义新服务实例,服务实例名可自定义,例如chdfs或者chdfs_test。服务的配置如下所示:

      其中 policy.grantrevoke.auth.users 需设置后续启动 COSRangerService 服务的用户名。通常建议设置成 hadoop,后续 COSRangerService 可使用此用户名进行启动。
    9. 单击新生成的 CHDFS 服务实例,添加 policy。如下所示:
    10. 在跳转界面中,配置以下参数。具体说明如下:
    • MountPoint: 挂载点的名称,格式为 f4mxxxxxx-yyyy 等样式,可登录 CHDFS 控制台 查看。
    • path: CHDFS 路径。注意 CHDFS 路径必须以/开始。
      • include:表示设置的权限适用于 path 本身,还是除了 path 以外的其他路径。
      • recursive:表示权限不仅适用于 path,还适用于 path 路径下的子成员(即递归子成员)。通常用于 path 设置为目录的情况。
    • user/group:用户名和用户组。这里是或的关系,即用户名或者用户组满足其中一个,即可拥有对应的操作权限。
    • Permissions
      • Read:读操作。对应于对象存储里面的 GET、HEAD 类操作,包括下载对象、查询对象元数据等。
      • Write:写操作。对应于对象存储里面的 PUT 类等修改操作,例如上传对象。
      • Delete:删除操作。 对应于对象存储里删除 Object。对于 Hadoop 的 Rename 操作,需要有对原路径的删除操作权限,对新路径的写入操作权限。
      • List:遍历权限。对应于对象存储里面的 List Object。

    验证

    1. 使用 hadoop cmd 执行访问 chdfs 的相关操作。 如下范例所示:

      # 将挂载点,路径等替换为自己的实际信息。
      hadoop fs -ls ofs://f4mxxxxyyyy-zzzz.chdfs.ap-guangzhou.myqcloud.com/doc
      hadoop fs -put ./xxx.txt ofs://f4mxxxxyyyy-zzzz.chdfs.ap-guangzhou.myqcloud.com/doc/
      hadoop fs -get ofs://f4mxxxxyyyy-zzzz.chdfs.ap-guangzhou.myqcloud.com/exampleobject.txt
      hadoop fs -rm ofs://f4mxxxxyyyy-zzzz.chdfs.ap-guangzhou.myqcloud.com/exampleobject.txt
      
    2. 使用 MR Job 进行验证,验证前需重启相关的服务,例如 Yarn、Hive 等。

    常见问题

    kerberos 是否必须安装?

    如果所在的集群,用户都是可信的,例如仅内部使用的集群,可安装 Kerberos 满足认证的需求。如果用户仅进行鉴权操作,为了避免无权限的客户误操作,那么可以不安装 Kerberos,只使用 ranger 进行鉴权。
    安装 Kerberos 会引入一些性能损耗,请用户综合自己的安全需求与性能需求进行考量。如果需要认证,开启 Kerberos 后,需要设置 COS Ranger Service 和 COS Ranger Client 相关的配置项。

    如果开启了 Ranger,但未配置任何 Policy,或者未匹配到任何 Policy,会如何操作?

    如果未匹配上任何 policy,会默认拒绝该操作。

    开启了 ranger 后,CHDFS 端是否还会进行 POSIX 鉴权?

    Ranger 鉴权是在客户端环境进行的,经过 ranger 鉴权的请求,会发给 CHDFS 服务端,服务端默认会进行 POSIX 鉴权。因此如果权限都在 Ranger 端进行控制,请在 CHDFS 控制台关闭 POSIX 权限。

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持