[Security 101] Các Cách Thiết Kế Hệ Thống Phân Quyền

Tú Phạm - Tony
Eway Engineering
Published in
4 min readJul 9, 2018

Nhằm bảo mật thông tin, phân chia nhiệm vụ giữa các hệ thống, phòng ban, nhân viên trong công ty thì một hệ thống phân quyền tốt đóng vai trò quyết định trong cách các hệ thống con cùng vận hành và tích hợp.

Nguyên tắc thiết kế: AAA (Authentication, Authorization, Accounting) — Xác Thực, Phân Quyền, Kiểm Toán

Access Control List (ACL)

Bắt đầu bằng việc đinh nghĩa một danh sách các quyền được đính kèm với một đối tượng, thường được sử dụng trong hệ thống file (gồm cả các hệ thống cloud storage như AWS S3 hay Google Cloud Storage).

Ví dụ: Đối tượng user A có các quyền đọc / ghi với file C.txt. Đối tượng user B có quyền đọc với file C.txt.

Ưu điểm của ACL: Đơn giản, Nhanh chóng

Nhược điểm của ACL: Khó để maintain khi mở rộng hệ thống

Role-based Access Control (RBA)

Được dùng phổ biến nhất với các doanh nghiệp lớn với nhiều nhân viên, vị trí như ngân hàng, chính phủ, … Được thiết kế xoay quanh role và permission với các cặp quan hệ role-permission, user-role, command-access_level.

Cách 1: Áp dụng với dạng quyền với một đối tượng chỉ nhận hai giá trị true / false (có cho truy cập hoặc không), không phân quyền truy cập chi tiết đến một đối tượng.

Cách 2: Áp dụng với dạng quyền truy cập phức tạp nhận nhiều giá trị, có khả năng phân quyền chi tiết đến từng đối tượng / thuộc tính của đối tượng cụ thể, ví dụ chỉ cho phép kế toán trưởng được truy cập thuộc tính chi phí của các phòng ban.

Cần đảm bảo được việc một user được xác thực có thể thực hiện một hành động hay không, cần các yếu tố sau:

  • Định danh user
  • Xác định các role (vai trò)
  • User nào được gán cho role nào
  • Xác định các command (Đối tượng ) — Tương ứng đối tượng trong hệ thống
  • Phân cấp các permission (Quyền)
  • Command cùng permission được gán cho role

Ưu điểm của RBA: Phổ biến, dễ maintain

Nhược điểm của RBA: Phức tạp hơn, áp dụng đầy đủ mô hình cần tuân thủ chặt chẽ thiết kế

Bonus: Về Audit System

Để kiểm soát hoạt động của hệ thống phân quyền và đưa ra cảnh báo kịp thời luôn cần một hệ thống quản lý log bền bỉ, chính xác

Audit System là một hệ quản lý log các hành vi / trạng thái cần kiểm soát truy cập của user / phân hệ trong hệ thống. Log thường bao gồm thông tin về thời gian phát sinh, thông tin user, … Tóm lại là tất cả các thông tin bạn cần biết để nắm được vấn đề và giải quyết rắc rối phát sinh. Có 3 loại audit log chính là sản phẩm, quá trình chạy và hệ thống.

Yêu cầu của 1 hệ thống log:

  • Được vận hành và quản lý tập trung, bảo mật truy cập đầy đủ, hoạt động 24/7
  • Luôn đảm bảo sự toàn vẹn của file log trong hệ thống
  • Định dạng log đồng nhất, dễ truy vấn khai thác
  • Tích hợp dễ dàng với nhiều hệ thống khác
  • Cung cấp đầy đủ báo cáo / cảnh báo bất thường

Ví dụ: Cảnh báo khi có user mới được add thêm vào hệ thống

Ví dụ: Cảnh báo khi có user truy cập vào hệ thống thành công

--

--

Tú Phạm - Tony
Eway Engineering

Ceo @AdFlex, ex CTO @ Eway, Co-founder of DYNO, Google Developer Expert on Cloud Platform