앵커로 Docker 이미지를 보안 스캔하는 방법 PHPStan 1.0의 새로운 기능은 무엇입니까? Kubernetes 주석, 레이블 및 선택기를 사용하여 Notary v2에서 Docker 이미지 서명이 어떻게 발전할 것인지 Docker 컨테이너에 호스트 디렉토리를 마운트하는 방법 실행 중인 Docker 컨테이너에서 명령을 실행하는 방법 Deno란 무엇이며 Node.js와 어떻게 다릅니까?

0
239
자물쇠 기호를 가리키는 손가락을 보여주는 그래픽 사진
라이트 스튜디오/Shutterstock.com

Anchore Engine은 Docker 이미지의 보안을 평가하는 오픈 소스 스캐닝 도구입니다. Anchore 보고서는 오래된 패키지 버전과 종속성에 숨어 있는 취약점에 대한 통찰력을 제공합니다.

스캔하기 전에 Docker 이미지를 빌드하고 레지스트리에 푸시해야 합니다. Anchore는 가능한 구성 문제를 식별하기 위해 사용 가능한 경우 Dockerfile을 사용하지만 취약성 목록을 컴파일할 때 빌드된 이미지 스캔에 의존합니다.

앵커의 아키텍처

Anchor를 설정하려면 역사적으로 이미지 빌드 환경과 독립적으로 작동하는 Anchore Engine 전용 설치가 필요했습니다. 별도의 CLI를 사용하여 엔진과 상호 작용할 수 있습니다.

이 모델에서는 Anchore에 이미지를 등록하고 스캔을 시작하고 결과에 액세스하기 위해 일련의 CLI 명령을 사용해야 합니다. 단계는 레지스트리에서 이미지를 가져오고 보고서를 생성하고 사용할 수 있도록 하는 과정을 통해 Anchor를 진행합니다.

앵커는 이제 인라인 스캔도 제공합니다. 이것은 이미지를 스캔하고 터미널에서 결과를 얻는 단일 명령을 제공합니다. 이 문서에서는 이 기능에 중점을 둘 것입니다.

인라인 스크립트 실행

인라인 스캔은 Anchore 서버에서 호스팅되는 Bash 스크립트에 의해 제공됩니다. 스크립트를 컴퓨터에 다운로드하고 실행 가능하게 만드십시오.

curl -s https://ci-tools.anchore.io/inline_scan-latest -o anchore.sh
chmod +x anchore.sh

광고

이제 인라인 스크립트를 사용하여 컨테이너 이미지 스캔을 시작할 수 있습니다.

./anchore.sh -r alpine:latest

첫 번째 스캔은 시간이 걸릴 수 있습니다. 스크립트는 Anchore Engine Docker 이미지를 가져오고 새 Anchore 인스턴스를 시작하고 PostgreSQL 및 Docker 레지스트리 인스턴스를 구성합니다. 그런 다음 앵커 엔진이 시작될 때까지 기다립니다.

엔진이 실행되면 대상 Docker 이미지를 가져와 분석합니다. 그러면 터미널에 보안 보고서가 표시됩니다. 스크립트는 환경을 정리하고 Anchore Engine Docker 컨테이너를 중지하여 완료됩니다.

스캔 결과

스캔 결과에는 이미지에 대한 메타데이터와 발견된 문제 테이블이 포함됩니다. Anchore는 구성된 정책에 따라 이미지를 분석합니다. 기본 세트는 소프트웨어 패키지의 알려진 취약점과 이미지를 빌드하는 데 사용되는 Dockerfile의 잠재적인 문제를 찾습니다.

전체 스캔 결과는 Status 취약점 표 위의 줄. 당신이 볼 경우 pass, Anchore는 귀하의 이미지가 안전하고 프로덕션에 사용할 준비가 된 것에 만족합니다. NS fail 결함을 검토하고 가능한 경우 수정해야 함을 의미합니다.

광고

발견된 각 취약점에는 심각도 등급이 포함됩니다. LOW 에게 CRITICAL. CVE ID 관련 문제에는 MITRE 웹사이트에서 세부 정보를 볼 수 있는 링크가 포함됩니다.

보고서 파일 생성

기본 출력 테이블은 사람이 사용하기에 적합하지만 Anchore는 보관하거나 다른 도구에 제공할 수 있는 JSON 보고서 파일도 생성할 수 있습니다. 추가 -r 이 기능을 활성화하기 위해 스캔 스크립트를 실행할 때 플래그를 지정합니다.

