다음을 통해 공유


빌드 단계 개요

컨테이너 이미지 빌드는 CSSC(Containers Secure Supply Chain) 프레임워크의 세 번째 단계입니다. 일부 기업은 외부 원본에서 기본 이미지를 직접 끌어오지만 다른 기업은 서명 및 증명에 대해 이미지를 확인하지 않고 내부 카탈로그에서 기본 이미지를 끌어올 수 있습니다. 기본 이미지가 항상 내부 카탈로그에서 가져와서 사용하기 전에 확인되도록 하는 것이 중요합니다. 이미지를 빌드한 후 일부 기업은 취약성 및 맬웨어 검사 없이 게시하고 후속 공급망 단계에서 확인할 수 없는 SBOM과 같은 증명을 생성하지 못합니다. 생성된 컨테이너 이미지가 신뢰할 수 있고 엔터프라이즈 정책을 준수하는지 확인해야 합니다.

Microsoft의 CSSC(Containers Secure Supply Chain) 프레임워크는 컨테이너 이미지를 빌드할 필요성을 식별하고 신뢰할 수 있고 호환되는 이미지를 안전하게 빌드하는 데 도움이 되는 모범 사례 및 도구 집합을 제공합니다. 이 문서에서는 CSSC 프레임워크의 빌드 단계에서 사용할 수 있는 목표, 모범 사례 및 도구에 대해 알아봅니다.

배경

현재 기업은 다양한 방법을 사용하여 규격 컨테이너 이미지를 안전하게 빌드합니다. 컨테이너 이미지를 빌드하기 전에 내부 팀은 내부 골든 레지스트리에서 기본 이미지를 가져와야 합니다. 그러나 이러한 이미지는 사용하기 전에 확인되지 않으므로 골든 레지스트리가 손상되고 이미지가 악의적일 수 있으므로 권장되지 않습니다. 또한 기업은 품질을 보장하기 위해 컨테이너 이미지에 추가되는 라이브러리 및 패키지의 원본을 제어합니다.

컨테이너 이미지를 빌드한 후 엔터프라이즈는 컨테이너 이미지를 준수하는지 확인하기 위해 추가 메타데이터를 생성합니다. 일부 기업은 SLSA 출처 문서를 활용하여 컨테이너 이미지 생성을 담당하는 git 커밋과 재현 가능한지 여부를 파악합니다. 다른 사용자는 Docker 레이블을 사용하여 컨테이너 이미지 소유자와 이미지 커밋을 담당하는 사용자에게 출처를 제공합니다. 일부 기업은 이미지에서 취약성 및 맬웨어를 검색하고 그에 따라 보고서를 생성합니다.

CSSC 프레임워크의 빌드 단계에서는 게시하기 전에 신뢰할 수 있고 규격 컨테이너 이미지를 생성하기 위해 구현해야 하는 일련의 단계 및 보안 컨트롤을 권장합니다.

규격 컨테이너 이미지를 안전하게 빌드하기 위해 다음과 같은 방법을 권장합니다.

  • 내부 카탈로그에서만 기본 이미지를 끌어오면 공격 노출 영역을 줄이고 보안을 향상시킬 수 있습니다.
  • 사용 가능한 경우 기본 이미지를 사용하기 전에 서명 및 증명을 확인하여 신뢰할 수 있고 규정을 준수하는지 확인합니다.
  • 배포판 없는 이미지는 추가 소프트웨어 또는 운영 체제 구성 요소 없이 애플리케이션 및 해당 런타임 종속성만 포함합니다. 배포판 없는 이미지를 기본 이미지로 사용하여 공격 표면을 줄이고 보안을 향상시킵니다.
  • 권한 있는 사용자만 변경하거나 수정할 수 있도록 빌드 플랫폼 또는 서비스에 최소 권한 액세스를 적용하여 무단 액세스, 데이터 위반 및 기타 보안 인시던트 위험을 줄입니다.
  • 빌드 후 컨테이너 이미지에서 취약성 및 맬웨어를 검사하여 보안 취약성이 발생할 위험을 완화합니다.
  • 빌드 후 SBOM 및 출처 메타데이터와 같은 추가 메타데이터를 사용하여 컨테이너 이미지를 보강합니다.
  • 엔터프라이즈 키를 사용하여 빌드 후 컨테이너 이미지 및 관련 메타데이터에 서명하여 무결성을 보장하고 내부 사용을 위한 신뢰할 수 있는 승인 스탬프를 제공합니다.
  • 알려진 취약성을 해결하기 위해 적시에 컨테이너 이미지를 패치합니다.
  • 취약성 및 보안 수정 사항을 따라잡기 위해 종속성을 합리적으로 최신 상태로 유지합니다.

