빌드는 초록불이었는데 그 라이브러리는 누가 넣었나 · 이 바이트가 어디서 왔는지 아무도 모른다 · 퀴즈
퀴즈: 출처 증명
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
SLSA Build 트랙에서 L1 이 요구하는 것은?
- 전용 기반 시설의 호스팅 빌드 플랫폼이 증명에 서명하는 것
- 산출물이 어떻게 만들어졌는지를 적은 출처 증명이 존재하는 것
- 빌드 실행끼리 서로 영향을 주지 못하도록 플랫폼을 굳히는 것
- 재현 가능한 빌드로 같은 바이트가 나오는 것을 증명하는 것
Build L2 가 L1 에 더해 막아 주는 것은?
- 빌드 도중의 다른 테넌트에 의한 변조
- 의존성에 섞여 들어온 악성 코드
- 빌드가 끝난 뒤의 변조
- 소스 저장소에 대한 무단 커밋
provenance 의 predicateType 에 무엇을 넣어야 하는가?
- 문서를 열었을 때 주소창에 보이는 그 URL
- 우리 조직의 빌드 시스템을 가리키는 주소
- 산출물의 다이제스트를 이어 붙인 고유 URI
- 문서가 그대로 쓰라고 못박아 둔 술어 URI
resolvedDependencies 에 이름만 적고 다이제스트를 빠뜨리면 무엇을 잃는가?
- '같은 입력으로 다시 만들면 같은 것이 나오는가' 를 물을 수 없게 된다
- 증명 문서가 스키마 검사를 통과하지 못하게 된다
- 빌드 플랫폼의 신원을 확인할 수 없게 된다
- 산출물의 subject 를 지정할 수 없게 된다
externalParameters 를 최소로 유지하라고 권하는 이유는?
- 증명 파일의 전송 비용을 줄이기 위해
- 값이 많아질수록 검증하는 쪽이 '무엇이 정상인지' 를 정의하기 어려워져서
- 빌드 플랫폼이 읽을 수 있는 칸 수에 제한이 있어서
- 서명 알고리즘이 큰 문서를 다루지 못해서
소스를 브랜치 이름으로 적고 커밋 다이제스트를 빠뜨리면 무엇이 문제인가?
- 브랜치 이름에는 공백이 들어갈 수 있어 파싱이 어렵다
- 브랜치는 저장소를 옮기면 사라진다
- 브랜치는 움직이는 포인터라 같은 증명이 시점마다 다른 소스를 가리킨다
- 브랜치 이름은 서명 대상에 포함되지 않는다