CI/CD 파이프라인 보호
빌드 및 릴리스 경로를 강화합니다.
CI/CD 파이프라인 보호은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
공격 대상이 되는 파이프라인
지속적 통합/지속적 배포 파이프라인은 소스 코드, 비밀 정보 및 운영 환경에 대한 높은 권한의 접근 권한을 가집니다. 파이프라인을 장악하면 공격자가 코드 검토를 우회하면서 향후 모든 빌드에 백도어를 삽입할 수 있습니다. 이는 현대 소프트웨어 개발에서 가장 가치가 높은 공격 대상 중 하나입니다.
파이프라인을 운영 인프라로 취급하십시오. 운영 중인 시스템과 동일한 수준의 강화, 모니터링 및 최소 권한 원칙을 적용해야 합니다.
빌드의 신뢰할 수 없는 입력
파이프라인은 완전히 통제할 수 없는 이벤트인 풀 리퀘스트, 태그 및 외부 기여에 따라 자동으로 실행됩니다. 악성 PR은 빌드 자체를 변경하려고 시도할 수 있습니다.
- 포크에 있는 오염된 파이프라인 정의가 비밀 정보를 빼내려고 시도할 수 있습니다
- 신뢰할 수 없는 코드가 신뢰할 수 있는 빌드와 동일한 권한으로 실행될 수 있습니다
신뢰할 수 있는 작업과 신뢰할 수 없는 작업을 분리하십시오. 외부 풀 리퀘스트로 트리거된 작업에는 비밀 정보를 노출하지 마십시오.
액션과 이미지 고정하기
파이프라인 단계에서는 변경 가능한 태그를 사용해 타사 액션이나 컨테이너 이미지를 가져오는 경우가 많습니다. 해당 태그가 악성 콘텐츠를 가리키도록 바뀌면 빌드가 침해됩니다. 변경할 수 없는 다이제스트로 고정하십시오.
# BAD: mutable tag can be moved under you
uses: some/action@v3
# GOOD: pinned to an immutable commit SHA
uses: some/action@a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
# pin container steps by digest too
image: build-tools@sha256:9f86d081884c7d659a2feaa0c55ad015...토큰에 최소 권한 적용
기본 파이프라인 토큰에는 필요 이상의 권한이 부여되어 전체 저장소나 레지스트리에 대한 쓰기 권한을 제공하는 경우가 많습니다. 각 작업에 필요한 정확한 범위로 권한을 축소하십시오.
# scope the default token to read-only, grant more only where needed
permissions:
contents: read
jobs:
publish:
permissions:
contents: read
packages: write # only this job can publish비밀 정보 관리
코드에 하드코딩되거나 광범위하게 공유되는 비밀 정보는 주요 유출 경로입니다. 다음과 같이 엄격하게 관리하십시오:
- 비밀 정보를 비밀 관리자 또는 지속적 통합 비밀 저장소에 저장하고, 절대 코드에 저장하지 않습니다
- 정적 클라우드 키보다 수명이 짧은 OIDC 연동을 우선 사용합니다
- 로그에서 비밀 정보를 마스킹하고 해당 정보의 출력을 차단합니다
- 각 비밀 정보의 범위를 필요한 최소 작업과 환경으로 제한합니다
OIDC 연동을 사용하면 파이프라인이 빌드 시점의 신원을 수명이 짧은 클라우드 자격 증명으로 교환할 수 있으므로 장기간 유효한 키를 완전히 제거할 수 있습니다.
임시 격리 실행기
재사용된 빌드 실행기는 한 작업에서 다음 작업으로 악성 코드나 유출된 비밀 정보를 전달할 수 있습니다. 임시 실행기는 작업마다 새로 생성되고 작업이 끝나면 삭제되므로 아무것도 남지 않습니다.
- 빌드마다 깨끗한 환경을 하나씩 사용한 후 폐기합니다
- 신뢰할 수 있는 작업과 신뢰할 수 없는 작업 사이에 공유 상태가 없습니다
- 네트워크 외부 전송을 필요한 엔드포인트로 제한합니다
이는 SLSA L3의 격리 목표를 직접적으로 뒷받침합니다.
소스 브랜치 보호
파이프라인의 신뢰는 소스 관리에서 시작됩니다. 누구나 릴리스 브랜치에 푸시할 수 있다면 이후 단계의 서명과 스캔은 아무 의미가 없습니다.
- 병합 전에 풀 리퀘스트 검토를 요구합니다
- 보호된 브랜치에서 서명된 커밋을 강제합니다
- 상태 검사(테스트, 스캔)가 통과하도록 요구합니다
main에 대한 강제 푸시와 직접 푸시를 허용하지 않습니다
# require signed commits on a branch
git config commit.gpgsign true
# verify a commit signature locally
git verify-commit HEAD파이프라인 내부에서 스캔하기
보안 게이트를 지속적 통합에 직접 포함하여 문제가 운영 환경에 도달하지 않고 빌드가 실패하도록 하십시오.
# secret leak detection
gitleaks detect --source . --redact
# dependency vulnerabilities
osv-scanner --lockfile=package-lock.json
# IaC and config misconfig
trivy config .
# fail the job on critical findings (non-zero exit stops CI)릴리스에 2인 통제 적용
영향이 큰 작업에는 사람의 승인이 필요합니다. 운영 환경 배포와 자격 증명 변경에는 작성자가 아닌 다른 사람의 승인을 요구해야 합니다.
- 환경 보호 규칙은 배포 전에 검토자를 요구합니다
- 빌드 신원과 배포 신원을 분리합니다
- 어떤 한 주체도 코드를 작성하고 검토 없이 운영 환경에 푸시할 수 없습니다
이는 내부자 위험과 침해된 계정 하나로 인한 피해 범위를 모두 제한합니다.
감사 및 변조 증거
파이프라인이 수행한 작업을 재구성할 수 있어야 합니다. 파이프라인의 로그를 중앙화하고 보호하십시오.
- 지속적 통합 로그를 추가만 가능하고 접근이 통제된 저장소로 전송합니다
- 누가 언제 파이프라인 정의를 변경했는지 기록합니다
- 아티팩트를 특정 빌드까지 추적할 수 있도록 서명된 출처 정보를 생성합니다
- 새로운 자체 호스팅 실행기, 예상하지 못한 비밀 정보 접근, 검토 없이 발생한 구성 변경과 같은 이상 징후를 경고합니다
파이프라인 강화 점검 목록
방어 가능한 파이프라인은 소스, 빌드 및 릴리스 통제를 결합합니다:
- 브랜치 보호, 검토 및 서명된 커밋
- 다이제스트로 고정한 액션과 이미지
- 최소 권한의 수명이 짧은 OIDC 토큰
- 임시 격리 실행기
- 파이프라인 내 비밀 정보, 의존성 및 구성 스캔
- 2인 릴리스 승인
- 감사 기록이 포함된 서명된 아티팩트, SBOM 및 출처 정보
빠른 확인: 토큰 권한
권한이 높은 빌드 토큰에 적합한 통제 방법을 결정해 보십시오.
복습: 지속적 통합/지속적 배포 파이프라인 보안
전체 빌드 및 릴리스 경로를 강화하는 방법을 배웠습니다.
- 파이프라인을 운영 환경처럼 취급하십시오. 파이프라인은 향후 모든 빌드에 백도어를 삽입할 수 있습니다
- 신뢰할 수 없는 PR 빌드를 비밀 정보로부터 격리하십시오
- 액션과 이미지를 다이제스트로 고정하고 최소 권한의 수명이 짧은 OIDC 토큰을 사용하십시오
- 임시 격리 실행기를 사용하고 소스 브랜치를 보호하십시오
- 파이프라인 내부에서 스캔하고, 2인 릴리스 승인을 요구하며, 변조가 드러나는 감사 기록을 유지하십시오
과정 완료: 이제 소프트웨어 공급망을 처음부터 끝까지 보호할 수 있습니다.
자주 묻는 질문
“CI/CD 파이프라인 보호” 강의는 무료인가요?
네 — “CI/CD 파이프라인 보호” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“CI/CD 파이프라인 보호”에서 뭘 배우나요?
빌드 및 릴리스 경로를 강화합니다. 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“CI/CD 파이프라인 보호” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 공급망 위협
- 소프트웨어 구성 목록 (SBOM)
- 의존성 및 아티팩트 서명
- CI/CD 파이프라인 보호