모든 빌드에서 기록하는 소프트웨어 공급망 보안
소프트웨어 공급망은 CI 빌드에서 제품과 만납니다. CRACI는 GitHub Actions 작업을 안전한 러너에서 실행하고, 작업이 가져오는 모든 종속성을 기록하며, 각 빌드가 접근할 수 있는 대상을 통제하고, 출시한 소프트웨어의 취약점을 계속 추적합니다.
GitHub Actions를 위한 안전한 러너
runs-on을 craci로 바꾸면 GitHub Actions 작업이 CRACI 러너에서 실행되며, 실행 내역은 계속 GitHub에 표시됩니다. 모든 작업은 유럽에서 호스팅되는 Linux x86-64 또는 ARM64 기반의 격리된 전용 가상 머신에서 실행됩니다. 더 빠른 하드웨어, 짧은 대기 시간, 캐싱 덕분에 빌드는 GitHub 호스팅 러너보다 약 2배 빠르게 실행됩니다.
모든 빌드에서 기록되는 SBOM
CRACI는 스캐너가 아니라 기록기입니다. 러너의 패키지를 인식하는 프록시가 작업이 npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk, Git 소스와 Yocto 및 OpenEmbedded 다운로드 프리셋에서 가져오는 모든 패키지를, CI 캐시에서 복원된 패키지까지 포함해 확인합니다. 각 작업의 SBOM에는 완전성 상태가 표시되며, 전이적 종속성과 각 구성 요소의 선언된 라이선스를 포함해 CycloneDX 또는 SPDX로 내보낼 수 있습니다.
빌드가 접근할 수 있는 대상 통제
이그레스 정책은 작업이 연결할 수 있는 호스트를 결정합니다. 기본 거부 또는 기본 허용, 24개의 기본 제공 소프트웨어 소스 프리셋, 패키지 레지스트리와 Git용 유형별 사용자 지정 소스, 명시적 네트워크 규칙을 지원합니다. 정책은 작업 시작 전에 검증되고 실패 시 차단되며, 위반이 발생하면 알림이 발송됩니다. 손상된 종속성이나 빌드 단계가 승인하지 않은 호스트로 몰래 데이터를 보낼 수 없습니다.
출시하는 소프트웨어의 출처 증명
공개 REST API는 작업별로 SBOM, 네트워크 추적, 출처 증명을 반환하며, 모두 같은 빌드에서 기록됩니다. 증거는 워크플로에 단계를 추가하지 않고 빌드 자체에서 나옵니다.
출시 후 취약점 추적
CRACI는 새로운 취약점이 공개될 때마다 출시한 소프트웨어의 SBOM을 계속 재평가하고, 빌드와 리포지토리 전반의 발견 사항을 집계합니다. 보안 팀은 발견 사항을 분류하고 각각을 수정 책임 팀에 배정합니다. 정책 게이트로 발견 사항이나 라이선스를 기준으로 빌드를 차단할 수 있고, VEX를 지원하며, 공급업체 SBOM도 자체 빌드와 함께 모니터링하고, 인벤토리 보기에서 어떤 소프트웨어 버전이 어떤 제품에 배포되었는지 확인할 수 있습니다.
고객과 감사인을 위한 증거
고객, 감사인, 규제는 갈수록 릴리스별 SBOM과 취약점 처리 기록을 요구하고 있습니다. CRACI는 구성 요소에서 발견된 취약점을 포함해 SBOM을 CycloneDX 또는 SPDX로 내보내며, 공개 REST API는 SBOM, 네트워크 추적, 출처 증명을 반환합니다. 같은 증거로 EU Cyber Resilience Act, NIS2, FDA SBOM 요건, ISO 27001 공급망 통제에 대응할 수 있습니다.
공급망 사고가 일으키는 질문
패키지, CI 액션, 레지스트리가 손상되면 처음 몇 시간은 영향을 받았는지 파악하는 데 쓰입니다. 다음은 팀이 묻는 질문과, CRACI의 빌드 기록이 그 질문에 답하는 방식입니다.
| 질문 | CRACI의 답 |
|---|---|
| 우리 빌드 중에 손상된 패키지 버전을 가져온 것이 있습니까? | 모든 빌드의 SBOM에는 작업이 실제로 가져온 패키지가 나열되므로, 리포지토리를 다시 스캔하는 대신 기록된 빌드를 검색하면 됩니다. |
| 어떤 제품과 릴리스가 영향을 받습니까? | 모니터링 중인 SBOM은 지속적으로 재평가되며, 인벤토리 보기는 소프트웨어 버전을 배포된 제품과 연결합니다. |
| 빌드 단계가 시크릿을 어딘가로 보냈을 가능성이 있습니까? | 각 작업의 네트워크 추적은 작업이 만든 연결을 기록하며, 이그레스 정책은 정책 밖의 호스트에 도달하기 전에 차단합니다. |
| 이 SBOM은 전달해도 될 만큼 완전합니까? | 각 작업의 SBOM은 Complete, Complete with connections, Incomplete, Unavailable, Not recorded 중 하나로 완전성을 표시합니다. |
| 누가 수정하고 있으며, 처리했다는 것을 증명할 수 있습니까? | 발견 사항은 분류되어 담당 팀에 배정되며, SBOM은 구성 요소에서 발견된 취약점을 포함해 CycloneDX 또는 SPDX로 내보낼 수 있습니다. |
CRACI는 빌드와 빌드가 출시하는 것을 다룹니다. 코드 스캔, 시크릿 스캔, 도달 가능성 분석은 애플리케이션 보안 도구의 몫입니다. 현재 GitHub Actions를 지원하며, 다른 CI 시스템은 로드맵에 있습니다.
소프트웨어 공급망 보안 Q&A
다루는 범위, CI/CD에 필요한 이유, CRACI의 역할
소프트웨어 공급망 보안이란 무엇입니까?
소프트웨어 공급망 보안은 첫 커밋부터 릴리스까지 소프트웨어에 들어가는 모든 것을 보호합니다. 오픈 소스 종속성, 베이스 이미지, 빌드 도구, 서드파티 CI 액션, CI 파이프라인 자체, 출시하는 아티팩트가 여기에 해당합니다. 이러한 구성 요소가 무엇인지 파악하고, 어디서 오는지 통제하며, 각 릴리스에 무엇이 들어갔는지 증명하는 것을 의미합니다.
왜 CI/CD에서 소프트웨어 공급망을 보호해야 합니까?
릴리스 빌드는 종속성이 해석되고, 다운로드되고, 패키징되는 곳입니다. 프로덕션 빌드는 노트북에서 실행한 빌드와 다릅니다. 버전 범위, 변경 가능한 태그, 캐시 때문에 다른 것을 가져올 수 있습니다. 릴리스 빌드가 실행되는 동안 남긴 기록만이 출시된 내용에 대한 신뢰할 수 있는 기록이며, 빌드 러너는 빌드가 접근할 수 있는 대상을 통제할 수 있는 지점입니다.
CRACI는 공급망 보안 스캐너와 무엇이 다릅니까?
스캐너는 매니페스트, 잠금 파일, 소스 코드, 완성된 바이너리 같은 파일을 사후에 읽습니다. CRACI는 GitHub Actions 작업의 러너이므로 빌드가 진행되는 동안 이를 관찰하고, CI 캐시에서 복원된 패키지를 포함해 각 작업이 실제로 가져온 패키지를 기록합니다. 각 SBOM은 자체 완전성을 명시하고, 이그레스 정책은 빌드가 접근할 수 있는 대상을 통제하며, API는 SBOM, 네트워크 추적, 출처 증명을 반환합니다.
CRACI가 GitHub Actions 워크플로를 대체합니까?
아닙니다. CRACI는 GitHub Actions가 아니라 러너를 대체합니다. runs-on을 craci로 바꾸면 되며, 워크플로, 트리거, 실행 기록은 GitHub에 그대로 남습니다.
CRACI는 어떤 CI 시스템과 플랫폼을 지원합니까?
현재는 GitHub Actions를 지원하며, GitLab CI와 Jenkins를 비롯한 다른 CI 시스템은 로드맵에 있습니다. 러너는 x86-64 및 ARM64 기반 Linux이며, Windows와 macOS는 로드맵에 있습니다.
CRACI는 SAST, 시크릿 스캔, 도달 가능성 분석을 수행합니까?
아닙니다. CRACI는 빌드를 기록하고 통제하며, 출시한 소프트웨어의 취약점을 추적하고 증거를 생성합니다. 자체 코드의 결함이나 시크릿 스캔, 도달 가능성 분석은 애플리케이션 보안 도구의 역할입니다.
빌드 데이터는 어디에 저장됩니까?
CRACI는 유럽의 베어메탈 인프라를 기반으로 유럽에서 호스팅되며, 데이터는 기본적으로 180일간 보관되고 Enterprise에서는 보관 기간을 맞춤 설정할 수 있습니다. CRACI는 소스 코드를 저장하지 않습니다. CRACI는 ISO 27001 인증을 받았으며, 자세한 내용은 Trust Center에서 확인할 수 있습니다.
빌드가 실제로 가져오는 것을 확인하세요
데모를 예약하고 CRACI가 GitHub Actions 빌드에서 기록하는 SBOM, 네트워크 추적, 이그레스 정책, 출처 증명을 확인하세요
데모 예약