0742-什么是Apache Ranger - 2

2020-02-10 10:17:16 浏览数 (1)

作者: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/

0 人点赞