Tin tức và phân tích của tất cả các thiết bị di động

Cách dễ nhất để tìm lỗ hổng trong Docker image với Snyk

Snyk là một trình soạn thảo chuyên phân tích các lỗ hổng trong mã của các tệp cấu hình cơ sở hạ tầng, bao gồm cả các tệp trong bộ chứa và gói ứng dụng.

Snyk cung cấp nền tảng đám mây trước, nhưng cung cấp các sản phẩm khác nhau.

Snyk OpenSource tích hợp thông qua giao diện dòng lệnh của trình soạn thảo với luồng Git. Sau khi khởi chạy, phần mềm sẽ phát hiện các lỗ hổng, phân loại chúng theo độ nhạy và tự động sửa các lỗi bảo mật đã biết. Tính năng này có thể được tích hợp vào chu kỳ yêu cầu kéo để áp dụng cho mã đang được gửi tới kho lưu trữ.

Đổi lại, Cơ sở hạ tầng Snyk dưới dạng mã phân tích các lỗ hổng và sửa chúng trong các tệp cấu hình Kubernetes JSON và YAML. Tại đây, công cụ quy tắc cho phép bạn định cấu hình độ nhạy của các phát hiện trong kho Git theo các tham số do quản trị viên đặt.

Snyk Container cho phép bạn kiểm tra hình ảnh bến tàu và các sổ đăng ký liên quan tại thời điểm và sau khi chúng được tạo. Chương trình có thể được tích hợp với các công cụ CLI, SCM, CI, cơ quan đăng ký bộ chứa và Kubernetes.

Hôm nay chúng ta sẽ xem cách chúng ta có thể sử dụng Snyk Container được tích hợp trong Docker để phát hiện lỗ hổng.

dockerfile mẫu

Điều đầu tiên bạn cần sử dụng Snyk để phát hiện lỗ hổng là hình ảnh docker. Đối với ví dụ này, chúng tôi sẽ sử dụng hình ảnh docker sau:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]

Điều đầu tiên chúng ta cần làm là tạo hình ảnh cục bộ bằng lệnh sau:

docker build -t 0xyz0/python-app.

Bây giờ chúng ta có một hình ảnh để phân tích.

Quét hình ảnh từ máy khách Docker

Việc tích hợp Snyk với Docker làm cho quy trình trở nên cực kỳ đơn giản. Để bắt đầu quét, chỉ cần làm theo các bước sau:

docker scan 0***0/python-app

Điều này sẽ bắt đầu với một phân tích trong đó nó sẽ trả về đầu ra rộng hơn hoặc ít hơn, tùy thuộc vào các lỗ hổng được tìm thấy và bản tóm tắt cuối cùng:

Quá trình quét Docker hiển thị tất cả các lỗ hổng trong hình ảnh

Như bạn có thể thấy, nó không chỉ cho bạn biết có bao nhiêu lỗ hổng mà nó tìm thấy. Ngay cả khi bạn cuộn lên, bạn có thể xem chúng là gì và mức độ quan trọng của chúng, nhưng nó cũng cung cấp các đề xuất cho hình ảnh cơ sở mà bạn nên sử dụng.

Bạn cũng có thể kiểm tra chi tiết về lỗ hổng trong Cơ sở dữ liệu về lỗ hổng Snyk.

Trong trường hợp của tôi, nó cung cấp cho tôi một số lựa chọn thay thế, vì vậy tôi sẽ sửa đổi Dockerfile của mình bằng tùy chọn đầu tiên:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

Nếu tôi xây dựng lại hình ảnh và quét nó:

docker build -t 0***0/python-app . && docker scan 0***0/python-app

Bạn sẽ thấy rằng kết quả hiện hiển thị ít lỗ hổng hơn và trong trường hợp này cho bạn biết rằng bạn hiện đang sử dụng một hình ảnh cơ sở an toàn hơn:

Quét Docker đảm bảo rằng bạn đang sử dụng hình ảnh cơ sở an toàn nhất

Bạn cũng có thể nhận báo cáo chi tiết hơn bằng cách thêm dockerfile tạo hình ảnh vào lệnh:

docker scan -f Dockerfile 0***0/python-app

Hoặc thậm chí loại trừ hình ảnh cơ sở khỏi phân tích, trong trường hợp bạn muốn tập trung vào những gì bạn đã làm sai:

docker scan -f Dockerfile --exclude-base 0***0/python-app

Dịch vụ này cũng có thể được tích hợp với kho Docker Hub:

Nhưng để làm được điều đó, bạn cần phải có một trong các gói đăng ký trả phí. Tuy nhiên, bạn có thể chạy nó cục bộ bằng gói miễn phí mà bạn nhận được khi đăng nhập vào Docker Hub (có giới hạn quét rõ ràng) trong khi bạn đang tạo hoặc muốn kiểm tra mức độ an toàn của hình ảnh bên thứ ba mà bạn muốn sử dụng.

Sử dụng Snyk với Github Actions

Điều đầu tiên cần làm là tạo một kho lưu trữ và tạo một thư mục trong đó.

.github / worflows /

Sau đó, sử dụng Snyk Container trong Github có nghĩa là tạo một hình ảnh mới hoặc lấy hình ảnh đó mà chúng tôi đã tạo trong Docker Hub. Để sử dụng Snyk, bạn cần tạo một bí mật mới có tên là SNYK_TOKEN và để nhận mã thông báo, bạn cần tạo một tài khoản với Snyk. Trong Cài đặt chung, nơi có Mã thông báo API, bạn có thể nhanh chóng tạo nó.

Với mã thông báo, bạn có thể tạo bí mật trên Github và sử dụng nó trong một Hành động. Bây giờ bạn cần truyền cho nó tên của kho lưu trữ đã được tạo trong Docker Hub. Sau đó, bạn phải vượt qua tin nhắn bạn muốn gửi. Bạn có thể truy cập đầu ra của các bước sẽ được sử dụng làm biến trong thông báo.

with:
args: 'A new commit has been pushed. Please verify github action:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '

Làm thế nào để chạy toàn bộ quy trình làm việc? Đơn giản bằng cách chỉ cần nhấn Master. Github Action sẽ phát hiện tệp trong .github/workflows/.

Lời cuối 👈

Với sự phổ biến ngày càng tăng của các vùng chứa, các sự cố vi phạm an ninh đang trở nên phổ biến hơn, hầu hết trong số đó là do lỗi cấu hình trong quá trình triển khai vùng chứa. Snyk cung cấp một công cụ hiệu quả và đơn giản có thể giúp chúng tôi tránh cấu hình sai và phát hiện các lỗ hổng phổ biến nhất trong hình ảnh docker.

Mục lục