Ranger 安装和测试
ranger 是一个 hadoop 安全服务,开源自 hortonworks,官网地址:ranger.apache.org。另一个类似的 hadoop 安全服务 sentry 开源自 cloudera。
安装 Ranger
当试图使用 ambari 部署 ranger 时,ambari 的提示如下:
- You must have an MySQL/Oracle/Postgres/MSSQL/SQL Anywhere Server database instance running to be used by Ranger.
- In Assign Masters step of this wizard, you will be prompted to specify which host for the Ranger Admin. On that host, you must have DB Client installed for Ranger to access to the database. (Note: This is applicable for only Ranger 0.4.0)
- Ensure that the access for the DB Admin user is enabled in DB server from any host.
- Execute the following command on the Ambari Server host. Replace database-type with mysql|oracle|postgres|mssql|sqlanywhere and /jdbc/driver/path based on the location of corresponding JDBC driver:
ambari-server setup --jdbc-db={database-type} --jdbc-driver={/jdbc/driver/path}
第一条说的是,部署 ranger 需要有一个运行的数据库环境,如 mysql、postgres 等。第二条说,要部署 ranger 的服务器上要先安装对应数据库的客户端。第三条说的是,确保知道数据库的管理员账号和密码,并且可以从其他机器上访问。第四条说,需要设置 ambari-server 的 jdbc 驱动。
部署 ambari-server 时,它自动安装了一个 postgres 数据库。下面试图直接使用这个 ambari-server 自带的 postgres 来安装 ranger。这样省得再额外安装一个数据库。
测试和调整 postgres server
查看 Ambari 安装文档,文档说 server 默认安装了一个 PostgreSQL 数据库。启动 postgresql 进程的 linux 用户名是 postgres,数据库名是 ambari。数据库的默认用户名和密码是 ambari/bigdata。
在 Ambari server 所在的机器(u1401)上运行:
$ sudo -u postgres psql
postgres=# alter user postgres with password 'vagrant'; (调整数据库用户postgres的密码)
postgres 就是管理员账号,在利用 ambari 安装 ranger 的向导页面上需要输入管理员账号和密码。
ambari 会利用 postgres 的权限创建 ranger 数据库,创建叫 rangeradmin 的数据库用户。当然,数据库 ranger 和用户 rangeradmin 都是可以配置个性的名称。
postgresql 数据库默认是不允许从远程客户端访问它的。为了让 ranger 可以远程访问 postgres,还要修改 postgresql 的配置文件 /etc/postgresql/9.3/main/pg_hba.conf,在文件的最后添加:
host all all 0.0.0.0 0.0.0.0 md5 #表示运行任何IP连接
重启 postgresql:
/etc/init.d/postgresql restart
安装 postgres 客户端并测试远程连接
计划在 u1402 上安装 ranger,所以需要在 u1402 上安装 postgres 客户端:
$ apt install postgresql-client
$ psql -h u1401 -U postgres -d ambari (提示输入密码就输入vagrant)
ambari=> (这种提示表示进入了postgres的交互式环境)
-U 表示数据库用户,-d 表示数据库名。
ambari 设置 jdbc 驱动
在 ambari-server 所在机器(u1401)上下载 postgres 的 jdbc 驱动,并执行 ambari 配置:
$ cd /usr/share/java
$ wget https://jdbc.postgresql.org/download/postgresql-42.0.0.jar
$ ambari-server setup --jdbc-db=postgres --jdbc-driver=/usr/share/java/postgresql-42.0.0.jar
通过ambari安装ranger
在 ambari 中通过菜单 Services/Actions/Add Service 打开安装向导,选择 ranger 服务。到配置页面后按下面 DB FLAVOR下拉框选择 POSTGRES; Ranger DB host 输入 u1401.ambari.apache.org;
Database Administrator (DBA) username 中输入 postgres,密码输入 vagrant。点击测试连接按钮,应该可以成功。
solr 审计 URL 随便输入:http://solr_host:6083/solr/ranger_audits。
当提示输入主体时输入:root/admin@AMBARI.APACHE.ORG
配置 Ranger
在 ambari 中启用 ranger 插件
通过Services/Ranger/configs进入Ranger配置页面,选择Ranger Plugin选项卡。由于我已经安装了HDFS/YARN/Hive,在选项卡中显示了HDFS Ranger Plugin、YARN Ranger Plugin、Hive Ranger Plugin三个选项,三个选项都选On,然后点Save按钮。
重启受影响的多个服务。
对于启用了Kerberos的集群,还需要额外操作。
对于 HDFS 的额外操作
对于 Kerberos 集群,启用Ranger HDFS插件,还需要额外的操作:
1、在u1402(Ranger安装节点)上创建一个操作系统用户rangerhdfslookup:
$ adduser rangerhdfslookup
通过菜单Services=>Ranger=>Quick Links=>Ranger Admin UI进入Ranger管理员界面(http://u1402:6080
)。用户名口令是admin/admin。通过菜单Settings=>Users/Groups可以看到Ranger中用户,确保看到新建的rangerhdfslookup用户已经同步过来了。
2、在Kerberos KDC(u1404)上新建一个rangerhdfslookup的主体:
$ kadmin.local -q 'addprinc -pw rangerhdfslookup rangerhdfslookup@AMBARI.APACHE.ORG' (密码是rangerhdfslookup)
3、导航到 Ambari 的HDFS服务,点Config选项卡,进入advanced ranger-hdfs-plugin-properties,更新参数:
参数名称 | 值 |
---|---|
Ranger repository config user | rangerhdfslookup\@AMBARI.APACHE.ORG |
Ranger repository config password | rangerhdfslookup |
common.name.for.certificate | (空) |
4、点 Save 按钮,重启 HDFS 服务。
对 Hive 的额外操作
对于 Kerberos 集群,启用 Ranger Hive 插件,还需要额外的操作:
1、在 Ranger 安装节点创建操作系统用户 rangerhivelookup,象HDFS一样,确保这个用户被同步到了Ranger Admin。
2、为 rangerhivelookup 创建 Kerberos 主体:
$ kadmin.local -q 'addprinc -pw rangerhivelookup rangerhivelookup@AMBARI.APACHE.ORG'
3、导航到Ambari的Hive服务,点Config选项卡,进入advanced ranger-hive-plugin-properties,更新参数:
参数名称 | 值 |
---|---|
Ranger service config user | rangerhivelookup@AMBARI.APACHE.ORG |
Ranger service config password | rangerhivelookup |
common.name.for.certificate | (空) |
4、点 Save 按钮,重启 Hive 服务。
使用 Ranger 为 Hadoop 提供授权
当用户被认证后,需要确定他的访问权限。授权定义用户对资源的访问权限。你可以用Ranger建立和管理针对Hadoop各种服务的访问权限。你可以建立基于标签的服务,挺对这些服务添加访问策略。使用基于标签(tag-based)的策略,允许你跨越多个Hadoop组件控制资源访问权限,而不用在每个组件中建立单独的服务和策略。你可以使用Ranger TagSync去同步Ranger标签库到外部元数据服务,如 Apache Atlas。
关于 Ranger 策略
Ranger 基于资源的策略
Ranger 允许你为特定Hadoop资源(HDFS、HBase、Hive等)创建服务,和添加访问策略到这些服务。
Ranger 基于标签的策略
- Ranger 标签授权的一个重要特征是资源分类与访问授权的分离。不同的资源包含了不同的数据,则分别表打上不同的标签。如HDFS文件包含了社会安全号码、信用卡号、敏感健康数据可以分别被标签为 PII/PCI/PHI。
- 使用基于标签的策略,允许你跨越多个 Hadoop 组件来控制资源访问,而不同为每个组件单独建立服务或策略。
- 标签明细被保存在标签库中。Ranger TagSync 可以用于在标签库和外部元数据服务(如Apache Altas)之间同步标签。
标签和策略评估
Ranger 配置
Ranger 的认证方式有3种:
- LDAP
- 活动目录(AD)
- UNIX 第3种指使用 Ranger 主机的操作系统用户/口令作为认证凭据,这也是默认的和配置最容易的认证方式。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论