Pixi-CRS가 클라우드로 이동 - 3부: Microsoft Azure DevOps
이것은 "Pixi-CRS가 클라우드로 이동"시리즈의 세 번째 블로그 게시물입니다.
Pixi-CRS가 Microsoft Azure DevOps 파이프라인에서 보이는 방식은 다음과 같습니다.
위 이미지에서 Azure DevOps의 Pixi-CRS CI 파이프라인이 Azure DevOps > Pixi-CRS > 파이프라인으로 구성되어 있음을 알 수 있습니다.
Pixi-CRS 파이프라인 코드
파이프라인 뒤의 코드를 찾을 수 있습니다here.
Azure DevOps 파이프라인 코드는 리포지토리의 루트 디렉터리에 있는 azure-pipeline.yml 파일에 작성됩니다. Azure DevOps에서 새 파이프라인 프로젝트를 만드는 것은 매우 쉽습니다.
이 azure-pipelines.yml 파일을 자세히 살펴보겠습니다.
아래에서 다른 단계를 설명하겠습니다. 그러나 제공된 yaml 파일의 주석에서도 설명을 제공합니다.
# Azure DevOps azure-pipelines.yml
trigger:
# Branch to trigger
- master
stages:
# Start the OWASP ModSecurity Core Rule Set and Pixi with its DB with docker-compose
# OWASP ModSecurity Core Rule Set Container (Apache Reverse Proxy)
# owasp/modsecurity-crs
# See https://coreruleset.org/
# ModSecurity Tuning:
# See https://www.netnea.com/cms/apache-tutorial-8_handling-false-positives-modsecurity-core-rule-set/
- stage: StartContainersAndTests
jobs:
- job: BuildJob
steps:
# Debugging
# - script: pwd
# - script: ls
- task: DockerCompose@0
displayName: Start Pixi and CRS
inputs:
containerregistrytype: 'Container Registry'
dockerComposeFile: '**/docker-compose.yaml'
action: 'Run a Docker Compose command'
dockerComposeFileArgs: |
CRSPORTHTTP=8080
PROXYLOCATION=http://app:8000/
dockerComposeCommand: 'up -d'
# Application Tests with Testcafe
# skip-js-errors because of: Uncaught Error: Bootstrap tooltips require Tether
# Another way: https://devexpress.github.io/testcafe/documentation/continuous-integration/azure-devops.html
# Debugging
#- script: docker ps
- script: docker run --volume /home/vsts/work/1/s/testcafe/tests_container_ip/:/tests testcafe/testcafe --skip-js-errors 'chromium:headless --no-sandbox'
displayName: Run Testcafe Tests without and with CRS
# Show Full error.log
- script: docker exec crs cat /var/log/apache2/error.log
displayName: Show ModSecurity logs
# ModSecurity Log Analysis:
# Fail if ModSecurity log is not empty
# Show ModSecurity logs of Testcafe Tests
# If not empty -> Repair your application OR
# -> ModSecurity Tuning:
# See https://www.netnea.com/cms/apache-tutorial-8_handling-false-positives-modsecurity-core-rule-set/ OR
# -> GitHub issue: https://github.com/SpiderLabs/owasp-modsecurity-crs
- script: if docker exec crs cat /var/log/apache2/error.log | grep ModSecurity | grep -vi MyEvilWAFTest | grep -v 949110 | grep -v 980130 | grep msg; then echo "False Positive Found! Aborting!" && exit 1 ; else echo "ModSecurity Logs empty. This is good!"; fi
displayName: Fail if ModSecurity logs are not empty
# Fail if ModSecurity log does not contain WAF Test String "MyEvilWAFTest"
# That means CRS is not working properly or test was aborted.
- script: if docker exec crs cat /var/log/apache2/error.log | grep ModSecurity | grep MyEvilWAFTest; then echo "WAF Test String Found. This is good!"; else echo "WAF Test String not Found! Aborting!" && exit 1; fi
displayName: Fail if WAF Test String is missing in ModSecurity logs
파이프라인 단계
Pixi 및 CRS 시작
하나의 docker-compose up 명령으로 Pixi와 CRS를 시작합니다. Docker 또는 docker-compose를 설치할 필요가 없으며 이미 제공됩니다. 그러나 예를 들어 dockerComposeFileArgs와 같은 몇 가지 항목을 구성해야 합니다.
그런 다음 dockerComposeCommand "up -d"로 Pixi와 CRS를 시작합니다.
테스트카페 테스트
이제 CRS와 Pixi가 실행 중이므로 Testcafe 테스트를 수행합니다. 이번에는 testcafe/testcafe Docker 컨테이너로 테스트를 실행할 수 있습니다. 테스트는 이 컨테이너에 쉽게 탑재할 수 있습니다.
다시 말하지만 먼저 Pixi를 직접 테스트한 다음 CRS를 통해 Pixi를 테스트합니다. 또한 악성 문자열로 CRS 자체를 테스트합니다. 우리는 WAF가 이를 차단하는지 확인하고 싶습니다.
테스트의 경우 Testcafe Docker 컨테이너 내부에서 호출하기 때문에 http://172.17.0.1:8000을 통해 Pixi를 호출하고 http://172.17.0.1:8080을 통해 CRS를 호출합니다.
Testcafe 테스트 결과는 다음과 같습니다.
결과 확인
결국 결과를 확인합니다. CRS Docker 컨테이너 내부의 ModSecurity 로그를 살펴봅니다.
이는 합법적인 테스트에서 오탐지가 발생하지 않았음을 확인하는 중요한 단계입니다. 또한 악의적인 테스트가 기록되었는지 확인합니다.
방아쇠
Pixi-CRS는 CI 파이프라인이고 리포지토리에 푸시할 때마다 Azure DevOps 파이프라인 프로젝트를 실행하려고 하므로 푸시 이벤트에 대한 트리거를 구성해야 합니다.
azure-pipeline.yml 파일의 "trigger: -master"항목을 통해 이를 추가했습니다.
언급할 사항
Pixi-CRS는 CI 파이프라인이고 CD 부분은 제가 설정하지 않았습니다.
이번 블로그 포스트에서는 CI 부분만 보여드리고자 했습니다. 또한 훨씬 더 많은 Azure DevOps 옵션을 사용할 수 있다는 것도 알고 있습니다. 하지만 이 블로그 게시물에서는 간단하게 유지하고 Pixi-CRS CI 부분에 집중하고 싶었습니다.
다음 블로그 게시물
다음 블로그 게시물에서는 Google Cloud Platform에서 Pixi-CRS 파이프라인에 대해 알아봅니다.
Reference
이 문제에 관하여(Pixi-CRS가 클라우드로 이동 - 3부: Microsoft Azure DevOps), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/devslop/pixi-crs-goes-to-the-cloud-part-3-microsoft-azure-devops-gni텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)