Quản trị VPS

Quản trị quyền truy cập hạ tầng: Phân tầng và ranh giới an toàn

Hướng dẫn quản trị quyền truy cập hạ tầng CNTT doanh nghiệp: nguyên tắc đặc quyền tối thiểu, mô hình RBAC theo môi trường, Jump Host và kiểm soát audit log.

Quản trị quyền truy cập hạ tầng CNTT doanh nghiệp mô hình phân tầng và ranh giới an toàn
MỤC LỤC

Khi một nhóm kỹ thuật phát triển từ một vài lập trình viên sáng lập lên quy mô mười hoặc ba mươi nhân sự, cách thức tiếp cận máy chủ thường không kịp thay đổi theo tốc độ mở rộng của nhân sự. Thói quen sao chép chung một khóa SSH private, sử dụng tài khoản mặc định ubuntu hoặc cấp quyền quản trị cao nhất cho tất cả thành viên trong nhóm rất phổ biến ở giai đoạn đầu vì sự tiện lợi và tốc độ phát triển.

Tuy nhiên, khi hệ thống bước sang mô hình chuyển dịch cụm Multi-Server với nhiều máy chủ chuyên biệt, cách thức vận hành này nhanh chóng trở thành nguồn rủi ro lớn nhất. Một câu lệnh gõ nhầm trên terminal có thể làm dừng dịch vụ cơ sở dữ liệu ngay trong giờ cao điểm. Khi có sự cố xảy ra, tệp nhật ký hệ thống chỉ hiển thị một tên tài khoản dùng chung, khiến việc khoanh vùng nguyên nhân và xác định trách nhiệm kỹ thuật trở nên bế tắc. Nguy hiểm hơn, khi một nhân sự chuyển công tác, khóa SSH cũ của họ vẫn nằm rải rác trên hàng chục máy chủ mà không ai dám xóa vì lo ngại làm gián đoạn các luồng phát hành tự động.

Quản trị quyền truy cập hạ tầng (Infrastructure Access Management) trong môi trường doanh nghiệp không đơn thuần là việc tạo tài khoản cá nhân hay cấp quyền sudo như trên một máy chủ đơn lẻ. Đây là bài toán thiết lập các ranh giới an toàn theo chiều sâu, phân cấp quyền hạn theo vai trò thực tế của từng kỹ sư, và đảm bảo mọi thao tác can thiệp vào máy chủ đều được xác thực, giới hạn và lưu vết minh bạch.

Khung kiến trúc 4 tầng ranh giới quản trị quyền truy cập hạ tầng doanh nghiệp

Thực trạng quản trị quyền truy cập khi đội ngũ mở rộng

Phần lớn các sự cố nghiêm trọng liên quan đến hạ tầng tại các doanh nghiệp vừa và nhỏ không bắt nguồn từ những cuộc tấn công mạng tinh vi từ bên ngoài, mà xuất phát từ việc thiếu ranh giới kiểm soát bên trong nội bộ đội ngũ.

Thói quen dùng chung định danh quản trị

Trong các dự án nhỏ, việc chia sẻ một tệp khóa riêng tư (id_rsa) hoặc mật khẩu tài khoản quản trị qua các ứng dụng trò chuyện nội bộ diễn ra khá phổ biến. Khi đội ngũ kỹ thuật có thêm lập trình viên frontend, backend, kiểm thử viên và thực tập sinh, tệp khóa này dần nằm trên máy tính cá nhân của hàng chục người.

Khi một sự cố xảy ra—ví dụ một bảng dữ liệu quan trọng bị xóa hoặc một cấu hình Nginx bị ghi đè dẫn đến lỗi dịch vụ—việc kiểm tra nhật ký xác thực (/var/log/auth.log) không mang lại nhiều giá trị nếu mọi phiên đăng nhập đều mang cùng một danh xưng. Đội ngũ không thể phân biệt được đâu là thao tác hợp lệ của công cụ tự động hóa CI/CD, đâu là thao tác bảo trì của quản trị viên hệ thống, và đâu là sai sót vô tình của một kỹ sư mới vào dự án.

Ranh giới mong manh giữa các môi trường

Nhiều đội ngũ duy trì cùng một phương thức đăng nhập và cùng mức đặc quyền trên cả ba môi trường: Môi trường phát triển (Development), Môi trường thử nghiệm tích hợp (Staging) và Môi trường vận hành thực tế (Production).

Một lập trình viên thường mở đồng thời nhiều cửa sổ terminal để vừa theo dõi tệp nhật ký kiểm thử trên Staging, vừa đối chiếu thông số trên Production. Trong trạng thái làm việc gấp gáp xử lý lỗi, việc gõ nhầm một lệnh xóa dữ liệu hoặc khởi động lại dịch vụ nhầm cửa sổ terminal là rủi ro rất dễ xảy ra nếu hạ tầng không có rào cản ngăn chặn về mặt quyền hạn.

Nguy cơ tồn lưu quyền hạn sau biến động nhân sự

Khi một kỹ sư rời khỏi tổ chức, nếu hạ tầng không có cơ chế quản trị định danh tập trung, người phụ trách vận hành phải truy cập thủ công vào từng máy chủ để tìm và xóa khóa công khai trong tệp ~/.ssh/authorized_keys.

Thao tác thủ công này rất dễ để sót, đặc biệt là trên các máy chủ phụ trợ như máy chủ tác vụ ngầm (Worker), máy chủ lưu trữ bộ đệm (Redis), hoặc máy chủ giám sát. Tình trạng khóa SSH của cựu nhân viên vẫn còn hiệu lực sau nhiều tháng nghỉ việc tạo ra những lỗ hổng bảo mật nghiêm trọng mà doanh nghiệp không hề hay biết.

Khung kiến trúc 4 tầng ranh giới truy cập

Để quản trị hạ tầng một cách an toàn và có trật tự, quyền truy cập của con người và máy móc cần được tổ chức thành bốn tầng phòng thủ độc lập. Mỗi tầng giải quyết một câu hỏi cụ thể trước khi một kết nối được phép chạm tới tài nguyên hệ thống.

text
[ KỸ SƯ / VẬN HÀNH VIÊN ]
           │
           ▼
┌─────────────────────────────────────────────────────────────────┐
│ TẦNG 1: ĐỊNH DANH TẬP TRUNG (Identity Layer)                     │
│ - Xác thực người dùng qua IdP tập trung (Google, Authentik)      │
│ - Bắt buộc xác thực đa yếu tố (MFA / Hardware Key)              │
│ - Thu hồi hoặc cấp phát quyền tại một điểm duy nhất              │
└────────────────────────────────┬────────────────────────────────┘
                                 │
                                 ▼
┌─────────────────────────────────────────────────────────────────┐
│ TẦNG 2: RANH GIỚI MẠNG NỘI BỘ (Network Boundary)                 │
│ - Không mở cổng quản trị (SSH, DB, Cache) ra Internet ngoài      │
│ - Thiết lập mạng riêng ảo VPC hoặc mạng lưới WireGuard Mesh     │
│ - Kiểm soát dải IP truy cập hợp lệ                              │
└────────────────────────────────┬────────────────────────────────┘
                                 │
                                 ▼
┌─────────────────────────────────────────────────────────────────┐
│ TẦNG 3: CỔNG TRUNG CHUYỂN BASTION (Host Access Layer)            │
│ - Bắt buộc kết nối máy chủ Production thông qua Jump Host       │
│ - Cấp phát chứng chỉ truy cập có thời hạn (SSH Certificate)     │
│ - Ghi nhận thông tin phiên kết nối và chặn chuyển tiếp cổng     │
└────────────────────────────────┬────────────────────────────────┘
                                 │
                                 ▼
┌─────────────────────────────────────────────────────────────────┐
│ TẦNG 4: ĐẶC QUYỀN HỆ ĐIỀU HÀNH VÀ DỮ LIỆU (OS & Data Privilege) │
│ - Tài khoản cá nhân hóa trên máy chủ đích                       │
│ - Phân quyền sudoer theo danh mục lệnh tối thiểu                │
│ - Giới hạn quyền truy cập Docker daemon                         │
│ - Chuyển nhật ký kiểm toán (Audit Log) về máy chủ tập trung      │
└─────────────────────────────────────────────────────────────────┘

Tầng 1: Định danh tập trung (Identity Layer)

Thay vì quản lý thông tin xác thực phân tán trên từng máy ảo, toàn bộ nhân sự kỹ thuật phải được định danh thông qua một hệ thống quản lý danh tính trung tâm (Identity Provider - IdP), chẳng hạn như Google Workspace, Microsoft Entra ID hoặc giải pháp tự vận hành như Authentik.

Tại tầng này, chính sách bắt buộc xác thực hai yếu tố (2FA/MFA) qua ứng dụng sinh mã hoặc khóa bảo mật vật lý (FIDO2) phải được kích hoạt. Khi một nhân sự thay đổi vị trí công tác hoặc rời khỏi doanh nghiệp, việc vô hiệu hóa tài khoản tại IdP trung tâm sẽ tự động cắt đứt quyền truy cập của họ vào tất cả các hệ thống liên quan mà không cần rà soát từng máy chủ riêng lẻ.

Tầng 2: Ranh giới mạng nội bộ (Network Boundary)

Nguyên tắc an toàn cơ bản của hạ tầng phân tán là: Không bao giờ mở cổng quản trị hệ thống trực tiếp ra Internet.

Các cổng dịch vụ nhạy cảm như SSH (22), cổng cơ sở dữ liệu MySQL (3306), PostgreSQL (5432), hay Redis (6379) chỉ được phép lắng nghe trên card mạng nội bộ (Private VPC) hoặc mạng riêng ảo được mã hóa. Kỹ sư làm việc từ xa cần kết nối thông qua mạng riêng ảo WireGuard Mesh hoặc Cloudflare Tunnel có xác thực định danh trước khi có thể nhìn thấy địa chỉ IP của máy chủ đích.

Tầng 3: Cổng trung chuyển Bastion (Host Access Layer)

Trong môi trường Production, máy trạm của kỹ sư không nên kết nối trực tiếp tới máy chủ ứng dụng hoặc máy chủ cơ sở dữ liệu, ngay cả khi đang ở trong mạng nội bộ.

Hệ thống cần một máy chủ cổng trung chuyển (Bastion Host hay Jump Host) làm chốt chặn duy nhất. Mọi luồng kết nối quản trị đều đi qua node trung chuyển này để kiểm tra tính hợp lệ của khóa xác thực, ghi nhận địa chỉ IP nguồn và lưu lại thời gian bắt đầu, kết thúc của từng phiên làm việc.

Tầng 4: Đặc quyền hệ điều hành và dữ liệu (OS & Data Privilege)

Khi đã đăng nhập thành công vào máy chủ, quyền hạn của người dùng tiếp tục bị giới hạn bởi các quy tắc của hệ điều hành.

Tài khoản root mặc định bị khóa đăng nhập từ xa. Người dùng đăng nhập bằng tài khoản cá nhân và chỉ được cấp quyền nâng cao thông qua lệnh sudo đối với những tác vụ cụ thể phục vụ công việc của mình. Tầng này cũng bao gồm việc phân quyền truy cập cơ sở dữ liệu ở cấp độ bảng và quyền đọc ghi dữ liệu theo địa chỉ IP nguồn.

Nguyên tắc đặc quyền tối thiểu và Ma trận phân quyền RBAC

Nguyên tắc đặc quyền tối thiểu (Least Privilege) quy định rằng mỗi cá nhân hoặc tiến trình tự động chỉ được cấp vừa đủ quyền hạn để hoàn thành nhiệm vụ của mình, trong một khoảng thời gian nhất định, và không có bất kỳ quyền hạn dư thừa nào khác.

Để hiện thực hóa nguyên tắc này trong tổ chức, bạn cần xây dựng ma trận phân quyền dựa trên vai trò (Role-Based Access Control - RBAC) áp dụng nhất quán trên các môi trường vận hành.

Bảng ma trận phân quyền theo vai trò trong doanh nghiệp

