Cách bảo mật quét hình ảnh Docker bằng Anchore

Tác giả sysadmin, T.Mười 14, 2022, 03:23:47 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách bảo mật quét hình ảnh Docker bằng Anchore


Anchore Engine là một công cụ quét mã nguồn mở đánh giá tính bảo mật của hình ảnh Docker của bạn. Báo cáo Anchore cung cấp cho bạn thông tin chi tiết về các phiên bản gói lỗi thời và các lỗ hổng tiềm ẩn trong các phần phụ thuộc.


Bạn sẽ cần phải xây dựng hình ảnh Docker của mình và đẩy nó vào sổ đăng ký trước khi bạn có thể quét nó. Anchore sử dụng Dockerfiles khi có sẵn để xác định các vấn đề cấu hình có thể xảy ra nhưng dựa vào việc quét các hình ảnh đã xây dựng khi biên dịch danh sách lỗ hổng bảo mật.

1. Kiến trúc của Anchore

Thiết lập Anchore trước đây yêu cầu một cài đặt chuyên dụng của Anchore Engine hoạt động độc lập với môi trường xây dựng hình ảnh của bạn. CLI riêng biệt cho phép bạn tương tác với Engine.

Mô hình này yêu cầu sử dụng chuỗi lệnh CLI để đăng ký hình ảnh với Anchore, bắt đầu quét và truy cập kết quả. Tiến trình các bước Cố định thông qua việc kéo hình ảnh của bạn từ sổ đăng ký của bạn, tạo một báo cáo và làm cho nó có sẵn để sử dụng.

Anchore hiện cũng cung cấp tính năng quét nội tuyến. Chúng cung cấp cho bạn một lệnh duy nhất để quét hình ảnh và nhận kết quả trong thiết bị đầu cuối của bạn. Chúng tôi sẽ tập trung vào khả năng này trong bài viết này.

2. Chạy Tập lệnh Nội tuyến

Quét nội tuyến được cung cấp bởi một tập lệnh Bash được lưu trữ trên máy chủ của Anchore. Tải tập lệnh xuống máy của bạn và làm cho nó có thể thực thi được:

Mã nguồn [Chọn]
curl -s https://ci-tools.anchore.io/inline_scan-latest -o anchore.sh
Mã nguồn [Chọn]
chmod +x anchore.sh

Bây giờ bạn có thể sử dụng tập lệnh nội tuyến để bắt đầu quét hình ảnh vùng chứa:

Mã nguồn [Chọn]
./anchore.sh -r alpine:latest
Lần quét đầu tiên có thể mất một lúc. Tập lệnh sẽ kéo hình ảnh Anchore Engine Docker, bắt đầu một phiên bản Anchore mới và định cấu hình PostgreSQL và một phiên bản đăng ký Docker. Sau đó, nó sẽ đợi Anchore Engine khởi động.


Khi động cơ hoạt động, hình ảnh Docker mục tiêu sẽ được kéo và phân tích. Sau đó, bạn sẽ thấy báo cáo bảo mật được hiển thị trong thiết bị đầu cuối của mình. Tập lệnh sẽ kết thúc bằng cách dọn dẹp môi trường và dừng vùng chứa Anchore Engine Docker.

3. Quét kết quả

Kết quả quét bao gồm siêu dữ liệu về hình ảnh, theo sau là bảng các vấn đề đã tìm thấy. Anchore phân tích hình ảnh dựa trên các chính sách đã định cấu hình của nó. Bộ mặc định tìm kiếm các lỗ hổng đã biết trong các gói phần mềm và các vấn đề tiềm ẩn với Dockerfile được sử dụng để xây dựng hình ảnh.


Kết quả quét tổng thể được hiển thị trong Statusdòng phía trên bảng lỗ hổng bảo mật. Nếu bạn thấy pass, Anchore hài lòng là hình ảnh của bạn đã được bảo mật và sẵn sàng để sử dụng trong quá trình sản xuất. A failcó nghĩa là bạn nên xem lại các lỗi và khắc phục chúng nếu có thể.

Mỗi lỗ hổng được tìm thấy bao gồm một đánh giá về mức độ nghiêm trọng của nó từ LOWđến CRITICAL. Các vấn đề với ID CVE bao gồm một liên kết để xem chi tiết trên trang web MITER.

4. Tạo tệp báo cáo

Mặc dù bảng đầu ra mặc định hoạt động tốt cho con người, Anchore cũng có thể tạo các tệp báo cáo JSON mà bạn có thể lưu trữ hoặc cung cấp vào các công cụ khác. Thêm -rcờ khi bạn chạy tập lệnh quét để bật tính năng này.


Anchore sẽ viết báo cáo vào anchore-reportstrong thư mục làm việc của bạn. Mỗi lần quét tạo ra một tập hợp các tệp JSON liên quan đến các phần khác nhau của báo cáo, chẳng hạn như lỗ hổng bảo mật, gói hệ điều hành và yêu cầu chính sách.

