Trino 插件 - Amazon EMR

Trino 插件

Trino(原 PrestoSQL)是一个 SQL 查询引擎,您可以用来对 HDFS、对象存储、关系数据库和 NoSQL 数据库等数据源运行查询。它不再要求将数据迁移到中心位置,并允许您随时随地查询数据。Amazon EMR 提供了一个 Apache Ranger 插件,为 Trino 提供精细访问控制。该插件与开源 Apache Ranger Admin 服务器版本 2.0 及更高版本兼容。

支持的功能

Trino 查询引擎受精细访问控制的保护,Amazon EMR 上 Trino 的 Apache Ranger 插件支持该引擎的所有功能。这包括数据库、表、列级别的访问控制以及行筛选和数据掩码。Apache Ranger 策略可以包括对用户和组的授予策略和拒绝策略。审核事件也将提交到 CloudWatch Logs。

安装服务配置

安装 Trino 服务定义要求设置 Ranger Admin 服务器。要设置 Ranger Admin 服务器,请参阅 设置 Ranger 管理服务器

按照以下步骤安装 Trino 服务定义。

  1. SSH 进入 Apache Ranger Admin 服务器。

    ssh ec2-user@ip-xxx-xxx-xxx-xxx.ec2.internal

  2. 卸载 Presto 服务器插件(如有)。运行以下命令。如果出现“Service not found(未找到服务)”错误,则意味着您的服务器上未安装 Presto 服务器插件。继续执行下一步骤。

    curl -f -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X DELETE -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef/name/presto'
  3. 下载服务定义和 Apache Ranger Admin 服务器插件。在临时目录中,下载服务定义。此服务定义由 Ranger 2.x 版本支持。

    wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-trino.json
  4. 注册 Amazon EMR 的 Apache Trino 服务定义。

    curl -u *<admin users login>*:*_<_**_password_ **_for_** _ranger admin user_**_>_* -X POST -d @ranger-servicedef-amazon-emr-trino.json \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -k 'https://*<RANGER SERVER ADDRESS>*:6182/service/public/v2/api/servicedef'

    如果此命令成功运行,您会在 Ranger Admin UI 中看到一个名为 TRINO 的新服务,如下图所示。

    
								Ranger Admin 创建服务。
  5. 创建 TRINO 应用程序的实例,输入以下信息。

    Service Name(服务名称):您将使用的服务名称。建议的值为 amazonemrtrino。请记下此服务名称,创建 Amazon EMR 安全配置时将要用到。

    Display Name (显示名称):要为此实例显示的名称。建议的值为 amazonemrtrino

    
								Ranger Admin 显示名称。

    jdbc.driver.ClassName:Trino 连接的 JDBC 类的类名。您可以使用默认值。

    jdbc.url:连接到 Trino 协调器时要使用的 JDBC 连接字符串。

    Common Name For Certificate (凭证的公用名称):凭证中的 CN 字段,用于从客户端插件连接到管理服务器。此值必须与为插件创建的 TLS 凭证中的 CN 字段匹配。

    
								Ranger Admin 通用名称。

    请注意,此插件的 TLS 凭证应该已在 Ranger Admin 服务器的信任库中注册。有关更多信息,请参阅 TLS 证书

创建 Trino 策略

创建新策略时,请填写以下字段。

Policy Name (策略名称):此策略的名称。

Policy Label (策略标注):您可以在此策略上放置的标注。

Catalog(目录):应用此策略的目录。通配符“*”表示所有目录。

Schema(架构):应用此策略的架构。通配符“*”表示所有架构。

Table(表):应用此策略的表。通配符“*”表示所有表。

Column(列):应用此策略的列。通配符“*”表示所有列。

Description (描述):策略的描述。

还存在其他类型的策略,适用于 Trino User(Trino 用户)(用于用户模拟访问)、Trino System/Session Property(Trino 系统/会话属性)(用于更改引擎系统或会话属性)、Functions/Procedures(功能/过程)(用于允许功能或过程调用)和 URL(用于向数据位置上的引擎授予读/写访问权限)。


						Ranger Admin 创策略详细信息。

要向特定用户和组授予权限,请输入用户和组。您还可以指定 allow(允许)条件和 deny(拒绝)条件的排除项。


						Ranger Admin 策略详细信息允许拒绝条件。

指定允许和拒绝条件后,选择 Save(保存)。

注意事项

在 Apache Renger 中创建 Trino 策略时,需要谨记一些使用注意事项。

Hive 元数据服务器

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

身份验证

默认情况下,Trino 配置为使用 Amazon EMR 安全配置中配置的 Kerberos 进行身份验证。

需要传输中加密

Trino 插件要求您在 Amazon EMR 安全配置中启用传输中加密。要启用加密,请参阅 传输中加密

限制

以下是 Trino 插件的当前限制:

  • Ranger Admin 服务器不支持自动完成。