규격 컨테이너 이미지를 빌드하기 위한 워크플로

빌드 단계에는 조직 및 보안 정책을 준수하는 컨테이너 이미지를 만드는 워크플로가 있습니다. 권한 있는 사용자에 대해서만 빌드 플랫폼 또는 서비스에 권한 수준 액세스 제어를 적용하는 것이 중요합니다. 카탈로그에서 기본 이미지를 사용할 수 있는 경우 빌드 워크플로는 다음을 수행합니다.

  1. 내부 카탈로그에서만 기본 이미지를 끌어오기.
  2. 기본 이미지를 사용하기 전에 확인하여 신뢰할 수 있고 규정을 준수하는지 확인합니다.
  3. 빌드를 위한 기본 이미지 위에 트러스트 원본의 추가 프레임워크, 애플리케이션 코드 및/또는 구성을 추가합니다.
  4. 빌드 프로세스 중에 SBOM을 생성합니다.
  5. 빌드 후 알려진 취약성 및 맬웨어에 대한 결과 컨테이너 이미지를 검사하여 보안 결함의 도입을 방지합니다.
  6. 알려진 취약성 및 맬웨어를 해결하도록 결과 컨테이너 이미지 패치
  7. 취약성 및 맬웨어 보고서를 공급망의 후속 단계에서 사용할 이미지 증명으로 첨부합니다.
  8. SBOM을 이미지 증명으로 연결하여 공급망의 후속 단계에서 사용합니다.
  9. 공급망의 후속 단계에서 사용할 출처 메타데이터와 같은 추가 메타데이터를 사용하여 결과 이미지를 보강합니다.
  10. 결과 이미지 및 관련 메타데이터를 엔터프라이즈 키로 서명하여 무결성을 보장하고 배포 단계에 대한 신뢰할 수 있는 승인 스탬프를 제공합니다.

빌드 단계의 보안 목표

신뢰할 수 있고 규정을 준수하는 컨테이너 이미지를 빌드하기 위한 잘 정의된 워크플로를 사용하면 기업이 보안을 강화하고 컨테이너에 대한 공급망의 공격 노출 영역을 줄일 수 있습니다. CSSC 프레임워크의 빌드 단계는 다음 보안 목표를 충족하기 위한 것입니다.

부적절한 액세스 제어로 인해 공격 노출 영역 줄이기

내부 사용자가 빌드 인프라에서 예기치 않은 변경 또는 잘못된 구성을 수행할 수 있습니다. CSSC 프레임워크의 빌드 단계에서는 기본적으로 최소 권한 액세스 제어를 적용하여 이러한 위험을 해결하므로 리소스 소유자가 올바른 사용자에게 변경 및 구성을 수행할 수 있는 올바른 권한을 갖도록 하여 공격 노출 영역을 줄일 수 있습니다.

악의적인 내부 사용자의 공격 노출 영역 줄이기

ID 도용을 사용하여 빌드 플랫폼에 액세스하고, 이진 파일을 수정하고, 원래 개발자와 사용자에게 보이지 않는 불법 변경 내용을 삽입할 수 있습니다. 또한 내부 사용자가 취약한 코드를 삽입하거나 구성을 잘못 구성할 위험이 있습니다. CSSC 프레임워크의 빌드 단계에서는 Azure RBAC(Azure 역할 기반 액세스 제어)를 적용하고 다양한 코드 소유자 코드 검토를 적용하여 이러한 위험을 해결합니다.

외부 종속성으로 인한 공격 노출 영역 줄이기

외부 원본의 기본 이미지는 악의적일 수 있습니다. 외부 레지스트리가 손상될 수 있습니다. CSSC 프레임워크의 빌드 단계에서는 카탈로그의 기본 이미지만 사용하고 서명, 취약성 및 맬웨어 보고서 및 기타 이미지 메타데이터를 사용하기 전에 이를 확인하여 이러한 위험을 해결합니다.

숨겨진 백도어와 함께 악성 OSS(오픈 소스 소프트웨어) 패키지로 인해 패키지의 이진 파일이 소스 코드와 일치하지 않을 수 있습니다. 종속성 또는 오픈 소스 구성 요소의 유효성이 만료되면 최신 보안 수정 사항이 업스트림 차단됩니다. CSSC 프레임워크의 빌드 단계에서는 승인된 라이브러리를 사용하고, 정기적으로 취약성 및 맬웨어를 검색하고, 라이브러리를 최신 상태로 유지하여 이러한 위험을 해결합니다.

