Hai chiều của nghiệp vụ Quản lý Truy cập: Quyền và Phạm Vi Hoạt Động

Quyền hoạt động (Permission)Phạm vi hoạt động (Scope) là hai chiều của ma trận Quản lý Truy cập (Access Control). Kiến trúc sư hệ thống cần đảm bảo hai yếu tố này được suy xét song hành khi thiết kế bộ lọc bảo mật (chống rò rỉ thông tin) cho hệ thống phần mềm.

Permission

Permission là một đặc tính xoay quanh API của hệ thống phần mềm. Permission được tạo nên từ vai trò (role) của user, và theo đó là các quyền hạn (capability), mỗi capability định nghĩa nên những API endpointuser có thể truy cập.

Về mặt tư tưởng:

  • một user có một hay nhiều role (ví như admin, mod, member…)
  • mỗi role có một hay nhiều capability (như post:full, post:read, comment:write…)
  • mỗi capability được ánh xạ tới một hay nhiều API endpoint (ví dụ post:read được ánh xạ tới GET /api/postGET /api/post/:id)

Phân quyền dựa trên permission có một số ưu điểm thấy rõ:

  • Có tới hai điểm trung gian (rolecapability) giúp kết nối từ user tới API endpoint trở trên vô cùng linh hoạt.
  • Quản trị viên có thể khai báo sẵn các role theo mô hình của tổ chức, sau đó phân phối capability cho các vai trò này và nhờ đó có thể phân phối một tập các capability tới user mà không phải làm nhiều việc. Điều này giúp quản lý đặc quyền của người dùng một cách đơn giản và hiệu quả.
  • Khi một API endpoint mới được xuất hiện, nó có thể được ánh xạ tới một capability có sẵn, và API ngay lập tức sẵn sàng để các usercapability tương ứng có thể sử dụng mà không cần làm thêm bất cứ điều gì.
  • Dễ dàng xem xét xem một role có thể truy cập được những API nào (bằng cách đọc ngữ nghĩa của capability) — điều không hề dễ dàng với hệ thống chỉ có một điểm nối (giữa userAPI).

Một số thách thức cần để ý

  • Lưu ý trường hợp về capability ứng với khả năng tạo user. Cần đảm bảo user được tạo ra không có nhiều quyền hơn user tạo. Cần có thao tác kiểm tra đặc quyền của user tạo.
  • Khả năng phân quyền tới từng field (chẳng bạn admin có thể nhận về tất cả các trường của Post còn subscriber thì chỉ nhận được những trường cơ bản). Một cách không đẹp lắm để giải quyết trường hợp này là tạo ra hai capability API khác nhau cho cùng API, GET /api/post, chẳng hạn.

Scope

Scope là phân quyền có sự liên hệ chặt chẽ với cấu trúc doanh nghiệp. Cụ thể hơn, có những nguồn tài nguyên mà khả năng truy cập đến chúng bị ảnh hưởng bởi không chỉ role mà cả những chiều phân cấp khác của tổ chức. Chẳng hạn:

  • Giám đốc marketing toàn cầu có thể có thông tin phân tích khách hàng trên toàn hệ thống, nhưng giám đốc marketing chi nhánh chỉ nhận được bản phân tích trên khách hàng tại địa phương mà thôi.
  • Giám đốc đào tạo có thể phân tích dữ liệu học viên trên toàn một trung tâm, nhưng giảng viên chỉ có thống kê phân tích trên những học viên lớp mình đang dạy mà thôi.

Scope được nhà thiết kế hệ thống đặt ra cho phù hợp với mô hình tổ chức và đặc điểm nguồn tài nguyên liên quan.

Tổng kết

Hai bộ lọc cần thiết trước khi request đi tới nghiệp vụ lõi của hệ thống:

  • Request tới từ một user có capability tương ứng với nguồn tài nguyên mà nó yêu cầu
  • Request tới từ một user có phạm vi hoạt động bao phủ nguồn tài nguyên mà nó yêu cầu

HTTP 403 là mã thường gặp sau hai bộ lọc này.

Loading

Leave a Reply

Your email address will not be published. Required fields are marked *