Quay lại danh sách
Tin tức công nghệ

Cấu Hình Xác Thực Không Mật Khẩu Cho Hạ Tầng Cloud: Triển Khai Hệ Thống SSH Certificate Authority Bằng Công Cụ Step-CA

3 tháng 6, 2026

Đặt Vấn Đề: Lỗ Hổng Từ Phương Pháp Quản Lý SSH Key Truyền Thống

Trong kỷ nguyên điện toán đám mây (Cloud Computing), việc quản lý quyền truy cập từ xa vào hàng nghìn máy chủ ảo (VM) luôn là một thách thức lớn đối với các kỹ sư DevOps và quản trị hệ thống. Phương pháp xác thực SSH truyền thống dựa trên cặp mã khóa công khai/bí mật (Public/Private Key) và tệp tin ~/.ssh/authorized_keys đang bộc lộ những điểm yếu chí mạng về mặt vận hành và bảo mật.

Khi số lượng máy chủ và nhân sự tăng lên, việc phân phối, thu hồi và cập nhật các mã khóa này trở nên cực kỳ phức tạp. Nếu một nhân sự rời doanh nghiệp, quản trị viên phải thực hiện xóa bỏ public key của họ trên toàn bộ hệ thống máy chủ. Quy trình thủ công này rất dễ sai sót, dẫn đến nguy cơ rò rỉ quyền truy cập. Hơn nữa, các SSH key truyền thống thường không có hạn định (expiration date), nghĩa là một khi đã được cấu hình, chúng sẽ có hiệu lực vĩnh viễn cho đến khi bị xóa bỏ. Đây chính là lỗ hổng lớn mà các cuộc tấn công leo thang đặc quyền nhắm vào.

Giải pháp triệt để cho vấn đề này là chuyển dịch sang mô hình Xác thực không mật khẩu (Passwordless Authentication) sử dụng SSH Certificate Authority (SSH CA). Thay vì tin tưởng vào từng cặp khóa riêng lẻ, hệ thống sẽ tin tưởng vào một thực thể ký duyệt tập trung.

Khái Niệm SSH Certificate Authority (SSH CA) Là Giờ?

Khác với chứng chỉ X.509 sử dụng cho giao thức HTTPS, chứng chỉ SSH (SSH Certificate) là một cấu trúc dữ liệu đặc thù của giao thức OpenSSH. Mô hình SSH CA hoạt động dựa trên cơ chế thiết lập lòng tin bắc cầu (Transitive Trust). Thay vì máy chủ phải lưu trữ public key của từng người dùng, máy chủ chỉ cần lưu trữ duy nhất Public Key của Certificate Authority (CA).

Quy trình xác thực diễn ra thông qua 3 bước cốt lõi:

  • Yêu cầu ký duyệt: Người dùng tạo một cặp khóa SSH tạm thời trên máy trạm cá nhân, sau đó gửi yêu cầu ký chứng chỉ lên Step-CA, đi kèm với minh chứng định danh (chẳng hạn như tài khoản SSO/OIDC của doanh nghiệp).
  • Cấp phát chứng chỉ: Step-CA xác thực danh tính người dùng và ký vào public key đó bằng Private Key của CA, tạo ra một SSH Certificate có thời hạn ngắn (ví dụ: 8 đến 16 tiếng).
  • Xác thực kết nối: Khi kết nối tới máy chủ, người dùng xuất trình chứng chỉ này. Máy chủ sử dụng Public Key của CA để giải mã và xác thực tính hợp lệ của chứng chỉ. Nếu chứng chỉ còn hạn và chứa các thông tin định danh hợp lệ (Principals), kết nối sẽ được chấp nhận mà không cần bất kỳ mã khóa nào lưu sẵn trên máy chủ.

Tại Sao Nên Chọn Step-CA Cho Hạ Tầng Cloud?

Step-CA (phát triển bởi Smallstep) là một công cụ mã nguồn mở mạnh mẽ, chuyên dụng để xây dựng và quản lý các hệ thống CA nội bộ. Đối với hạ tầng Cloud, Step-CA sở hữu những ưu điểm vượt trội:

  1. Hỗ trợ giao thức ACME và OIDC: Dễ dàng tích hợp với các nhà cung cấp định danh (IdP) như Google Workspace, Okta, Keycloak, Azure AD để áp dụng chính sách Single Sign-On (SSO).
  2. Tự động hóa tối đa: Hỗ trợ CLI mạnh mẽ và các API thân thiện, giúp tích hợp mượt mà vào luồng CI/CD hoặc các công cụ Infrastructure as Code (IaC) như Terraform, Ansible.
  3. Bảo mật tối ưu: Hỗ trợ lưu trữ khóa gốc (Root Key) trong các module bảo mật phần cứng (HSM) hoặc dịch vụ quản lý khóa của nhà cung cấp Cloud (KMS như AWS KMS, Google Cloud KMS).

Hướng Dẫn Triển Khai Step-CA Để Quản Lý SSH Certificate