Việc kiểm tra các tệp cung cấp cho bạn thông tin chi tiết về từng phát hiện, cung cấp nhiều dữ liệu hơn so với kết quả đầu cuối cung cấp. Điều này mở rộng đến điểm số CVSS, phiên bản gói chính xác và chỉ báo của nhà cung cấp về việc liệu bản sửa lỗi có được tạo ra hay không.

5. Quét kho lưu trữ hình ảnh đã lưu

Anchore có thể quét các thư mục của kho lưu trữ hình ảnh Docker đã lưu cũng như hình ảnh thực tế nằm trong sổ đăng ký. Xuất một tập hợp các hình ảnh Docker bằng cách sử dụng docker save, đặt chúng vào một thư mục, sau đó sử dụng -vđối số để làm cho tập lệnh Anchore quét các kho lưu trữ đó:

Mã nguồn [Chọn]
docker save my-image:latest -o docker-images/my-image
Mã nguồn [Chọn]
./anchore -v docker-images
6. Cung cấp Dockerfile của Hình ảnh

Tập lệnh nội tuyến chấp nhận một -dđối số cho phép bạn cung cấp đường dẫn đến một Dockerfile cục bộ. Anchore sẽ kiểm tra hình ảnh đã xây dựng và Dockerfile, cho phép xác định các vấn đề về thời gian xây dựng có thể ảnh hưởng đến tình trạng bảo mật của hình ảnh.

Mã nguồn [Chọn]
./anchore.sh my-image:latest -d /dockerfiles/my-image
7. Sử dụng chính sách tùy chỉnh

Anchore có thể mở rộng thông qua việc sử dụng các bộ chính sách tùy chỉnh. Các chính sách được tạo ra từ sự kết hợp của "cổng", "trình kích hoạt" và "hành động". Những điều này cho phép bạn xây dựng các quy tắc kiểm tra hình ảnh vùng chứa theo các yêu cầu bảo mật chính xác của bạn.

Mỗi cổng của chính sách tạo ra một trong ba hành động: "đi", thẻ cho phép quá trình quét tiếp tục, "cảnh báo", cho phép quá trình chạy tiếp tục nhưng kèm theo cảnh báo và "dừng lại" cho biết hình ảnh không được xử lý thêm.

Các chính sách được đóng gói dưới dạng "gói" ánh xạ các bộ quy tắc cho các cơ quan đăng ký và hình ảnh mà chúng áp dụng. Bạn có thể thêm một gói chính sách vào quá trình quét của mình bằng cách chuyển -bcờ khi chạy tập lệnh:

Mã nguồn [Chọn]
./anchore.sh -b policy-bundle.json
Điều này sẽ bao gồm các chính sách tùy chỉnh của bạn, giúp bạn tự tin rằng hình ảnh đáp ứng các tiêu chuẩn bảo mật của riêng bạn.

Đây là một gói chính sách đơn giản sẽ đưa ra cảnh báo nếu bạn không cung cấp Dockerfile cho Anchore bằng cách sử dụng -dcờ được mô tả ở trên. Việc cung cấp Dockerfile được sử dụng để xây dựng hình ảnh mang lại cho Anchore phạm vi bao phủ rộng nhất có thể, do đó bạn nên cảnh báo khi không có dữ liệu nào được đưa ra.

Mã nguồn [Chọn]
{
    "action": "WARN",
    "comment": "No Dockerfile given!",
    "gate": "dockerfile",
    "params": [],
    "trigger": "no_dockerfile_provided"
}

Chính sách này áp dụng cho dockerfilecổng nơi Anchore kiểm tra xem Dockerfile của bạn có đáp ứng tiêu chuẩn thực tiễn tốt nhất hay không. Anchore thực thi trình no_dockerfile_providedkích hoạt khi quá trình quét được bắt đầu trong trường hợp không có tệp Docker của hình ảnh.

Anchore cho phép bạn tạo báo cáo bảo mật cho hình ảnh Docker bằng cách quét các gói phần mềm lỗi thời, các lỗ hổng đã biết, sự cố cấu hình Dockerfile và các nguồn sự cố có thể xảy ra khác. Bạn có thể viết các bộ chính sách của riêng mình để tùy chỉnh những gì được kiểm tra và điều chỉnh Anchore với các tiêu chuẩn bảo mật của bạn.

Mặc dù Anchore sử dụng kiến trúc máy khách-máy chủ, tập lệnh "nội tuyến" của dự án sẽ loại bỏ sự phức tạp của cài đặt để bạn có thể nhanh chóng quét các hình ảnh cục bộ và nhận báo cáo ngay trong thiết bị đầu cuối của mình. Nếu bạn đang sử dụng Anchore thường xuyên hoặc quét hình ảnh trong đường ống CI / CD của mình, tốt nhất vẫn là triển khai phiên bản Anchore Engine chuyên dụng, sau đó sử dụng CLI để tạo báo cáo. Điều này đòi hỏi một quy trình nhiều giai đoạn cho mỗi lần quét nhưng cũng giúp bạn linh hoạt hơn khi truy cập các phần báo cáo và đồng bộ hóa nguồn cấp dữ liệu về lỗ hổng bảo mật.