보안 앱 배치를 위한 DevSecOps 인프라 및 CI 도구 체인 설정
Terraform 기반 빠른 시작 템플리트를 사용하여 CI 및 CD 도구 체인에 대한 인프라를 자동으로 설정하고 프로비저닝하려면 이 학습서를 사용하십시오. 이 템플리트는 규제 준수 및 보안의 DevSecOps 우수 사례를 사용합니다. 템플리트에서는 Kubernetes 또는 Red Hat® OpenShift®에 안전하게 앱을 배치하는 데 필요한 인프라를 자동으로 작성하는 IBM Cloud® Schematics 작업공간을 사용합니다. 템플리트에서는 DevSecOps IBM Cloud® Continuous Delivery 도구 체인 파이프라인 구조를 사용합니다. 도구 체인은 자원 명세 통합, 변경 관리, 증거 수집 및 배치를 통해 Continuous Delivery을 위해 사전 구성됩니다.
IBM Cloud Schematics는 상위 레벨 스크립팅 언어를 사용하여 IBM Cloud 환경에서 원하는 리소스를 모델링하고 IaC(Infrastructure as Code)를 사용으로 설정할 수 있도록 TaaS(Terraform as a Service)를 제공합니다. Terraform은 HashiCorp 에서 개발한 오픈 소스 소프트웨어입니다. Terraform을 사용하면 예측 가능하고 일관된 리소스 프로비저닝을 통해 복잡한 다중 계층 클라우드 환경을 신속하게 구축할 수 있습니다.
이 튜토리얼에서는 세 가지 단계를 수행하여 Schematics 작업공간을 작성하고, Terraform 실행 플랜을 적용하고, 환경 특성 값을 업데이트합니다. 플랜을 적용할 때 Schematics 작업공간에서 보안 인프라를 설정합니다. 이 인프라는 팀과 공유할 수 있으며, 다음과 같은 용도로 사용할 수 있습니다 DevSecOps보안 사례를 소프트웨어 개발 및 오퍼레이션 라이프사이클과 통합하는 방법입니다. 통합의 목표는 개발 속도와 보안의 균형을 우선시하는 것입니다. CI 및 CD 툴체인 템플릿에서 작동합니다.
자동화된 인프라 설정은 DevSecOps CI 및 CD 템플리트의 기본값을 사용하여 자동으로 프로비저닝되는 리소스를 작성합니다. Schematics 작업공간의 변수 섹션에서 기본값을 찾을 수 있습니다. 다음과 같은 리소스가 작성됩니다.
- IBM Cloud® Kubernetes Service 또는 Red Hat OpenShift on IBM Cloud의 클러스터.
- 표준 IBM Cloud Object Storage 인스턴스 및 버킷.
- IBM Cloud® Secrets Manager. 하나의 Secrets Manager 인스턴스만 허용됩니다. 이미 Secrets Manager 서비스가 있는 경우,
sm_service_name2단계에서 기본값을 대체하십시오. - GPG 이미지 서명 키.
- 규제 준수 및 보안의 DevSecOps 우수 사례를 사용하여 샘플 Node.js 애플리케이션을 빌드, 테스트 및 배치하는 완전한 기능의 DevSecOps CI 도구 체인입니다.
시작하기 전에
- 이 튜토리얼을 완료하려면 소유자이거나 전체 관리자 액세스 권한이 있는 종량제 또는 정기결제 IBM Cloud 계정을 사용하세요. 이미 IBM Cloud 계정이 있고 계정을 업그레이드해야 하는 경우 계정 업그레이드를 참조하십시오.
- 도구 체인 또는 인프라의 요소가 작성된 후 이와 상호작용하려면 IBM Cloud CLI를 설치하십시오.
- GitLab 개인 액세스 토큰을 받습니다. 개인 액세스 토큰의 이름을 입력하십시오. CI 도구 체인과 동일한 지역에 토큰을 작성하십시오. 토큰은 나중에 필요하며 다시 액세스할 수 없으므로 복사하여 저장해야 합니다.
- IBM Cloud API 키를 생성합니다. API 키 값은 나중에 필요하며 다시 액세스할 수 없으므로 복사하여 저장하거나 다운로드해야 합니다.
Schematics 작업공간 작성
Terraform 실행 플랜 적용
-
Schematics 설정 페이지의 변수 섹션에 각 변수의 값을 입력하십시오. 필수 필드에는 기본값이 없습니다. 기본값을 대체할 수 있습니다.
sm_service_name값을 재정의하면 Terraform 실행 계획은 새 리소스를 생성하는 대신 기존 리소스를 사용합니다. -
gitlab_token변수에는 이전에 확보한 개인 액세스 토큰을 입력하십시오. -
ibmcloud_api_key변수의 경우, 이전에 확보한 IBM Cloud API 키를 입력하십시오. -
registry_namespace변수에 컨테이너 레지스트리 네임스페이스 값을 입력하십시오. 네임스페이스를 만들려면 Container Registry 네임스페이스를 참조하세요. -
kube_version변수의 경우 명령줄에서ibmcloud ks versions을 실행하여 사용 가능한 버전을 확인합니다. -
선택사항입니다. Secrets Manager 인스턴스가 이미 있는 경우
sm_service_name변수의 이름을 입력하십시오. 그 외의 경우, 이 변수를 변경하지 마십시오. -
선택사항입니다. 클러스터의 크기나 위치를 조정하려면 다음 변수를 재정의할 수 있습니다:
datacenter,default_pool_size,machine_type,hardware,public_vlan_num, 또는private_vlan_num(기본값은 dal12/us-south 데이터센터에 대한 값입니다). -
선택사항입니다. 플랜 생성을 클릭하십시오. 이 조치는 Terraform 실행 플랜을 작성하고 구성에 구문 오류가 있는지 검사합니다. Schematics 작업 페이지에서, Terraform 템플리트의 올바른 상태를 달성하기 위해 작성, 수정 또는 삭제해야 하는 오류 및 IBM Cloud 리소스에 대한 로그 파일을 검토할 수 있습니다.
-
변수에 대한 모든 값을 입력하고 변경사항에 만족하면 플랜 적용을 클릭하여 인프라 코드를 실행하십시오.
이 단계는 Kubernetes 또는 OpenShift 클러스터를 새로 작성해야 하므로 완료하는 데 다소 시간이 걸립니다 (일반적으로 20-30분이지만 더 오래 걸릴 수 있음).
-
Schematics 작업 페이지에서 작업 이름을 펼쳐 로그를 볼 수 있습니다.
-
플랜이 적용된 후 생성된 IBM Cloud DevSecOps CI 도구 체인에 대한 URL을 확인하십시오. 이 URL은
View the toolchain at:으로 시작하는 행의 로그 파일 끝 근처에 있습니다.
플랜을 두 번 적용하면 이전에 작성된 Kubernetes 또는 OpenShift 클러스터와 여기에 배치된 애플리케이션이 삭제되고 새 클러스터가 작성됩니다. 그러나 기본 클러스터 이름을 재정의하면 해당 클러스터가 사용됩니다.
앱 배치
파이프라인을 실행하려면 다음 단계를 따르세요.
- 새로 생성한 DevSecOps CI 툴체인으로 이동합니다.
- 타일을 클릭합니다 Git
compliance-app로 시작하는 타일을 클릭합니다. - PR 파이프라인을 트리거하려면
README.md파일에서 일부 텍스트를 업데이트한 다음main브랜치에 대해 PR을 시작합니다. - 대상 브랜치 필드에서 브랜치 이름을
main에서 다른 이름으로 변경합니다. 예:mybranch. - '이러한 변경 사항으로 새 병합 요청 시작' 확인란이 선택되어 있는지 확인합니다.
- 변경 사항 커밋을 클릭합니다.
- 선택사항입니다. 새 병합 요청 페이지에서 설명을 추가합니다.
- 병합 요청 생성을 클릭합니다.
CI 툴체인의 홍보 파이프라인이 트리거됩니다. 다음 단계를 완료하여 파이프라인이 실행 중인지 확인합니다:
-
CI 툴체인으로 돌아와서 타일을 클릭합니다 Delivery Pipeline
pr-pipeline타일을 클릭합니다. 홍보 파이프라인 대시보드 페이지에서 실행 중인 홍보 파이프라인을 확인할 수 있습니다. -
진행 상황을 보려면
pr-pipeline링크를 클릭하세요.
그림 1. 홍보-파이프라인 대시보드
참고:
-
취약점이 발견되면 코드 홍보 완료 단계가 실패합니다.
-
취약점을 찾으려면
code-unit-tests>run-stage로 이동하여 로그를 확인하세요. (스크린샷) -
취약점을 해결하면 홍보 파이프라인이 트리거됩니다.
-
앱 리포지토리 타일로 돌아갑니다.
-
탐색 창에서 요청 병합을 클릭합니다.
-
PR을 선택합니다.
-
선택사항입니다. 승인 버튼을 클릭합니다(그렇지 않은 경우 CI 파이프라인 실행이 끝날 때 오류가 표시됩니다).
-
"소스 브랜치 삭제"를 선택합니다
-
병합을 클릭합니다.
이 PR을 병합하면 자동으로 CI 파이프라인이 트리거됩니다. 확인하려면 툴체인의 CI 파이프라인 타일로 돌아가 파이프라인이 실행 중인지 확인합니다. 진행 상황을 보려면 파이프라인 링크를 클릭하세요.
이 단계에서는 새로 생성된 클러스터에 앱을 배포합니다. URL 애플리케이션은 CI 파이프라인의 deploy-dev > run-stage 단계의 로그 파일 하단에서 찾을 수 있습니다.
다음 단계
다음 튜토리얼의 "CI 도구 체인 탐색" 섹션을 계속 진행하고 CI-PR 및 CI 파이프라인을 실행하십시오. 그런 다음, 해당 튜토리얼의 나머지 단계를 계속하여 보안 앱을 배치하십시오.
언제든지 메뉴 아이콘 을 클릭하고 리소스 목록을 선택하여 이 튜토리얼로 작성된 모든 리소스를 볼 수 있습니다. Schematics 작업공간, 클러스터, IBM Cloud Object Storage 인스턴스, Secrets Manager 서비스, 지속적 딜리버리 서비스 및
도구 체인을 볼 수 있습니다.