Chuyển tới nội dung chính

Tag Sync (OpenMetadata & Ranger Integration)

Tính năng Tag Sync cho phép đồng bộ tag từ OpenMetadata sang Apache Ranger, giúp mở rộng quản lý phân quyền trong Trino dựa trên tag (bên cạnh resource).

Các bước thực hiện

Bước 1: Portal

Trên Portal, cần tạo đủ 3 thành phần:

  1. OpenMetadata
  2. Apache Ranger
  3. Trino

Khi tạo Trino cluster, phải tick chọn Integrate Ranger để cho phép Trino sử dụng phân quyền từ Ranger.

Bước 2: Tạo Resource Policies cho Trino trong Ranger

Vào Ranger > Service Manager > Tab Resource → chọn service Trino vừa tạo (ví dụ: trino-msu9test).

Lưu ý: Tên service phải trùng với cus_app_id của Trino.

Đây là điều kiện bắt buộc để Trino có thể hoạt động và OpenMetadata có thể test connection thành công. Nếu thiếu các Resource Policies cơ bản, khi tạo Trino service trong OM → Test Connection sẽ thất bại.

Bước 3: Tạo Trino Service trong OpenMetadata

  1. Vào OpenMetadata > Settings > Services > Databases → click Add New Service.

Alt text

  1. Chọn Trino → click Next.

  2. Điền thông tin service:

Service Name (ví dụ: trino-tester).

Username, Password, Host, Port (trỏ đến cluster Trino vừa tạo ở portal).

  1. Nhấn Test Connection → nếu thành công thì Save.

  2. Vào tab Ingestion của service Trino → click Add Ingestion.

Điền Database/Schema/Table Filter Pattern.

Run ingestion.

  1. Sau khi ingestion thành công, DB Trino hiển thị trong Explore.

  2. Vào Explore > Database Trino → gán tag cho column (VD: tag Sensitive cho cột custkey trong bảng customer).

Alt text

Bước 4: Tạo Tag Service & Trino Service trong Ranger

  1. Vào Ranger dashboard > Service Manager > Tab Tag → click Add New Service để tạo Tag Service trước (VD: trino-msu9test-tag).

  2. Vào Service Manager > Tab Resource → edit Service Trino (VD: trino-msu9test).

Trong config service Trino → field Select Tag Service = trino-msu9test-tag.

Alt text

  1. Vào Settings > Users → click Add New User:

Tạo user (VD: usertest) với role = User.

Username phải trùng với user đã tạo ở Trino portal.

Alt text

Alt text

  1. Vào Resource Policies → add user usertest vào các policy mặc định

a. Kiểm tra/Thêm các policy mặc định:

  • all – trinouser

  • all - queryid

b. Thêm policy mới (policy-customer-access):

  • Catalog = tpch

  • Schema = sf1, information_schema

  • Table = customer, columns, schemata, tables

  • Column = custkey

ghi chú

information_schema, columns, schemata, tables → cần thiết cho Trino đọc metadata (show tables, describe, etc).

Alt text

customer → bảng business mà bạn muốn allow.

c. Trong Allow Conditions, add user (VD: usertest) → Permission = Select.

d. Save policy.

Alt text

Bước 5: Cấu hình Tag Sync trên Ranger Service

  1. Vào Data Platform > Data Governance (Ranger) > Advanced > Tag Sync.

  2. Tick chọn Enable Tag Sync.

  3. Lấy JWT Token từ OpenMetadata:

Vào Settings > Bots → chọn bot tagsync-bot → tab Credentials → copy token.

Dán vào trường JWT Token.

  1. Tại phần Service mappings, chọn:

OpenMetadata service = Trino service vừa tạo ở OpenMetadata.

Ranger service = service Trino vừa tạo trong Ranger.

Bắt buộc ≥ 1 mapping, tối đa 5 mapping.

  1. Nhấn Test Connection.

Nếu thành công → hiển thị “Connection successful” , nút Save bật.

Nếu thất bại → hiển thị lỗi, không thể Save.

  1. Khi Test Connection thành công, nhấn Save để lưu cấu hình.

Alt text

Bước 6: Vào Tag Policies → chọn tag Sensitive → click Add New Policy:

  1. Policy Name: allow-sensitive.

  2. Allow Conditions: user = usertest, component = TRINO, tích tất cả permission.

  3. Save.

Alt text

Bước 7: Kiểm thử quyền truy cập bằng query

Chỉ cấp quyền cho usertest vào bảng customer, bảng orders usertest không có quyền query

Case 1 – User được Allow & có quyền query cột custkey

  1. Dùng DataGrip kết nối Trino bằng user usertest.

  2. Chạy query:

SELECT custkey FROM tpch.sf1.customer LIMIT 1;

  1. Kết quả mong đợi: dữ liệu bảng được trả về.

Case 2 – User được Allow & không quyền query bảng

  1. DataGrip kết nối Trino bằng user usertest.

  2. Chạy query:

SELECT * FROM tpch.sf1.customer LIMIT 1;

  1. Kết quả mong đợi: query bị từ chối, thông báo không có quyền.

Case 3 – User bị Deny & không có quyền query cột custkey

  1. Tạo thêm user khác (VD: usertest2).

  2. Gán tag Personal cho cột custkey

  3. Trong Tag Policies → tạo policy Deny - tag Personal - cho user usertest2.

  4. Dùng DataGrip kết nối Trino bằng user usertest2.

  5. Chạy query:

SELECT custkey FROM tpch.sf1.customer LIMIT 1;

  1. Kết quả mong đợi: query bị từ chối, thông báo không có quyền.