보안 제어 v3: DevOps 보안

DevOps 보안은 DevOps 프로세스 전반에 걸쳐 보안을 보장하기 위해 배포 단계 이전에 중요한 보안 검사(예: 정적 애플리케이션 보안 테스트, 취약성 관리) 배포를 포함하여 DevOps 프로세스의 보안 엔지니어링 및 운영과 관련된 컨트롤을 다룹니다. 여기에는 위협 모델링 및 소프트웨어 공급 보안과 같은 일반적인 항목도 포함됩니다.

DS-1: 위협 모델링 수행

CIS Controls v8 ID NIST SP 800-53 r4 ID PCI-DSS ID v3.2.1
16.10, 16.14 SA-15 6.5, 12.2

보안 원칙: 위협 모델링을 수행하여 잠재적인 위협을 식별하고 완화 컨트롤을 열거합니다. 위협 모델링이 다음 목적을 달성하는지 확인합니다.

  • 프로덕션 런타임 단계에서 애플리케이션 및 서비스를 보호합니다.
  • 빌드, 테스트 및 배포에 사용되는 아티팩트, 기본 CI/CD 파이프라인 및 기타 도구 환경을 보호합니다.

위협 모델링에는 최소한 다음 측면이 포함되어야 합니다.

  • 애플리케이션의 보안 요구 사항을 정의합니다. 위협 모델링에서 이러한 요구 사항이 적절하게 해결되었는지 확인합니다.
  • 애플리케이션 구성 요소, 데이터 연결과 해당 관계를 분석합니다. 이 분석에 애플리케이션 범위 외부의 업스트림 및 다운스트림 연결도 포함되어 있는지 확인합니다.
  • 애플리케이션 구성 요소, 데이터 연결 및 업스트림 및 다운스트림 서비스가 노출될 수 있는 잠재적 위협 및 공격 벡터를 나열합니다.
  • 열거된 위협을 완화하는 데 사용할 수 있는 해당 보안 컨트롤을 식별하고 추가 처리 계획이 필요할 수 있는 컨트롤 차이(예: 보안 취약성)을 식별합니다.
  • 식별된 취약성을 완화할 수 있는 컨트롤을 열거하고 디자인합니다.

Azure 지침: 위협 모델링 프로세스를 추진하기 위해 Azure 위협 모델 템플릿이 포함된 Microsoft 위협 모델링 도구와 같은 위협 모델링 도구를 사용합니다. STRIDE 모델을 사용하여 내부 및 외부의 위협을 열거하고 적용 가능한 컨트롤을 식별합니다. 위협 모델링 프로세스에 잘못된 구성 액세스 제어 정책이 있는 안전하지 않은 아티팩트 리포지토리를 통한 악성 코드 삽입과 같은 DevOps 프로세스의 위협 시나리오가 포함되어 있는지 확인합니다.

위협 모델링 도구를 사용할 수 없는 경우 최소한 설문지 기반 위협 모델링 프로세스를 사용하여 위협을 식별해야 합니다.

애플리케이션 또는 위협 환경에서 보안에 미치는 영향이 크게 변경될 때 위협 모델링 또는 분석 결과가 기록되고 업데이트되는지 확인합니다.

구현 및 추가 컨텍스트:

고객 보안 관련자(자세한 정보):

DS-2: 소프트웨어 공급망 보안 보장

CIS Controls v8 ID NIST SP 800-53 r4 ID PCI-DSS ID v3.2.1
16.4, 16.6, 16.11 SA-12, SA-15 6.3, 6.5

보안 원칙: 엔터프라이즈의 SDLC(소프트웨어 개발 수명 주기) 또는 프로세스에 애플리케이션에 종속성이 있는 사내 및 타사 소프트웨어 구성 요소(독점 및 오픈 소스 소프트웨어 모두 포함)를 제어하는 보안 제어 집합이 포함되어 있는지 확인합니다. 취약하거나 악의적인 구성 요소가 환경에 통합되고 배포되지 않도록 게이팅 기준을 정의합니다.

소프트웨어 공급망 보안 제어는 적어도 다음 측면을 포함해야 합니다.

  • 개발, 빌드, 통합 및 배포 단계에서 필요한 업스트림 종속성을 식별합니다.
  • 업스트림에서 사용할 수 있는 수정 사항이 있는 경우 알려진 취약성에 대한 사내 및 타사 소프트웨어 구성 요소를 인벤토리하고 추적합니다.
  • 알 수 없는 취약성에 대한 정적 및 동적 애플리케이션 테스트를 사용하여 소프트웨어 구성 요소의 취약성 및 맬웨어를 평가합니다.
  • 적절한 접근 방식을 사용하여 취약성 및 맬웨어가 완화되는지 확인합니다. 여기에는 소스 코드 로컬 또는 업스트림 수정, 기능 제외 및/또는 직접 완화를 사용할 수 없는 경우 보상 컨트롤 적용이 포함될 수 있습니다.

프로덕션 환경에서 닫힌 원본 타사 구성 요소를 사용하는 경우 보안 태세에 대한 가시성이 제한될 수 있습니다. 구성 요소와 관련된 악의적인 활동 또는 취약성이 있는 경우 영향을 최소화하려면 액세스 제어, 네트워크 격리 및 엔드포인트 보안과 같은 추가 컨트롤을 고려해야 합니다.

Azure 지침: GitHub 플랫폼의 경우 GitHub Advanced Security 또는 GitHub 기본 기능에서 다음 기능 또는 도구를 통해 소프트웨어 공급망 보안을 보장합니다.

  • 종속성 그래프를 사용하여 Advisory Database를 통해 프로젝트의 모든 종속성 및 관련 취약성을 검사, 인벤토리화 및 식별합니다.
  • Dependabot을 사용하여 취약한 종속성이 추적 및 수정되도록 하고 리포지토리가 종속된 패키지 및 애플리케이션의 최신 릴리스를 자동으로 유지하도록 합니다.
  • GitHub 네이티브 코드 검색 기능을 사용하여 외부에서 코드를 소싱할 때 소스 코드를 검색합니다.
  • Azure Defender for Cloud를 사용하여 CI/CD 워크플로에서 컨테이너 이미지에 대한 취약성 평가를 통합합니다.

Azure DevOps의 경우 타사 확장을 사용하여 타사 소프트웨어 구성 요소 및 해당 취약성을 인벤토리화, 분석 및 수정하는 유사한 컨트롤을 구현할 수 있습니다.

구현 및 추가 컨텍스트:

고객 보안 관련자(자세한 정보):

DS-3: 안전한 DevOps 인프라

CIS Controls v8 ID NIST SP 800-53 r4 ID PCI-DSS ID v3.2.1
16.7 CM-2, CM-6, AC-2, AC-3, AC-6 2.2, 6.3, 7.1

보안 원칙: DevOps 인프라 및 파이프라인이 빌드, 테스트 및 프로덕션 단계를 포함하여 환경 전반의 보안 모범 사례를 따르도록 합니다. 여기에는 일반적으로 다음 범위에 대한 보안 컨트롤이 포함됩니다.

  • 소스 코드, 빌드된 패키지 및 이미지, 프로젝트 아티팩트 및 비즈니스 데이터를 저장하는 아티팩트 리포지토리
  • CI/CD 파이프라인을 호스팅하는 서버, 서비스 및 도구
  • CI/CD 파이프라인 구성

Azure 지침: DevOps 인프라 보안 컨트롤에 Azure Security Benchmark를 적용하는 과정의 일환으로 다음 컨트롤의 우선 순위를 지정합니다.

  • CI/CD 파이프라인을 통해 악성 코드를 삽입할 수 없도록 아티팩트 및 기본 환경을 보호합니다. 예를 들어 CI/CD 파이프라인을 검토하여 조직, 프로젝트, 사용자, 파이프라인(빌드 & 릴리스), 연결 및 에이전트 빌드와 같은 Azure DevOps의 핵심 영역에서 잘못된 구성을 식별하여 개방형 액세스, 약한 인증, 안전하지 않은 연결 설정 등과 같은 잘못된 구성을 식별합니다. GitHub의 경우 유사한 컨트롤을 사용하여 조직 권한 수준을 보호합니다.
  • 파이프라인의 변경 내용에 권한이 부여되도록 파이프라인의 Azure AD, 네이티브 서비스 및 CI/CD 도구에서 ID/역할 권한 및 권한 정책을 구성합니다.
  • Azure 관리 식별, Just-In-Time 액세스와 같은 기능을 사용하여 개발자 또는 테스터와 같은 사용자 계정에 대한 영구적으로 "유지되는" 권한 있는 액세스를 제공하지 않습니다.
  • CI/CD 워크플로 작업에 사용되는 코드 및 스크립트에서 키, 자격 증명 및 비밀을 제거하고 키 저장소 또는 Azure Key Vault에 보관합니다.
  • 자체 호스팅 빌드/배포 에이전트를 실행하는 경우 네트워크 보안, 자세 및 취약성 관리, 엔드포인트 보안을 비롯한 Azure Security Benchmark 컨트롤을 따라 환경을 보호합니다.

