아티팩트 증명(Artifact attestations) 살펴보기
아티팩트 증명(Artifact attestations) 살펴보기
아티팩트 증명의 사용법과 보안상 이점을 함께 알아볼게요.
본문
개요
아티팩트 증명을 사용하면 구축한 소프트웨어에 대해 위조할 수 없는(unfalsifiable) 출처(provenance)와 무결성 보증을 만들 수 있어요. 그러면 소프트웨어를 소비하는 사람들이 소프트웨어가 어디서 어떻게 빌드됐는지 검증할 수 있어요.
소프트웨어와 함께 아티팩트 증명을 생성하면 빌드의 출처를 확립하는 암호학적으로 서명된 주장(claim)을 만들게 되며, 여기에는 다음 정보가 포함돼요:
- 아티팩트와 연결된 워크플로 링크
- 아티팩트의 리포지토리, 조직, 환경, 커밋 SHA, 트리거링 이벤트
- 출처 확립에 사용된 OIDC 토큰의 기타 정보. 자세한 내용은 OpenID Connect를 참고하세요.
관련 소프트웨어 자재 명세서(SBOM, software bill of materials)가 포함된 아티팩트 증명을 생성할 수도 있어요. 빌드를 빌드에 사용된 오픈소스 의존성 목록과 연결하면 투명성을 제공하고 소비자가 데이터 보호 표준을 준수할 수 있게 해줘요.
아티팩트 증명의 SLSA 등급
SLSA 프레임워크는 공급망 보안을 평가하는 데 사용되는 업계 표준이에요. 등급(level)으로 구성되어 있으며, 각 등급은 소프트웨어 공급망의 보안과 신뢰성 정도가 높아지는 것을 나타내요. 아티팩트 증명 자체만으로 SLSA v1.0 Build Level 2를 제공해요.
이것은 아티팩트와 그 빌드 지침 사이의 연결을 제공하지만, 빌드가 알려지고 검증된 빌드 지침을 사용하도록 요구하면 한 단계 더 나아갈 수 있어요. 좋은 방법은 조직 전반의 여러 리포지토리가 공유하는 재사용 워크플로에서 빌드가 이루어지도록 하는 거예요. 재사용 워크플로는 빌드 프로세스와 호출 워크플로 사이에 격리를 제공해서 SLSA v1.0 Build Level 3를 충족할 수 있어요. 자세한 내용은 아티팩트 증명과 재사용 워크플로를 사용해 SLSA v1 Build Level 3 달성하기를 참고하세요.
SLSA 등급에 대한 자세한 내용은 SLSA 보안 등급을 참고하세요.
GitHub이 아티팩트 증명을 생성하는 방법
아티팩트 증명을 생성하기 위해 GitHub은 증명을 통한 소프트웨어 아티팩트 서명·검증을 위한 종합 솔루션을 제공하는 오픈소스 프로젝트인 Sigstore를 사용해요.
아티팩트 증명을 생성하는 공개 리포지토리는 Sigstore Public Good Instance를 사용해요. 생성된 Sigstore 번들의 사본은 GitHub에 저장되고, 인터넷에서 공개적으로 읽을 수 있는 불변 투명성 로그(transparency log)에도 기록돼요.
아티팩트 증명을 생성하는 비공개 리포지토리는 GitHub의 Sigstore 인스턴스를 사용해요. GitHub의 Sigstore 인스턴스는 Sigstore Public Good Instance와 동일한 코드베이스를 사용하지만 투명성 로그가 없고 GitHub Actions와만 연합(federate)돼요.
증명을 생성해야 하는 시기
증명을 생성하는 것만으로는 보안상 이점이 없어요. 이점을 얻으려면 증명을 검증해야 해요. 무엇을 언제 서명할지 생각하는 데 도움이 되는 몇 가지 지침은 다음과 같아요.
다음은 서명해야 해요:
- 사람들이
gh attestation verify ...를 실행할 것으로 예상하는, 릴리스하는 소프트웨어. - 사람들이 실행할 바이너리, 사람들이 다운로드할 패키지, 상세 내용의 해시를 포함하는 매니페스트.
다음은 서명하면 안 돼요:
- 자동 테스트용으로만 만드는 빈번한 빌드.
- 소스 코드, 문서 파일, 임베디드 이미지 같은 개별 파일.
아티팩트 증명 검증
아티팩트 증명을 게시하는 소프트웨어를 소비한다면 GitHub CLI를 사용해 그 증명을 검증할 수 있어요. 증명은 소프트웨어가 어디서 어떻게 빌드됐는지에 대한 정보를 주므로, 그 정보로 공급망 보안을 높이는 보안 정책을 만들고 시행할 수 있어요.
[!WARNING] 아티팩트 증명은 아티팩트가 안전하다는 보장이 아니라는 점을 기억하는 게 중요해요. 아티팩트 증명은 아티팩트를 만든 소스 코드와 빌드 지침으로 연결해 줄 뿐이에요. 정책 기준을 정의하고, 그 내용을 평가해서 정책을 평가하고, 소프트웨어를 소비할 때 정보에 입각한 위험 결정을 내리는 것은 여러분의 몫이에요.
다음 단계
빌드에 대한 아티팩트 증명 생성·검증을 시작하려면 아티팩트 증명을 사용해 빌드 출처 확립하기를 참고하세요.