基于标记的服务和策略
Ranger允许您创建基于标记的服务,并向这些服务添加访问策略。
添加基于标记的服务
如何向Ranger添加基于标记的服务。
关于这个任务
您可以使用Service Manager for Tag-Based Policies创建基于标签的服务,并添加可应用于Hadoop资源的基于标签的访问策略。使用基于标记的策略可以控制跨多个Hadoop组件对资源的访问,而无需在每个组件中创建单独的服务和策略。您还可以使用Ranger TagSync将Ranger标记存储与外部元数据服务(如Apache Atlas)进行同步。
过程
-
选择访问管理器基于标签的策略>,然后单击添加图标()
在“服务管理器”页面的标签框中。
-
在“创建服务”页面中,输入服务名称和可选描述。该服务默认启用,但您可以通过选择“禁用”来禁用它。要添加服务,单击“添加”。
3.新标签服务将出现在服务管理器页面中
添加基于策略基于标记的策略使您能够控制跨多个Hadoop组件对资源的访问,而无需在每个组件中创建单独的服务和策略。您还可以使用Ranger TagSync将Ranger标记存储与外部元数据服务(如Apache Atlas)进行同步。
过程
-
选择Access Manager>基于标签的策略,然后选择基于标签的服务。
-
在“策略列表”页面中,单击“添加新策略”。
系统显示“创建策略”页面:
3.在“创建策略”页面中输入如下信息:
表一:策略详情
字段 | 描述 |
---|---|
Policy Type | 默认为Access。 |
Policy Name | 输入唯一的策略名称。此名称不能在系统中重复。该字段为必填项。 |
normal/override | 允许您指定覆盖策略。选择“覆盖”时,策略中的访问权限将覆盖已有策略中的访问权限。该特性可与“添加有效期”一起使用,创建覆盖现有策略的临时访问策略。 |
TAG | 输入适用的标签名称。 |
Description | (可选)描述当前策略的目的。 |
Audit Logging | 指定是否审计此策略。(取消选择,禁用审计)。 |
Policy Label | 为该策略指定一个标签。您可以根据这些标签搜索报表和筛选策略。 |
Add Validity Period | 指定策略的开始和结束时间。 |
Policy Conditions (applied at the policy level) | 单击+图标添加策略条件。当前“在过期日期后访问?”“(是/否)”是唯一可用的保单条件。在expiry_date之后访问(是/否)?:若要设置此条件,请在文本框中输入yes,然后单击复选标记按钮添加条件。输入布尔表达式:可用于基于标签的策略上的允许或拒绝条件。有关示例和详细信息,请参见“在Ranger基于标记的策略条件中使用标记属性和值”。单击“保存”,保存策略条件。 |
表二:Allow, Exclude from Allow, Deny, and Exclude from Deny Conditions
标签 | 描述 |
---|---|
Select Group | 指定应用此策略的组。要将组指定为所选资源的管理员,请指定管理员权限。(管理员可以根据现有策略创建子策略)。public组包含所有用户,因此为public组设置条件适用于所有用户。 |
Select User | 指定应用此策略的特定用户(在已经指定的组之外)或指定特定用户为此策略的管理员。(管理员可以根据现有策略创建子策略)。 |
Policy Conditions (applied at the item level) | 单击“添加条件”,添加策略条件。当前“在过期日期后访问?”“(是/否)”是唯一可用的保单条件。在expiry_date之后访问(是/否)?:若要设置此条件,请在文本框中输入yes,然后单击复选标记按钮添加条件。输入布尔表达式:可用于基于标签的策略上的允许或拒绝条件。有关示例和详细信息,请参见“在Ranger基于标记的策略条件中使用标记属性和值”。 |
Component Permissions | 单击“添加权限”可添加或编辑组件条件。要添加组件权限,请在文本框中输入组件名称,然后使用复选框指定组件权限。单击check mark按钮将选择的组件条件添加到策略。 |
-
您可以使用加号(+)符号来添加额外的条件。条件按照策略中列出的顺序进行评估。首先应用列表顶部的条件,然后是第二个条件,然后是第三个条件,依次类推。
-
单击“添加”,添加新策略
在基于Ranger标记的策略条件中使用标记属性和值
输入布尔表达式允许Ranger在配置基于标记的策略允许或拒绝条件时使用标记属性和值。它允许管理员使用标签属性提供布尔表达式。
在标签服务定义中引入了策略条件:
"itemId":2,
"name":"expression",
"evaluator":
"org.apache.ranger.plugin.conditionevaluator.RangerScriptConditionEvaluator",
"evaluatorOptions" : {"engineName":"JavaScript",
"ui.isMultiline":"true"},
"label":"Enter boolean expression",
"description": "Boolean expression"
}
以下变量可以在布尔表达式中引用:
•ctx:上下文处理器,包含从请求中访问元数据信息的api。
•tag:当前标签的信息。
•tagAttr:包含所有当前标签属性和相应值的映射。
以下api可以从请求中获得:
getUser():返回一个字符串。
•getUserGroups():返回一组包含组的字符串。
•getClientIPAddress():返回一个包含客户端IP地址的字符串。
•getAction():返回一个包含被请求动作信息的字符串。
两个场景:
•需要根据资源所在机器的IP地址拒绝用户“sam”的策略
访问。
用下面的布尔表达式为用户sam设置拒绝条件:
if ( tagAttr.get('ipAddr').equals(ctx.getClientIPAddress()) ) {
ctx.result = true;
}
拒绝一个特定的用户“bob”从一个组“users”,只有当这个用户正在访问一个特定IP的资源,在Atlas中定义了一个标签属性。使用下面的布尔表达式为组用户设置拒绝条件:
if (tagAttr.get('ipAddr').equals(ctx.getClientIPAddress()) &&
ctx.getUser().equals("bob")) {
ctx.result=true;
}
添加基于标记的PII策略
如何添加基于PII标记的策略的示例。在本例中,我们为Atlas中标记为“PII”的对象创建一个基于标记的策略。允许“audit”组的成员访问标记为“PII”的对象。所有其他用户("public"组)都被拒绝访问。
过程
- 选择Access Manager >基于标签的策略,然后选择基于标签的服务。
2. 在“策略列表”页面中,单击“添加新策略”。
系统显示“创建策略”页面:
3.在“创建策略”页面中输入如下信息:
表一:策略详细信息
Field | 描述 |
---|---|
Policy Type | 默认为Access。 |
Policy Name | PII。 |
TAG | PII。 |
Audit Logging | YES |
Description | Restrict access to resources with the PII tag. |
表二:允许条件
Field | 描述 |
---|---|
Select Group | 默认为Access。 |
Select User | 无 |
Policy Conditions | 无 |
Component Permissions | Hive (选择所有权限) |
表三:拒绝条件
Field | 描述 |
---|---|
Select Group | 默认为public。 |
Select User | 无 |
Policy Conditions | 无 |
Component Permissions | Hive (选择所有权限) |
表四:Exclude from Deny Conditions
Field | 描述 |
---|---|
Select Group | audit |
Select User | 无 |
Policy Conditions | 无 |
Component Permissions | Hive (选择所有权限) |
在本例中,我们使用允许条件授予对“audit”组的访问权,然后使用拒绝条件拒绝对“public”组的访问权。因为“public”组包括所有用户,所以我们使用Exclude from Deny条件来排除“audit”组,实际上恢复了“audit”组原来的允许访问条件。
- 单击“添加”,添加新策略
默认过期标签策略
当创建标签服务实例时,会自动创建EXPIRES_ON标签策略。这个默认策略拒绝访问在Atlas标记属性中指定的过期日期之后使用EXPIRES_ON标记的对象。您可以使用以下步骤查看默认的EXPIRES_ON策略。
过程
- 选择Access Manager >基于标签的策略,然后选择基于标签的服务。
- 在策略列表页面上,单击默认EXIRES_ON策略的编辑图标。
出现“编辑策略”页面:
- 我们可以看到,默认的EXPIRES_ON策略拒绝所有用户和所有组件在Atlas标记属性中指定的到期日之后的访问。
导入和导出基于标签的策略
您可以在恢复操作期间或将策略从测试集群移动到生产集群时,从Ranger Admin UI(用于集群弹性(备份))导出和导入策略。您可以导入或导出特定的策略子集(比如那些属于特定资源或用户/组的策略),或者通过Ranger Admin UI克隆整个存储库(或多个存储库)。
接口
您可以在“基于标签的策略”页面中导入和导出策略:
您还可以在“报表”页面导出策略:
上表 :导出策略选项
服务管理页 | 报告页 | |
---|---|---|
Formats | Json | JSON&Exce&CSV |
Filtering Supported | none | yes |
Specific Service Export | yes | 通过过滤 |
过滤
在从Reports页面导出时,您可以在保存文件之前应用过滤器。
导出格式
导出策略的格式包括:
•Excel
•JSON
•CSV
备注:导入策略时不支持CSV格式。
在“服务管理器”界面导出策略时,会自动以JSON格式下载策略。如果希望以Excel或CSV格式导出,请从Reports page下拉菜单中导出策略。
需要用户角色
管理员管理员用户只能导入和导出基于资源和标签的策略。此用户的凭据设置在Ranger Configs > Advanced Ranger -env中标记为admin_username(默认值:admin/admin)的字段中。
“Ranger KMS keyadmin”用户只能导入导出KMS策略。此用户的默认凭据是keyadmin/keyadmin。
限制
要成功导入策略,请使用以下数据库版本:
•MariaDB: 10.1.16 +
•MySQL: 5.6.x +
•甲骨文:11 gr2 +
•PostgreSQL: 8.4 +
MS SQL: 2008 R2+
不支持部分策略导入。
导入基于标签的策略
如何导入基于标签的策略。
过程
- 在“基于标签的策略”页面上,单击其中一个导入图标:
- 选择要导入的文件。
只能导入JSON格式的策略。
3. (可选)配置导入操作:
a)覆盖策略选项删除目标存储库的所有策略。
b)分区映射—不选择目的时,导入所有服务。选择目的地址时,只导入与该安全区域关联的服务。
c)服务映射将下载的文件存储库,即源存储库映射到目标存储库。您可以使用红色的x符号从导入中删除服务。向下滚动以查看所有的服务映射。
4. 点击导入。
导入文件后会出现确认消息。
基于导出策略
如何导出所有基于标签的策略。
关于这个任务
只能从“基于标签的策略”页面导出JSON格式的策略。如果您想以Excel或CSV格式导出,请从报表页面下拉菜单中导出策略。
过程
•从访问管理器>标签基于策略页面:
a)点击导出按钮或图标:
出现“导出策略”页面。
b)删除组件或特定服务,单击“导出”。
文件下载在你的浏览器作为一个JSON文件。
•从报告页面:
a)过滤组件标记并点击搜索。
b)(可选)在导出文件之前应用过滤器。
c)打开导出下拉菜单:
d)选择文件格式。
文件在浏览器中下载。