Vai trò kỹ thuậtMôi trường DevelopmentMôi trường StagingMôi trường ProductionPhạm vi quyền Sudo trên máy chủ
Lập trình viên (Developer)Toàn quyền kiểm soát, tự do cài đặt gói và gỡ lỗiXem log ứng dụng, khởi động lại tiến trình web/workerKhông có quyền SSH; theo dõi log qua giao diện tập trungKhông cấp sudo trên Production; cấp sudo giới hạn trên Staging
Kiểm thử viên (QA/QC)Quyền đọc và ghi dữ liệu mẫuĐọc dữ liệu, triển khai bản thử nghiệm tự độngKhông có quyền truy cập hạ tầngKhông cấp quyền sudo trên bất kỳ môi trường nào
Kỹ sư vận hành (DevOps/SRE)Hỗ trợ cấu hình hạ tầngQuản trị toàn bộ máy chủ và hệ thống giám sátQuản trị hạ tầng thông qua Jump Host được kiểm toánCấp sudo theo nhóm lệnh quản trị hệ thống, không mở root shell tự do
Quản trị cơ sở dữ liệu (DBA)Toàn quyền cấu hình database devQuản lý cấu hình, tối ưu chỉ mục và đồng bộ dữ liệuQuản lý schema, tối ưu hiệu năng và điều phối sao lưuThao tác cơ sở dữ liệu qua mạng nội bộ; không cấp sudo hệ điều hành nếu không cần thiết
Trưởng nhóm kỹ thuật (Lead/CTO)Toàn quyền quản trịToàn quyền quản trịQuyền xem cấu hình; kích hoạt quyền can thiệp đặc biệt khi có sự cốCó quyền sudo nhưng chỉ kích hoạt qua cơ chế phê duyệt khẩn cấp
Dịch vụ tự động (CI/CD Runner)Tự động build và testTự động phát hành mã nguồnTự động triển khai phiên bản mới theo script định sẵnChỉ được chạy đúng script triển khai được cấu hình sẵn trong sudoers

Phân định ranh giới giữa ba môi trường

Việc áp dụng ma trận quyền hạn đòi hỏi sự phân tách rõ ràng giữa ba cấp độ môi trường:

  1. Môi trường Development: Dành cho việc thử nghiệm các tính năng mới và cấu hình thử nghiệm. Môi trường này ưu tiên tốc độ làm việc nên quyền hạn của lập trình viên có thể mở rộng, nhưng phải hoàn toàn độc lập về mặt mạng và không chứa dữ liệu người dùng thực tế.
  2. Môi trường Staging: Phải có cấu hình phần cứng, phiên bản phần mềm và kiến trúc mạng tương đồng tối đa với Production. Tuy nhiên, quyền truy cập tại đây được siết lại để chuẩn hóa quy trình triển khai: mã nguồn phải đi qua luồng CI/CD chứ không được chỉnh sửa trực tiếp trên máy chủ.
  3. Môi trường Production: Nơi vận hành ứng dụng phục vụ người dùng. Toàn bộ quyền truy cập trực tiếp bị khóa chặt theo mặc định. Không lập trình viên nào được giữ quyền chỉnh sửa mã nguồn hay can thiệp trực tiếp vào cơ sở dữ liệu tại đây trong điều kiện vận hành bình thường.

Kỹ thuật phân cấp quyền hệ điều hành Linux trong môi trường nhóm

Nhiều quản trị viên khi tạo tài khoản cá nhân cho đồng nghiệp thường thêm ngay tài khoản đó vào nhóm sudo mặc định trong Ubuntu (usermod -aG sudo username). Hành động này đồng nghĩa với việc trao toàn bộ quyền quản trị tối cao của máy chủ cho người dùng đó, bởi vì họ có thể dễ dàng chuyển sang tài khoản root bằng lệnh sudo su hoặc sudo -i.

Để duy trì tính an toàn và minh bạch, bạn nên cấu hình quyền hạn chi tiết thông qua các tệp cấu hình độc lập trong thư mục /etc/sudoers.d/.

Thiết lập nhóm lệnh cho phép trong Sudoers

Thay vì cho phép thực thi tất cả các lệnh (ALL), chúng ta nhóm các câu lệnh cần thiết vào các bí danh (Command Alias) và chỉ cấp quyền trên các bí danh đó.

Ví dụ, nhóm lập trình viên backend chỉ cần kiểm tra trạng thái dịch vụ, khởi động lại ứng dụng khi cần và xem nhật ký hệ thống:

bash
# Tạo file cấu hình riêng cho nhóm lập trình viên
sudo visudo -f /etc/sudoers.d/20-developers

Nội dung cấu hình bên trong tệp:

text
# Định nghĩa danh mục các lệnh liên quan đến quản lý dịch vụ ứng dụng
Cmnd_Alias APP_SERVICES = /bin/systemctl restart myapp, \
                          /bin/systemctl status myapp, \
                          /bin/systemctl restart myapp.service, \
                          /bin/systemctl status myapp.service

