Tích hợp Proxmox VE với Active Directory: Quản trị tập trung và Phân quyền chuyên nghiệp

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Đã đến lúc khai tử việc quản lý tài khoản local trên Proxmox

Quản lý 1-2 node Proxmox với vài VM bằng tài khoản local thì đơn giản. Nhưng hãy tưởng tượng khi hệ thống lên tới 5-10 node (Cluster) và team IT có thêm 3 thành viên mới. Việc lặp đi lặp lại thao tác tạo user, gán pass trên từng node là cách nhanh nhất để bạn “đốt” sạch thời gian vào những việc không tên. Chưa kể, mỗi lần có nhân viên nghỉ việc, việc rà soát để xóa account trên mọi hệ thống thực sự là một cơn ác mộng về bảo mật.

Trong môi trường homelab của mình với khoảng 12 VM và container, mình đã sớm tích hợp Active Directory (AD). Thay vì phải nhớ mật khẩu root của từng node, mình chỉ cần dùng một tài khoản duy nhất. Proxmox lúc này chỉ đóng vai trò “mượn” dịch vụ xác thực từ AD. Mọi việc từ đổi mật khẩu đến khóa tài khoản đều diễn ra tập trung tại Domain Controller.

Dưới đây là 3 lý do tại sao mình luôn ưu tiên setup này:

  • Single Sign-On (SSO) thực thụ: Bạn dùng đúng tài khoản Windows đang làm việc để login Proxmox.
  • Phân quyền theo Group (RBAC): Group IT-Admins có quyền Full Control, còn Dev-Team chỉ được phép xem console hoặc Start/Stop máy ảo của họ.
  • Kiểm soát rủi ro: Chỉ cần một cú click Disable trên AD, toàn bộ quyền truy cập vào hạ tầng ảo hóa sẽ bị cắt đứt ngay lập tức.

Thông số cần chuẩn bị từ Domain Controller

Trước khi cấu hình trên Proxmox, hãy mở trình quản lý AD và ghi lại các thông số sau:

  • IP/Hostname của DC: Ví dụ 192.168.1.10 hoặc dc01.itfromzero.local.
  • Base DN: Điểm bắt đầu để Proxmox tìm kiếm user. Ví dụ: ou=Users,dc=itfromzero,dc=local.
  • Bind DN: Một tài khoản Service Account có quyền Read-only để Proxmox dùng để truy vấn LDAP. Ví dụ: cn=proxmox_svc,ou=ServiceAccounts,dc=itfromzero,dc=local.
  • Mật khẩu của Bind DN.

Lưu ý quan trọng: Tuyệt đối không dùng tài khoản Domain Admin làm Bind DN. Hãy tạo một user riêng, đặt mật khẩu không bao giờ hết hạn (Password never expires) để tránh việc hệ thống mất kết nối đột ngột.

Các bước cấu hình Proxmox kết nối LDAP/AD

Bước 1: Khai báo Realm mới

Truy cập vào Web GUI của Proxmox bằng quyền root. Bạn tìm đến mục Datacenter > Permissions > Realms. Nhấn Add và chọn Active Directory Server.

Tại bảng hiện ra, hãy điền các thông số cơ bản:

  • Realm ID: Đặt tên gợi nhớ như AD-COMPANY. Tên này sẽ xuất hiện ở menu thả xuống khi đăng nhập.
  • Domain: Tên domain của bạn (ví dụ: itfromzero.local).
  • Server: IP của máy chủ Domain Controller.
  • Default: Tích vào đây nếu bạn muốn Proxmox tự động chọn Realm này khi mở trang login.

Bước 2: Xác thực Bind User

Chọn Realm vừa tạo và nhấn Edit. Lúc này bạn cần điền chính xác Bind DN. Nếu chuỗi DN quá dài và khó nhớ, hãy mở PowerShell trên máy Windows DC và chạy lệnh:

dsquery user -name proxmox_svc

Copy kết quả trả về và dán thẳng vào ô Bind DN trên Proxmox để đảm bảo chính xác 100%.

Bước 3: Đồng bộ hóa Group (Sync Options)

Để việc phân quyền diễn ra tự động, bạn cần cấu hình tab Sync Options. Thiết lập Group DN trỏ về OU chứa các nhóm kỹ thuật của bạn. Ở phần Scope, hãy chọn Subtree để hệ thống quét sâu vào các OU con bên trong.

Sau khi lưu, hãy nhấn nút Sync. Nếu màn hình hiện danh sách user và group kèm chữ OK, chúc mừng bạn đã kết nối thành công.

Phân quyền máy ảo (RBAC): Cách làm thông minh hơn

Sau khi đồng bộ, user AD vẫn chưa có quyền làm gì trên Proxmox. Thay vì gán quyền cho từng người, hãy gán quyền cho Group (Group-based Permissions). Cách này giúp bạn quản lý nhân sự cực nhàn.

  1. Vào Datacenter > Permissions > Groups để kiểm tra các nhóm đã sync về (thường có đuôi @AD-COMPANY).
  2. Tại mục Permissions, nhấn Add > Group Permission.
  3. Path: Chọn /vms nếu muốn cấp quyền trên toàn bộ máy ảo, hoặc chọn một Pool cụ thể để giới hạn phạm vi.
  4. Role: Chọn PVEVMAdmin cho đội kỹ thuật hoặc PVEAuditor cho đội kiểm toán chỉ cần xem log.

Nếu bạn thích dùng dòng lệnh, đây là cách gán quyền Administrator cho group IT nhanh gọn:

pveum acl modify / -group "IT_Admins@AD-COMPANY" -role Administrator

Xử lý lỗi thực tế thường gặp

Khi triển khai thực tế, mình thường gặp 2 vấn đề phổ biến sau:

1. Lỗi Invalid credentials dù pass đúng

Nguyên nhân 90% đến từ việc lệch múi giờ. Proxmox và DC phải đồng bộ thời gian với sai số dưới 5 phút. Hãy kiểm tra lại NTP trên Proxmox:

timedatectl status
# Nếu lệch, hãy đồng bộ lại
ntpdate -u pool.ntp.org

2. Lỗi SSL/TLS khi dùng cổng 636

Nếu bạn bật LDAPS để mã hóa, Proxmox sẽ từ chối kết nối nếu không tin tưởng Certificate của DC. Bạn cần tải file CA cert của DC về, chép vào /usr/local/share/ca-certificates/ và chạy update-ca-certificates để hệ thống nhận diện.

Mẹo nhỏ: Đừng bao giờ khóa tài khoản root local

Dù AD tiện lợi đến đâu, hãy luôn giữ một tài khoản root local với mật khẩu vật lý an toàn. Nếu Domain Controller gặp sự cố hoặc switch mạng bị treo, tài khoản local là con đường duy nhất để bạn truy cập vào cứu hệ thống.

Tích hợp AD không chỉ để cho “sang”, mà là bước then chốt để chuẩn hóa hạ tầng. Hy vọng hướng dẫn này giúp bạn bớt được những task thủ công để tập trung vào những dự án thú vị hơn!

Share: