Tổng quan
Khi tạo ra 1 Container trong Docker hay 1 Pod trong Kubernetes, thường chúng ta sẽ sử dụng các Image có sẵn trong các tài liệu hướng dẫn. Tuy nhiên, đây không phải là cách hay nhất bởi các Image cũ có thể ẩn chừa các lỗ hổng bảo mật (CVE – Common Vulnerabilities and Exposures).
Vậy có cách nào, hoặc công cụ nào để phát hiện các vấn đề, rủi ro an ninh bảo mật trong Image sử dụng? Câu trả lời có, công cụ trong bài mình sẽ giới thiệu cho các bạn có tên là Trivy
.
Trivy là một công cụ quét bảo mật toàn diện và linh hoạt. Trivy có các bộ quét để tìm kiếm các vấn đề liên quan đến bảo mật với nhiều loại như Container Image
, Filesystem
, Git Repository (remote)
, Virtual Machine Image
, Kubernetes
, AWS
Trong bài viết này mình sẽ tập trung vào tính năng quét các vấn đề bảo mật trong Container Image với Trivy
Chuẩn bị
- Cài đặt Ubuntu version 20.04
- Cấu hình 2 CPU, 2 GB Ram, 50 GB Disk
- Trong bài, server của mình có IP 192.168.0.113
Bước 1: Cài đặt công cụ
Cấu hình thư viện
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
Cài đặt Trivy
sudo apt-get update
sudo apt-get install trivy
Kiểm tra
trivy version
Bước 2: Thực hiện quét Container Image
Quét Image cơ bản
trivy image nginx:1.16
Dễ thấy, Image có 420 vấn đề (UNKNOWN: 7, LOW: 135, MEDIUM: 130, HIGH: 108, CRITICAL: 40)
Quét và chỉ hiển thị các lỗ hổng mức HIGH, CRITICAL
trivy image --severity CRITICAL nginx:1.16
trivy image --severity HIGH,CRITICAL nginx:1.19.2
Tham khảo thêm:
https://aquasecurity.github.io/trivy/v0.36/getting-started/installation/
Xử lý vấn đề bảo mật trong Container Image
Để xử lý vấn đề bảo mật, các đơn giản nhất chúng ta sẽ sử dụng Image version mới nhất, bản rút gọn, ví dụ với Image Nginx thay vì dùng image nginx:1.16
chúng ta sẽ sử dụng Image nginx:1.25.3-alpine-slim
trivy image nginx:1.25.3-alpine-slim
Sử dụng nginx:1.25.3-alpine-slim
sẽ chỉ chứa duy nhất 2 CVE mức medium
Ngoài ra, các bạn có thể tích hợp công cụ Trivy vào các qui trình CI/CD để nâng cao an ninh bảo mật trong quá trình phát triển và phát hành sản phẩm.
Tới đây đã kết thúc bài chia sẻ của mình, cám ơn các bạn đã theo dõi
Tham khảo
https://medium.com/how-tos/how-to-check-your-docker-images-for-vulnerabilities-287bd61aacc6
https://aquasecurity.github.io/trivy/v0.36/getting-started/installation/
https://aquasecurity.github.io/trivy/v0.19.2/getting-started/quickstart/
Leave a Reply