Nỗi ám ảnh mang tên “Hổng hạ tầng”
Trực tiếp tham gia audit bảo mật cho hơn 10 dự án lớn nhỏ, mình nhận ra một sự thật phũ phàng: Đa số lỗ hổng nghiêm trọng không nằm ở code ứng dụng. Có lần, mình đứng hình khi thấy một bucket S3 chứa 500GB ảnh CMND khách hàng đang để chế độ Public. Một trường hợp khác, cụm Kubernetes cho phép Pod chạy quyền root, mở toang cửa cho hacker chiếm quyền điều khiển toàn bộ node.
Những sai sót này thường bắt nguồn từ file cấu hình Infrastructure as Code (IaC). Khi quản lý hạ tầng bằng Terraform hay CloudFormation, một dòng code sai có thể nhân bản lỗi ra hàng trăm tài nguyên trên Cloud chỉ trong vài giây.
Tại sao đợi deploy xong mới quét bảo mật là sai lầm?
Theo Gartner, đến năm 2025, hơn 95% sự cố bảo mật đám mây sẽ do lỗi cấu hình phía người dùng. Quy trình truyền thống thường là: Viết code -> Deploy -> Quét bảo mật Runtime. Cách làm này vừa tốn kém, vừa đẩy hệ thống vào trạng thái rủi ro trong suốt thời gian chờ quét.
Ba rào cản lớn nhất khiến bảo mật IaC bị ngó lơ:
- Áp lực release: Ưu tiên tính năng chạy được trước, bảo mật tính sau.
- Mặc định chưa chắc đã an toàn: Nhiều dịch vụ Cloud để cấu hình mặc định khá lỏng lẻo để người dùng dễ tiếp cận.
- File cấu hình quá đồ sộ: Khi file Terraform vượt ngưỡng 2.000 dòng, việc review bằng mắt thường chẳng khác nào mò kim đáy bể.
Nếu phát hiện lỗi sau khi đã deploy, bạn phải rollback và sửa lỗi rất mất thời gian. Tệ hơn, dữ liệu nhạy cảm có thể đã bị rò rỉ ngay trong vài phút “hở sườn” đó.
Ba hướng tiếp cận bảo mật IaC phổ biến
Hiện nay, các team DevOps thường chọn một trong ba phương án sau:
- Review thủ công: Kỹ lưỡng nhưng chậm chạp và dễ sai sót do yếu tố con người.
- Thuê Audit bên ngoài: Chi phí đắt đỏ, thường chỉ làm theo quý hoặc năm, không bắt kịp tốc độ CI/CD.
- Phân tích tĩnh (Static Analysis): Đây là lựa chọn tối ưu nhất. Công cụ sẽ quét file IaC ngay khi bạn vừa gõ code xong, chặn đứng rủi ro trước khi tài nguyên được khởi tạo.
Checkov: Trợ thủ đắc lực cho dân DevOps
Trong giới Static Analysis, Checkov nổi lên như một tiêu chuẩn vàng. Đây là công cụ mã nguồn mở do Bridgecrew (nay thuộc Palo Alto Networks) phát triển. Nó hỗ trợ tận răng từ Terraform, CloudFormation, Kubernetes cho đến Dockerfile và Helm.
Checkov sở hữu kho tàng hơn 1.000 chính sách bảo mật dựa trên tiêu chuẩn CIS Benchmark. Nó không chỉ báo lỗi mà còn chỉ đích danh dòng code vi phạm và cung cấp luôn link hướng dẫn cách fix cực kỳ chi tiết.
Cài đặt nhanh trong 30 giây
Bạn có thể cài Checkov qua pip cực nhanh. Mình thường cài trực tiếp trên máy để kiểm tra nhanh trước khi commit code.
pip install checkov
Nếu ngại cài đặt rườm rà, Docker là giải pháp sạch sẽ nhất:
docker pull bridgecrew/checkov
docker run -v /path/to/your/code:/tf bridgecrew/checkov -d /tf
Thực chiến 1: Quét lỗi Terraform
Hãy xem xét file main.tf dưới đây. Nhìn thì có vẻ bình thường, nhưng nó đang chứa một “quả bom nổ chậm”.
resource "aws_instance" "web_server" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
# Ổ cứng không được mã hóa
ebs_block_device {
device_name = "/dev/sda1"
volume_size = 20
}
}
Chạy lệnh quét trong thư mục:
checkov -d .
Ngay lập tức, Checkov sẽ báo FAILED kèm mã lỗi CKV_AWS_3. Thông báo yêu cầu bạn phải mã hóa ổ đĩa EBS để bảo vệ dữ liệu khi máy chủ bị tấn công.
Thực chiến 2: Kiểm tra cấu hình Kubernetes
Với Kubernetes, Checkov cực kỳ nhạy bén với các lỗi leo thang đặc quyền. Thử quét file pod.yaml này:
spec:
containers:
- name: nginx
image: nginx
securityContext:
privileged: true # Lỗi cực kỳ nghiêm trọng
Checkov sẽ “gào thét” vì flag privileged: true cho phép container can thiệp sâu vào kernel của máy chủ vật lý. Bạn sẽ được yêu cầu tắt flag này hoặc sử dụng Pod Security Standards.
Mẹo bỏ qua cảnh báo (Suppressing)
Đôi khi bạn chấp nhận rủi ro ở môi trường Dev để tiết kiệm chi phí (ví dụ không cần mã hóa ổ đĩa test). Để Checkov không làm gián đoạn pipeline, hãy thêm comment trực tiếp vào code:
resource "aws_instance" "web_server" {
# checkov:skip=CKV_AWS_3: Tam thoi bo qua cho moi truong sandbox
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Đưa Checkov vào Pipeline GitHub Actions
Để thực sự an tâm, bạn nên tích hợp Checkov vào CI/CD. Nếu phát hiện lỗi mức độ High, pipeline sẽ tự động dừng lại, không cho phép merge code vào nhánh chính.
name: Checkov Security Scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Checkov
uses: bridgecrewio/checkov-action@master
with:
directory: .
framework: terraform
soft_fail: false # Ngắt pipeline nếu có lỗi
Lời kết
Bảo mật hạ tầng không phải là việc làm một lần rồi thôi. Nó là một thói quen trong quá trình viết code. Checkov không giúp hệ thống của bạn chống lại 100% các cuộc tấn công tinh vi, nhưng nó chắc chắn loại bỏ được 90% những sai lầm ngớ ngẩn thường gặp.
Lời khuyên của mình là: Đừng đợi đến khi nhận email cảnh báo từ AWS hay thấy dữ liệu bị rao bán trên mạng. Hãy cài Checkov ngay hôm nay. Bạn sẽ bất ngờ khi thấy repo của mình thực tế đang “hở” nhiều đến mức nào.

