1. Khái niệm Docker Content Trust (DCT)
- Docker Content Trust (DCT): Cơ chế mã hóa đảm bảo tính toàn vẹn (integrity) và xác minh danh tính người xuất bản của Docker Image.
- Ngăn ngừa rủi ro sử dụng Image bị giả mạo hoặc chứa mã độc bằng cách xác thực chữ ký số từ nhà phát hành chính thức.
2. Quy trình Ký số (Digital Signing) cho Docker Image
2.1. Tag Image mới
docker image tag <dockerhub-user>/weather-app:latest <dockerhub-user>/dct:latest
2.2. Tạo cặp khóa (Keypair) để ký
docker trust key generate <username>
Lưu ý: Lưu trữ tệp .pub (Public Key) an toàn để phân phối cho các Signer.
2.3. Thêm Signer vào Repository
docker trust signer add --key <public-key-file> <signer-name> <dockerhub-user>/dct
2.4. Thực hiện ký số cho Image
docker trust sign <dockerhub-user>/dct:latest
3. Quản lý và Khởi chạy với Docker Content Trust
3.1. Bật DCT tạm thời qua biến môi trường
export DOCKER_CONTENT_TRUST=1
Đặt =0 để tạm thời tắt kiểm tra DCT.
3.2. Push Image đã ký lên Docker Hub
docker login
docker image push <dockerhub-user>/dct:latest
3.3. Kiểm thử cơ chế DCT hoạt động
Xóa Image local và thử pull Image chưa được ký:
docker image rm <dockerhub-user>/weather-app:latest
docker image pull <dockerhub-user>/weather-app
Kết quả: Docker Daemon từ chối tải Image vì chưa có chữ ký số xác thực.
Thử pull Image chính thức từ Nginx đã được ký:
docker image pull nginx:latest
Kết quả: Tải thành công do Nginx Publisher đã ký số đầy đủ.
4. Bật Docker Content Trust vĩnh viễn qua daemon.json
Cấu hình tệp /etc/docker/daemon.json:
{
"content-trust": {
"mode": "enforced"
}
}
Chế độ cấu hình:
enforced: Bắt buộc tất cả Image phải có chữ ký số hợp lệ.passive: Cảnh báo nếu Image chưa ký nhưng vẫn cho phép tải.disabled: Tắt hoàn toàn tính năng DCT.
Khởi động lại Docker Daemon để áp dụng:
sudo systemctl restart docker
5. Các lưu ý quan trọng
- Cần bật tính năng DCT đồng bộ trên tất cả các Node trong cụm Docker Swarm.
- Không thu hồi (revoke) Signer Key trong quá trình ký để tránh làm hỏng cấu trúc Repository.
6. Tổng kết lệnh Docker Content Trust cơ bản
| Mục đích | Câu lệnh |
|---|---|
| Tạo Keypair | docker trust key generate <username> |
| Thêm Signer | docker trust signer add --key <key-file> <signer> <repo> |
| Ký Image | docker trust sign <image:tag> |
| Bật DCT tạm thời | export DOCKER_CONTENT_TRUST=1 |
| Push Signed Image | docker image push <image:tag> |
| Bật DCT vĩnh viễn | Cấu hình mode: enforced trong daemon.json |