RBAC trên VMware vCenter: Đừng để quyền ‘sinh sát’ nằm nhầm tay Junior

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

Khi “quyền sinh quyền sát” nằm nhầm tay: Câu chuyện lúc 2 giờ sáng

Đêm đó, điện thoại mình rung bần bật trên bàn. Đầu dây bên kia, cậu junior mếu máo: “Anh ơi, con DB production bay màu rồi, em tìm trong Inventory không thấy đâu nữa!”. Vừa ngáp vừa mở laptop, mình kiểm tra phần Tasks & Events trên vCenter và nhận ra sự thật phũ phàng. Cậu ấy định vào chỉnh card mạng cho máy ảo test, nhưng vì đang cầm quyền Administrator tối cao, cậu ấy đã nhấn nhầm nút ‘Delete from Disk’ con DB quan trọng nhất hệ thống.

Kết quả? Mình mất gần 4 tiếng đồng hồ để restore dữ liệu từ backup Veeam. Đây là bài học xương máu về việc lười phân quyền. Hiện tại, mình đang quản lý cụm Cluster VMware với 8 host ESXi và hơn 150 máy ảo. Nếu không siết chặt Role-Based Access Control (RBAC), những lỗi vận hành ngớ ngẩn như vậy sớm muộn gì cũng khiến bạn “ra đảo”. RBAC không đơn giản là đặt mật khẩu, nó là nghệ thuật cấp quyền vừa đủ để làm việc nhưng không đủ để gây họa.

So sánh 3 hướng tiếp cận quản trị quyền truy cập

Trước khi bắt tay vào cấu hình, anh em nên nhìn qua 3 cách làm phổ biến để thấy tại sao RBAC kết hợp Identity Source là lựa chọn duy nhất cho môi trường chuyên nghiệp.

  • Dùng chung tài khoản Administrator: Đây là thảm họa chờ chực. Mọi người dùng chung user [email protected]. Ưu điểm duy nhất là nhanh, nhưng bạn sẽ không bao giờ biết ai đã làm gì (Audit trail bằng 0). Một người lỡ tay là cả team cùng gánh tạ.
  • Tạo User cục bộ trên từng Host: Cách này ổn nếu bạn chỉ có 1-2 host lẻ. Tuy nhiên, khi số lượng host tăng lên, việc login 8 lần vào 8 con server để đổi pass cho một nhân viên mới là một cực hình thực sự.
  • RBAC kết hợp AD/LDAP: Đây là cách mình đang dùng. vCenter sẽ kết nối trực tiếp với Active Directory. Chúng ta phân quyền dựa trên Group của AD. Khi nhân viên nghỉ việc, bạn chỉ cần disable tài khoản AD là xong, cực kỳ sạch sẽ và an toàn.

Ưu và nhược điểm: Có thực sự màu hồng?

Lợi ích sát sườn

Điểm mạnh nhất của RBAC là tính Granularity (chia nhỏ quyền hạn). Bạn có thể cho phép đội Dev được phép Power On/Off máy ảo, nhưng tuyệt đối không được sửa cấu hình RAM/CPU. Hoặc đội Network chỉ được sờ vào Virtual Switch mà không thể chạm tới Datastore. Thêm vào đó, tính năng Inheritance giúp bạn áp quyền từ cấp Datacenter xuống hàng chục Folder máy ảo bên dưới chỉ trong 30 giây.

Những góc khuất cần lưu ý

Thực tế vận hành, RBAC đôi khi khiến admin phát điên vì sự rắc rối lúc đầu. Nếu bạn không quy hoạch VM Folders hợp lý, việc gán quyền sẽ bị chồng chéo. Đôi khi một user thuộc hai Group AD khác nhau dẫn đến tình trạng Conflict quyền. Những lúc như vậy, bạn có thể mất cả buổi chiều chỉ để debug xem tại sao user không thể bật được máy ảo.

Quy trình triển khai 3 bước: Từ lý thuyết đến thực chiến

Để cấu hình chuẩn, mình luôn tuân thủ công thức: Identity Source -> Define Roles -> Assign Permissions.

