본문 바로가기
C.W.K.
Stream
Lesson 11 of 12 · published

보안 모범 사례

~11 min · security, checklist, hardening

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

체크리스트

비밀값과 권한 관리를 모든 저장소에 바로 적용할 수 있게 체크리스트로 압축했어. 대부분 팀은 첫 감사에서 10개 항목 중 5개만 통과하지.

  1. GITHUB_TOKEN 조직 기본값이 제한(restricted, read-all) 상태여야 해. 조직 설정에서 Actions → 워크플로 권한(Workflow permissions)으로 가서 설정해.
  2. 모든 워크플로에 명시적인 permissions:가 있어야 해. 최상위 단계에 두고 기본은 읽기로 잡아.
  3. 서드파티 액션은 커밋 SHA로 고정해. — 직접 소유하지 않은 액션은 태그에만 의존하면 안 돼.
  4. 클라우드 인증은 OIDC를 써. — AWS, GCP, Azure에 장기 키를 두지 마.
  5. 프로덕션 환경에 필수 리뷰어와 브랜치 정책을 적용해.
  6. 비밀값 스캐닝과 푸시 보호를 저장소에서 켜.
  7. 어느 곳에서든 pull_request_target과 PR head SHA 체크아웃을 같이 쓰지 마.
  8. Dependabot 버전 업데이트를 켜고 보안 패치는 자동으로 병합해.
  9. CodeQL 워크플로가 있고 매주 실행되어야 해.
  10. 비밀값 순환 절차를 문서화해. — 언제 할지(분기마다), 어떻게 할지(제공자에서 순환 후 저장소 업데이트), 그리고 최소 한 번은 테스트해 봐.

Code

셀프 감사 한 줄 — 각 워크플로가 선언하는 권한은?·bash
for f in .github/workflows/*.yml; do
  echo "== $f =="
  awk '/^permissions:/,/^[a-z]/ { print }' "$f" | head -10
  echo
done
# Workflows missing top-level permissions: block? They default to whatever
# the org permits. Add explicit permissions:read-all and re-run.

External links

Exercise

저장소 하나 골라 봐. 위 10개 항목 체크리스트를 점검해. 실패한 각 항목마다 이슈를 만들고 (아직 고치지는 마) security-hardening 태그를 달아. 이제 로드맵이 생겼어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.