Apache Ranger安全区介绍

2024-04-15 14:48
文章标签 介绍 apache ranger 安全区

本文主要是介绍Apache Ranger安全区介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文主要介绍大数据安全管理系统Apache Ranger的安全区Security Zone,根据官方文档人工翻译而来。

介绍

        Apache Ranger为很多Hadoop组件服务和非Hadoop服务提供授权和访问审计服务,比如HDFS、Hive、 HBase、YARN、 Kafka、Storm、 Knox、Atlas、NiFi、Solr等。另外,Apache Ranger可为服务组件提供可伸缩的密钥管理服务,比如为HDFS提供用于数据传输加密的密钥管理服务。并且支持Hive数据仓库的数据脱敏和行过滤策略。

        Apache Ranger可以管理授权策略,交互式查看同一部署环境中跨组件的资源访问情况,从一个集中的管理台界面操作使得管理更简单。同时,Apache Ranger提供丰富的Rest API接口,使得与其它应用的集成更简单。

        在本文中,我们将介绍一种新的特性“安全区”,它将允许分配一个服务中的资源到多个区域中,以便更好地进行安全策略管理。可以使多个管理员基于已赋予管理权限的区域为服务设置安全策略。

例如,让我们考虑两个安全区“财务”和“销售”:

  1. 安全区“财务”包含hive 仓库中名为“财务”的所有内容
  2. 安全区“销售”包含hive 仓库中名为“销售”的所有内容
  3. 用户和组的集合被指定为每个安全区的管理员
  4. 用户只能在他们作为管理员的安全区中设置策略 
  5. 安全区中定义的策略仅适用于区域中的资源
  6. 可以扩展区域以包括来自多个服务(例如HDFS,Hive,HBase,Kafka等)的资源,从而允许安全区管理员为所在组织服务拥有的资源设置策略。

在本文中我们将了解到安全区更详细的信息。

Apache Ranger授权

在我们深入研究安全区之前,让我们先简要了解一下Ranger的授权模型:

- Ranger 管理台, 一个WEB应用,提供UI控制台界面用于创建安全策略和交互地查看访问审计日志

- Ranger授权插件在服务组件中执行资源访问授权,比如HDFS、 Hive、 HBase、YARN、Kafka等服务,并且生成访问审计日志

- Ranger授权插件根据配置通过REST API调用Ranger管理台获得安全策略这些插件还定期从Ranger管理台拉取安全策略的变化信息。

- 每个服务(比如HDFS NameNode、HiveServer2)的安全策略在Ranger 管理台的“service”中定义。 Ranger授权插件根据配置使用指定服务的策略。

安全区

什么是安全区?

1. 安全区由一个或多个服务组件的资源设置组成。 安全区相关的例子如下:

区域: 财务 

