Blog chia sẻ về công nghệ ...
Published on

DevSecOps: Sign Image (ký image) giải thích dễ hiểu cho người mới

Authors

🔐 Ký Docker Image là gì?

Ký Image (image signing) là quá trình gắn chữ ký số vào file image sau khi build, giống như bạn đóng dấu xác nhận rằng:

  • Đây là image chính chủ bạn build ra.
  • Không ai sửa hoặc chèn mã độc vào sau đó.
  • Có thể kiểm tra được ai là người ký image đó.

🧱 Quá trình ký image nằm ở đâu trong DevSecOps?

Ký image xảy ra ở giai đoạn giữa CI/CD pipeline – sau khi build, trước khi đẩy (push) image lên registry.

⚙️ Mô hình đơn giản:

[Giai đoạn phát triển]
🔍 Quét  (SAST, Dependency Scan)
🐳 Build Docker Image
Ký image (Cosign ký file image bằng private key)
📦 Push lên Docker Hub / GHCR / Registry riêng
🚀 Triển khai ra môi trường (Kubernetes, ...)

🎯 Tại sao phải ký Docker Image?

Lý doÝ nghĩa
✅ Xác thực nguồn gốcĐảm bảo image do bạn build, không phải kẻ xấu tạo
✅ Phát hiện thay đổiNếu ai đó sửa image → chữ ký sẽ không khớp
✅ Tăng độ tin cậyDevOps team, QA, production có thể verify chính xác
✅ Bảo mật chuỗi cung ứngGiúp bảo vệ supply chain từ đầu đến cuối

🧰 Dùng công cụ gì để ký?

Phổ biến nhất hiện nay là:

Cosign (thuộc dự án Sigstore)

  • Ký image bằng:
    • Khóa riêng (private key)
    • Hoặc không cần khóa (OIDC: GitHub Actions, Google, etc.)
  • Dễ tích hợp vào CI/CD

📦 Ví dụ:

# Tạo khóa
cosign generate-key-pair

# Ký image sau khi build
cosign sign --key cosign.key myrepo/myapp:v1

# Kiểm tra chữ ký
cosign verify --key cosign.pub myrepo/myapp:v1

🚦 Tích hợp vào CI/CD như thế nào?

Trong pipeline, bạn thêm bước ký sau khi build:

🔧 Ví dụ (GitHub Actions):

- name: Đăng nhập Registry
  run: docker login ...

- name: Build image
  run: docker build -t myrepo/myapp:${{ github.sha }} .

- name: Ký image với Cosign
  run: cosign sign --key cosign.key myrepo/myapp:${{ github.sha }}

- name: Push image
  run: docker push myrepo/myapp:${{ github.sha }}

🧠 Tổng kết

Nội dungChi tiết
Khi nào ký?Sau khi build, trước khi push image
Dùng gì để ký?Cosign, Sigstore, Notary v2
Lợi íchBảo mật, xác thực, chống giả mạo
Tích hợp vào đâu?CI/CD pipeline (GitHub Actions, GitLab CI, Jenkins,...)
Cần học thêm gì?Cosign, SBOM, Supply Chain Security, SLSA framework

📚 Tài liệu tham khảo


Bảo mật không phải là phần cuối cùng – nó là phần giữa và xuyên suốt quá trình DevOps. Ký image là bước không thể thiếu để đảm bảo niềm tin trong CI/CD.