Snyk를 사용하여 Docker 이미지의 취약점을 찾는 가장 쉬운 방법

Snyk는 컨테이너 및 애플리케이션 패키지에 있는 취약점을 포함하여 인프라 구성 파일 코드의 취약점 분석을 전문으로 하는 편집기입니다.

스닉 클라우드 플랫폼을 먼저 제공하지만 다양한 제품을 제공합니다.

Snyk OpenSource는 편집기의 CLI를 통해 Git 흐름에 통합됩니다. 소프트웨어가 실행되면 취약점을 감지하고 민감도에 따라 분류하고 알려진 보안 오류를 자동으로 수정합니다. 이 기능은 리포지토리로 전송된 코드에 적용하기 위해 풀 요청 주기에 통합될 수 있습니다.

반면 Snyk Infrastructure as Code는 취약점을 분석하여 JSON 및 YAML Kubernetes 구성 파일에서 수정합니다. 여기에서 규칙 엔진을 사용하면 관리자가 결정한 매개변수에 따라 Git 리포지토리 내 탐지 민감도를 구성할 수 있습니다.

Snyk Container를 사용하면 도커 이미지 및 관련 레지스트리를 생성할 때와 그 이후에 테스트할 수 있습니다. 프로그램은 CLI, SCM, CI 도구, 컨테이너 레지스트리 및 Kubernetes에 통합될 수 있습니다.

오늘은 Docker와 함께 기본 제공되는 Snyk Container를 사용하여 취약점을 탐지하는 방법을 살펴보겠습니다.

샘플 도커 파일

Snyk를 사용하여 취약점을 탐지하는 데 가장 먼저 필요한 것은 도커 이미지입니다. 이 예에서는 다음 도커 이미지를 사용합니다.

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

가장 먼저 해야 할 일은 다음 명령을 통해 로컬에서 이미지를 생성하는 것입니다.

docker build -t 0xyz0/python-app.

이제 분석할 이미지가 있습니다.

Docker 클라이언트에서 이미지 스캔

Snyk 서비스를 Docker와 통합하면 이 프로세스가 매우 간단해집니다. 스캔을 시작하려면 다음을 실행하기만 하면 됩니다.

docker scan 0***0/python-app

이것은 발견된 취약점에 따라 다소 광범위한 출력을 반환하는 분석과 최종 요약으로 시작됩니다.

Docker 스캔은 이미지의 모든 취약점을 보여줍니다.

보시다시피, 발견된 취약점의 수만 알려주는 것은 아닙니다. 스크롤을 위로 올려도 그 내용과 중요도를 볼 수 있지만 사용해야 할 기본 이미지에 대한 권장 사항도 제공합니다.

  Discord의 자동 게인 제어란?

또한 취약점에 대한 자세한 내용은 다음에서 확인할 수 있습니다. Snyk 취약점 데이터베이스.

제 경우에는 몇 가지 대안을 제공하므로 첫 번째 옵션으로 Dockerfile을 수정하겠습니다.

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

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

이미지를 다시 빌드하고 스캔하는 경우:

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

이제 출력에 더 적은 취약점이 표시되고 이 경우에는 현재 더 안전한 기본 이미지를 사용하고 있음을 알 수 있습니다.

Docker 스캔은 가장 안전한 기본 이미지를 사용하고 있는지 확인합니다.

이미지를 생성하는 도커 파일을 명령에 추가하면 더 자세한 보고서를 얻을 수도 있습니다.

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

그리고 당신이 무엇을 잘못했는지에 집중하고 싶은 경우를 대비하여 분석에서 기본 이미지를 제외할 수도 있습니다.

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

이 서비스는 Docker Hub 리포지토리와도 통합할 수 있습니다.

그러나 이를 위해서는 유료 구독 중 하나가 있어야 합니다. 그러나 Docker Hub에 로그인하기 위해 가지고 있는 무료 계획(명확한 검색 제한이 있음)으로 로컬에서 시작할 수 있습니다. 사용.

Github 작업과 함께 Snyk 사용

가장 먼저 할 일은 저장소를 만들고 내부에 폴더를 만드는 것입니다.

.github / worflows /

다음으로 Github에서 Snyk Container를 사용하려면 새 이미지를 만들거나 Docker Hub에서 만든 이미지를 가져옵니다. Snyk를 사용하려면 SNYK_TOKEN이라는 새로운 시크릿을 생성해야 하며, 토큰을 얻으려면 Snyk에 계정을 생성해야 합니다. API 토큰이라고 표시된 일반 설정에서 빠르게 생성할 수 있습니다.

토큰을 사용하여 Github에서 비밀을 생성하고 Action에서 사용할 수 있습니다. 이제 Docker Hub에서 생성된 저장소의 이름을 전달해야 합니다. 다음으로 보내야 할 메시지를 전달해야 합니다. 메시지에서 변수로 사용할 단계의 출력에 액세스할 수 있습니다.

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}} '

전체 워크플로를 실행하는 방법은 무엇입니까? Master를 누르기만 하면 됩니다. Github Action은 .github / workflows / 안에 있는 파일을 감지합니다.

  TikTok에서 번호를 변경하는 방법

마지막 말 👈

컨테이너의 인기가 높아짐에 따라 보안 침해 사고가 점점 더 흔해지고 있으며, 대부분은 컨테이너 배포의 잘못된 구성 오류로 인한 것입니다. Snyk는 잘못된 구성 오류를 방지하고 도커 이미지에서 가장 일반적인 취약점을 감지하는 데 도움이 되는 효율적이고 간단한 도구를 제공합니다.