服务: prod_hadoop; path=/finance/*, /taxes/*

服务: prod_hive; database=finance

服务: prod_kafka; topic=FIN_*

服务: test_hadoop; path=/finance/*, /taxes/*

区域: 销售

服务: prod_hadoop; path=/sales/*

服务: prod_hive; database=sales

服务: prod_kafka; topic=SALES_*

从上面可以看到,资源可以使用通配符指定 - 比如 FIN_*SALES_*

一个资源不能映射对应多个安全区,Ranger 不允许创建的安全区指定的资源匹配到另一个安全区的资源。

例如,尝试修改如上财务安全区指定HDFS资源路径为/sales/finance/* 是不允许的,因为这与销售安全区指定的HDFS 资源路径 - /sales/*冲突。

2. 用户和组的集合可以指定为每个安全区的管理员。这些用户可以为这个安全区的资源创建、修改、删除安全策略。

3. 用户和组的集合可以被授权查看访问安全区资源的审计日志。其它未授权用户不允许查看该区域资源的访问审计日志。

安全区管理

1. Ranger安全区只能由ROLE_SYS_ADMIN角色的用户创建、修改、删除。

2. 用户只能在拥有管理权限的安全区查看、获取、修改安全策略。

如何用安全区授权?

        当一个Ranger 授权插件授权一个资源访问请求时,首先判断待访问的资源属于哪个安全区。如果资源匹配到一个安全区,只有这个安全区的策略适用于访问授权。如果这个资源未匹配到任何安全区,那么用默认安全区unnamed策略进行访问授权

安全区标签策略

在给定的服务中,每个安全区可以配置从一个标签服务中的具体区域使用标签策略,这使得在资源所属的安全区可以使用不同的基于标签的授权策略。

审计日志

Ranger 授权插件生成审计日志包含访问资源所属的安全区名称,只有在本安全区拥有相应权限的用户可以查看这些审计日志。

APIs 

安全区管理

以下类捕获RangerSecurityZone 对象详情,用于REST APIs创建、获取、修改、删除安全区。Ranger安全区只能由ROLE_SYS_ADMIN角色的用户创建、修改、删除。

package org.apache.ranger.plugin.model;

public class RangerSecurityZone extends RangerBaseModelObject {

private String name;

private List<RangerSecurityZoneService> services;

private List<String> adminUsers;

private List<String> adminUserGroups;

private List<String> auditUsers;

private List<String> auditUserGroups;

}

public static class RangerSecurityZoneService {

private String serviceName;

private List<Map<String, String>> resources;

private String tagService;

private String tagServiceZone;

}

Ranger管理台提供以下 REST APIs 来管理安全区:

@Path("plugins")

@Component

public class SecurityZoneREST {

@POST

@Path("/zones")

public RangerSecurityZone createSecurityZone(RangerSecurityZone securityZone) {

// ...

}

@PUT

@Path("/zones/{name}")

public RangerSecurityZone updateSecurityZone(@PathParam("name") String zoneName,

RangerSecurityZone securityZone) {

// ...

}

@DELETE

@Path("/zones/{name}")

public void deleteSecurityZone(@PathParam("name") String zoneName) {

// ...

}

@GET

@Path("/zones/{name}")

public RangerSecurityZone getSecurityZoneByName(@PathParam("name") String zoneName) {

// ...

}

@GET

@Path("/zones/names")

public List<String> getAllZoneNames() {

// ...

}

}

根据需要将新增更多类似APIs。

策略APIs 

RangerPolicy 

RangerPolicy是用于在REST APIs 中处理策略的类。此类已更新为包含属性“zone”。如下所示:

public class RangerPolicy extends RangerBaseModelObject {

private String service;

private String zone;

private String name;

private Integer policyType;

private Integer policyPriority;

private String description;

}

在引入安全区之前创建的策略此属性设置为null策略如果未定义一个指定安全区,此属性将设置为null。请注意此属性的值是不可改变 的(immutable),即一个策略不能从一个安全区移动到另一个安全区。允许这样做可能会导致意想不到的后果,比如一个安全区中的通配符策略(如*或/*)移动到另一个安全区时将适用于另一组资源

服务REST API 

应更新对策略执行创建/更新/删除/获取操作的所有API,以强制执行安全区管理权限,即应该只允许安全区管理员更改策略和获取策略。

ServicePolicys

ServicePolicys是Ranger管理用来向Ranger授权插件发送策略的类。修改此类以包含与服务相关的安全区信息;这将由授权插件中的Ranger策略引擎用于选择授权访问资源的正确策略集。 

public class ServicePolicies implements java.io.Serializable {

private String serviceName;

private Long serviceId;

private Long policyVersion;

private Date policyUpdateTime;

private List<RangerPolicy> policies;

private RangerServiceDef serviceDef;

private String auditMode = RangerPolicyEngine.AUDIT_DEFAULT;

private TagPolicies tagPolicies;

private List<RangerSecurityZone> zones;

}

审计APIs

VXAccessAudit

VXAccessAudit是REST APIs中用于从Ranger 管理台获取访问审核详细信息的类  该类已更新为包含属性“zone” 访问资源所属的安全区名称,将由Ranger 授权插件填入值。

public class VXAccessAudit extends VXDataObject {

protected int auditType;

protected int accessResult = RangerConstants.ACCESS_RESULT_DENIED;

protected String accessType;

protected String zone;

}

XAuditREST 

获取审计日志的REST API被更新,以确保仅返回来自用户具有管理员权限的安全区的日志。

导出/导入变更 

除了对“service-name(s)”的现有支持外,还应更新导出模块以“zone-name(s)”作为参数,以便仅导出给定安全区中的策略

除了对重命名“service(s)”的现有支持外,还应更新导入模块以启用对“zone(s)”的重命名。

UI变更 (文本模型) 

考虑一个Ranger管理控制台示5个服务,如下所示:

 

以及2个安全区Sales Marketing如下所示:

Zone: Sales

prod_hdfs: /sales

prod_hbase: sales

prod_hive: sales

test_hive: sales

Zone: Marketing

prod_hdfs: /marketing

prod_hbase: marketing

prod_kafka: m_topic1, m_topic2

prod_hive: marketing

test_hive: marketing

Ranger 管理界面将显示以下内容请注意顶部的标签介绍每个安全区一个标签

 

Unzoned”选项卡显示所有服务,这些策略将适用于不属于任何安全区的资源。

 

Sales选项卡包括Sales安全区中含的服务,请注意此处未列出prod_kafka服务。服务中的策略仅适用于Sales安全区中的资源。Marketing 安全区同样如此

与前期版本的兼容

策略 APIs 

用户通过前期api创建/更新/获取/删除策略不知道安全区的概念Ranger 管理台将在默认(unnamed安全区处理API调用。

Grant/Revoke 

用于诸如Hive、HBase支持grant revoke 操作等服务的Ranger授权插件,这些操作在适当的服务中创建/更新策略。随着安全区的引入,应该增强Ranger管理台中的grant/revoke实现,以根据所涉及的资源选择要更新策略的安全区

来源于前期版本的Ranger授权插件

来源于前期版本的Ranger授权插件不知道安全区的概念,将不能识别安全区并评估安全区中的策略。但是它们应该继续使用默认(unnamed)安全区中的策略。

这篇关于Apache Ranger安全区介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/906117

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

C++——stack、queue的实现及deque的介绍

目录 1.stack与queue的实现 1.1stack的实现  1.2 queue的实现 2.重温vector、list、stack、queue的介绍 2.1 STL标准库中stack和queue的底层结构  3.deque的简单介绍 3.1为什么选择deque作为stack和queue的底层默认容器  3.2 STL中对stack与queue的模拟实现 ①stack模拟实现

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器