Altas&Ranger快速入门

一、元数据

企业内部远行多种类型的数据库,有关系型数据库、非关系型数据库、图数据库、时序数据库等,常见有mysql、redis、Mongodb、oracle、prometheus等,数据库是用来管理和存储数据的,例如:oracle数据库:schema是一组数据库对象的集合、table是存储数据库的实体、column列表示数据库的每个属性、view视图表示虚拟表,表示一组查询的逻辑集合、materialview物化视图则是对视图的实体化、同义词表示数据库对象的别名等等。

schema是一组数据库对象的集合、table是存储数据的实体、column列表示数据库的每个属性、view视图表示虚拟materialview物化视图则是对视图的实体化。同义词表示数据库对象的别名等。

作用:元数据管理可以分析表,视图等数据库对象间的依赖关系。

分析字段间的传递关系,在元数据库管理中,我们称为数据血缘关系。

分析是否存在重复字段,矛盾字段等。

为企业提供数据地图。

二、软件介绍

  • 简介

为了解决数据治理的开源解决方案,Hortonworks公司发起了数据治理倡议,包括数据分类、集中策略引擎、数据血缘、安全和生命周期管理等方面。

Apache Atlas 项目就是这个倡议的结果,社区伙伴持续的为该项目提供新的功能和特性。

  • 特征

元数据类型和实例、分类、血统、搜索/发现、安全与数据屏蔽。

类型和实例:为各种hadoop和非hadoop元数据的预定义类型。管理元数据定义新的类型能力。类型可以具有原始、复杂、对象,可以从其他类型继承。类型的实例,称为实体,捕获元数据对象细节及其关系。restApi与类型和实例一起工作更容易集成。

分类:动态创建分类的能力。如pii、dataal质量、敏感等。分类包括属性:expiry_date属性。实体可以与多个分类相关联,从而能够更容易发现和安全执行。通过谱系传播分类-自动确保分类跟随数据经过各种处理

血统:直观UI,查看数据的传统,通过各种处理。Rest API访问和更新血统。

搜索/发现:通过类型、分类、属性值或自由文本搜索实体直观UI。丰富的REST API实现复杂的标准搜索。搜索实体的SQL类查询语言------特定领略语言(DSL)

安全与数据屏蔽:用于元数据访问的细粒度安全性,允许对实体实例和操作的访问进行控制。与apache Ranger的集成使得基于与Apache Atlas中的实体相关联的分类的数据访问的授权/数据屏蔽成为可能。

三、软件架构

  • Core

type system: Atlas 允许用户为他们想要管理的元数据对象定义一个模型。该模型由称为 "类型" 的定义组 成。"类型" 的 实例被称为 "实体" 表示被管理的实际元数据对象。

Ingest/Export: Ingest 组件允许将元数据添加到 Atlas。Exporter组件暴露,Atlas检测到元数据更改,作为事件引发!

Graph Engine :Atlas 通过使用图形模型管理元数据对象。

Titan:Atlas 使用 Titan 图数据库来存储元数据对象。

  • Integration

API:Atlas 的所有功能都可以通过 REST API 提供给最终用户,允许创建,更新和删除类型和实体。 它也是查询和发现通过 Atlas 管理的类型和实体的主要方法。

Messaging:除了 API 之外,用户还可以选择使用基于 Kafka 的消息接口与 Atlas 集成。这对于将元数据对 象传输到 Atlas 以及从 Atlas 使用可以构建应用程序的元数据更改事件都非常有用。

Atlas 使用 Apache Kafka 作为通知服务器用于钩子和元数据通知事件的下游消费者之间的通信。事件由钩子(hook)和 Atlas 写到不同的 Kafka 主题:

ATLAS_HOOK: 来自 各个组件的Hook 的元数据通知事件通过写入到名为 ATLAS_HOOK 的 Kafka topic 发送到 Atlas。

ATLAS_ENTITIES:从 Atlas 到其他集成组件(如Ranger)的事件写入到名为 ATLAS_ENTITIES 的 Kafka topic。

  • metadata source

Atlas 支持与许多元数据源的集成,将来还会添加更多集成。目前,Atlas 支持从以下数据源获取和 管理元数据:

  • Applications

Atlas Admin UI:该组件是一个基于 Web 的应用程序,允许数据管理员和科学家发现和注释元数据。

Tag Based Policies: Apache Ranger 是针对 Hadoop 生态系统的高级安全管理解决方案,与各种 Hadoop 组件具有 广泛的集成。 通过与 Atlas 集成,Ranger 允许安全管理员定义元数据驱动的安全策略,以实现有效的治理。 Ranger 是由 Atlas 通知的元数据更改事件的消费者。

Business Taxonomy: 从元数据源获取到 Atlas 的元数据对象主要是一种技术形式的元数据。

Ranger 是由 Atlas 通知的元数据更改事件的消费者。

  • 总结:

altas与多种数据库进行对接,使用不同数据库的Hook函数,来监控数据库的变化,当变化产生时,Hook会把变化的元数据当成一条一条消息发送到kafka。