구현 및 추가 컨텍스트:

고객 보안 관련자(자세한 정보):

DS-4: 정적 애플리케이션 보안 테스트를 DevOps 파이프라인에 통합

CIS Controls v8 ID NIST SP 800-53 r4 ID PCI-DSS ID v3.2.1
16.12 SA-11 6.3, 6.5

보안 원칙: SAST(정적 애플리케이션 보안 테스트)가 CI/CD 워크플로의 게이팅 컨트롤의 일부인지 확인합니다. 테스트 결과에 따라 게이팅을 설정하여 취약한 패키지가 리포지토리에 커밋되거나, 패키지에 빌드되거나, 프로덕션에 배포되지 않도록 할 수 있습니다.

Azure 지침: CI/CD 워크플로에서 소스 코드를 자동으로 검사할 수 있도록 SAST를 파이프라인에 통합합니다. Azure DevOps 파이프라인 또는 GitHub 아래 및 타사 SAST 도구를 워크플로에 통합할 수 있습니다.

  • 소스 코드 분석을 위한 GitHub CodeQL.
  • Windows 및 *nix 이진 분석을 위한 Microsoft BinSkim Binary Analyzer.
  • 소스 코드에서 자격 증명 검사를 위한 Azure DevOps 자격 증명 스캐너 및 GitHub 네이티브 비밀 스캔.

구현 및 추가 컨텍스트:

고객 보안 관련자(자세한 정보):

DS-5: DevOps 파이프라인에 동적 애플리케이션 보안 테스트 통합

CIS Controls v8 ID NIST SP 800-53 r4 ID PCI-DSS ID v3.2.1
16.12 SA-11 6.3, 6.5

보안 원칙: DAST(동적 애플리케이션 보안 테스트)가 CI/CD 워크플로의 게이팅 컨트롤의 일부인지 확인합니다. 테스트 결과에 따라 게이팅을 설정하여 취약성이 패키지에 빌드되거나 프로덕션에 배포되는 것을 방지할 수 있습니다.

Azure 지침: AZURE DEVOPS 또는 GitHub 설정된 CI/CD 워크플로에서 런타임 애플리케이션을 자동으로 테스트할 수 있도록 DAST를 파이프라인에 통합합니다. 자동화된 침투 테스트(수동 보조 유효성 검사 포함)도 DAST에 포함되어야 합니다.

Azure DevOps 파이프라인 또는 GitHub 타사 DAST 도구를 CI/CD 워크플로에 통합할 수 있습니다.

구현 및 추가 컨텍스트:

고객 보안 관련자(자세한 정보):

DS-6: DevOps 수명 주기 전반에 걸쳐 워크로드 보안 적용

CIS Controls v8 ID NIST SP 800-53 r4 ID PCI-DSS ID v3.2.1
7.5, 7.6, 7.7, 16.1, 16.7 CM-2, CM-6, AC-2, AC-3, AC-6 6.1, 6.2, 6.3