앵커는 보고서를 작성합니다. anchore-reports 작업 디렉토리 내. 각 스캔은 취약점, OS 패키지 및 정책 요구 사항과 같은 보고서의 다른 섹션과 관련된 JSON 파일 세트를 생성합니다.

파일을 검사하면 터미널 출력이 제공하는 것보다 훨씬 더 많은 데이터를 제공하여 각 결과에 대한 자세한 정보를 얻을 수 있습니다. 이는 CVSS 점수, 정확한 패키지 버전 및 수정 사항이 생성될지 여부에 대한 공급업체의 표시로 확장됩니다.

저장된 이미지 아카이브 스캔

Anchore는 저장된 Docker 이미지 아카이브의 디렉토리와 레지스트리에 있는 실제 이미지를 스캔할 수 있습니다. 다음을 사용하여 Docker 이미지 세트 내보내기 docker save, 디렉토리에 배치한 다음 -v Anchore 스크립트가 해당 아카이브를 스캔하도록 하는 인수:

docker save my-image:latest -o docker-images/my-image
./anchore -v docker-images

이미지의 Dockerfile 제공

인라인 스크립트는 -d 로컬 Dockerfile에 대한 경로를 제공할 수 있는 인수. Anchore는 빌드된 이미지와 Dockerfile을 확인하여 이미지의 보안 상태에 영향을 줄 수 있는 빌드 시간 문제를 식별할 수 있습니다.

./anchore.sh my-image:latest -d /dockerfiles/my-image

사용자 지정 정책 사용

앵커는 사용자 지정 정책 집합을 사용하여 확장할 수 있습니다. 정책은 “게이트”, “트리거” 및 “액션”의 ​​조합으로 생성됩니다. 이를 통해 정확한 보안 요구 사항에 따라 컨테이너 이미지를 감사하는 규칙을 작성할 수 있습니다.

광고

각 정책의 게이트는 세 가지 작업 중 하나를 생성합니다. 스캔을 진행하도록 허용하는 “go”, 실행을 계속하지만 경고가 표시되는 “경고”, 이미지가 더 이상 처리되지 않아야 함을 나타내는 “중지”입니다.

정책은 규칙 집합을 적용되는 레지스트리 및 이미지에 매핑하는 “번들”로 패키지됩니다. 다음을 통해 스캔에 정책 번들을 추가할 수 있습니다. -b 스크립트를 실행할 때 플래그:

./anchore.sh -b policy-bundle.json

여기에는 사용자 지정 정책이 포함되어 이미지가 자체 보안 표준을 충족한다고 확신할 수 있습니다.

다음은 다음을 사용하여 앵커에 Dockerfile을 제공하지 않으면 경고를 내보내는 단순한 정책 번들이 있습니다.-d 위에서 설명한 플래그입니다. 이미지를 빌드하는 데 사용되는 Dockerfile을 제공하면 Anchore에 가능한 가장 넓은 범위를 제공하므로 아무 것도 제공되지 않을 때 경고하는 것이 합리적입니다.

{
    "action": "WARN",
    "comment": "No Dockerfile given!",
    "gate": "dockerfile",
    "params": [],
    "trigger": "no_dockerfile_provided"
}

이 정책은 다음에 적용됩니다. dockerfile 여기서 Anchore는 Dockerfile이 모범 사례 표준을 충족하는지 여부를 확인합니다. 앵커가 실행 no_dockerfile_provided 이미지의 Dockerfile이 없을 때 스캔이 시작될 때 트리거됩니다.

결론

Anchore를 사용하면 오래된 소프트웨어 패키지, 알려진 취약성, Dockerfile 구성 문제 및 기타 가능한 문제 소스를 검색하여 Docker 이미지에 대한 보안 보고서를 생성할 수 있습니다. 자신의 정책 세트를 작성하여 검사 대상을 사용자 정의하고 Anchore를 보안 표준에 맞출 수 있습니다.

광고

Anchore는 클라이언트-서버 아키텍처를 사용하지만 프로젝트의 “인라인” 스크립트는 설치 복잡성을 추상화하므로 로컬 이미지를 빠르게 스캔하고 터미널에서 바로 보고서를 얻을 수 있습니다. Anchore를 정기적으로 사용하거나 CI/CD 파이프라인에서 이미지를 스캔하는 경우에도 전용 Anchore Engine 인스턴스를 배포한 다음 CLI를 사용하여 보고서를 생성하는 것이 가장 좋습니다. 이를 위해서는 각 스캔에 대해 다단계 프로세스가 필요하지만 보고서 섹션에 액세스하고 취약성 데이터 피드를 동기화할 때 더 많은 유연성을 제공합니다.