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.
📥 Tải File Demo
📥 Tải file demo: rls-data.xlsx
📎 File đính kèm bài viết — chứa đầy đủ dữ liệu mẫu
Mục lục
Muốn làm chủ Power BI?
Tham gia khóa học E-Learning của Trà Đá Data để được hướng dẫn chi tiết từ A-Z với Case Study thực tế.
Tìm hiểu ngayBà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.

Tạo Dashboard Power BI Từ Đầu: Kết Nối Dữ Liệu, DAX Và Thiết Kế Báo Cáo Tương Tác
Hướng dẫn tạo dashboard Power BI hoàn chỉnh: kết nối nguồn dữ liệu, data modeling, viết DAX cơ bản, thiết kế visual và publish lên Power BI Service.
Power BI Conditional Formatting Và Custom Visual: Tạo Báo Cáo Nổi Bật
Hướng dẫn sử dụng Conditional Formatting trong Power BI: color scales, data bars, icon sets. Kết hợp Custom Visuals từ AppSource để tạo báo cáo chuyên nghiệp.
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.