Docker部署Apache Ranger

使用 Docker 快速部署 Apache Ranger 服务。


概述

Apache Ranger 是 Hadoop 生态中的安全与权限管理框架,它为 HDFS、Hive、HBase、Kafka、YARN 等多种组件提供集中化、可审计、可扩展的访问控制。

Ranger 的权限机制由管理端组件端插件两个核心部分构成:

  • Ranger Admin:管理员在 WebUI 上创建管理策略,配置的策略会被保存到数据库,并通过 REST API 推送给各个组件端插件。

  • Ranger Plugin:不同 Hadoop 服务有对应的 Ranger 插件,这些插件部署在 Hadoop 组件运行的每个服务器上,并在组件内部拦截访问请求。权限的判断发生在组件内部,无需再经过 Admin。

权限校验流程:

  1. 用户向 Hadoop/Hive/HBase 等发起访问;
  2. 该组件的 Ranger 插件强制拦截请求;
  3. 插件从本地缓存中查找是否有允许或拒绝的策略,根据策略决定是否允许访问;
  4. 将操作记录写入审计。

总的来说,Apache Ranger 通过集中管理 + 本地拦截插件实现大数据组件的统一权限控制——管理端负责配置策略,组件端插件在实际读写时执行策略,从而实现安全、可审计、可扩展的权限体系。

Docker安装Ranger

使用 Docker 安装 Apache Ranger:

# 指定Ranger版本
$ export RANGER_VERSION=2.4.1

# 拉取Ranger运行所需的镜像,包括Solr、Zookeeper和数据库(postgres/mysql)
$ docker pull apache/ranger-zk:${RANGER_VERSION}
$ docker pull apache/ranger-solr:${RANGER_VERSION}
$ docker pull apache/ranger-db:${RANGER_VERSION}
$ docker pull apache/ranger:${RANGER_VERSION}

# 创建网络
$ docker network create rangernw

# 启动Zookeeper
$ docker run -d --name ranger-zk --hostname ranger-zk.example.com --network rangernw -p 2181:2181 apache/ranger-zk:${RANGER_VERSION}
# 启动Solr
$ docker run -d --name ranger-solr --hostname ranger-solr.example.com --network rangernw -p 8983:8983 apache/ranger-solr:${RANGER_VERSION} solr-precreate ranger_audits /opt/solr/server/solr/configsets/ranger_audits/
# 启动数据库
$ docker run -d --name ranger-db --hostname ranger-db.example.com --network rangernw --health-cmd='su -c "pg_isready -q" postgres' --health-interval=10s --health-timeout=2s --health-retries=30 apache/ranger-db:${RANGER_VERSION}
# 启动Ranger
$ docker run -d --name ranger --hostname ranger.example.com --network rangernw -e RANGER_VERSION=${RANGER_VERSION} -e RANGER_DB_TYPE=postgres -p 6080:6080 apache/ranger:${RANGER_VERSION} /home/ranger/scripts/ranger.sh

所有容器启动完成后,便可以通过 http://localhost:6080/login.jsp 访问 Apache Ranger,默认用户为 admin,密码为 rangerR0cks!


参考资料

Apache Ranger - DockerHub

Apache Ranger - GitHub

作者

ThinkLong

发布于

2025-11-25

更新于

2025-11-25

许可协议

评论

+