

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 Ranger 與 Amazon EMR 整合的 Trino 外掛程式
<a name="emr-ranger-trino"></a>

Trino (先前為 PrestoSQL) 是一種 SQL 查詢引擎，可用於在 HDFS、物件儲存、關聯式資料庫和 NoSQL 資料庫等資料來源上執行查詢。它不需要將資料遷移到中央位置，並可讓您從任何位置查詢資料。Amazon EMR 提供了 Apache Ranger 外掛程式，可為 Trino 提供精細分級的存取控制。此外掛程式與開放原始碼 Apache Ranger Admin 伺服器 2.0 版及更新版本相容。

**Topics**
+ [支援的功能](#emr-ranger-trino-features)
+ [安裝服務組態](#emr-ranger-trino-service-config)
+ [建立 Trino 政策](#emr-ranger-trino-create-policies)
+ [考量事項](#emr-ranger-trino-considerations)
+ [限制](#emr-ranger-trino-limitations)

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

Amazon EMR 上 Trino 的 Apache Ranger 外掛程式支援受精細分級的存取控制保護的 Trino 查詢引擎的所有功能。這包括資料庫、資料表、資料欄層級存取控制，以及資料列篩選和資料遮罩。Apache Ranger 政策可以包括對使用者和群組的授權政策和拒絕政策。稽核事件也提交至 CloudWatch 日誌。

## 安裝服務組態
<a name="emr-ranger-trino-service-config"></a>

安裝 Trino 服務定義需要設定 Ranger Admin 伺服器。若要設定 Ranger Admin 伺服器，請參閱 [設定 Ranger Admin 伺服器以與 Amazon EMR 整合](emr-ranger-admin.md)。

請遵循下列步驟安裝 Trino 服務定義。

1. 透過 SSH 連接到 Apache Ranger Admin 伺服器。

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

   

1. 解除安裝 Presto 伺服器外掛程式 (如果存在)。執行下列命令。如果出現「找不到服務」錯誤，則表示您的伺服器上未安裝 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'
   ```

1. 下載服務定義和 Apache Ranger Admin 伺服器外掛程式。在暫時目錄中，下載服務定義。Ranger 2.x 版支援此服務定義。

   ```
   wget https://s3.amazonaws.com/elasticmapreduce/ranger/service-definitions/version-2.0/ranger-servicedef-amazon-emr-trino.json
   ```

1. 註冊適用於 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 會建立服務。\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/ranger-create-service-trino.png)

1. 建立 `TRINO` 應用程式的執行個體，輸入下列資訊。

   **服務名稱**：您將使用的服務名稱。建議的值為 `amazonemrtrino`。請記下此服務名稱，因為建立 Amazon EMR 安全組態時需要此名稱。

   **顯示名稱**：要為此執行個體顯示的名稱。建議的值為 `amazonemrtrino`。  
![\[Ranger Admin 顯示名稱。\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/ranger-display-name-trino.png)

   **jdbc.driver.ClassName**：Trino 連線的 JDBC 類別的類別名稱。您可以使用預設值。

   **jdbc.url**：連接至 Trino 協調器時使用的 JDBC 連線字串。

   **憑證的通用名稱**：憑證內的 CN 欄位用於從用戶端外掛程式連接至管理伺服器。此值必須與為外掛程式建立的 TLS 憑證中的 CN 欄位相符。  
![\[Ranger Admin 通用名稱。\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/ranger-common-name-trino.png)

   請注意，此外掛程式的 TLS 憑證應已在 Ranger Admin 伺服器上的信任存放區中註冊。如需詳細資訊，請參閱 [TLS 憑證](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ranger-admin-tls.html)。

## 建立 Trino 政策
<a name="emr-ranger-trino-create-policies"></a>

在您建立新政策時，填寫下列欄位。

**政策名稱**：此政策的名稱。

**政策標籤**：您可以放在此政策上的標籤。

**型錄**：此政策套用的型錄。萬用字元 "\$1" 代表所有型錄。

**結構描述**：此政策套用的結構描述。萬用字元 "\$1" 代表所有結構描述。

**資料表**：此政策套用的資料表。萬用字元 "\$1" 代表所有資料表。

**資料欄**：此政策套用的資料欄。萬用字元 "\$1" 代表所有資料欄。

**描述**：此政策的描述。

對於 **Trino 使用者** (用於使用者模擬存取)、**Trino 系統/工作階段屬性** (用於改變引擎系統或工作階段屬性)、**函數/程序** (用於允許函數或程序呼叫) 和 **URL** (用於授予引擎對資料位置的讀取/寫入存取權)，也存在其他類型的政策。

![\[Ranger Admin 會建立政策詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/ranger-create-policy-details-trino.png)


若要為特定使用者和群組授予許可，請輸入使用者和群組。您也可以為**允許**條件和**拒絕**條件指定排除。

![\[Ranger Admin 政策詳細資訊允許拒絕條件。\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/ranger-create-policy-allow-conditions-trino.png)


在指定允許和拒絕條件之後，選擇**儲存**。

## 考量事項
<a name="emr-ranger-trino-considerations"></a>

在 Apache Ranger 內建立 Trino 政策時，需要注意一些使用考量。

**Hive 中繼資料伺服器**

Hive 中繼資料伺服器只能由可信引擎 (特別是 Trino 引擎) 存取，以防止未經授權的存取。Hive 中繼資料伺服器也可由叢集上的所有節點存取。所需的連接埠 9083 可讓所有節點存取主節點。

**身分驗證**

依預設，Trino 設定為使用 Amazon EMR 安全組態中設定的 Kerberos 進行身分驗證。

**需要傳輸中加密**

Trino 外掛程式要求您在 Amazon EMR 安全組態中啟用傳輸中加密。若要啟用加密，請參閱 [傳輸中加密](emr-data-encryption-options.md#emr-encryption-intransit)。

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

以下是 Trino 外掛程式的目前限制：
+ Ranger Admin 伺服器不支援自動完成。