1. Tính năng bảo mật cơ bản của Docker:
- Docker container tương tự như LXC container, được cách ly bởi:
- Namespaces: cô lập tài nguyên hệ thống:
PID: Cô lập tiến trình.NET: Cô lập mạng.MOUNT: Cô lập file system.IPC: Cô lập giao tiếp giữa các tiến trình.USER: Ánh xạ người dùng trong container với host.UTS: Cô lập hostname.
- Control Groups (cgroups): Giới hạn và quản lý tài nguyên CPU, RAM, Disk I/O cho mỗi container.
- Namespaces: cô lập tài nguyên hệ thống:
2. Quyền root và Capabilities:
- Không nên chạy container bằng root, vì quyền lực quá cao dễ gây nguy hiểm.
- Tuy nhiên, không phải lúc nào cũng có thể chạy bằng user thường do hạn chế quyền.
- Docker xử lý bằng Capabilities:
- Phân quyền root thành nhiều khả năng nhỏ (capabilities).
- Chạy container dưới quyền root nhưng đã bị giới hạn những capabilities không cần thiết.
- Không cho phép container tự thêm lại capabilities đã bị loại bỏ.
3. Các công nghệ bảo mật trên Linux mà Docker tận dụng:
- AppArmor: Giám sát và hạn chế hành vi của ứng dụng theo profile.
- SELinux: Kiểm soát truy cập mức kernel, chống truy cập trái phép.
- seccomp: Lọc và giới hạn system calls mà container có thể thực hiện.
- Mỗi container Docker có sẵn 1 seccomp profile mặc định, có thể thay đổi khi khởi tạo.
4. Tính năng bảo mật nâng cao trên Docker:
- Docker Security Scanning:
- Quét lỗ hổng bảo mật trong image private trên Docker Hub hoặc Docker Trusted Registry.
- Kiểm tra binary trong image đối chiếu với database lỗ hổng.
- Docker Content Trust (DCT):
- Đảm bảo tính toàn vẹn và nguồn gốc image.
- Xác minh image đúng từ nhà xuất bản (VD: nginx chính chủ từ NGINX).
- Docker Secrets:
- Quản lý mật khẩu, API key một cách bảo mật.
- Chỉ dùng được trong Swarm mode nhờ encrypted cluster store.
- Cách thức:
1. Tạo secret → lưu vào cluster store (được mã hóa).
2. Secret truyền tới task dưới dạng dữ liệu mã hóa khi truyền.
3. Secret được mount vào container tại /run/secrets/ten-secret.
4. Lưu trữ trên memory (tmpfs), sẽ bị xóa khi task kết thúc.
5. Swarm Mode nâng cao bảo mật:
- Swarm mode cung cấp:
- Node ID mã hóa.
- Xác thực TLS hai chiều.
- Token join bảo mật cho node manager và worker.
- CA tự động xoay vòng certificate.
- Encrypted networking.
- Cluster store mã hóa.
6. Tóm tắt Namespaces:
| Namespace | Ý nghĩa |
|---|---|
| PID | Cô lập tiến trình giữa các container |
| NET | Mạng riêng biệt cho mỗi container |
| MOUNT | Hệ thống file riêng biệt |
| IPC | Bộ nhớ chia sẻ nội bộ container |
| USER | Map user container thành user khác trên host |
| UTS | Mỗi container có hostname riêng |
7. Tổng kết & Best Practices:
- Không chạy container bằng root nếu không cần.
- Áp dụng AppArmor, SELinux, seccomp.
- Bật Docker Content Trust để đảm bảo image chính hãng.
- Quét security cho image thường xuyên.
- Quản lý Secrets bằng Docker Secrets trong Swarm mode.
- Dùng Swarm mode để bảo vệ hệ thống Docker toàn diện.