作者:Eric Lin (林晨辉), Cloudera高级售后技术支持工程师。毕业于Monash大学计算机科学, Sir John Monash的奖学金获得者。曾就业于数据收集公司如Hitwise(现为Experian的子公司)和Effective Measure,担任高级工程师,负责设计,开发和管理用于采集, 处理和报告网络数据的平台(基于PHP,Java和CDH)。现任职Cloudera, 担任高级售后技术支持工程师,主要擅长解决在CDH生态系统中出现的各种疑难杂症。
在上一篇文章中,我快速介绍了Ranger提供的主要功能,Ranger和Sentry的主要区别,以及Cloudera在新产品CDP中选择Ranger而不是Sentry的主要原因。具体可以参考上一篇文章《0741-什么是Apache Ranger - 1》。
在这第二篇文章中,我会介绍Ranger的一些基础架构,组成整个Ranger产品的其它部件。
首先我们看一下Ranger内部的所有部件:
- Ranger Admin Server/Portal
- Ranger Policy Server
- Ranger Plugins
- Ranger User/Group Sync
- Ranger Tag Sync
- Ranger Audit Server
下面这张架构图展示了每个部件之间的关系:
以下我们看看每个部件的更多细节。
Ranger Admin Server/Portal
- 安全管理的集中接口
- 管理员可以
- 定义repositories
- 创建和更新策略
- 管理Ranger用户/组
- 定义审计策略
- 查看审计事件
- 运行在Tomcat服务中
- 提供Ranger API
Ranger Policy Server
- 允许管理员定义/更新策略细节
- 允许管理员指定哪些用户是代理管理员,谁可以访问修改策略
- 策略可以分为不同的安全区域
- 一种资源只能分配给一个安全区域
- 如果资源匹配,则仅检查已定义区域中的策略
- 如果没有资源匹配,则将使用默认区域(无名称)下的策略
- 同时支持allow和deny策略
- 拒绝策略会先于允许前检查
- 策略适用于用户或组
Ranger User/Group Sync
- 同步程序会拉取用户和用户组,它支持从以下源同步用户/组:
- Unix
- LDAP
- AD
- 用户/组信息存储在Ranger管理策略数据库中,并用于策略定义
Ranger Plugins
- 安装在Hadoop组件中的轻量级的Java组件,比如安装到HDFS或Hive中。
- 定期从Admin Server提取策略并本地缓存
- 充当授权模块并根据安全策略评估用户请求
- 如果未找到策略,则回退使用HDFS ACLs,同时拒绝所有其他组件的访问
- 触发审计数据存储请求(同时发送到HDFS和Solr)
Ranger Audit Server
- 通过策略配置审计(用户指定是否需要启用审计,如果适用此策略)
- 默认情况下,审计数据存储在HDFS和Solr中
- Solr中的数据将用于在Ranger admin UI中显示审计数据
- HDFS中的数据作为备份,不会被使用(就我目前的了解)
- 从0.5开始不再支持审计数据存储在DB中
- 支持审计日志摘要(Audit Log Summarisation)
- 从Apache Ranger0.5开始
- 在定义的期间内,只有时间戳不同的相似日志将汇总到单个审计条目中,以避免大量审计日志
- 默认为5秒
Ranger Tag Sync
- 从Apache Ranger 0.6开始
- 它将资源分类与访问授权分开
- 只要资源附加了相同的标签,就可以将一个标签策略应用于多个组件
- 帮助减少Ranger中所需的策略数量
- 需要Apache Atlas来管理元数据(Hive数据库/表,HDFS路径,Kafka Topic和标签/分类等)
- 基于事件
- Hive等中的任何更改都会将事件发送到Kafka topic(ATLAS_HOOK),然后Atlas将获取更改
- Atlas中的任何更改都会将事件发送到Kafka topic(ATLAS_ENTITIES),然后Ranger Tag Sync将获取更改
- 标签策略将在基于资源的策略之前进行评估
如你所见,Ranger内部还包括很多其它部件,根据本文的描述应该能让你对Ranger的整体功能有一个清晰的了解。
原文参考:
代码语言:javascript复制https://www.ericlin.me/2020/01/introduction-to-apache-ranger-part-ii/