Tag Sync (OpenMetadata & Ranger Integration)
Tag Sync 機能は、OpenMetadata から Apache Ranger へのタグの同期を可能にし、Trino においてタグに基づいた(リソースに加えた)権限管理の拡張を実現します。
手順
ステップ 1: Portal
Portal 上で、以下の 3 つのコンポーネントを作成する必要があります。
- OpenMetadata
- Apache Ranger
- Trino
Trino クラスターを作成する際には、Integrate Ranger にチェックを入れて、Trino が Ranger からの権限を使用できるようにする必要があります。
ステップ 2: Ranger で Trino の Resource Policies を作成する
Ranger > Service Manager > Resource タブに移動し、作成した Trino サービスを選択します(例: trino-msu9test)。
注意: サービス名は Trino の cus_app_id と一致している必要があります。
これは Trino が機能し、OpenMetadata が接続テストに成功するための必須前提条件です。基本的な Resource Policies が欠けている場合、OM で Trino サービスを作成すると → Test Connection が失敗します。
ステップ 3: OpenMetadata で Trino Service を作成する
- OpenMetadata > Settings > Services > Databases に移動し、Add New Service をクリックします。

-
Trino を選択 → Next をクリックします。
-
サービスの詳細を入力します。
Service Name(例: trino-tester)。
Username、Password、Host、Port(Portal で作成した Trino クラスターを指定)。
-
Test Connection をクリックします → 成功した場合は Save をクリックします。
-
Trino サービスの Ingestion タブに移動 → Add Ingestion をクリックします。
Database/Schema/Table Filter Pattern を入力します。
Ingestion を実行します。
-
Ingestion が成功すると、Trino DB が Explore に表示されます。
-
Explore > Database Trino に移動し、カラムにタグを割り当てます(例: customer テーブルの custkey カラムに Sensitive タグを付与)。

ステップ 4: Ranger で Tag Service と Trino Service を作成する
-
Ranger dashboard > Service Manager > Tag タブに移動し、Add New Service をクリックして先に Tag Service を作成します(例: trino-msu9test-tag)。
-
Service Manager > Resource タブに移動 → Service Trino(例: trino-msu9test)を編集します。
Trino サービスの設定で → Select Tag Service フィールド = trino-msu9test-tag を設定します。

- Settings > Users に移動 → Add New User をクリックします。
ユーザーを作成します(例: usertest)。role = User。
ユーザー名は Trino Portal で作成したユーザーと一致している必要があります。


- Resource Policies に移動 → ユーザー usertest をデフォルトポリシーに追加します。
a. デフォルトポリシーを確認/追加します。
-
all – trinouser
-
all - queryid
b. 新しいポリシーを追加します(policy-customer-access)。
-
Catalog = tpch
-
Schema = sf1、information_schema
-
Table = customer、columns、schemata、tables
-
Column = custkey
information_schema、columns、schemata、tables → Trino がメタデータを読み取るために必要です(show tables、describe など)。

customer → アクセスを許可するビジネステーブル。
c. Allow Conditions でユーザー(例: usertest)を追加 → Permission = Select。
d. ポリシーを保存します。

ステップ 5: Ranger Service で Tag Sync を設定する
-
Data Platform > Data Governance (Ranger) > Advanced > Tag Sync に移動します。
-
Enable Tag Sync にチェックを入れます。
-
OpenMetadata から JWT Token を取得します。
Settings > Bots に移動 → tagsync-bot を選択 → Credentials タブ → トークンをコピーします。
JWT Token フィールドに貼り付けます。
- Service mappings セクションで以下を選択します。
OpenMetadata service = OpenMetadata で作成した Trino サービス。
Ranger service = Ranger で作成した Trino サービス。
最低 1 つのマッピングが必要です。最大 5 つのマッピングまで設定できます。
- Test Connection をクリックします。
成功した場合 → 「Connection successful」 が表示され、Save ボタンが有効になります。
失敗した場合 → エラーが表示され、保存できません。
- Test Connection が成功したら、Save をクリックして設定を保存します。

ステップ 6: Tag Policies に移動 → Sensitive タグを選択 → Add New Policy をクリックします。
-
Policy Name: allow-sensitive。
-
Allow Conditions: user = usertest、component = TRINO、すべての権限にチェックを入れます。
-
保存します。

ステップ 7: クエリでアクセス権限をテストする
usertest には customer テーブルへのアクセス権のみが付与されており、orders テーブルへのクエリ権限はありません。
ケース 1 – ユーザーが Allow 済みで custkey カラムへのクエリ権限がある場合
-
DataGrip でユーザー usertest を使用して Trino に接続します。
-
クエリを実行します。
SELECT custkey FROM tpch.sf1.customer LIMIT 1;
- 期待される結果: テーブルのデータが返されます。
ケース 2 – ユーザーが Allow 済みでテーブルへのクエリ権限がない場合
-
DataGrip でユーザー usertest を使用して Trino に接続します。
-
クエリを実行します。
SELECT * FROM tpch.sf1.customer LIMIT 1;
- 期待される結果: クエリが拒否され、権限なし のメッセージが表示されます。
ケース 3 – ユーザーが Deny 済みで custkey カラムへのクエリ権限がない場合
-
別のユーザーを作成します(例: usertest2)。
-
custkey カラムに Personal タグを割り当てます。
-
Tag Policies で → ユーザー usertest2 に対して Personal タグの Deny ポリシーを作成します。
-
DataGrip でユーザー usertest2 を使用して Trino に接続します。
-
クエリを実行します。
SELECT custkey FROM tpch.sf1.customer LIMIT 1;
- 期待される結果: クエリが拒否され、権限なし のメッセージが表示されます。