Apps将收集到的元数据展示给客户,或者进行其他的操作。

Integration进行数据的查询基于HTTP/RestFul风格。

Core是altas的核心层,会涉及到元数据的导入导出、类型系统、图形引擎等等。

数据层是元数据存储到HBase,索引数据存储到solr或者Elasticsearch

四、元数据管理策略

Type System: Atlas允许用户为他们想要管理的元数据对象定义模型。该模型由称为 type(类型)的定义组成。 称为 entities(实体) 的 type(类型) 实例表示受管理的实际元数据对象。 Type System是一个允许用户定义和管理类型和实体的组件。

具有元类型 Entity , Struct , Classification 或 Relationship 的类型可以具有属性的 集合。每个属性都有一个名称(例如: name )和一些其他相关属性。可以使用表达式 type_name.attribute_name 引用属性。值得注意的是,属性本身是使用Atlas元类型定义的。

  • 例如HIve表定义了以下属性:

  • Entities

atlas中的entity是type的特定值和实例,因此表示现实世界中的特定元数据对象。

例如:Hive在'default'数据库中有一个名为'customers'的表。该表是 hive_table类型的Atlas中的“实体”。

  • Attributes

属性(attributes)是在实体(Entity),结构(Struct),分类(Classification)和关系(Relationship)等元类型中 定义的。但我们将属性列举为具有名称和元类型值。

  • 系统特定类型

Referenceable: 该类型表示可以使用名为qualifiedName的唯一属性搜索的所有实体。

Asset:该类型扩展了Referenceable并添加了名称,描述和所有者等属性。 Name是必需属性(isOptional = false),其他属性是可选的。

Infrastructure:该类型继承自Asset,通常可用作基础结构元数据对象(如集群,主机等)的常见超类 型。

DataSet:该类型继承自Referenceable。从概念上讲,它可以用于表示存储数据的类型。

Process:该类型继承自Asset。从概念上讲,它可以用于表示任何数据转换操作。

Referenceable和Asset的目的是为建模者提供在定义和查询自己类型的实体时强制一致性的方法。

五、Ranger软件介绍

  • 简介

大数据集群最基本的就是数据以及用于计算的资源,是一个公司的宝贵财富,我们需要将它们很好 管理起来,将相应的数据和资源开放给对应的用户使用,防止被窃取、被破坏等,这就涉及到大数 据安全。

Ranger是一款就可以细粒度控制大数据组件权限的组件。

优点:

支持多组件,最好能支持当前公司技术栈的主要组件,HDFS、HBASE、HIVE、YARN、STORM、 KAFKA等

支持细粒度的权限控制,可以达到HIVE列,HDFS目录,HBASE列,YARN队列,STORM拓扑, KAKFA的TOPIC

开源,社区活跃,按照现有的集群改情况造改动尽可能的小,而且要符合业界的趋势。

  • 业内常见的大数据权限组件

Kerberos(业界比较常用的方案)

Apache Sentry(Cloudera选用的方案,cdh版本中集成)

Apache Ranger(Hortonworks选用的方案,hdp发行版中集成)

  • Kerberos

Kerberos是一种基于对称密钥的身份认证协议,它作为一个独立的第三方的身份认证服务,可以为 其它服务提供身份认证功能,且支持SSO(即客户端身份认证后,可以访问多个服务如HBase/HDFS 等)

Kerberos协议过程主要有三个阶段,第一个阶段Client向KDC申请TGT,第二阶段Client通过获得TGT向KDC申请用于访问Service的Ticket,第三阶段是Client用返回的Ticket访问Service。

  • 优点:
  • 服务认证,防止broker datanode regionserver等组件冒充加入集群
  • 解决了服务端到服务端的认证,也解决了客户端到服务端的认证
  • 缺点:
  • kerberos为了安全性使用临时ticket,认证信息会失效,用户多的情况下重新认证繁琐
  • kerberos只能控制你访问或者拒绝访问一个服务,不能控制到很细的粒度,比如hdfs的某一个路径,hive的某一个表,对用户级别上的认证并没有实现

  • Apache Sentry

Apache Sentry是Cloudera公司发布的一个Hadoop安全开源组件,它提供了细粒度级、基于角色的 授权.

优点:Sentry支持细粒度的hdfs元数据访问控制,对hive支持列级别的访问控制 Sentry通过基于角色的授权简化了管理,将访问同一数据集的不同特权级别授予多个角色 Sentry提供了一个统一平台方便管理 Sentry支持集成Kerberos

缺点: 组件只支持hive,hdfs,impala 不支持hbase,yarn,kafka,storm等

  • Apache Ranger

Apache Ranger是Hortonworks公司发布的一个Hadoop安全组件开源组件.

优点:

  • 提供了细粒度(hive级别)
  • 基于访问策略的权限模型
  • 权限控制插件式,统一方便的策略管理
  • 支持审计日志,记录各种操作的审计日志,提供统一查询接口和界面。
  • 丰富的组件支持。
  • 支持和Kerberos的集成。
  • 提供了Rest接口供二次开发。

