Databricks for Data & AI Engineers
Trang chủ / Module 5
🔐 Module 5 / 14 · 1-2 tuần

Unity Catalog — Data Governance

3-level namespace, metastore, access control, row/column-level security, data lineage, Volumes, system tables.

GovernanceSecurityLineage
📌 Vì sao module này quan trọng

Khi nhiều team cùng dùng chung một lakehouse, governance không phải là "tính năng phụ" mà là điều kiện bắt buộc để nền tảng không trở thành hỗn loạn. Unity Catalog là lớp quản trị tập trung của Databricks — hiểu và cấu hình đúng nó là kỹ năng phân biệt một Data Engineer nghiệp dư với người thiết kế nền tảng đáng tin cậy cho cả tổ chức.

🎯 Mục tiêu học tập

  • Hiểu mô hình 3-level namespace (catalog.schema.table) và cấu trúc metastore
  • Cấp quyền truy cập đúng nguyên tắc least privilege bằng GRANT/REVOKE
  • Áp dụng row-level và column-level security cho dữ liệu nhạy cảm
  • Sử dụng Volumes để quản lý file phi bảng, và system tables để audit

3-level Namespace: Catalog → Schema → Table

Trước Unity Catalog, Databricks (và Hive Metastore cũ) chỉ có 2 cấp (database.table), khó phân tách rõ ràng giữa các môi trường/nhóm dữ liệu khác nhau. Unity Catalog thêm một cấp cao nhất — catalog — thường dùng để phân theo môi trường (dev, staging, prod) hoặc theo domain nghiệp vụ (sales, finance). Bên trong mỗi catalog là các schema (tương đương database, thường ánh xạ theo tầng Medallion: bronze, silver, gold), và bên trong schema là các table.

-- Tên bảng đầy đủ luôn có dạng catalog.schema.table
SELECT * FROM prod.silver.daily_customer_orders;

USE CATALOG prod;
USE SCHEMA silver;
SELECT * FROM daily_customer_orders;  -- dùng tên rút gọn sau khi USE

Access Control: GRANT/REVOKE

-- Cấp quyền đọc cho 1 nhóm người dùng trên toàn bộ schema
GRANT SELECT ON SCHEMA prod.gold TO `analytics-team`;

-- Cấp quyền ghi cho service principal chạy pipeline
GRANT MODIFY, SELECT ON TABLE prod.silver.orders TO `etl-service-principal`;

-- Thu hồi quyền
REVOKE SELECT ON SCHEMA prod.silver FROM `analytics-team`;

Nguyên tắc least privilege: cấp đúng quyền cần thiết ở cấp thấp nhất phù hợp (table thay vì schema, schema thay vì catalog) — dễ audit và giảm rủi ro khi một tài khoản bị lộ.

Row-level & Column-level Security

Với dữ liệu nhạy cảm (PII, dữ liệu tài chính), Unity Catalog hỗ trợ:

  • Row filters: một hàm SQL quyết định người dùng nào thấy được dòng nào (ví dụ nhân viên khu vực miền Bắc chỉ thấy đơn hàng miền Bắc).
  • Column masks: che/mã hoá giá trị cột nhạy cảm tuỳ theo vai trò người xem (ví dụ chỉ admin thấy đầy đủ số điện thoại, người khác thấy dạng che bớt 090***1234).
CREATE FUNCTION mask_phone(phone STRING)
RETURNS STRING
RETURN CASE WHEN is_member('admin-group') THEN phone
            ELSE CONCAT(LEFT(phone, 3), '***', RIGHT(phone, 4)) END;

ALTER TABLE prod.silver.customers ALTER COLUMN phone
  SET MASK mask_phone;

Data Lineage tự động

Unity Catalog tự động theo dõi và hiển thị lineage (dòng chảy dữ liệu) ở cả cấp bảng lẫn cấp cột — thấy được một bảng Gold được sinh ra từ những bảng Silver/Bronze nào, qua notebook/job nào, mà không cần công cụ bên thứ ba hay tự ghi chép thủ công. Cực kỳ hữu ích khi debug "con số trên dashboard này sai, dữ liệu gốc đến từ đâu?" hoặc đánh giá tác động khi định đổi schema một bảng nguồn.

Volumes & System Tables

Volumes là cách Unity Catalog quản lý governance cho file phi bảng (PDF, ảnh, model checkpoint, file dùng cho RAG ở Module 10) — áp dụng cùng cơ chế GRANT/REVOKE như bảng, thay vì phải quản lý quyền truy cập storage thô rời rạc. System tables (system.access.audit, system.billing.usage...) là các bảng Delta do Databricks tự động cung cấp, ghi lại toàn bộ hoạt động truy cập và chi phí sử dụng — truy vấn được bằng SQL bình thường, nền tảng cho việc audit bảo mật và theo dõi chi phí (Module 11, 12).

🏋️ Bài tập thực hành

Thiết lập governance cho lakehouse mẫu

Tạo 3 catalog (dev/staging/prod), mỗi catalog có schema bronze/silver/gold. Tạo 2 nhóm người dùng giả lập (hoặc dùng service principal), cấp quyền khác nhau theo nguyên tắc least privilege. Thêm 1 column mask cho một cột nhạy cảm giả lập. Truy vấn thử system.access.audit để xem lại lịch sử thao tác bạn vừa thực hiện.

📚 Tài nguyên học tập

✅ Tự đánh giá hoàn thành

  • Hiểu và sử dụng đúng mô hình 3-level namespace
  • Cấp/thu hồi quyền đúng nguyên tắc least privilege bằng GRANT/REVOKE
  • Cấu hình được ít nhất 1 row filter hoặc column mask
  • Truy vấn được system tables để tra cứu audit log hoặc chi phí