다음을 통해 공유


IaC(Infrastructure as Code)용 DevSecOps

Microsoft Sentinel
Azure Monitor
GitHub

솔루션 아이디어

이 문서는 솔루션 아이디어 설명입니다. 클라우드 설계자는 이 지침을 사용하여 이 아키텍처의 일반적인 구현을 위한 주요 구성 요소를 시각화할 수 있습니다. 이 문서를 시작점으로 사용하여 워크로드의 특정 요구 사항에 맞는 잘 설계된 솔루션을 디자인할 수 있습니다.

이 솔루션 아이디어는 IaC(Infrastructure as Code)에 GitHub를 사용하는 DevSecOps 파이프라인을 보여 줍니다. 또한 운영 우수성, 보안 및 비용 최적화를 위해 워크플로를 관리하는 방법에 대해서도 설명합니다.

Terraform은 Hashicorp의 상표입니다. 이 상표의 사용은 어떠한 보증도 의미하지 않습니다.

아키텍처

IaC용 DevSecOps의 아키텍처를 보여 주는 다이어그램

이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

다음 데이터 흐름은 이전 다이어그램에 해당합니다.

  1. 개발자는 테스트 기반 개발을 사용하여 IaC 템플릿과 같은 인프라 정의에 대한 코드 변경 내용을 GitHub 리포지토리로 확인합니다. 단위 테스트, 통합 테스트 및 PaC(정책)를 동시에 개발하여 IaC의 품질을 테스트합니다.

  2. 끌어오기 요청은 GitHub Actions를 통해 자동화된 단위 테스트를 트리거합니다.

  3. 로컬로 생성된 인프라 상태 및 계획을 사용하여 IaC를 테스트하도록 GitHub Actions 워크플로 프로세스를 구성합니다.

  4. 코드 품질 및 보안 문제를 검사하도록 GitHub Actions를 구성합니다. 사용자 고유의 사용자 지정 빌드 GitHub CodeQL 쿼리 또는 기타 보안 도구를 사용하여 검색하여 IaC 템플릿을 분석하고 잠재적인 보안 취약성을 검색합니다. 취약성이 감지되면 GitHub는 조직 또는 리포지토리 소유자 및 관리자에게 경고를 보냅니다.

  5. IaC 도구는 크기, 인스턴스 수 및 기타 속성을 조정하여 각 환경에 대한 리소스를 프로비전하고 수정합니다. 프로비전된 리소스에서 IaC에 대해 자동화된 통합 테스트를 실행할 수 있습니다.

  6. 인프라에 대한 수동 업데이트가 필요한 경우 지정된 관리자는 수정을 수행하기 위해 액세스 권한을 상승합니다. 수정 후 관리자 권한 액세스가 제거됩니다. 또한 IaC 조정을 위해 GitHub 문제를 기록해야 합니다. 조정 단계 및 접근 방식은 특정 IaC 도구에 따라 달라집니다.

  7. SecOps는 지속적으로 모니터링하여 보안 위협 및 취약성으로부터 보호합니다. Azure Policy는 클라우드 거버넌스를 적용합니다.

  8. 시스템에서 변칙을 감지하면 해결을 위해 GitHub 문제를 자동으로 기록합니다.

구성 요소

  • GitHub는 버전 제어 및 협업을 위한 코드 호스팅 플랫폼입니다. 이 아키텍처에서는 IaC 템플릿을 저장하고 개발, 테스트 및 거버넌스 워크플로를 위한 중앙 리포지토리 역할을 합니다.

  • GitHub Actions는 워크플로가 GitHub 리포지토리에서 직접 코드를 빌드, 테스트 및 배포할 수 있도록 하는 CI/CD(연속 통합 및 지속적인 배포) 자동화 도구입니다. 이 아키텍처에서 GitHub Actions는 IaC 파이프라인에 대한 단위 테스트, 보안 검사 및 인프라 프로비저닝을 자동화합니다.

  • GitHub Advanced Security는 GitHub 에 저장된 코드에 대한 정적 분석 및 취약성 검색을 포함하는 보안 기능 모음입니다. 이 아키텍처에서는 템플릿을 검사하고 잘못된 구성 또는 위험에 대한 경고를 발생시켜 IaC 보안을 향상시킵니다.

  • CodeQL 은 사용자 지정 쿼리가 코드의 취약성 및 잘못된 구성을 검색할 수 있도록 하는 의미 체계 코드 분석 엔진입니다. 이 아키텍처에서 CodeQL은 배포 전에 리포지토리 아티팩트에서 잠재적인 보안 문제를 식별합니다.

    비고

    CodeQL은 Terraform과 같은 모든 IaC 파일의 검사를 기본적으로 지원하지 않습니다. 그러나 CodeQL IaC 추출기 커뮤니티 프로젝트 또는 Aqua Security의 Trivy와 같은 공급업체 제공 대안을 사용할 수 있습니다.

  • Terraform 은 클라우드 환경에서 선언적 프로비저닝을 가능하게 하는 HashiCorp에서 개발한 오픈 소스 인프라 자동화 도구입니다. 이 아키텍처에서 Terraform은 IaC 정의에 따라 Azure 리소스를 프로비전하고 수정하며 테스트 기반 개발 워크플로를 지원합니다.

  • 클라우드용 Microsoft Defender 는 하이브리드 클라우드 워크로드에서 위협 방지를 제공하는 보안 관리 플랫폼입니다. 이 아키텍처에서는 배포된 인프라에서 취약성을 지속적으로 모니터링합니다.

  • Microsoft Sentinel 은 AI 및 분석을 사용하여 위협을 감지하고 대응하는 SIEM(클라우드 네이티브 보안 정보 및 이벤트 관리) 및 SOAR(보안 오케스트레이션 자동화 응답) 솔루션입니다. 이 아키텍처에서 Microsoft Sentinel은 인프라 활동을 모니터링하고 변칙이 검색되면 경고 또는 GitHub 문제를 발생합니다.

  • Azure Policy는 Azure 리소스에 규칙 및 규정 준수를 적용하는 거버넌스 서비스입니다. 이 아키텍처에서 Azure Policy는 조직 및 워크로드 표준에 대해 IaC 배포의 유효성을 검사하고 비준수 구성을 차단합니다. 예를 들어 프로젝트에서 인식할 수 없는 SKU가 있는 가상 머신을 배포하려는 경우 Azure Policy는 사용자에게 경고하고 배포를 중지합니다.

  • Azure Monitor는 Azure 리소스에서 성능 메트릭 및 활동 로그를 수집하는 원격 분석 및 관찰성 플랫폼입니다. 이 아키텍처에서 Azure Monitor는 인프라의 불규칙한 조건을 감지하고 경고를 트리거하여 심사 및 수정을 시작할 수 있습니다.

