

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Ranger と Amazon EMR の統合用の Trino プラグイン
<a name="emr-ranger-trino"></a>

Trino (旧称 PrestoSQL) は、HDFS、オブジェクトストレージ、リレーショナルデータベース、NoSQL データベースなどのデータソースでクエリを実行するために使用できる SQL クエリエンジンです。これにより、データを一元的な場所に移行する必要がなくなり、データがどこに置かれていてもクエリすることができます。Amazon EMR には、Trino のきめ細かなアクセスコントロールを提供できる Apache Ranger プラグインが備わっています。このプラグインはオープンソースの Apache Ranger 管理サーバーバージョン 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 Logs に送信されます。

## サービス設定のインストール
<a name="emr-ranger-trino-service-config"></a>

Trino サービス定義をインストールするには、Ranger 管理サーバーを設定する必要があります。Ranger 管理サーバーを設定するには、「[Amazon EMR と統合するように Ranger 管理サーバーを設定する](emr-ranger-admin.md)」を参照してください。

Trino サービス定義をインストールするには、次のステップを実行します。

1. Apache Ranger 管理サーバーに SSH 接続します。

   ```
   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 管理サーバープラグインをダウンロードします。一時ディレクトリに、サービス定義をダウンロードします。このサービス定義は 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 管理 UI に `TRINO` という新しいサービスが表示されます。  
![Ranger 管理のサービス作成。](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/ranger-create-service-trino.png)

1. 次の情報を入力して、`TRINO` アプリケーションのインスタンスを作成します。

   **サービス名**: 使用するサービス名。推奨値は `amazonemrtrino` です。このサービス名をメモしておいてください。Amazon EMR セキュリティ設定を作成するときに必要になります。

   **[Display Name]** (表示名): このインスタンスに表示される名前。推奨値は `amazonemrtrino` です。  
![Ranger 管理の表示名。](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/ranger-display-name-trino.png)

   **jdbc.driver.ClassName**: Trino 接続用の JDBC クラスのクラス名。デフォルト値を使用できます。

   **jdbc.url**: Trino コーディネーターへの接続時に使用する JDBC 接続文字列。

   **[Common Name For Certificate]** (証明書の共通名): クライアントプラグインから管理サーバーに接続するために使用する証明書内の CN フィールド。この値は、プラグイン用に作成された TLS 証明書の CN フィールドと一致する必要があります。  
![Ranger 管理の共通名。](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/ranger-common-name-trino.png)

   このプラグインの TLS 証明書は、Ranger 管理サーバーのトラストストアに登録されている必要があるので注意してください。詳細については、「[TLS 証明書](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-ranger-admin-tls.html)」を参照してください。

## Trino ポリシーの作成
<a name="emr-ranger-trino-create-policies"></a>

新しいポリシーを作成する際は、次のフィールドに入力します。

**[Policy Name]** (ポリシー名): このポリシーの名前。

**[Policy Label]** (ポリシーラベル): このポリシーにつけることができるラベル。

**カタログ**: このポリシーが適用されるカタログ。ワイルドカード「\*」はすべてのカタログを表します。

**スキーマ**: このポリシーが適用されるスキーマ。ワイルドカード「\*」はすべてのスキーマを表します。

**[Table]** (テーブル): このポリシーが適用されるテーブル。ワイルドカード「\*」はすべてのテーブルを表します。

**列**: このポリシーが適用される列。ワイルドカード「\*」はすべての列を表します。

**[Description]** (説明): このポリシーの説明。

**Trino ユーザー** (ユーザー偽装アクセス用)、**Trino システム/セッションプロパティ** (エンジンシステムまたはセッションプロパティの変更用)、**関数/プロシージャ** (関数またはプロシージャの呼び出しの許可用)、**URL** (データロケーション上のエンジンへの読み取り/書き込みアクセスの許可用) には、他のタイプのポリシーが存在します。

![Ranger 管理のポリシーの作成の詳細。](http://docs.aws.amazon.com/ja_jp/emr/latest/ManagementGuide/images/ranger-create-policy-details-trino.png)


特定のユーザーとグループにアクセス許可を付与するには、ユーザーおよびグループを入力します。**[許可]** 条件および **[拒否]** 条件の除外を指定することもできます。

![Ranger 管理のポリシーの詳細の許可/拒否条件。](http://docs.aws.amazon.com/ja_jp/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 管理サーバーはオートコンプリートをサポートしていません。