Bước 1: Kết nối Active Directory

Đừng bao giờ tạo user thủ công. Hãy vào Administration > Single Sign-On > Configuration để add Domain công ty vào. Khi Join domain thành công, bạn có thể tìm thấy bất kỳ đồng nghiệp nào ngay trên giao diện vCenter chỉ bằng cách gõ tên.

Bước 2: Thiết lập Custom Role – Đừng dùng hàng có sẵn

VMware có sẵn các Role như VM Power User hay ReadOnly. Nhưng tin mình đi, chúng thường quá thừa hoặc quá thiếu.

Mình thường tự tạo Role riêng cho từng đội. Ví dụ, với Role “Junior-Operator”, mình chỉ tích đúng 3 nhóm quyền:

  • Interaction: Power on, Power off, Console.
  • Inventory: Create from existing (để clone máy ảo từ Template).
  • Snapshot management: Để các em nó tự snapshot trước khi update code.

Bước 3: Gán quyền (Permission) theo nguyên tắc “Vừa đủ”

Đây là lúc chúng ta ghép nối: User + Role + Object. Giả sử mình muốn cấp quyền cho group Dev_Team trên thư mục Project_Alpha.

  1. Chuột phải vào Folder Project_Alpha.
  2. Chọn Add Permission.
  3. Tại mục User, chọn Domain và gõ Dev_Team.
  4. Tại mục Role, chọn cái Junior-Operator vừa tạo ở trên.
  5. Đừng quên tích vào Propagate to children để quyền tự động áp xuống mọi máy ảo bên trong Folder đó.

Tự động hóa với PowerCLI

Nếu bạn có hàng trăm máy ảo, việc click chuột là bất khả thi. Mình thường dùng script PowerCLI để gán quyền hàng loạt, giúp tiết kiệm khoảng 80% thời gian thao tác. Dưới đây là đoạn code mình hay dùng để kiểm soát quyền hạn:

# Kết nối tới vCenter
Connect-VIServer -Server vcenter.itfromzero.com

# Kiểm tra xem user 'hoang.admin' đang có quyền gì
Get-VIPermission | Where-Object {$_.Principal -like "*hoang.admin*"} | Select-Object Entity, Role, Principal

# Gán nhanh quyền cho một Group vào Folder máy ảo
New-VIPermission -Entity (Get-Folder "Production_VMs") -Principal "DOMAIN\Group_Admins" -Role "Admin_Role" -Propagate:$true

4 lưu ý sống còn khi quản lý Cluster lớn

Sau nhiều năm “chinh chiến” với các hệ thống vCenter từ nhỏ đến lớn, mình rút ra vài kinh nghiệm thực tế:

  1. Bắt buộc dùng VM Folders: Đừng bao giờ gán quyền trực tiếp lên từng máy ảo. Hãy gom chúng vào Folder theo dự án. Khi có máy ảo mới, bạn chỉ cần ném nó vào Folder là xong, quyền tự động kế thừa.
  2. Tuyệt đối không gán quyền cho cá nhân: Hãy gán quyền cho Group AD. Khi có nhân viên mới, bạn chỉ cần add họ vào Group trên AD là vCenter tự nhận, không cần động tay vào cấu hình vCenter nữa.
  3. Cẩn trọng với Global Permissions: Quyền này ảnh hưởng đến toàn bộ hệ thống từ License đến Tagging. Chỉ cấp nó cho những người thực sự là “Core Admin”.
  4. Luôn luôn kiểm tra lại: Sau khi cấu hình, hãy mượn một tài khoản test để login thử. Hãy đảm bảo nút “Delete” phải bị xám màu với những người không có phận sự.

Quản lý phân quyền là công việc thầm lặng nhưng cực kỳ quan trọng. Đừng đợi đến lúc có sự cố mới cuống cuồng đi siết lại quy trình. Hy vọng những chia sẻ từ thực tế vận hành cluster của mình giúp anh em tránh được những cú điện thoại lúc 2 giờ sáng!

Share: