Artifact Analysis는 자동 스캔 및 주문형 스캔이라는 두 가지 이미지 스캔 방법을 제공합니다. 이 문서에서는 두 가지 유형의 검사에 관한 기능 세부정보를 간략히 설명합니다.
Artifact Analysis는 메타데이터 관리도 제공합니다. 스캔 및 메타데이터 저장소를 함께 사용하여 CI/CD 파이프라인을 종단 간으로 보호하는 방법에 관한 자세한 내용은 Artifact Analysis 개요를 참고하세요.
컨테이너 이미지 스캔과 관련된 비용에 대한 자세한 내용은 가격 책정을 참고하세요.
이 개요에서는 Artifact Registry 또는 Container Registry (지원 중단됨)에서 Docker 저장소를 사용하는 방법을 이미 알고 있다고 가정합니다.
자동 스캔
Artifact Analysis는 Artifact Registry 또는 Container Registry(지원 중단됨)의 아티팩트에 대한 취약점 스캔을 실행합니다. Artifact Analysis는 소프트웨어 구성을 이해하는 데 도움이 되는 종속 항목과 라이선스도 식별합니다.
자동 스캔은 푸시 시 스캔 및 지속적 분석이라는 두 가지 주요 작업으로 구성됩니다.
푸시 시 스캔
Artifact Analysis는 새 이미지가 Artifact Registry 또는 Container Registry에 업로드될 때 이를 스캔합니다. 이 스캔은 컨테이너의 패키지에 대한 정보를 추출합니다. 이미지는 이미지 다이제스트를 기반으로 한 번만 스캔됩니다. 즉, 태그를 추가하거나 수정해도 새 스캔이 트리거되지 않습니다.
Artifact Analysis는 보안 취약점에서 공개적으로 모니터링되는 패키지의 취약점만 감지합니다.
이미지 스캔이 완료된 후 생성된 취약점 결과는 해당 이미지에 대한 취약점 어커런스의 모음입니다.
Artifact Analysis는 기존 이미지를 자동으로 스캔하지 않습니다. 기존 이미지를 스캔하려면 다시 푸시해야 합니다.
지속적 분석
Artifact Analysis는 이미지 업로드 시 발견된 취약점에 대한 어커런스를 만듭니다. 초기 스캔 후 Artifact Registry 및 Container Registry에서 스캔한 이미지의 메타데이터를 지속적으로 모니터링하여 새로운 취약점이 있는지 확인합니다.
Artifact Analysis는 매일 여러 번 취약점 소스에서 새로운 업데이트된 취약점 정보를 수신합니다. 새로운 취약점 데이터가 도착하면 Artifact Analysis는 스캔한 이미지의 메타데이터를 업데이트하여 최신 상태로 유지합니다. Artifact Analysis는 기존 취약점 어커런스를 업데이트하고, 새 메모에 대한 새 취약점 어커런스를 생성하며, 더 이상 유효하지 않은 취약점 어커런스를 삭제합니다.
Artifact Analysis는 지난 30일 동안 푸시 또는 가져온 이미지의 메타데이터만 업데이트합니다. Artifact Analysis는 30일이 지난 메타데이터를 보관처리합니다.보관처리된 메타데이터가 있는 이미지를 다시 스캔하려면 해당 이미지를 가져오세요. 메타데이터를 새로고침하는 데 최대 24시간이 걸릴 수 있습니다.
매니페스트 목록
매니페스트 목록과 함께 취약점 스캔을 사용할 수도 있습니다. 매니페스트 목록은 여러 플랫폼의 매니페스트에 대한 포인터 목록입니다. 이를 통해 단일 이미지가 여러 아키텍처 또는 운영체제의 변형에서 작동할 수 있습니다.
Artifact Analysis 취약점 스캔은 Linux amd64 이미지만 지원합니다. 매니페스트 목록이 두 개 이상의 Linux amd64 이미지를 가리키는 경우 첫 번째 이미지만 스캔됩니다. Linux amd64 이미지에 대한 포인터가 없으면 스캔 결과가 없습니다.
주문형 스캔
주문형 스캔을 사용하면 gcloud CLI를 사용하여 컴퓨터 또는 레지스트리에서 로컬로 컨테이너 이미지를 스캔할 수 있습니다. 이를 통해 취약점 결과에 액세스해야 하는 시점에 따라 CI/CD 파이프라인을 유연하게 맞춤설정할 수 있습니다.
지원되는 패키지 유형
Artifact Registry의 Docker 저장소에 컨테이너 이미지를 푸시하면 Artifact Analysis에서 여러 유형의 OS 패키지와 애플리케이션 언어 패키지의 취약점을 스캔할 수 있습니다.
Container Registry는 지원 중단되었습니다. Container Registry를 사용하면 자동 스캔이 OS 패키지만 스캔합니다. Container Registry를 사용 중인 경우 Artifact Registry로 전환하는 방법을 알아보세요.
다음 표에서는 Artifact Analysis에서 각 검사 서비스로 검사할 수 있는 패키지 유형을 비교합니다.
지원되는 OS 패키지
Artifact Registry를 사용한 자동 스캔 | Container Registry를 사용한 자동 스캔(지원 중단됨) | 주문형 스캔 | |
---|---|---|---|
AlmaLinux OS | |||
Alpine | |||
CentOS | |||
Chainguard | |||
Debian | |||
Google Distroless | |||
RHEL(Red Hat Enterprise Linux) | |||
Red Hat Universal Base Image (UBI) | |||
Rocky Linux | |||
SLES(SUSE Linux Enterprise Server) | |||
Ubuntu | |||
Wolfi |
지원되는 애플리케이션 언어 패키지
Artifact Registry를 사용한 자동 스캔 | Container Registry를 사용한 자동 스캔(지원 중단됨) | 주문형 스캔 | |
---|---|---|---|
Go 패키지 | |||
자바 패키지 | |||
Node.js 패키지 | |||
PHP 패키지 | |||
Python 패키지 | |||
Ruby 패키지 | |||
Rust 패키지 | |||
.NET 패키지 |
Artifact Analysis는 패키지가 컨테이너화되어 Docker 형식 저장소에 저장된 경우에만 Artifact Registry의 애플리케이션 언어 패키지를 스캔합니다. 다른 Artifact Registry 저장소 형식은 지원되지 않습니다.
각 레지스트리 제품에서 사용할 수 있는 기능에 관한 자세한 내용은 비교 차트를 참고하세요.
Windows Server 컨테이너에서는 Artifact Analysis가 지원되지 않습니다.
Artifact Analysis 인터페이스
Google Cloud 콘솔에서 Artifact Registry 컨테이너의 이미지 취약점 및 이미지 메타데이터를 볼 수 있습니다.
gcloud CLI를 사용하여 취약점 및 이미지 메타데이터를 볼 수 있습니다.
또한 Artifact Analysis REST API를 사용하여 이러한 작업을 수행할 수도 있습니다. 다른 Cloud Platform API와 마찬가지로 OAuth2를 사용하여 액세스를 인증해야 합니다. 인증 후 API를 사용하여 맞춤 메모와 어커런스를 만들고 취약점 어커런스를 확인할 수도 있습니다.
Artifact Analysis API는 gRPC와 REST/JSON을 모두 지원합니다. 클라이언트 라이브러리나 REST/JSON용 cURL을 사용하여 API를 호출할 수 있습니다.
취약한 이미지의 배포 제어
Binary Authorization을 사용하여 Cloud Build 파이프라인의 일부로 Artifact Analysis에서 제공하는 취약점 정보를 기반으로 취약점 허용 목록을 만들 수 있습니다. 취약점이 허용 목록의 정책을 위반하면 빌드가 실패합니다.
또한 증명을 만들기 위해 Artifact Analysis와 Binary Authorization을 통합하여 알려진 보안 문제가 있는 컨테이너 이미지가 배포 환경에서 실행되는 일을 막을 수 있습니다.
취약점 소스
다음 섹션에는 아티팩트 분석에서 CVE 데이터를 가져오는 데 사용하는 취약점 소스가 나와 있습니다.
OS 패키지 스캔
Artifact Analysis는 다음 소스를 사용합니다.
- AlmaLinux OS
- Alpine
- CentOS - Red Hat과 CentOS는 동일한 취약점 데이터 소스를 공유합니다. CentOS 패키지는 Red Hat 패키지 후에 게시되므로 Red Hat의 취약점에 사용할 수 있는 수정사항이 CentOS에서도 사용 가능해지기까지 시간이 걸릴 수 있습니다.
- Chainguard
- Debian
- Google Distroless는 Debian을 기반으로 하며 Debian 취약점 데이터를 사용합니다.
- 국가 취약점 데이터베이스
- RHEL(Red Hat Enterprise Linux)
- Red Hat 범용 기본 이미지 (UBI)
- Rocky Linux
- SLES(SUSE Linux Enterprise Server)
- Ubuntu
- Wolfi
언어 패키지 스캔
Artifact Analysis는 컨테이너 이미지 내의 언어 패키지에 대한 취약점 스캔을 지원합니다. 취약점 데이터는 GitHub Advisory Database에서 가져옵니다.
대부분의 경우 각 취약점에는 CVE ID가 할당되며 이 ID가 해당 취약점의 기본 식별자가 됩니다. 취약점에 할당된 CVE ID가 없는 경우 GHSA ID가 식별자로 대신 할당됩니다. 나중에 해당 취약점에 CVE ID가 할당되면 취약점 ID가 CVE와 일치하도록 업데이트됩니다. 자세한 내용은 프로젝트에서 특정 취약점 확인을 참고하세요.
지원되는 OS 버전
Artifact Analysis는 다음 버전의 운영체제 소프트웨어에 대한 취약점 스캔을 지원합니다.
- AlmaLinux OS - 버전: 8, 9, 부 버전
- Alpine Linux - 버전: 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.15, 3.16, 3.17, 3.18, 3.19, 3.20
- CentOS - 버전: 6, 7, 8, 부 버전
- Chainguard - 단일 출시 트랙의 롤링 업데이트
- Debian GNU/Linux - 버전: 9, 10, 11, 12
- Red Hat Enterprise Linux (RHEL) - 버전: 6, 7, 8, 9 및 하위 버전은 자동 레지스트리 검사에서 지원됩니다.
- Red Hat 유니버설 기본 이미지 (UBI) - 버전 8, 9, 마이너 버전
- Rocky Linux - 버전: 8, 9, 부 버전
- SUSE Linux Enterprise Server (SLES) - 버전: 12, 15, 마이너 버전. SAP용 SLES도 동일한 버전으로 지원됩니다.
- Ubuntu - 버전: 12.04, 12.10, 13.04, 14.04, 14.10, 15.04, 15.10, 16.04, 16.10, 17.04, 17.10, 18.04, 18.10, 20.04, 20.10, 21.04, 21.10, 22.04, 22.10, 23.04, 23.10, 24.04
- Wolfi - 단일 출시 트랙의 롤링 업데이트
제한사항
- 아티팩트 분석은 출시된 각 주 버전의 최신 부 버전을 기반으로 RHEL의 취약점 스캔 결과를 제공합니다. 이전 RHEL의 부 버전의 경우 스캔 결과가 부정확할 수 있습니다.
- RHEL 버전 9에서는 주문형 스캔이 지원되지 않습니다.
패키지 관리자 및 시맨틱 버전 관리
- Go - Artifact Analysis는 Go 표준 라이브러리의 패키지와 표준 라이브러리에 포함되지 않은 외부 Go 패키지의 취약점을 보고합니다. 취약점은 패키지 유형별로 다른 라벨로 보고됩니다.
- Java - Artifact Analysis는 Maven 이름 지정 규칙을 따르는 Maven 패키지를 지원합니다. 패키지 버전에 공백이 포함된 경우 검사되지 않습니다.
- Node.js - 패키지 버전 일치는 시맨틱 버전 관리 사양을 따릅니다.
- PHP - Artifact Analysis에서 Composer 패키지를 스캔합니다. Composer 시맨틱 버전 관리를 참고하세요.
- Python - Python 버전 일치는 PEP 440 시맨틱을 따릅니다.
- Ruby - Artifact Analysis에서 RubyGems 패키지를 스캔합니다. RybyGems 시맨틱 버전 관리를 참고하세요.
- Rust - Artifact Analysis에서 Cargo 패키지를 스캔합니다. Rust 시맨틱 버전 관리를 참고하세요.
- .NET - Artifact Analysis에서 NuGet 패키지를 스캔합니다. NuGet 시맨틱 버전 관리를 참고하세요.