보안 원칙: 개발, 테스트 및 배포 단계에서 전체 수명 주기 동안 워크로드가 보호되는지 확인합니다. Azure Security Benchmark를 사용하여 기본적으로 가드레일로 설정하거나 배포 단계 이전에 왼쪽으로 이동할 수 있는 컨트롤(예: 네트워크 보안, ID 관리, 권한 있는 액세스 등)을 평가합니다. 특히 DevOps 프로세스에 다음 컨트롤이 있는지 확인합니다.

  • CI/CD 워크플로에서 Azure 또는 타사 도구, 인프라 관리(코드로서의 인프라) 및 테스트를 사용하여 배포를 자동화하여 사용자 오류 및 공격 노출 영역을 줄입니다.
  • VM, 컨테이너 이미지 및 기타 아티팩트가 악의적인 조작으로부터 안전한지 확인합니다.
  • CI/CD 워크플로에서 배포하기 전에 워크로드 아티팩트(즉, 컨테이너 이미지, 종속성, SAST 및 DAST 검사)를 검사합니다.
  • 취약성 평가 및 위협 탐지 기능을 프로덕션 환경에 배포하고 런타임에 이러한 기능을 지속적으로 사용합니다.

Azure 지침: Azure VM에 대한 지침:

  • Azure Shared Image Gallery를 사용하여 이미지를 공유하고 조직 내의 다른 사용자, 서비스 주체 또는 AD 그룹의 액세스를 제어할 수 있습니다. Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 권한 있는 사용자만 이미지에 액세스할 수 있도록 합니다.
  • 불필요한 자격 증명, 권한 및 패키지를 제거하기 위해 VM에 대한 보안 구성 기준을 정의합니다. 사용자 지정 이미지, Azure Resource Manager 템플릿 및/또는 Azure Policy 게스트 구성을 통해 이러한 구성 기준을 배포하고 적용합니다.

Azure 컨테이너 서비스에 대한 지침:

  • ACR(Azure Container Registry)을 사용하여 Azure RBAC를 통해 세분화된 액세스를 제한할 수 있는 프라이빗 컨테이너 레지스트리를 만들 수 있으므로 권한 있는 서비스 및 계정만 프라이빗 레지스트리의 컨테이너에 액세스할 수 있습니다.
  • 프라이빗 Azure Container Registry의 이미지에 대한 취약성 평가를 위해 Defender for Azure Container Registry를 사용합니다. 또한 Azure Defender for Cloud를 사용하여 CI/CD 워크플로의 일부로 컨테이너 이미지 스캔을 처리할 수 있습니다.

Azure 서버리스 서비스의 경우 유사한 컨트롤을 채택하여 배포 전에 보안 컨트롤이 스테이지로 이동되도록 합니다.

구현 및 추가 컨텍스트:

고객 보안 관련자(자세한 정보):

DS-7: DevOps에서 로깅 및 모니터링 사용

CIS Controls v8 ID NIST SP 800-53 r4 ID PCI-DSS ID v3.2.1
8.2, 8.5, 8.9, 8.11 AU-3, AU-6, AU-12, SI-4 10.1, 10.2, 10.3, 10.6

보안 원칙: 로깅 및 모니터링 범위에 비프로덕션 환경 및 DevOps 사용되는 CI/CD 워크플로 요소 및 기타 개발 프로세스가 포함되어 있는지 확인합니다. 이러한 환경을 대상으로 하는 취약성 및 위협은 제대로 모니터링되지 않는 경우 프로덕션 환경에 심각한 위험을 초래할 수 있습니다. CI/CD 빌드, 테스트 및 배포 워크플로의 이벤트도 모니터링하여 CI/CD 워크플로 작업의 편차를 식별해야 합니다.

Azure 지침: DevOps 프로세스 전체에서 사용되는 비프로덕션 및 CI/CD 도구 환경(예: Azure DevOps 및 GitHub)에서 감사 로깅 기능을 사용하도록 설정하고 구성합니다.

빌드, 테스트 및 배포 작업에 대한 Azure DevOps 및 GitHub CI/CD 작업의 이벤트도 모니터링하여 CI/CD 작업의 예외 결과를 식별해야 합니다.

위의 로그 및 이벤트를 로깅 스트림 또는 API를 통해 Azure Sentinel 또는 기타 SIEM 도구로 수집하여 보안 인시던트가 제대로 모니터링되고 처리를 위해 심사되도록 합니다.

Azure 보안 벤치마크 – 로깅 및 위협 검색을 지침으로 삼아 워크로드에 대한 로깅 및 모니터링 컨트롤을 구현합니다.

구현 및 추가 컨텍스트:

고객 보안 관련자(자세한 정보):