六、Ranger系统架构

Ranger 使用了一种基于属性的方法定义和强制实施安全策略。当与 Apache Hadoop 的数据治理解决方 案和元数据仓储组件Apache Atlas一起使用时,它可以定义一种基于标签的安全服务,通过使用标签对 文件和数据资产进行分类,并控制用户和用户组对一系列标签的访问。

  • 权限模型

访问权限无非是定义了”用户-资源-权限“这三者间的关系,Ranger基于策略来抽象这种关系,进而 延伸出自己的权限模型。

”用户-资源-权限”的含义详解:

  • 用户:由User或Group来表达,User代表访问资源的用户,Group代表用户所属的用户组。
  • 资源:不同的组件对应的业务资源是不一样的,比如

  • 权限

由(AllowACL, DenyACL)来表达,类似白名单和黑名单机制

AllowACL用来描述允许访问的情况

DenyACL用来描述拒绝访问的情况,不同的组件对应的权限也是不一样的。

  • 权限实现

Ranger-Admin职责: 管理员对于各服务策略进行规划,分配相应的资源给相应的用户或组,存储在db中。 Service Plugin职责:

定期从RangerAdmin拉取策略

根据策略执行访问决策树

实时记录访问审计

策略执行过程:

  • 策略优先级

黑名单优先于高于白名单

黑名单排除优先级高于黑名单

白名单排除优先级高于白名单

  • 决策下放:

如果没有policy能决策访问,一般情况是认为没有权限拒绝访问,然后Ranger还可以选择决策下放给系统自身的访问控制层。

Altas&Ranger快速入门的更多相关文章

  1. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  2. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  3. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  4. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  7. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  8. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. 【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  10. Vue.js 快速入门

    什么是Vue.js vue是法语中视图的意思,Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的API.作者是尤雨溪,写下这篇文章时vue.js版本为1.0.7 准备 我推荐 ...

随机推荐

  1. Python来源介绍

    python来源 1.1 Python来源 1989年的圣诞节,一位来自荷兰,名叫Guidio van Rossum的年轻帅小伙子,为了打发无趣的时光,决定改善他参与设计,不是很满意的ABC语言,随着 ...

  2. RK3588平台产测之ArmSoM-W3软硬件重启测试

    1. 简介 专栏总目录 ArmSoM团队在产品量产之前都会对产品做几次专业化的功能测试以及性能压力测试,以此来保证产品的质量以及稳定性 优秀的产品都要进行多次全方位的功能测试以及性能压力测试才能够经得 ...

  3. Merge-Lrc 合并歌词的小工具

    Merge-Lrc 背景 音乐区有群友希望各种乱七八糟的歌词(lrc 格式居多,里面甚至还有翻译)可以整理成单一的文件,或者一个仅翻译的歌词可以和原文的歌词合并.于是就开发了这款工具.地址:https ...

  4. 唱衰这么多年,PHP 仍然还是你大爷!

    PHP 是个庞然大物. 尽管有人不断宣称 PHP "即将消亡". 但无法改变的事实是:互联网依然大量依赖 PHP.本文将通过大量的数据和事实告诉你为何 PHP 仍然在统治着互联网, ...

  5. 造轮子之EventBus

    前面基础管理的功能基本开发完了,接下来我们来优化一下开发功能,来添加EventBus功能.EventBus也是我们使用场景非常广的东西.这里我会实现一个本地的EventBus以及分布式的EventBu ...

  6. JNI编程之java层和native层的数组数据的交互

    一.前言 JNI中的数组类型分为基本类型数组和引用类型数组,他们的处理方式是不一样的.基本类型数组中的元素都是jni基本数据类型,可以直接访问:但是引用类型的数组中的元素是一个类的实例,不能直接访问, ...

  7. 它让你1小时精通RabbitMQ消息队列、且能扛高并发

    支持.Net Core(2.0及以上)与.Net Framework(4.5及以上) 本文所述方案近期被江苏省某亿级数据量+高并发的政府"物联网"项目采用,获得圆满成功!! [目录 ...

  8. codeforce 827div4

    第一次在codeforce上打题,补一下题记录成长 D题 分析:求数组中两个互质的数的最大下标和: 思路:观察到数据范围n是2e5暴力做n^2会超时,再观察数据a[i]最大为1000,所以这2e5个数 ...

  9. SpringBoot数据响应、分层解耦、三层架构

    响应数据 @ResponseBody 类型:方法注解.类注解 位置:Controller方法.类上 作用:将方法返回值直接响应,如果返回值类型是 实体对象/集合 ,将会转换为json格式响应 说明:@ ...

  10. 一篇文章带你了解Python常用自动化测试框架——Pytest

    一篇文章带你了解Python常用自动化测试框架--Pytest 在之前的文章里我们已经学习了Python自带测试框架UnitTest,但是UnitTest具有一定的局限性 这篇文章里我们来学习第三方框 ...