# Định nghĩa danh mục các lệnh xem log an toàn
Cmnd_Alias APP_LOGS = /bin/journalctl -u myapp*, \
                      /usr/bin/tail -n [0-9]* /var/log/myapp/*.log

# Cấp quyền cho nhóm developers thực thi các lệnh trên mà không cần chuyển sang root
%developers ALL=(ALL) APP_SERVICES, APP_LOGS

# Ngăn chặn việc vượt rào mở shell thông qua trình đọc file (như less, more)
Defaults!APP_LOGS !shell_escape

Sau khi lưu cấu hình, bạn gán người dùng vào nhóm hệ điều hành tương ứng:

bash
# Tạo nhóm và thêm người dùng vào nhóm
sudo groupadd developers
sudo usermod -aG developers tuan.nguyen

Để kiểm tra quyền hạn, kỹ sư đăng nhập bằng tài khoản cá nhân và thử chạy lệnh được phép:

bash
# Thao tác hợp lệ
sudo systemctl restart myapp

# Thao tác bị từ chối
sudo apt update

Nếu hệ thống trả về thông báo từ chối truy cập đối với các lệnh ngoài danh mục:

text
Sorry, user tuan.nguyen is not allowed to execute '/usr/bin/apt update' as root on web-prod-01.

Cấu hình phân quyền đã hoạt động chính xác theo đúng phạm vi được cấp.

Cảnh báo về rủi ro leo thang đặc quyền qua nhóm Docker

Một sai lầm rất phổ biến là cấp quyền cho kỹ sư bằng cách thêm họ vào nhóm docker (usermod -aG docker username) để họ có thể chạy các lệnh container mà không cần gõ sudo.

Trong Linux, tiến trình Docker daemon chạy dưới quyền root. Bất kỳ người dùng nào có quyền giao tiếp với Docker socket (/var/run/docker.sock) đều có thể chạy một container gắn toàn bộ thư mục gốc của máy chủ vào bên trong:

bash
# Lệnh khai thác leo thang quyền root cực kỳ đơn giản:
docker run --rm -v /:/host -it alpine chroot /host

Chỉ với một dòng lệnh trên, người dùng đã có được một shell mang đầy đủ đặc quyền root trên máy chủ vật lý, vượt qua các giới hạn đã đặt ra trong tệp sudoers.

Do đó, trên các máy chủ Production và Staging, bạn cần tránh thêm người dùng vào nhóm docker. Việc triển khai container cần được ủy quyền cho công cụ CI/CD thông qua tài khoản dịch vụ riêng biệt, hoặc triển khai giải pháp Rootless Docker nếu thực sự cần cung cấp môi trường container cho người dùng thông thường.

Thiết lập cổng trung chuyển Bastion / Jump Host có kiểm soát

Trong kiến trúc mạng phân tầng, các máy chủ Production nằm trong dải mạng riêng không có IP Public. Để truy cập các máy chủ này, toàn bộ kết nối quản trị phải đi qua một máy chủ trung chuyển (Jump Host).

Kiến trúc kết nối an toàn qua Bastion Jump Host bằng SSH ProxyJump

Cấu hình máy chủ Jump Host

Máy chủ Jump Host là cửa ngõ duy nhất tiếp nhận kết nối từ bên ngoài, do đó nó phải được khóa chặt tối đa:

  1. Đổi cổng SSH mặc định sang một cổng khác (ví dụ 2222).
  2. Khóa toàn bộ các cổng mạng khác trên tường lửa, chỉ cho phép kết nối đến cổng SSH từ các địa chỉ IP mạng văn phòng hoặc địa chỉ IP mạng riêng ảo quản trị.
  3. Cấm xác thực bằng mật khẩu, ưu tiên sử dụng khóa SSH chất lượng cao (ed25519).
  4. Cài đặt và cấu hình Fail2ban hoặc CrowdSec để tự động chặn các địa chỉ IP thực hiện quét cổng hoặc thử đăng nhập sai liên tiếp.

Cấu hình SSH ProxyJump trên máy tính kỹ sư

Để việc kết nối qua Jump Host diễn ra liền mạch mà không đòi hỏi kỹ sư phải thao tác thủ công hai lần, bạn hướng dẫn thành viên trong nhóm cấu hình tệp ~/.ssh/config trên máy tính cá nhân của họ:

ssh-config
# Cấu hình kết nối tới máy chủ trung chuyển Bastion
Host bastion-company
    HostName 203.0.113.10
    User dev.user
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_work
    ServerAliveInterval 60

# Cấu hình tự động nhảy cóc vào dải máy chủ Production nội bộ
Host prod-app-* 10.0.1.*
    User dev.user
    ProxyJump bastion-company
    IdentityFile ~/.ssh/id_ed25519_work
    StrictHostKeyChecking ask

Với cấu hình trên, khi kỹ sư thực hiện lệnh:

bash
ssh 10.0.1.20

Phần mềm SSH client trên máy trạm sẽ tự động thiết lập một đường ống mã hóa đi qua bastion-company, sau đó mở phiên làm việc vào máy chủ đích 10.0.1.20. Khóa riêng tư (private key) chỉ nằm an toàn trên máy tính cá nhân của kỹ sư chứ không bị sao chép hay lưu trữ tạm thời trên máy chủ trung chuyển.

Giám sát phiên làm việc và Truy vết nhật ký kiểm toán

Việc phân tầng quyền hạn chỉ phát huy hiệu quả tối đa khi đi kèm với khả năng truy vết (Audit Trail). Nếu một quản trị viên thực hiện chỉnh sửa cấu hình hệ thống, tổ chức cần ghi nhận được: ai là người thực hiện, vào thời điểm nào, từ địa chỉ IP nào, và câu lệnh cụ thể là gì.

Lịch sử dòng lệnh thông thường của Linux (~/.bash_history) không đáp ứng được yêu cầu kiểm toán vì người dùng có thể dễ dàng xóa tệp này hoặc chạy lệnh unset HISTFILE để tắt tính năng lưu vết.

Thiết lập Linux Audit Daemon (auditd)

Hệ thống kiểm toán của nhân Linux (auditd) là giải pháp tiêu chuẩn để theo dõi các thao tác ở cấp độ sâu nhất của hệ điều hành. Ngay cả khi người dùng xóa nhật ký shell, nhân Linux vẫn ghi lại mọi lời gọi hệ thống (system call).

Cài đặt dịch vụ kiểm toán trên máy chủ Ubuntu/Debian:

bash
sudo apt-get update && sudo apt-get install -y auditd audispd-plugins

Tạo tệp quy tắc kiểm toán để theo dõi các tệp cấu hình quan trọng và việc thực thi lệnh của người dùng:

bash
sudo nano /etc/audit/rules.d/99-security-audit.rules

Thêm các quy tắc giám sát trọng tâm:

text
# Giám sát các thay đổi đối với file cấu hình sudo và người dùng
-w /etc/sudoers -p wa -k sudoers_changes
-w /etc/sudoers.d/ -p wa -k sudoers_changes
-w /etc/passwd -p wa -k identity_changes
-w /etc/group -p wa -k identity_changes

# Giám sát cấu hình dịch vụ SSH
-w /etc/ssh/sshd_config -p wa -k sshd_config_changes

# Ghi lại việc thực thi các lệnh quản trị bởi tài khoản có UID người dùng thông thường (UID >= 1000)
-a always,exit -F arch=b64 -S execve -F euid=0 -F auid>=1000 -F auid!=unset -k admin_command_execution

Kích hoạt các quy tắc mới và khởi động lại dịch vụ:

bash
sudo augenrules --load
sudo systemctl restart auditd

Để truy vấn nhật ký khi cần điều tra một hành vi thay đổi cấu hình, bạn sử dụng công cụ ausearch:

bash
# Tìm kiếm các thao tác sửa đổi file cấu hình sudo
sudo ausearch -k sudoers_changes -i

Kết quả trả về hiển thị đầy đủ ID người dùng thực tế (auid), tiến trình thực hiện và thời gian chính xác của sự kiện, giúp loại bỏ khả năng chối bỏ trách nhiệm kỹ thuật.

Đẩy nhật ký kiểm toán về máy chủ phân tích tập trung

Một nguyên tắc quan trọng trong giám sát an toàn là: Nhật ký lưu trên máy chủ cục bộ luôn có nguy cơ bị can thiệp. Nếu kẻ xâm nhập chiếm được quyền root, việc đầu tiên họ thực hiện thường là xóa sạch các tệp trong /var/log/.

Do đó, các tệp nhật ký quan trọng như /var/log/audit/audit.log và /var/log/auth.log nên được cấu hình để gửi trực tiếp theo thời gian thực về một máy chủ lưu trữ nhật ký tập trung (chẳng hạn như cụm Grafana Loki hoặc máy chủ Syslog riêng biệt) thông qua các công cụ thu thập nhẹ như Vector hoặc Promtail. Khi dữ liệu nhật ký đã được gửi ra khỏi máy chủ đích, không ai có thể can thiệp hay xóa bỏ dấu vết của phiên làm việc.

Quy trình cấp phát quyền tạm thời và Cơ chế khẩn cấp

Trong vận hành thực tế, sẽ có những tình huống đặc thù đòi hỏi quyền can thiệp sâu vào Production: một lỗi phần mềm nghiêm trọng gây treo luồng thanh toán, sự cố sai lệch dữ liệu sau đợt di chuyển cơ sở dữ liệu, hoặc dịch vụ bị tấn công từ chối dịch vụ cần phân tích gói tin trực tiếp.

Nếu áp dụng nguyên tắc cấm đoán tuyệt đối, đội ngũ kỹ thuật sẽ bị trói tay trong lúc cần ứng cứu nhanh. Ngược lại, nếu duy trì quyền truy cập thường trực cho tất cả mọi người, ranh giới an toàn sẽ bị phá vỡ. Giải pháp cho vấn đề này là cơ chế Cấp quyền tạm thời (Just-In-Time Access) và Quy trình kích hoạt khẩn cấp (Break-Glass Procedure).

Cấp quyền can thiệp có thời hạn (Time-Bound Access)

Thay vì cấp quyền quản trị vĩnh viễn, khi một kỹ sư cần vào máy chủ để điều tra sự cố, họ gửi yêu cầu nêu rõ mã sự cố (Ticket ID) và thời gian cần thiết (ví dụ: 2 giờ).

Trưởng nhóm kỹ thuật phê duyệt yêu cầu trên hệ thống quản lý định danh. Hệ thống sẽ tạm thời thêm kỹ sư vào nhóm quyền tương ứng hoặc cấp một chứng chỉ SSH có thời hạn hiệu lực chính xác 2 giờ. Hết thời gian này, quyền truy cập tự động bị thu hồi mà không đòi hỏi bất kỳ thao tác hủy thủ công nào từ phía người quản trị.

Thiết lập tài khoản khẩn cấp Break-Glass

Cơ chế "Break-Glass" (Đập vỡ kính khi có cháy) được thiết kế cho tình huống xấu nhất: toàn bộ hạ tầng mạng trung tâm, hệ thống SSO hoặc dịch vụ quản lý khóa truy cập gặp sự cố ngừng hoạt động, khiến các kênh đăng nhập thông thường bị tê liệt.

Để không bị mất quyền kiểm soát hệ thống, bạn chuẩn bị một tài khoản cứu trợ đặc biệt:

  1. Khởi tạo một tài khoản quản trị cục bộ độc lập trên từng máy chủ cụm (ví dụ emergency-operator).
  2. Tạo một cặp khóa SSH có độ dài an toàn cao dành riêng cho tài khoản này. Khóa riêng tư không được lưu trên máy tính của bất kỳ cá nhân nào, mà được in ra văn bản hoặc lưu vào thiết bị nhớ USB được mã hóa phần cứng.
  3. Đặt thiết bị lưu trữ hoặc bản in trong phong bì dán tem niêm phong bảo mật, cất giữ trong két sắt của công ty hoặc dịch vụ lưu trữ bí mật có chính sách phê duyệt từ ít nhất hai người có thẩm quyền (Multi-Party Approval).
  4. Thiết lập kịch bản giám sát: Bất kỳ khi nào tài khoản emergency-operator thực hiện đăng nhập vào máy chủ, hệ thống giám sát độc lập lập tức gửi cảnh báo khẩn cấp (qua tin nhắn SMS, điện thoại, hoặc kênh chat khẩn cấp của ban điều hành) để toàn bộ đội ngũ kỹ thuật nhận biết rằng quy trình khẩn cấp đang được kích hoạt.
  5. Sau khi sự cố được khắc phục, quy trình chuẩn là thu hồi khóa cũ, tạo cặp khóa mới, niêm phong lại và thực hiện kiểm toán toàn bộ các lệnh đã chạy trong suốt phiên làm việc đó.

Lộ trình hoàn thiện quản trị định danh cho doanh nghiệp

Chuyển đổi từ mô hình quản trị tự do sang hạ tầng phân tầng an toàn là một lộ trình cần thực hiện theo từng bước có trật tự để không gây xáo trộn hoạt động phát triển sản phẩm của doanh nghiệp:

Lộ trình 4 giai đoạn chuẩn hóa quản trị định danh hạ tầng
text
[ GIAI ĐOẠN 1: Dọn dẹp & Phân cấp Sudo ]
- Xóa bỏ tài khoản dùng chung
- Cấu hình nhóm lệnh chuyên biệt trong /etc/sudoers.d/
- Khóa chặt cổng truy cập SSH trực tiếp, đưa Jump Host vào vận hành
                    │
                    ▼
[ GIAI ĐOẠN 2: Tự động hóa & Chứng chỉ ngắn hạn ]
- Triển khai SSH Certificate Authority tập trung (HTS-098)
- Thay thế khóa SSH tĩnh bằng chứng chỉ tự động hết hạn sau vài giờ
                    │
                    ▼
[ GIAI ĐOẠN 3: Hợp nhất Định danh & Quản trị Secret ]
- Tích hợp SSO tập trung qua Authentik cho toàn bộ công cụ nội bộ (HTS-099)
- Đưa toàn bộ biến môi trường và mật khẩu vào Infisical (HTS-100)
                    │
                    ▼
[ GIAI ĐOẠN 4: Chuẩn hóa Quy trình Offboarding ]
- Thiết lập quy trình thu hồi quyền truy cập tức thì (HTS-102)
- Định kỳ kiểm toán danh sách quyền hạn và nhật ký auditd mỗi quý

Một hệ thống quản trị quyền truy cập đạt chuẩn không nhằm mục đích tạo thêm sự phiền toái hay rào cản cho lập trình viên, mà nhằm mục đích bảo vệ chính họ trước những sai sót vô tình trong quá trình làm việc. Khi các ranh giới kỹ thuật được thiết lập rõ ràng, mỗi thành viên trong đội ngũ có thể tự tin tập trung vào nghiệp vụ chuyên môn, trong khi hạ tầng của doanh nghiệp luôn duy trì được tính ổn định và an toàn bền vững.

Các bài viết tiếp theo trong cụm Quản trị định danh

Để hoàn thiện các cấu phần kỹ thuật cụ thể đã nêu trong bài viết định hướng này, bạn có thể tham khảo các hướng dẫn chi tiết tiếp theo trong chuyên đề:

  1. Quản lý khóa SSH tập trung: Hướng dẫn triển khai hạ tầng ký duyệt chứng chỉ ngắn hạn qua bài viết quản lý khóa SSH tập trung bằng SSH Certificate Authority (SSH CA): cấp và thu hồi quyền tự động.
  2. Hợp nhất đăng nhập công cụ nội bộ: Phương pháp cấu hình Single Sign-On bảo mật cho Grafana, Portainer và hệ thống quản trị tại bài viết tập trung hóa đăng nhập ứng dụng nội bộ bằng Single Sign-On: tích hợp OpenID Connect với Authentik.
  3. Quản lý thông tin mật cho nhóm phát triển: Giải pháp loại bỏ hoàn toàn việc chia sẻ biến môi trường qua kênh chat với bài viết quản lý Secret và biến môi trường cho nhóm phát triển: chuyển từ file .env sang Infisical.
  4. Mạng riêng ảo Zero Trust: Thiết lập kết nối an toàn cho nhân sự làm việc từ xa theo bài viết thiết lập mạng nội bộ Zero Trust cho kỹ sư từ xa bằng WireGuard Mesh.
  5. Quy trình thu hồi quyền quản trị: Hướng dẫn từng bước xử lý khi có nhân sự rời dự án tại bài viết quy trình bàn giao và thu hồi quyền quản trị hạ tầng (Offboarding Runbook) an toàn cho doanh nghiệp.
Nội dung hướng dẫn này có hữu ích với hệ thống của bạn không?

Chia sẻ bài viết hữu ích

Gửi bài viết này cho đồng nghiệp

Đọc tiếp

Bài nên đọc tiếp

Xem tất cả bài về Quản trị VPS