시나리오 정보

IaC용 DevSecOps는 AKS(Azure Kubernetes Service)의 애플리케이션 코드에 대한 DevSecOps와 개념적으로 유사합니다. 그러나 IaC에 대한 지속적인 통합 및 지속적인 업데이트를 관리하고 자동화하려면 다른 파이프라인 및 도구 집합이 필요합니다.

IaC를 채택할 때 코드를 개발하면서 자동화 테스트를 만드는 것이 중요합니다. 이러한 테스트는 워크로드가 확장될 때 IaC 테스트의 복잡성을 줄입니다. Terraform 상태와 같은 로컬 인프라 구성 상태 및 테스트 기반 개발을 위한 계획을 사용할 수 있습니다. 이러한 구성 상태는 실제 배포를 에뮬레이트합니다. Azure Resource Graph REST API를 사용하여 실제 인프라 배포에서 IaC에 대한 통합 테스트를 실행할 수 있습니다.

PaC는 규정 및 기업 거버넌스를 준수하는 인프라를 제공하는 또 다른 중요한 방법입니다. PaC 워크플로를 파이프라인에 추가하여 클라우드 거버넌스를 자동화할 수 있습니다.

개발 단계 초기에 인프라를 보호하면 배포 후 공격 지점을 노출하는 잘못 구성된 인프라의 위험이 줄어듭니다. Snyk 또는 Aqua Security Trivy와 같은 정적 코드 분석 도구를 GitHub Advanced Security와 통합하여 인프라 코드의 보안 취약성을 검색할 수 있습니다. 이 프로세스는 정적 애플리케이션 보안 테스트와 유사합니다.

인프라를 배포하고 운영하는 경우 클라우드 구성 드리프트는 특히 프로덕션 환경에서 해결하기 어려울 수 있습니다.

프로덕션 환경을 위한 클라우드 인프라를 배포하거나 수정하기 위한 전용 서비스 주체를 설정합니다. 그런 다음, 환경의 수동 구성을 허용하는 다른 모든 액세스를 제거합니다. 수동 구성이 필요한 경우 지정된 관리자에 대한 액세스 권한을 상승한 다음 변경 후 상승된 액세스를 제거합니다. 개발자가 변경 내용을 조정할 수 있도록 GitHub 문제를 발생하도록 Azure Monitor를 구성해야 합니다. 가능한 경우 수동 구성을 사용하지 마세요.

보안 인시던트 방지를 위해 위협 및 취약성에 대한 클라우드 환경을 지속적으로 모니터링하는 것이 중요합니다. 위협 방지 및 SIEM 도구를 사용하여 비정상적인 트래픽을 검색할 수 있습니다. 이러한 도구는 보안 관리자에게 자동으로 경고하고 GitHub 문제를 발생합니다.

잠재적인 사용 사례

귀하는 가상의 회사 Contoso에 다중 클라우드 전략을 사용하는 IaC 개발자로 구성된 중앙 팀의 일원입니다. IaC용 DevSecOps를 사용하여 새 Azure 랜딩 존에 클라우드 인프라를 배포하여 배포의 보안 및 품질을 보장하려고 합니다. 또한 인프라에 대한 모든 수정 사항을 추적하고 감사하려고 합니다.

참가자

Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 이 문서를 작성했습니다.

주요 작성자:

LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.

다음 단계