5 Mẹo để bảo mật Docker Image của bạn
Docker images là trung tâm của việc triển khai ứng dụng hiện đại, nhưng nếu không được bảo mật đúng cách, chúng có thể dễ dàng bị tấn công và gặp rủi ro không đáng có. Dưới đây là 5 cách đơn giản để tăng cường bảo mật cho Docker images của bạn!
1. Quét lỗ hổng bảo mật với Docker Scout
Việc thường xuyên quét Docker images để phát hiện lỗ hổng bảo mật là một bước quan trọng giúp ngăn chặn các rủi ro tiềm ẩn. Docker Scout, được tích hợp sẵn trong Docker Desktop và CLI, giúp xác định các vấn đề trong images trước khi chúng trở thành mối đe dọa thực sự.
Để quét một image, bạn có thể chạy lệnh sau:
docker scout quickview my-image
Hãy tạo thói quen quét thường xuyên — đặc biệt là trước khi triển khai lên môi trường production — và luôn cập nhật các base images. Cách tiếp cận chủ động này giúp bạn phát hiện vấn đề sớm hơn. Ngoài Docker Scout, còn có một số công cụ thay thế khác, nhưng mình nghĩ sự tiện lợi của Docker Scout khiến nó trở thành lựa chọn không thể bỏ qua.
2. Sử dụng hình ảnh tối giản
Hình ảnh tối thiểu cải thiện bảo mật bằng cách giảm các thành phần không cần thiết và do đó giảm bề mặt tấn công. Các cơ sở nhẹ như Alpine Linux hạn chế các lỗ hổng tiềm ẩn và, như một phần thưởng, tăng tốc quá trình xây dựng do kích thước nhỏ hơn của chúng (cả hai đều có lợi!).
Sau đây là một ví dụ Dockerfile Node.js đơn giản:
FROM node:18.12.1-slim
WORKDIR /app
COPY package*.json ./
RUN npm install --only=production
COPY . .
CMD ["node", "index.js"]
Hãy chọn base image nhỏ gọn, chỉ cài đặt những gì thực sự cần thiết và sử dụng multi-stage builds để loại bỏ các file không cần thiết. Điều này giúp Docker images của bạn bảo mật hơn và hiệu quả hơn.
3. Tránh Hardcode thông tin đăng nhập
Việc hardcode thông tin đăng nhập trong Dockerfile là một rủi ro bảo mật nghiêm trọng — nếu image bị lộ hoặc vô tình chia sẻ, các thông tin nhạy cảm sẽ bị lộ. Thay vào đó, hãy sử dụng biến môi trường (environment variables) hoặc các công cụ quản lý bí mật như Infisical hoặc AWS Secrets Manager để bảo vệ dữ liệu của bạn.
Truyền thông tin xác thực khi chạy bằng:
docker run -e DATABASE_URL=your_database_url my-image
4. Chạy với người dùng không phải Root
Mặc định, các container Docker chạy với quyền root, điều này có thể gây ra thiệt hại nghiêm trọng nếu bị tấn công. Chuyển sang người dùng không phải root giúp hạn chế tác động khi container bị xâm nhập, và cách thực hiện cũng rất đơn giản.
Thêm nội dung này vào Dockerfile của bạn:
RUN useradd -m myuser
USER myuser
CMD ["myapp"]
Đây là một thay đổi đơn giản với ít nhược điểm và lợi ích bảo mật rõ ràng.
5. Sử dụng chế độ Rootless
Rootless mode cho phép chạy Docker engine dưới quyền một người dùng không phải root, giúp giảm bớt quyền hạn của nó trên hệ thống máy chủ. Dù yêu cầu một số bước thiết lập bổ sung — như cấu hình user namespaces và cài đặt các công cụ như newuidmap — nhưng đây là một biện pháp bảo mật đáng giá để tăng cường an toàn cho hệ thống.
Hy vọng các mẹo vặt này giúp ích cho các bạn!
All rights reserved