다음을 통해 공유


취득 단계 개요

기본 또는 유틸리티 이미지로 사용할 외부 컨테이너 이미지를 획득하는 것은 컨테이너에 대한 공급망의 첫 번째 단계입니다. 기업은 원본에서 모든 소프트웨어를 빌드할 수 있는 전문 지식이나 리소스가 부족할 수 있으며 컨테이너 이미지에 대한 외부 원본에 의존해야 합니다. 이러한 이미지의 예로는 운영 체제 또는 프레임워크 이미지, NGINX 및 Envoy와 같은 서비스 프록시 또는 Fluentd 및 Kafka와 같은 로깅 및 메트릭 이미지가 있습니다. 사용하기 전에 특정 품질 검사 설정하고 이러한 이미지가 엔터프라이즈 정책을 준수하는지 확인하는 것이 중요합니다.

Microsoft의 CSSC(Containers Secure Supply Chain) 프레임워크는 외부 이미지를 획득할 필요성을 식별합니다. CSSC 프레임워크는 내부 사용을 위해 외부 컨테이너 이미지를 안전하게 획득할 수 있도록 일련의 표준 사례 및 도구를 권장합니다. 이 문서에서는 CSSC 프레임워크의 획득 단계에서 사용할 수 있는 목표, 표준 사례 및 도구에 대해 알아봅니다.

배경

현재 기업에는 외부 컨테이너 이미지를 획득하기 위한 정립된 프로세스가 없습니다. 접근 방식은 기업의 규모와 전문 지식에 따라 크게 달라집니다.

보안 중심 기업은 Docker Hub와 같은 외부 원본에서 사전 승인된 이미지를 내부 격리 레지스트리로 가져옵니다. 이러한 이미지는 내부 사용을 위해 릴리스되기 전에 취약성 및 맬웨어를 검사합니다. 그러나 이 프로세스는 균일하거나 완전히 자동화되지 않습니다. 또한 기업은 공급망 전체에서 이러한 이미지의 신뢰성과 무결성을 보장할 방법이 부족합니다. 마지막으로, 공급망의 후속 단계에 대한 추가 메타데이터를 사용하여 이미지를 보강하는 일관된 방법이 없습니다.

보안 과정을 시작하는 기업은 빌드 및 배포 스크립트에서 외부 레지스트리의 컨테이너 이미지를 직접 사용합니다. 이 방법은 이미지 빌드 및 컨테이너화된 서비스의 가용성을 손상시키는 취약성, 맬웨어 및 비규격 소프트웨어를 도입할 수 있습니다.

CSSC 프레임워크의 획득 단계에서는 외부 이미지가 내부적으로 사용되기 전에 엔터프라이즈 정책의 유효성을 검사하고 준수하도록 구현해야 하는 일련의 단계 및 보안 제어를 권장합니다.

가능한 경우 원본에서 소프트웨어를 빌드하는 것이 좋습니다. 기업에서 이 작업을 수행할 수 없는 경우 외부 컨테이너 이미지 및 클라우드 네이티브 아티팩트 취득을 위해 다음 방법을 사용하는 것이 좋습니다.

  • 외부 이미지를 엔터프라이즈의 제어 하에 있는 내부 레지스트리로 가져와서 타사에 대한 종속성을 제거하고 가용성에 미치는 영향을 줄입니다. 평판 좋은 원본에서만 이미지를 가져와야 합니다.
  • 사용 가능한 경우 외부 이미지의 서명을 확인하여 가져오기 프로세스 중에 게시자의 신뢰성 및 이미지 무결성을 확인합니다.
  • 내부 사용을 허용하기 전에 컨테이너 이미지에서 취약성 및 맬웨어를 검사하여 보안 결함이 발생할 위험을 줄입니다.
  • SBOM, 출처 및 수명 주기와 같은 추가 메타데이터를 사용하여 컨테이너 이미지를 보강하여 소프트웨어 공급망의 후속 단계에서 정책을 사용하도록 설정합니다.
  • 무결성을 보장하고 내부 사용을 위해 신뢰할 수 있는 승인 스탬프를 제공하기 위해 엔터프라이즈 키를 사용하여 컨테이너 이미지 및 관련 메타데이터에 서명합니다.

Microsoft의 CSSC 프레임워크 지침은 CNCF 소프트웨어 공급망 모범 사례에서 자료를 보호하기 위한 지침과도 일치합니다.

