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还可以选择决策下放给系统自身的访问控制层。
标签:入门,Atlas,Altas,数据库,Ranger,类型,组件,数据 From: https://www.cnblogs.com/smallzengstudy/p/17904858.html