Travis CI를 사용한 앵커 정책 시행
Travis CI 파이프라인: 앵커
Anchore Engine은 컨테이너 이미지의 검사, 분석 및 인증을 위한 중앙 집중식 서비스를 제공하는 오픈 소스 프로젝트입니다. Anchore 엔진은 독립 실행형 또는 Kubernetes, Docker Swarm, Rancher, Amazon ECS 및 기타 컨테이너 오케스트레이션 플랫폼과 같은 오케스트레이션 플랫폼 내에서 실행할 수 있는 Docker 컨테이너 이미지로 제공됩니다.
앵커 엔진은 여러 가지 방법으로 사용할 수 있습니다.
.travis.yml 파일을 통해 프로젝트에 Anchore를 구현하여 컨테이너 확인
먼저
.travis.yml
파일을 살펴보겠습니다.---
sudo: required
dist: bionic
notifications:
slack:
on_failure: always
matrix:
fast_finish: true
include:
# https://github.com/anchore/anchore-engine
# https://docs.anchore.com/current/docs/engine/quickstart/
- name: "Scan images w Anchore Engine w docker-compose wo snaps on bionic amd64"
dist: bionic
arch: amd64
services:
- docker
language: python
위에서 볼 수 있듯이
dist
, sudo
, matrix
가 job
이름으로 지정되었습니다. 작업이 실행 중이고bionic
아키텍처는 amd64
이며 물론 Anchore는 docker-compose
를 통해 Docker 컨테이너를 검사할 것입니다. 이런 일이 발생하는 방식은 Anchore를 가져오고 docker-compose ps
가 실행되는 것입니다. , 컨테이너의 상태를 표시합니다. .travis.yml
파일을 마무리합시다. Travis가 제공하는 before_install
후크부터 시작하겠습니다. before_install:
- pip3 install virtualenv
- virtualenv -p $(which python3) ~venvpy3
- source ~venvpy3/bin/activate
- pip install -r requirements.txt
script:
# Download the docker-compose.yaml file and start
- curl https://docs.anchore.com/current/docs/engine/quickstart/docker-compose.yaml > docker-compose.yaml
- docker-compose up -d
# Verify service availability
- docker-compose ps
after_success:
- deactivate
script
를 사용하여 Anchore를 가져온 다음 cURL
파일을 복사하는 docker-compose.yaml
후크를 볼 수 있습니다. 그런 다음 docker-compose up -d
를 실행하여 컨테이너가 작동하는지 확인합니다. 이제 서비스를 확인하고 싶을 것입니다. .travis.yml
파일이 실행됩니다 docker-compose ps
. 물론 완료되면 자동으로 비활성화됩니다. 이것은 간단한.travis.yml
파일의 앵커입니다. 다음과 같이 빌드가 끝날 때 결과가 포함된 Anchore 테이블이 표시되어야 합니다.추가 설정
Travis는 기본적으로
docker
명령 실행을 허용하므로 기존 이미지 빌드 파이프라인에 inline_scan
스크립트를 추가하는 것처럼 간단하게 Anchore 엔진을 통합할 수 있습니다.services:
- docker
env:
- IMAGE_NAME="btodhunter/anchore-ci-demo" IMAGE_TAG="travisci"
script:
- docker build -t "${IMAGE_NAME}:ci" .
- curl -s https://ci-tools.anchore.io/inline_scan-v0.6.0 | bash -s -- "${IMAGE_NAME}:ci"
- echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin
- docker tag "${IMAGE_NAME}:ci" "${IMAGE_NAME}:${IMAGE_TAG}"
- docker push "${IMAGE_NAME}:${IMAGE_TAG}"
또는 다음과 같이 앵커를 가져오도록 설정
cURL
할 수 있습니다.- curl https://docs.anchore.com/current/docs/engine/quickstart/docker-compose.yaml > docker-compose.yaml
앵커 정책 시행
Travis와 Anchore를 사용하면 Anchore Policy Enforcement를 설정하는 것이 상당히 쉽습니다. 하나의 명령으로 정책 시행을 설정할 수 있습니다.
curl -s https://ci-tools.anchore.io/inline_scan-v0.6.0 | bash -s -- [options] IMAGE_NAME(s)
Anchore가 제공하는 스캔 옵션은 다음과 같습니다.
-b [optional] Path to local Anchore policy bundle.
-d [optional] Path to local Dockerfile.
-v [optional] Path to directory to be mounted as docker volume. All image archives in directory will be scanned.
-f [optional] Exit script upon failed Anchore policy evaluation.
-p [optional] Pull remote docker images.
-r [optional] Generate analysis reports in your current working directory.
-t [optional] Specify timeout for image scanning in seconds (defaults to 300s).
위에서 읽은 내용은 당신에게 좋은 징조입니다. Anchore를 사용하면 기본적으로 로컬 이미지를 레지스트리에 푸시하기 전에 스캔할 수 있으므로 필요에 따라 스캔을 현재 워크플로우에 직접 주입하고 Anchore 정책을 시행할 수 있습니다. 정책이 확인되는 것을 볼 수 있습니다. 다음을 찾으십시오.
위를 보면 시행 중인 정책, 검사 중인 정책 등을 볼 수 있습니다. 보다 상세하고 사용자 정의된 옵션에 대해 이전에 배치된
scan options
를 살펴보는 것이 좋습니다.컨테이너에 보안 스캐너를 사용하는 이유는 무엇입니까?
지속적 통합 중에 특히 컨테이너 이미지를 스캔하는 동안 이미지 스캐너를 실행하는 것은 Travis를 사용하여 지속적 통합(CI) 중에 비동기적으로 실행될 수 있는 번거로운 프로세스일 수 있습니다. CI에 보안 스캔을 포함하면 개발자가 새 소프트웨어 버전이 출시되기 전에 취약성을 신속하게 식별할 수 있습니다.
정책 집행이 중요한 이유다. Anchore는 Travis CI 빌드에 적합합니다.
Reference
이 문제에 관하여(Travis CI를 사용한 앵커 정책 시행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/travisci/anchore-policy-enforcement-with-travis-ci-24ic텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)