외부 이미지 획득을 위한 워크플로

신뢰 기업은 공급업체 또는 오픈 소스 프로젝트에 투입되더라도 항상 외부 원본에서 획득한 소프트웨어의 유효성을 검사해야 합니다. 컨테이너 이미지 및 클라우드 네이티브 아티팩트도 예외는 아닙니다. CSSC 프레임워크는 외부 이미지를 획득하기 위해 다음 워크플로를 권장합니다.

  1. 컨테이너 이미지 및 클라우드 네이티브 아티팩트를 엔터프라이즈 제어 아래의 내부 레지스트리로 가져옵니다.
  2. 이미지의 유효성을 검사할 때까지 내부적으로 사용되지 않도록 내부 레지스트리의 이미지를 격리합니다.
  3. 외부 레지스트리에 서명이 있는 경우 이미지와 연결된 서명의 유효성을 검사하여 이미지의 신뢰성과 무결성을 확인합니다.
  4. 외부 레지스트리에 추가 메타데이터가 있는 경우 SBOM 및 출처를 포함하여 이미지와 연결된 다른 메타데이터의 유효성을 검사하여 비준수 라이선스와 같은 엔터프라이즈 정책 위반을 방지합니다.
  5. 이미지에서 알려진 취약성 및 맬웨어를 검사하여 보안 결함의 도입을 방지합니다.
  6. 취약성 및 맬웨어 보고서를 공급망의 후속 단계에서 사용할 이미지 증명으로 첨부합니다.
  7. 사용할 수 없는 경우 이미지에 대한 SBOM 및 출처를 생성하고 공급망의 후속 단계에서 사용할 이미지 증명으로 연결합니다.
  8. 공급망의 후속 단계에서 사용할 수명 주기 메타데이터와 같은 추가 메타데이터를 사용하여 이미지를 보강합니다.
  9. 무결성을 보장하고 내부 사용을 위해 신뢰할 수 있는 승인 스탬프를 제공하기 위해 엔터프라이즈 키를 사용하여 이미지 및 관련 메타데이터에 서명합니다.
  10. 이미지가 내부 정책을 충족하는 경우 내부 사용을 위해 골든 레지스트리 에 이미지를 게시합니다.

획득 단계의 보안 목표

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

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

공용 레지스트리는 개방형 특성과 엄격한 보안 조치의 부족으로 인해 다양한 유형의 공격에 취약합니다. 엔터프라이즈 내 사용자가 외부 레지스트리에서 이미지를 직접 끌어오도록 허용하면 종속성 혼동 및 오타와 같은 공격에 노출됩니다.

CSSC 프레임워크의 취득 단계는 외부 아티팩트 획득 및 관리를 중앙 집중화하고 내부 사용자에게 모든 이미지 및 클라우드 네이티브 아티팩트용 단일 진리 소스를 제공하여 이러한 위험을 해결합니다.

보안 결함 발생 위험 최소화

공개 레지스트리의 이미지에 대한 엄격한 검증 및 승인 프로세스가 부족하다는 것은 누구나 엄격한 조사 없이 이미지를 푸시할 수 있음을 의미합니다. 이렇게 하면 엔터프라이즈 애플리케이션에 보안 취약성을 발생시킬 수 있는 손상된 이미지를 실수로 사용할 위험이 증가합니다.

획득 단계는 내부 사용을 위해 승인되기 전에 이미지의 취약성 및 맬웨어 검사에 필요한 단계를 추가하여 이러한 위험을 해결합니다. 이미지를 내부 레지스트리로 가져오는 또 다른 이점은 이제 이러한 이미지를 정기적으로 검사하고 패치할 수 있습니다.

컨테이너 빌드 및 배포의 가용성 향상

컨테이너 이미지를 전역 규모로 배포해야 하므로 퍼블릭 레지스트리는 제한에 취약합니다. 공용 레지스트리는 이미지 배포에 영향을 줄 수 있는 DDoS 공격의 대상이기도 합니다. 마지막으로, 공용 레지스트리는 엔터프라이즈 제어를 받지 않고 중단의 영향을 받을 수 있는 인프라에서 호스트됩니다. 이 모든 경우 엔터프라이즈 빌드 및 배포에서 지연 또는 오류가 발생할 수 있습니다.

