소프트웨어 아티팩트 공급망 보안 수준(SLSA)

소프트웨어 아티팩트 공급망 보안 수준(SLSA)

소프트웨어 공급망의 무결성과 보안을 강화하는 프레임워크인 SLSA의 개념과, Docker Hardened Images가 SLSA Build Level 3 기준을 어떻게 충족하는지 알아봐요.

출처: 문서

본문

SLSA란 무엇인가요?

SLSA(Supply-chain Levels for Software Artifacts)는 소프트웨어 공급망의 무결성과 보안을 강화하도록 설계된 보안 프레임워크예요. Google이 개발하고 OpenSSF(Open Source Security Foundation)가 관리하는 SLSA는 소프트웨어 프로젝트에서 변조를 방지하고, 무결성을 개선하며, 패키지와 인프라를 보호하기 위한 지침과 모범 사례를 제공해요.

SLSA는 보안 강도가 점점 높아지는 네 가지 빌드 수준(0–3)을 정의해요. 빌드 provenance, 소스 무결성, 빌드 환경 보안 같은 영역에 초점을 맞춰요. 각 수준은 이전 수준 위에 쌓여, 더 높은 소프트웨어 공급망 보안을 달성하기 위한 체계적인 접근 방식을 제공해요.

SLSA가 왜 중요한가요?

소프트웨어 공급망의 복잡성과 상호 연결성이 커지면서 SLSA는 현대 소프트웨어 개발에 필수적이에요. SolarWinds 침해 같은 공급망 공격은 소프트웨어 개발 프로세스의 취약점을 여실히 드러냈어요. SLSA를 구현하면 조직은 다음을 할 수 있어요.

  • 아티팩트 무결성 보장: 빌드 및 배포 과정에서 소프트웨어 아티팩트가 변조되지 않았는지 검증
  • 빌드 provenance 강화: 소프트웨어 아티팩트가 어떻게, 언제 생성되었는지에 대한 검증 가능한 기록을 유지해 투명성과 책임성을 제공
  • 빌드 환경 보호: 빌드 시스템을 무단 접근과 수정으로부터 보호하는 제어 구현
  • 공급망 위험 완화: 취약점이나 악성 코드가 소프트웨어 공급망에 유입될 위험을 줄임

SLSA Build Level 3란 무엇인가요?

SLSA Build Level 3, 즉 Hardened Builds는 SLSA 프레임워크의 네 가지 수준 중 가장 높은 수준이에요. 소프트웨어 아티팩트가 안전하고 추적 가능하게 빌드되도록 보장하는 엄격한 요구사항을 도입해요. Level 3를 충족하려면 빌드가 다음을 만족해야 해요.

  • 수동 변조를 방지하기 위해 완전히 자동화되고 스크립트화될 것
  • 소스와 빌더 인증을 강제하는 신뢰할 수 있는 빌드 서비스를 사용할 것
  • 아티팩트가 어떻게 빌드되었는지 설명하는 서명된 변조 방지 provenance 기록을 생성할 것
  • 빌드 환경, 소스 저장소, 빌드 단계에 대한 메타데이터를 캡처할 것

이 수준은 소프트웨어가 통제되고 감사 가능한 환경에서 예상된 소스로부터 빌드되었다는 강력한 보증을 제공하며, 공급망 공격의 위험을 크게 줄여줘요.

Docker Hardened Images와 SLSA

Docker Hardened Images(DHI)는 현대 프로덕션 환경을 위해 특별히 설계된 기본 보안(secure-by-default) 컨테이너 이미지예요. 각 DHI는 암호화 방식으로 서명되며 SLSA Build Level 3 표준을 준수해서, 검증 가능한 빌드 provenance와 무결성을 보장해요.

SLSA 준수 DHI를 개발·배포 프로세스에 통합하면 다음을 할 수 있어요.

  • 높은 보안 수준 달성: 엄격한 보안 표준을 충족하는 이미지를 사용해 취약점과 공격의 위험을 줄임
  • 컴플라이언스 단순화: 서명된 SBOM(소프트웨어 자재명세서)과 VEX(취약점 예외) 명세 같은 내장 기능을 활용해 FedRAMP 같은 규정 준수를 촉진
  • 투명성 강화: 각 이미지의 구성 요소와 빌드 프로세스에 대한 상세 정보에 접근해 투명성과 신뢰를 높임
  • 감사 간소화: 검증 가능한 빌드 기록과 서명을 활용해 보안 감사와 평가를 단순화

Docker Hardened Images의 SLSA provenance 가져오기 및 검증

각 Docker Hardened Image(DHI)는 암호화 방식으로 서명되고 attestation을 포함해요. 이 attestation은 검증 가능한 빌드 provenance를 제공하고 SLSA Build Level 3 표준 준수를 입증해요.

DHI의 SLSA provenance를 가져오고 검증하려면 Docker Scout를 사용할 수 있어요.

$ docker scout attest get dhi.io/<image>:<tag> \
  --predicate-type https://slsa.dev/provenance/v0.2 \
  --verify

예를 들면:

$ docker scout attest get dhi.io/node:20.19-debian12 \
  --predicate-type https://slsa.dev/provenance/v0.2 \
  --verify

자료(Resources)

SLSA 정의와 Docker Build에 대한 자세한 내용은 SLSA definitions 문서를 봐요.

더 알아보기 (Learn more)