Bước 1: Cài đặt và Khởi tạo Step-CA

Trước tiên, cài đặt gói công cụ step-cli và step-ca trên máy chủ được chỉ định làm CA (chọn hệ điều hành Ubuntu/Debian làm ví dụ):

wget https://dl.step.sm/gh-release/cli/docs-cli-install/step-cli_amd64.deb
dpkg -i step-cli_amd64.deb

wget https://dl.step.sm/gh-release/cert-manager/docs-ca-install/step-ca_amd64.deb
dpkg -i step-ca_amd64.deb

Sau khi cài đặt, tiến hành khởi tạo cấu hình CA cơ bản bằng lệnh:

step ca init --deployment-type=standalone

Quá trình này sẽ yêu cầu bạn nhập tên của CA, địa chỉ IP/Domain và mật khẩu để bảo vệ khóa gốc. Sau khi hoàn tất, Step-CA sẽ tạo ra các tệp cấu hình tại thư mục ~/.step.

Bước 2: Cấu hình Provisioner Xác Thực Qua OIDC (SSO)

Để đảm bảo chỉ nhân sự trong tổ chức mới có thể xin cấp chứng chỉ SSH, chúng ta cấu hình Step-CA kết nối với nhà cung cấp định danh (ví dụ Google). Sửa đổi tệp cấu hình ~/.step/config/ca.json hoặc sử dụng lệnh CLI:

step ca provisioner add Google --type OIDC \
   --client-id="" \
   --client-secret="" \
   --configuration="https://accounts.google.com/.well-known/openid-configuration" \
   --domain="company.com"

Cấu hình này bắt buộc người dùng phải đăng nhập bằng email đuôi @company.com thì mới được cấp quyền ký chứng chỉ SSH.

Bước 3: Cấu Hình Trên Các Máy Chủ Target (Target Hosts)

Để máy chủ Linux tin tưởng chứng chỉ do Step-CA ký, chúng ta cần sao chép tệp SSH CA Public Key (thường nằm tại ~/.step/certs/ssh_user_key.pub trên máy CA) vào thư mục /etc/ssh/ssh_user_key.pub của máy chủ target.

Tiếp theo, chỉnh sửa tệp cấu hình SSH Daemon (/etc/ssh/sshd_config) trên máy chủ target và thêm dòng sau:

TrustedUserCAKeys /etc/ssh/ssh_user_key.pub

Đồng thời, khuyến khích tắt tính năng xác thực bằng mật khẩu truyền thống để nâng cao độ bảo mật:

PasswordAuthentication no
PubkeyAuthentication yes

Khởi động lại dịch vụ SSH để áp dụng cấu hình mới: systemctl restart sshd.

Bước 4: Quy Trình Dành Cho Lập Trình Viên / Kỹ Sư DevOps (Client)

Phía máy trạm của kỹ sư, quy trình đăng nhập hàng ngày diễn ra cực kỳ đơn giản và nhanh chóng nhờ công cụ step. Kỹ sư chỉ cần thực hiện lệnh sau vào đầu ngày làm việc:

step ssh login [email protected]

Trình duyệt web sẽ tự động mở ra, yêu cầu kỹ sư đăng nhập bằng tài khoản Google/Okta của công ty. Sau khi đăng nhập thành công, Step-CA sẽ tự động tạo cặp khóa tạm thời và trả về một SSH Certificate lưu vào bộ nhớ ssh-agent của máy trạm với thời hạn hiệu lực là 8 tiếng.

Bây giờ, kỹ sư có thể truy cập vào bất kỳ máy chủ nào trong hạ tầng Cloud của công ty bằng lệnh SSH thông thường mà không cần cấu hình thêm bất kỳ mã khóa nào:

ssh ubuntu@cloud-server-ip

Đánh Giá Hiệu Quả Và Kết Luận

Việc chuyển đổi sang kiến trúc SSH Certificate Authority bằng Step-CA mang lại những bước tiến vượt bậc cho doanh nghiệp. Về mặt Bảo mật, rủi ro mất mát hoặc rò rỉ SSH Key vĩnh viễn bị loại bỏ hoàn toàn do các chứng chỉ đều có vòng đời ngắn và tự động hết hạn. Về mặt Vận hành, đội ngũ DevOps không còn phải tốn thời gian quản lý tệp tin authorized_keys thủ công, quy trình Onboarding và Offboarding nhân sự được tự động hóa đồng bộ theo tài khoản danh tính tập trung (Identity Provider).

Đầu tư xây dựng một hệ thống xác thực không mật khẩu vững chắc chính là nền tảng cốt lõi để hướng tới mô hình kiến trúc Zero Trust Architecture toàn diện cho toàn bộ hệ thống Cloud của doanh nghiệp trong tương lai.

Cấu Hình Xác Thực Không Mật Khẩu Cho Hạ Tầng Cloud: Triển Khai Hệ Thống SSH Certificate Authority Bằng Công Cụ Step-CA | DPTCloud