대규모 SLSA 규정 준수: Scribe를 사용한 출처 생성

모든 게시물

이 글은 빅토르 카르타쇼프와 다니엘 네벤찰과 공동으로 작성되었습니다.

감사원의 리트머스 시험: 빌드를 증명할 수 있나요?

"당신이 배송하는 모든 컨테이너 이미지가 당신이 주장하는 방식대로 정확하게 제작되었다는 것을 확실하게 증명할 수 있습니까?"

대부분의 감사인은 몇 주에 걸친 정신없는 YAML 리팩토링보다는 빠르고 확실한 답변을 기대합니다. SLSA(소프트웨어 아티팩트 공급망 수준) 프레임워크는 이러한 증명을 위한 청사진, 즉 구조화되고 변조 방지가 가능한 출처를 제공합니다.

하지만 문제는 다음과 같습니다. 전통적으로 모든 CI 워크플로에 출처 생성기를 연결하는 것은 금세 두더지 잡기 게임으로 전락합니다.

  • 수십 개의 저장소? 즉, 검토하고 병합해야 할 PR이 셀 수 없이 많다는 뜻입니다.
  • 파이프라인 변경? 지속적인 수동 유지관리.
  • 역사적인 건물? 과거 출시에 대한 증거를 재생성하는 간단한 방법은 없습니다.

Scribe Security는 Scale에서 SLSA를 사용하여 그러한 마찰을 제거합니다. 더 높은 수준의 지원을 받음 플랫폼 CLI기존 CI 로그를 지능적으로 수집하고, 모든 이미지 빌드를 자동으로 감지하고, 포괄적인 전체 출처(SLSA 레벨 1의 경우 서명 없음 또는 SLSA 레벨 2의 경우 서명됨)를 내보냅니다. 이 모든 것이 사전 설정이 필요 없는 단일 명령에서 수행됩니다.

플랫폼 CLI: 출처의 비접촉 패러다임 전환

전통적인 접근 방식 스크라이브 플랫폼 CLI
모든 CI 작업에 생성기 단계를 포함합니다. 파이프라인 편집 없음 — 로그를 분석합니다 시간 내에 빌드가 완료되었습니다
이전 빌드를 다시 채우기 어려움 소급적으로 출처를 생성합니다. 과거 워크플로 실행에서
저장소당 선형 노력 하나의 명령으로 확장 가능 10개 → 1,000개 이상의 저장소

마법이 일어나는 방법: 신뢰 자동화

Scribe Platforms CLI는 기존 빌드를 방해하지 않고 자동화된 SLSA 출처를 제공하기 위해 백그라운드에서 정교한 작업을 수행합니다.

  • 통나무를 수확합니다: Scribe는 CI/CD 시스템(현재 GitHub Actions, 곧 GitLab 및 Jenkins 지원 예정)에 연결하여 빌드 로그를 가져옵니다.
  • 모든 빌드를 감지합니다. 파이프라인에 특별한 설정 없이도 Scribe는 Docker, Podman 또는 Buildah 명령을 지능적으로 식별하여 모든 이미지 생성을 정확하게 찾아냅니다.
  • 주요 메타데이터를 추출합니다. 이미지 태그, 암호화 다이제스트, 러너 ID, 빌드 인수, 타임스탬프와 같은 중요한 세부 정보는 이러한 로그에서 직접 가져옵니다.
  • 연결된 SBOM을 생성합니다. 완전한 추적성을 위해 Scribe는 자동으로 다음을 생성합니다. 소프트웨어 자재 목록(SBOM) 및 영상 SBOM을 빌드 출처에 직접 연결합니다.
  • SLSA 출처를 제작합니다. Scribe는 이러한 풍부한 데이터를 바탕으로 각 이미지에 대한 완벽한 SLSA 출처 진술서를 작성합니다.
  • (선택적으로) 레벨 2에 대한 서명: 간단히 플래그를 추가하면 Scribe가 서명 기능(X509, Pub-Priv, Sigstore 또는 선호하는 KMS)과 통합되어 암호화 방식으로 출처에 서명하여 SLSA 레벨 2로 격상합니다.
  • 검증 및 보고: 중요한 점은 Scribe가 미리 정의된 것을 자동으로 실행한다는 것입니다. SLSA.l1 or SLSA.l2 증거에 반하는 이니셔티브. 이를 통해 무결성이 검증되고 포괄적인 SARIF 보고서가 작성되며, 이 보고서는 레벨 2 준수를 위해 서명됩니다.

생성된 모든 아티팩트는 로컬에 보관하거나 장기간 변조 방지 보관을 위해 Scribe Hub에 안전하게 업로드할 수 있습니다.

세대를 넘어: 정책 준수 입증

출처 생성은 기본이지만, 감사인을 진정으로 만족시키는 것은 출처를 준수한다는 것을 입증하는 것입니다. Scribe는 SLSA 출처를 생성하자마자 해당 증거를 기반으로 자동으로 이니셔티브를 실행합니다.

