Travis CI를 사용한 앵커 정책 시행

Travis CI 파이프라인: 앵커



Anchore Engine은 컨테이너 이미지의 검사, 분석 및 인증을 위한 중앙 집중식 서비스를 제공하는 오픈 소스 프로젝트입니다. Anchore 엔진은 독립 실행형 또는 Kubernetes, Docker Swarm, Rancher, Amazon ECS 및 기타 컨테이너 오케스트레이션 플랫폼과 같은 오케스트레이션 플랫폼 내에서 실행할 수 있는 Docker 컨테이너 이미지로 제공됩니다.

앵커 엔진은 여러 가지 방법으로 사용할 수 있습니다.
  • 독립형 또는 대화식.
  • 빌드 파이프라인에 보안/규정 준수/모범 사례 적용을 제공하기 위해 CI/CD와 통합된 서비스입니다.
  • RESTful API와의 통합을 통해 기존 컨테이너 모니터링 및 제어 프레임워크에 통합된 구성 요소로.
  • 정책 시행.

  • .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 , matrixjob 이름으로 지정되었습니다. 작업이 실행 중이고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 빌드에 적합합니다.

    좋은 웹페이지 즐겨찾기