손상된 빌드로 인해 공격 노출 영역 줄이기

취약한 빌드 에이전트는 SolarWinds 공격과 같은 공격을 일으킬 수 있는 사이드 이진 파일 또는 악성 코드를 삽입할 수 있습니다. CSSC 프레임워크의 빌드 단계는 정기적으로 빌드 에이전트를 패치하여 이러한 위험을 해결합니다.

최소 이미지 품질 확인

CSSC 프레임워크의 빌드 단계에서 기업은 빌드 후 이미지의 취약성 및 맬웨어 검사에 필요한 단계를 구성하고 보고서를 생성할 수 있습니다. 또한 엔터프라이즈는 SBOM, 출처 메타데이터 및 정책을 충족하는 기타 내부 메타데이터를 비롯한 추가 메타데이터를 사용하여 빌드 후 이미지를 보강할 수 있습니다. 또한 엔터프라이즈 키를 사용하여 아티팩트를 서명하여 무결성을 보장하고 배포 단계에 대한 신뢰할 수 있는 승인 스탬프를 제공할 수 있습니다.

Microsoft는 기업이 빌드 단계 워크플로에서 권장되는 단계를 구현하고 위에 나열된 보안 목표를 해결하는 데 도움이 되는 도구 및 서비스 세트를 제공합니다.

빌드 후 최신 상태를 유지하기 위한 도구

Dependabot은 끌어오기 요청을 통해 종속성 업데이트를 자동화하는 도구입니다. 자세한 내용과 다음 단계는 이 가이드를 참조하세요.

Copa는 Microsoft 지원 오픈 소스 프로젝트로, 취약성 검사 결과에 따라 컨테이너 이미지의 Linux OS 패키지 취약성을 해결합니다. 자세한 내용과 다음 단계는 이 가이드를 참조하세요.

지속적인 취약성 검사 및 패치 이미지를 위한 도구 및 서비스

클라우드용 Microsoft Defender 컨테이너화된 워크로드의 보안을 개선, 모니터링 및 기본 위해 클라우드 네이티브 솔루션입니다. 클라우드용 Microsoft Defender Azure Container Registry에 저장된 이미지에 대한 취약성 평가 및 관리 도구를 제공합니다.

Copa는 Microsoft 지원 오픈 소스 프로젝트로, 취약성 검사 결과에 따라 컨테이너 이미지의 Linux OS 패키지 취약성을 해결합니다. 자세한 내용과 다음 단계는 이 가이드를 참조하세요.

엔터프라이즈 메타데이터를 사용하여 외부 이미지를 보강하기 위한 도구 및 서비스

ORAS 는 OCI 레지스트리와 상호 작용할 수 있는 오픈 소스 CLI 및 라이브러리를 제공하는 Microsoft의 지원을 받는 CNCF 프로젝트입니다. ORAS를 사용하여 주석을 추가하고 메타데이터를 컨테이너 이미지에 연결할 수 있습니다. ORAS를 사용하여 SBOM, 출처 메타데이터 및 기타 메타데이터를 추가하여 공급망의 후속 단계에 대한 이미지를 보강할 수 있습니다.

Microsoft의 SBOM 도구 는 다양한 아티팩트를 위한 SPDX 2.2 호환 SBOM을 만드는 오픈 소스, 확장성 및 엔터프라이즈 지원 도구입니다. SBOM 도구를 사용하여 컨테이너 이미지에 대한 자세한 SBOM을 생성할 수 있습니다.

공증 프로젝트는 소프트웨어 아티팩트 서명 및 확인을 위한 사양 및 도구를 개발하는 Microsoft 지원 CNCF 프로젝트입니다. 공증 프로젝트의 notation 도구를 사용하여 엔터프라이즈 키를 사용하여 컨테이너 이미지 및 기타 클라우드 네이티브 아티팩트 서명할 수 있습니다.

Azure Key Vault 는 암호화 키, 비밀 및 인증서를 저장하고 관리하기 위한 안전하고 중앙 집중화된 위치를 제공하는 클라우드 기반 서비스입니다. AKV는 엔터프라이즈 키를 안전하고 안정적으로 저장 및 관리하는 데 사용할 수 있습니다.

다음 단계

컨테이너 이미지를 안전하게 배포하려면 배포 단계의 개요를 참조하세요.