Row-Level Security Trong Power BI: Phân Quyền Dữ Liệu Theo Người Dùng
Chia sẻ
"Hướng dẫn triển khai Row-Level Security (RLS) trong Power BI: tạo role, viết DAX filter, test role, deploy lên Service — bảo mật báo cáo chia sẻ nội bộ."
1. RLS Là Gì? Tại Sao Cần?
Row-Level Security (RLS) giới hạn dữ liệu mà user nhìn thấy trong Power BI dựa trên identity. Ví dụ: Regional Manager Hà Nội chỉ thấy data Hà Nội, không thấy HCM. CTO thấy tất cả. Cùng 1 dashboard, mỗi người thấy data khác nhau.
RLS giải quyết bài toán: 1 dashboard cho nhiều user mà không cần tạo report riêng. Thay vì 10 report cho 10 vùng, dùng 1 report + RLS = tiết kiệm 90% công sức.
2. Static RLS — Role Cố Định
Modeling → Manage Roles → New → đặt tên role (VD: HaNoi_Manager) → add filter: [Region] = "Ha Noi". Sau đó Publish → Power BI Service → Security → assign email vào role.
// Role: HaNoi_Manager
// Table: DimRegion
// DAX Filter:
[Region] = "Ha Noi"
// Role: HCM_Manager
[Region] = "Ho Chi Minh"
// Role: Finance (xem tất cả nhưng chỉ finance metrics)
[Department] = "Finance"3. Dynamic RLS — Dựa Trên Email Người Đăng Nhập
Dynamic RLS dùng USERPRINCIPALNAME() để tự match email đăng nhập với bảng mapping. Chỉ cần 1 role, system tự filter theo user. Khi thêm user mới, chỉ cần thêm dòng vào bảng mapping.
// Bước 1: Tạo bảng UserRegion:
// Email | Region
// john@company.com | Ha Noi
// jane@company.com | HCM
// Bước 2: Tạo relationship UserRegion[Region] → DimRegion[Region]
// Bước 3: Role DAX filter trên UserRegion:
[Email] = USERPRINCIPALNAME()4. OLS Vs RLS
RLS filter DÒNG (rows). OLS (Object-Level Security) ẩn BẢNG hoặc CỘT. OLS dùng khi muốn ẩn hoàn toàn table nhạy cảm (VD: lương). Cần Tabular Editor để set OLS — Power BI Desktop chưa có UI native.
5. Testing RLS
Test trong Desktop: Modeling → View As → chọn role → kiểm tra data đã bị filter chưa. Test trong Service: bật role → mở report dưới tên user khác. LUÔN test trước khi publish — sai RLS = data leak nghiêm trọng.
6. Hierarchical RLS — Manager Thấy Data Team
Manager thấy data nhân viên của mình + subordinates. Dùng PATH() DAX function với parent-child hierarchy. PATH() trả về chuỗi dạng "CEO|VP|Manager|Staff" — filter bằng PATHCONTAINS.
7. Best Practices
1) Luôn dùng Dynamic RLS cho scalability. 2) Filter trên Dimension table, không phải Fact table. 3) Test với USERPRINCIPALNAME() trên Service (Desktop trả về domain\user). 4) Document RLS roles trong wiki. 5) Audit ai có access gì bằng API.
8. Kết Luận
RLS là tính năng bảo mật quan trọng nhất của Power BI enterprise. Dynamic RLS + USERPRINCIPALNAME() cho phép 1 dashboard serve hàng trăm users với data riêng biệt. Master RLS = deploy Power BI ở quy mô tổ chức một cách an toàn.
Bình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
Bài viết liên quan
Khám phá thêm các bài viết cùng chủ đề

DAX Từ Cơ Bản Đến Nâng Cao: CALCULATE, Time Intelligence Và Copilot
Hướng dẫn DAX Power BI toàn diện: từ khái niệm filter context, hàm CALCULATE + ALL/ALLEXCEPT, đến Time Intelligence (YTD, MTD, YoY). Cập nhật TABLEOF/NAMEOF mới nhất và cách dùng Copilot tạo DAX tự động.

