Ngày 28/10/2026, GitHub chính thức đưa workflow dependency lockfiles lên trạng thái generally available (GA) cho các gói Free, Team và Enterprise Cloud. File .github/workflows/actions.lock ghi lại chính xác commit nào của từng action — kể cả action phụ thuộc gián tiếp — được chạy trong pipeline của bạn, dù tag hay branch tham chiếu tới có bị di chuyển sau đó.

Đây là tính năng bảo mật chuỗi cung ứng đáng chú ý nhất của GitHub Actions trong năm nay. Nếu dự án của bạn chạy CI trên GitHub, từ nay bạn có cách khóa pipeline về đúng đoạn code đã duyệt, mà không phải hy sinh file workflow dễ đọc.

Vấn đề: tag và branch có thể “trôi”

Thông thường, workflow tham chiếu action bằng tag hoặc branch, ví dụ uses: actions/checkout@v4, và GitHub Actions phân giải thành commit mới nhất mà tag đó đang trỏ tới khi chạy. Tag có thể bị di chuyển: nếu tài khoản maintainer bị chiếm, kẻ tấn công trỏ lại tag sang commit độc hại, và pipeline của bạn sẽ chạy code đó. Vụ action tj-actions/changed-files bị xâm phạm hồi tháng 3/2025 là lời cảnh báo rõ ràng: hàng nghìn pipeline đã chạy mã độc trước khi bị phát hiện.

Lockfile hoạt động như thế nào

Lockfile là file .github/workflows/actions.lock trong repo, do extension gh actions-lock của GitHub CLI tạo ra, và GitHub khuyến cáo không sửa tay. Với mỗi action, lockfile ghi lại tag hoặc branch gốc (ref), commit chính xác sẽ chạy, cùng định danh số của repo nguồn. Khi chạy, GitHub dùng đúng commit đã ghi và kiểm tra commit đó vẫn truy cập được từ branch hoặc tag đã ghi. Lockfile bao quát cả action phụ thuộc gián tiếp, nhưng không khóa lời gọi reusable workflow — với reusable workflow, bạn vẫn phải tham chiếu bằng commit SHA đầy đủ.

Những điểm đáng chú ý khi áp dụng

GitHub thiết kế tính năng này để triển khai dần dần:

  • Áp dụng từng workflow: onboard từng workflow một; workflow đã onboard thì mọi dependency phải có trong lockfile.
  • Dependabot đồng bộ tự động: khi nâng cấp một action, Dependabot tạo lại đúng mục lockfile trong cùng pull request, không cần cấu hình thêm.
  • Chính sách Require lockfile: quản trị viên có thể bật chính sách bắt buộc dùng lockfile.
  • Không cần SHA pinning nữa: với repo đã dùng lockfile, không cần ghim SHA đầy đủ trong file workflow — lockfile bao quát cả dependency gián tiếp, giữ workflow dễ đọc và thỏa mãn luôn chính sách yêu cầu ghim SHA đầy đủ.

Điều này có ý nghĩa gì với bạn

Nếu bạn vận hành CI cho dự án Python — chạy pytest, lint bằng Ruff, build image rồi deploy — hãy thử lockfile trên một repo ngay trong tuần này: cài extension, tạo file, xem lại diff rồi commit. Xem lại diff trước khi khóa là bước quan trọng nhất, vì lockfile chỉ đảm bảo bạn chạy đúng commit đã duyệt, chứ không chứng minh commit đó an toàn.

Bài viết liên quan

Câu hỏi thường gặp

Lockfile có thay thế hoàn toàn SHA pinning không?

Với workflow đã onboard, có. Nhưng lockfile không khóa reusable workflow, nên bạn vẫn nên tham chiếu chúng bằng SHA đầy đủ.

Lockfile có làm pipeline an toàn tuyệt đối không?

Không. Lockfile chỉ ngăn thay đổi bất ngờ: code chạy là code bạn đã duyệt. Nó không phát hiện mã độc trong chính commit đã khóa.

Dùng lockfile có tốn công bảo trì không?

Không nhiều: Dependabot cập nhật mục lockfile trong cùng pull request khi nâng cấp action. Chỉ cần onboard từng workflow một.

💬 Tin này ảnh hưởng tới dự án của bạn thế nào? Chia sẻ góc nhìn của bạn trong phần bình luận — mình đọc hết và sẽ tổng hợp những ý hay nhất.

Nguồn tham khảo