

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 用于 Ranger 与 Amazon EMR 集成的 Apache Hive 插件
<a name="emr-ranger-hive"></a>

Apache Hive 是 Hadoop 生态系统中流行的执行引擎。Amazon EMR 提供了一个 Apache Ranger 插件，能够为 Hive 提供精细访问控制。该插件与开源 Apache Ranger Admin 服务器版本 2.0 及更高版本兼容。

**Topics**
+ [支持的功能](#emr-ranger-supported-features)
+ [安装服务配置](#emr-ranger-hive-service-config)
+ [注意事项](#emr-ranger-hive-considerations)
+ [限制](#emr-ranger-hive-limitations)

## 支持的功能
<a name="emr-ranger-supported-features"></a>

EMR 上 Hive 的 Apache Ranger 插件支持开源插件的所有功能，包括数据库、表、列级访问控制以及行筛选和数据掩码。有关 Hive 命令和关联 Ranger 权限的表，请参阅 [Hive 命令到 Ranger 权限映射](https://cwiki.apache.org/confluence/display/RANGER/Hive+Commands+to+Ranger+Permission+Mapping)。

## 安装服务配置
<a name="emr-ranger-hive-service-config"></a>

Apache Hive 插件与 Apache Hive Hadoop SQL 中现有的 Hive 服务定义兼容。

![\[用于 Hadoop SQL 的 Hive 配置单元服务定义。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/ranger_service_mgr.png)


如果您没有 Hadoop SQL 下的服务实例（如上所示），则可以创建一个实例。点击 Hadoop SQL 旁边的 **\$1**。

1. **Service Name (服务名称)**（如果显示）：输入服务名称。建议的值为 **amazonemrhive**。记下此服务名称，创建 EMR 安全配置时将要用到。

1. **Display Name (显示名称)**：输入要为服务显示的名称。建议的值为 **amazonemrhive**。

![\[Hadoop SQL 的 Apache Hive 服务详细信息。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/ranger_create_service.png)


Apache Hive Config 属性用于建立与 Apache Ranger 管理服务器的连接，并在创建策略 HiveServer时使用 2 实现自动完成。如果您没有持续 HiveServer 2 进程，并且可以填充任何信息，则无需保证以下属性准确。
+ **用户名**：输入与 HiveServer 2 实例实例的 JDBC 连接的用户名。
+ **Password (密码)**：输入上述用户名所对应的密码。
+ **jdbc.driver。 ClassName**：输入 Apache Hive 连接的 JDBC 类的类名。可以使用默认值。
+ **jdbc.url**：输入连接到 2 时要使用的 JDBC 连接字符串。 HiveServer
+ **Common Name For Certificate (凭证的公用名称)**：凭证中的 CN 字段，用于从客户端插件连接到管理服务器。此值必须与为插件创建的 TLS 凭证中的 CN 字段匹配。

![\[Apache Hive 服务配置属性。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/ranger_config_props.png)


“**测试连接**” 按钮用于测试是否可以使用上述值成功连接到 HiveServer 2 实例。成功创建服务后，服务管理器应如下所示：

![\[已连接到 HiveServer 2 实例\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/images/ranger_config_connected.png)


## 注意事项
<a name="emr-ranger-hive-considerations"></a>

**Hive 元数据服务器**

Hive 元数据服务器只能由受信任的引擎访问，特别是 Hive 和 `emr_record_server`，以防未经授权的访问。Hive 元数据服务器也可以通过集群上的所有节点访问。所需的端口 9083 为所有节点提供了主节点的访问权限。

**身份验证**

默认情况下，Apache Hive 配置为使用 EMR 安全配置中所配置的 Kerberos 进行身份验证。 HiveServer2 也可以配置为使用 LDAP 对用户进行身份验证。有关信息，请参阅[在多租户 Amazon EMR 集群上为 Hive 实施 LDAP 身份验证](https://aws.amazon.com/blogs/big-data/implementing-ldap-authentication-for-hive-on-a-multi-tenant-amazon-emr-cluster/)。

## 限制
<a name="emr-ranger-hive-limitations"></a>

以下是当前针对 Amazon EMR 5.x 上的 Apache Hive 插件的限制：
+ 当前不支持 Hive 角色。不支持 Grant、Revoke 语句。
+ 不支持 Hive CLI。 JDBC/Beeline 是连接 Hive 的唯一授权方式。
+ `hive.server2.builtin.udf.blacklist`配置中应填充您 UDFs 认为不安全的内容。