Bỏ qua

02.github RBAC

image chi tiết về RBAC (Role-Based Access Control) trong GitHub, GitLab và Jenkins – ba nền tảng DevOps phổ biến nhất hiện nay:


1. RBAC là gì?

  • RBAC (Role-Based Access Control) là mô hình phân quyền truy cập dựa trên vai trò. Người dùng được gán vào các vai trò (role), mỗi vai trò có quyền (permission) cụ thể với hệ thống hoặc tài nguyên.
  • Giúp kiểm soát, bảo mật, và tuân thủ quy trình trong doanh nghiệp.

2. RBAC trong GitHub

a. Các cấp độ phân quyền

Trên repository (repo): - Read: Xem code, clone repo, mở issue. - Triage: (Mới) Được phép gắn label, close/reopen issue, manage pull request mà không cần quyền ghi code. - Write: Read + push/pull code, merge pull request, tạo branch. - Maintain: Write + quản lý settings, thêm/xóa labels, manage repo settings (không xóa repo). - Admin: Full quyền, thay đổi tất cả settings, xóa repo, manage team, phân quyền cho người khác.

Trên organization: - Member: Quyền cơ bản, truy cập repo được chia sẻ. - Owner: Toàn quyền với org, quản lý team, billing, security, repo, members. - Team Maintainer: Quản lý team nhỏ trong org.

b. Cách hoạt động

  • Phân quyền theo từng repo hoặc toàn bộ organization
  • Có thể mời user vào từng repo hoặc gán vào team
  • Team có thể được gán role riêng cho từng repo
  • Quản lý bằng UI hoặc qua API

c. Ví dụ

  • Developer chỉ cần quyền Write để push code.
  • Team QA gán quyền Triage để quản lý issue, pull request mà không được push code.
  • DevOps hoặc Admin giữ quyền Maintain/Admin để quản lý settings, secrets, branch protection.

3. RBAC trong GitLab

a. Các mức quyền (Role) mặc định

  • Guest: Chỉ xem, comment issue/merge request.
  • Reporter: Xem code, clone, xem pipeline/job log.
  • Developer: Push code, merge request, trigger pipeline.
  • Maintainer: Quản lý repo settings, merge code, quản lý branch/tag/protected branch.
  • Owner: Toàn quyền với group/project (chỉ có ở group, không có ở project).

b. Cách hoạt động

  • Gán vai trò cho user ở mức Group hoặc Project.
  • Có thể quản lý phân quyền chi tiết cho từng branch (protected branch).
  • Có thể kết hợp với SSO, LDAP, SCIM để kiểm soát user nội bộ doanh nghiệp.

c. Ví dụ

  • Developer chỉ cần quyền Developer để phát triển bình thường.
  • Trưởng nhóm/leader cần quyền Maintainer để review, merge code, quản lý branch.
  • Owner dùng cho admin hệ thống, quản lý billing, cấu hình CI/CD shared runner, bảo mật.

4. RBAC trong Jenkins

a. Plugin phổ biến: Role Strategy Plugin

  • Jenkins mặc định chỉ có quản trị viên (admin). Nếu muốn RBAC, phải cài plugin Role Strategy.

b. Các loại role

  • Global roles: Áp dụng cho toàn bộ Jenkins (admin, read, build, v.v.)
  • Project roles: Áp dụng cho từng job/project cụ thể (ví dụ, chỉ được build hoặc xem log của một job nhất định)
  • Agent roles: Quản lý quyền với từng agent/slave node.

c. Cách hoạt động

  • Tạo role (ví dụ: developer, qa, viewer)
  • Gán quyền cho role (build, configure, read…)
  • Gán user/group vào role đó
  • Có thể tích hợp LDAP/Active Directory để tự động phân quyền

d. Ví dụ

  • Developer chỉ có quyền build job, xem log, không được cấu hình pipeline.
  • QA chỉ có quyền đọc log hoặc trigger test jobs.
  • Admin có full quyền, cấu hình Jenkins, cài plugin, xóa job.

5. So sánh ngắn gọn

Nền tảng Phân quyền repo/project Phân quyền nhóm/org Phân quyền chi tiết (branch/job) Tích hợp LDAP/SSO Granular RBAC
GitHub Có (branch protection, secrets) Trung bình
GitLab Có (protected branch, pipeline) Cao
Jenkins Có (plugin) Có (plugin) Có (job, agent) Có (plugin) Rất cao

Kết luận

  • RBAC giúp kiểm soát bảo mật, phân chia trách nhiệm rõ ràng, phù hợp với doanh nghiệp và team lớn.
  • GitLab và Jenkins có khả năng tùy biến RBAC sâu hơn GitHub, phù hợp cho DevOps chuyên nghiệp hoặc lĩnh vực nhạy cảm.
  • GitHub lại đơn giản, dễ dùng, phù hợp team nhỏ/vừa hoặc open source.

Muốn xem ví dụ cấu hình RBAC thực tế trên nền tảng nào? Hãy hỏi thêm nhé!

Bình luận