이러한 이니셔티브는 자동화된 감사자 역할을 하여 다음과 같은 사항을 확인합니다.

  • 출처가 잘 형성되어 있고 완전합니까?
  • 모든 필수 항목이 정확하게 기재되어 있나요?
  • 연결된 SBOM은 유효하고 접근이 가능합니까?
  • 출처가 예상 신원에 의해 암호화되어 서명되었습니까?

결과는? 귀사의 규정 준수 상태를 상세히 설명하는 포괄적인 SARIF 보고서입니다. 레벨 2의 경우, 이 보고서 자체에도 서명이 포함되어 모든 감사인에게 명확하고 기계 판독 가능하며 검증 가능한 답변을 제공합니다.

간단한 예: Scribe-Security를 사용하여 SLSA 출처 확보하기 🚀

Scribe-Security의 플랫폼 CLI는 빌드의 SLSA 출처 생성을 간소화하여 레벨 1(서명되지 않음) 및 레벨 2(서명됨) 보증을 모두 달성하는 통합 명령을 제공합니다. 가장 중요한 차이점은 –valint.sign 인수의 존재입니다.

GitHub의 scribe-security/valint 저장소에 있는 모든 태그 기반 빌드의 SLSA 출처를 얻으려면 다음 명령을 실행합니다.

강타

플랫폼 discover \ --valint.sign \ # SLSA 레벨 2(서명됨)의 경우 포함, SLSA 레벨 1(서명되지 않음)의 경우 생략 github \ --token EXAMPLE_GH_TOKEN \ --scope.organization example-org \ --scope.repository example-repo \ --repository.mapping *::example_slsa::v1 \ --commit.skip \ --slsa-enable \ --slsa.tags-only

그러면 Scribe가 즉시 실행됩니다. 최근 GitHub 워크플로를 스캔하고, 이미지 빌드를 지능적으로 감지하고, 필요한 모든 데이터를 수집하고, 연결된 SBOM을 사용하여 포괄적인 전체 SLSA 출처를 작성합니다.

--valint.sign: SLSA 레벨 1 또는 2 전환 🔑 --valint.sign 플래그는 간단한 토글 역할을 합니다. SLSA 레벨 1(서명되지 않음)의 경우 --valint.sign을 생략하면 Scribe가 기본적인 추적성을 위해 서명되지 않은 기본 출처를 생성합니다. SLSA 레벨 2(서명됨)의 경우 --valint.sign을 포함하면 Scribe가 출처 파일과 SARIF 준수 보고서에 암호화된 서명을 적용하여 더 높은 수준의 검증 가능한 보증을 제공합니다.

단일 플래그로 제어되는 이 통합 명령을 사용하면 기존 CI/CD 파이프라인을 수정하지 않고도 대규모로 강력한 SLSA 규정 준수를 달성하는 작업이 간소화됩니다.

오픈소스 SLSA 출처 생성

SLSA 출처 생성은 비공개 저장소에만 국한되지 않습니다. 많은 오픈 소스 프로젝트가 공개 CI/CD 로그, 빌드에 대한 출처를 생성할 수 있습니다. 이러한 출처 레코드는 처음에는 저장소 및 조직 비밀과 같은 덜 광범위한 정보를 포함할 수 있지만, 향후에는 다음을 통해 개선될 가능성이 있습니다. 출처 SBOM, 이 문제를 해결할 수 있습니다.

예를 들어, SLSA 레벨 1 출처를 쉽게 생성할 수 있습니다. 고기테아/기테아 프로젝트를 사용하여 플랫폼의 발견 명령:

플랫폼 discover github \ --token EXAMPLE_GH_TOKEN \ # 대상이 공개이므로 모든 토큰이 작동합니다 --scope.organization go-gitea \ --scope.repository gitea \ --repository.mapping *gitea*::gitea_demo::v1 \ --scope.workflow.past_days 30 \ # 지난 30일 동안 검토할 워크플로 범위 지정 --slsa-enable \ --scope.workflow.name "*release-tag*" \ # 릴리스 워크플로에 대한 분석 집중 --exclude.types member commit secret \ # 대규모 데이터 세트 및 인증되지 않은 API 제외 --slsa.tags-only # 태그가 지정된 워크플로 실행에 대한 분석 집중

이 명령을 실행하면 SLSA 요청을 나타내는 로그와 감지된 이미지 빌드와 관련 출처를 요약한 표가 표시됩니다.

보시다시피, 이 글을 쓰는 시점에 발견된 `gitea/gitea`의 최신 버전은 **v1.24.2**였습니다. SLSA 출처 및 관련 증거가 발급된 두 이미지는 `gitea/gitea:1.24.2`와 `gitea/gitea:1.24.2-rootless`입니다. 예를 들어, SLSA 출처는 다음에서 참조할 수 있습니다. 링크

이 콘텐츠는 소프트웨어 공급망 전반에 걸쳐 코드 아티팩트와 코드 개발 및 전달 프로세스에 최첨단 보안을 제공하는 선도적인 엔드투엔드 소프트웨어 공급망 보안 솔루션 제공업체인 Scribe Security에서 제공합니다. 자세히 알아보기.