Trino 插件 - Amazon EMR

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

Trino 插件

Trino(前身为 PrestoSQL)是一个SQL查询引擎,可用于对数据源(例如对象存储HDFS、关系数据库和无SQL数据库)运行查询。它无需将数据迁移到中心位置,并允许您从任何位置查询数据。亚马逊EMR提供了 Apache Ranger 插件,为 Trino 提供精细的访问控制。该插件与开源 Apache Ranger Admin 服务器版本 2.0 及更高版本兼容。

支持的特征

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

安装服务配置

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

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

  1. SSH进入 Apache Ranger 管理服务器。

    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. 为亚马逊注册 Apache Trino 服务定义。EMR

    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:JDBC连接到 Trino 协调器时要使用的连接字符串。

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

    Ranger Admin 通用名称。

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

创建 Trino 策略

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

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

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

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

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

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

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

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

Trino 用户(用于用户模拟访问权限)、Trino 系统/会话属性(用于更改引擎系统或会话属性)、函数/ 程序(用于允许函数或过程调用)和(用于在数据位置授予对引擎的读/ 写访问权限)还有其他类型的策略。URL

Ranger Admin 创策略详细信息。

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

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

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

注意事项

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

Hive 元数据服务器

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

身份验证

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

需要传输中加密

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

限制

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

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