Cách thức hoạt động của các liên kết và bí danh trong YAML CI/CD Pipelines
các neo YAML và bí danh là những công cụ mạnh mẽ để duy trì CI/CD pipeline Định nghĩa DRY (Don't Repeat Yourself - Không lặp lại chính mình). Các liên kết xác định các khối có thể tái sử dụng (&neo), và bí danh (*bí danhSao chép nội dung của chúng ở bất cứ nơi nào được tham chiếu. Điều này hoạt động trên các nền tảng phổ biến như GitHub Actions, GitLab CI và CircleCI.
Đây là một ví dụ đơn giản:
⚠️ Ví dụ không an toàn, không nên sử dụng trong môi trường sản xuất.
Mặc dù các mẫu YAML dạng neo như thế này giúp cải thiện khả năng bảo trì, chúng cũng có thể che giấu ngữ cảnh quan trọng. Trong CI/CDTrong trường hợp cấu hình được thể hiện bằng mã, các liên kết và bí danh YAML có thể âm thầm truyền bá các thiết lập mặc định không an toàn mà các nhà phát triển không nhận ra những gì đang được kế thừa.
Các rủi ro bảo mật tiềm ẩn trong cấu trúc YAML của Anchors
Vấn đề với họ là Vấn đề không nằm ở cú pháp, mà là cách chúng được sử dụng (hoặc sử dụng sai). Các thiết lập bảo mật như quyền hạn quá rộng, bỏ qua các bước xác thực hoặc mã bí mật được mã hóa cứng có thể được tích hợp vào một liên kết và được sử dụng lại ở mọi nơi.
Ví dụ:
Mỏ neo này (không an toàn) chứa một lỗ hổng bảo mật curl | bash Mẫu này được chèn vào nhiều công việc. Nếu ngay cả một công việc đáng lẽ phải có quy trình xác thực hoặc xử lý bí mật khác, thì giờ đây nó đã bị xâm phạm. YAML của Anchors cấu trúc Điều này dễ dẫn đến việc bỏ sót lỗi đó trong quá trình xem xét.
Làm thế nào lỗi cấu hình neo YAML dẫn đến rủi ro trong chuỗi cung ứng?
Một lỗi cấu hình duy nhất Neo YAML có thể lan truyền logic không an toàn trên nhiều hệ thống. pipelineKhi sử dụng bí danh mà không có tài liệu hoặc thông tin rõ ràng, rất dễ vô tình kế thừa các hành vi nguy hiểm.
Hãy xem xét tình huống này:
- A .ci-templates kho lưu trữ định nghĩa các điểm neo dùng chung cho xây dựng, triển khaivà thử nghiệm.
- Các dự án liên quan đến nhiều nhóm sử dụng <<: *giai đoạn xây dựng mà không cần xem xét nội dung của nó.
- Sau đó, ai đó đã sửa đổi liên kết để bỏ qua bước xác minh chữ ký cho các phần phụ thuộc.
Giờ đây, mọi thứ đều tiêu thụ pipeline kế thừa logic không an toàn này. Đây là một ví dụ điển hình. rủi ro chuỗi cung ứng phần mềm: Các mẫu không an toàn được sao chép một cách âm thầm thông qua Các neo và bí danh YAML.
Những loại lỗ hổng này không phải lúc nào cũng được phát hiện trong các quy trình xem xét mã nguồn truyền thống. Việc lạm dụng Anchors YAML ẩn sau việc sử dụng bí danh, khiến cho việc lạm dụng trở nên khó khăn hơn. CI/CD Logic không minh bạch.
Phát hiện và ngăn chặn việc sử dụng neo không an toàn
Để giảm thiểu rủi ro từ các liên kết YAML, hãy triển khai xác thực ở nhiều cấp độ:
- CI/CD xơ vảiHãy sử dụng các công cụ kiểm tra cú pháp YAML có khả năng mở rộng các liên kết và bí danh YAML trước khi phân tích. Ví dụ: actionlint Dành cho GitHub Actions hoặc các công cụ kiểm tra cú pháp tùy chỉnh cho GitLab.
- Công cụ quét cấu hìnhSử dụng các công cụ có khả năng phân tích và đánh giá logic YAML. để phát hiện các mô hình có rủi ro cao.
- Xem lại sự khác biệt sau khi mở rộngMột số nền tảng cho phép xem bản đã biên dịch. pipelineLuôn luôn xem xét tệp YAML đã được mở rộng, chứ không chỉ tệp nguồn.
- GuardrailsThiết lập các chính sách để chặn các cấu hình không an toàn như các lệnh shell không bị hạn chế hoặc các tập lệnh tải xuống chưa được xác thực.
Bảo mật Anchors YAML trong DevSecOps Pipelines
Các biện pháp tốt nhất để sử dụng an toàn các điểm neo và bí danh bao gồm:
- Giữ số lượng neo ở mức tối thiểu.Tránh dồn quá nhiều trách nhiệm vào một điểm neo duy nhất. Hãy chia nhỏ logic thành các điểm neo riêng biệt, được đặt tên rõ ràng.
- Sử dụng định nghĩa công việc rõ ràng. Trong đó, ranh giới bảo mật rất quan trọng, đặc biệt là giữa giai đoạn phát triển và sản xuất.
- Tránh tái sử dụng các liên kết neo trong nhiều môi trường khác nhau. trừ khi cần thiết. Xác định các điểm neo riêng biệt cho môi trường phát triển, thử nghiệm và sản xuất.
- Quét các mẫu và chuỗi thừa kế ở trung tâm CI/CD kho lưu trữ cấu hình.
Đừng bao giờ giấu bí mật. vào một cái neo. Luôn luôn thu hồi chúng một cách an toàn.
Kết luận
Các liên kết và bí danh YAML là những công cụ tăng năng suất mạnh mẽ, nhưng nếu quản lý kém, chúng sẽ trở thành rủi ro trực tiếp cho chuỗi cung ứng. Chúng có thể âm thầm lan truyền các thiết lập mặc định không an toàn, làm suy yếu khả năng cách ly giai đoạn và che khuất logic quan trọng trong hệ thống của bạn. CI/CD pipelines.
Bảo vệ pipelineđược xây dựng trên cấu trúc neo YAML, đảm bảo tính hiển thị, hạn chế việc tái sử dụng neo và xử lý CI/CD Các tệp cấu hình cần được xem xét kỹ lưỡng như mã ứng dụng. Việc sử dụng sai các liên kết không chỉ là vấn đề về hình thức; chúng còn là điểm yếu dễ bị tấn công. Công cụ như Xygeni có thể phát hiện các liên kết bị sử dụng sai, chặn các mẫu không an toàn và cung cấp cho các nhóm khả năng hiển thị đầy đủ về các liên kết kế thừa. CI/CD cần phải kiểm tra logic trước khi mã nguồn không an toàn được đưa vào sản xuất.