외부 레지스트리의 이미지를 내부 레지스트리로 가져오면 Acquire 단계에서는 외부 레지스트리에 대한 종속성을 제거하고 기업이 내부 레지스트리에서 이미지를 가져오는 속도를 제어할 수 있도록 하여 이러한 위험을 해결합니다. 또한 프라이빗 레지스트리는 외부 공격으로부터 더 잘 보호되고 엔터프라이즈 가용성 요구 사항을 준수할 수 있습니다.

외부 이미지의 수명 주기 제어

소프트웨어 게시자는 예고 없이 외부 레지스트리의 이미지를 업데이트할 수 있습니다. 이로 인해 엔터프라이즈 빌드 및 배포가 예기치 않게 변경될 수 있습니다. 또한 예고 없이 외부 레지스트리에서 이미지를 제거할 수 있으므로 엔터프라이즈 빌드 및 배포가 실패할 수 있습니다.

외부 이미지를 호스트하는 중간 레지스트리를 도입함으로써 Acquire 단계는 내부 사용에 필요한 캐시된 버전의 이미지를 제공하여 이러한 위험을 해결합니다. 이를 통해 기업은 이미지의 수명 주기를 제어하고 엔터프라이즈 정책에 따라 사용 중지되도록 할 수 있습니다.

최소 이미지 품질 확인

외부 이미지의 일부 게시자는 SBOM 및 출처와 같은 증명뿐만 아니라 서명 컨테이너 이미지를 포함하기 시작하지만 공용 레지스트리의 많은 이미지에는 이러한 증명이 없습니다. 이는 특정 공용 레지스트리가 이러한 기능을 지원하지 않기 때문입니다. 따라서 기업에서 획득한 이미지가 정책을 준수하는지 확인하기가 어렵습니다.

CSSC 프레임워크의 획득 단계에서 기업은 SBOM, 출처, 수명 주기 및 정책을 충족하는 기타 내부 메타데이터를 비롯한 추가 메타데이터를 사용하여 이미지를 보강할 수 있습니다. 또한 엔터프라이즈 키를 사용하여 아티팩트를 서명하여 무결성을 보장하고 내부 사용을 위해 신뢰할 수 있는 승인 스탬프를 제공할 수 있습니다.

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

외부 이미지를 가져오기 위한 도구 및 서비스

ACR(Azure Container Registry)은 컨테이너 이미지 및 기타 클라우드 네이티브 아티팩트의 배포를 지원하는 관리형 OCI 규격 레지스트리입니다. ACR은 최신 OCI 사양을 준수하며 공급망 아티팩트를 저장하는 데 사용할 수 있습니다.

ACR 가져오기 기능을 사용하여 외부 레지스트리에서 ACR로 이미지를 가져올 수 있습니다. 가져오기는 이미지 다이제스트 및 태그를 유지하고 Docker 레지스트리 V2 API를 지원하는 공용 및 프라이빗 레지스트리에서 이미지를 가져올 수 있도록 합니다.

ORAS 는 OCI 레지스트리와 상호 작용할 수 있는 오픈 소스 CLI 및 라이브러리를 제공하는 Microsoft의 지원을 받는 CNCF 프로젝트입니다. ORAS를 사용하여 외부 레지스트리의 이미지 및 기타 OCI 아티팩트를 ACR로 복사할 수도 있습니다.

외부 이미지의 유효성을 검사하기 위한 도구 및 서비스

ACR 작업은 기업이 취약성 검사 또는 SBOM 또는 서명 유효성 검사와 같은 다양한 작업을 자동화할 수 있도록 하는 Azure Container Registry의 기능 모음입니다. ACR 작업은 Azure Container Registry로 가져온 후 외부 이미지의 유효성을 검사하는 데 사용할 수 있습니다. ACR 작업을 사용하여 외부 레지스트리에서 Azure Container Registry로 이미지 가져오기를 자동화할 수도 있습니다.

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

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

OCI 레지스트리 와 상호 작용하는 다양한 도구로서 ORAS 를 사용하여 주석을 추가하고 메타데이터를 컨테이너 이미지에 첨부할 수도 있습니다. ORAS를 사용하여 SBOM, 출처, 수명 주기 및 기타 메타데이터를 추가하여 공급망의 후속 단계에 대한 이미지를 보강할 수 있습니다.

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

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

다음 단계

내부 사용을 위해 컨테이너 이미지를 안전하게 호스팅하는 카탈로그 단계의 개요를 참조하세요.