You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Actions 참조 SHA 고정 · secret scanning · push protection 적용 #847
저장소 설정 쪽은 아직 그대로다 — allowed_actions: "all", sha_pinning_required: false. 워크플로는 이미 전부 호환이지만 설정이 그것을 강제하지 않아, 지금도 누가 @main 참조를 넣으면 그대로 통과한다. 허용 정책 제한과 unpinned 차단 fixture 확인까지 #1538 이 이어받는다.
남은 4·5번은 코드가 아니라 저장소 설정 변경이라 여기서 손대지 않았습니다. 특히 5번은 허용 목록에서 action 하나가 빠지면 그 순간 저장소 전체 CI 가 멈춥니다 — 적용 전에 현행 uses 인벤토리를 그대로 허용 목록으로 옮기고, Copilot dynamic workflow 처럼 목록에 안 잡히는 경로가 있는지 확인하는 절차가 필요합니다. 완료 조건도 「기존 automation 이 깨지지 않는다」를 요구하고 있어, 되돌리기 쉬운 시점에 사람이 지켜보며 켜는 편이 맞다고 판단했습니다.
본문을 끝난 범위만 남기도록 고쳐 닫는다. 워크플로 참조 고정(외부 uses 전량 SHA·floating 0건·composite action 포함)과 secret scanning·push protection 활성화는 실측으로 확인했고, secret scanning alert 는 0건이라 회전 대상이 없다.
남은 것은 저장소 설정 쪽 하나다 — allowed_actions: "all" · sha_pinning_required: false. #1538 이 이어받는다.
Activity
security(ci): 워밍 워크플로의 액션도 commit SHA 로 고정
1hyok commentedon Aug 27, 2026
2026-08-27 후속 확인
develop의 외부 Action 참조는 모두 40자리 SHA로 고정돼 있다.main에는 12개 워크플로에 미고정 참조 30개가 남아 있어, 저장소sha_pinning_required를 켜면mainpush 기반 Firebase 릴리스가 차단된다.false다.main전용 후속 PR에서 워크플로 로직과 Action major는 유지한 채 참조만 immutable SHA로 고정한다. 이슈는 해당 PR 머지 후sha_pinning_required=true재조회까지 열어 둔다.[-]security(ci): Actions SHA 고정·허용 정책·secret scanning·push protection 적용[/-][+]Actions SHA 고정·허용 정책·secret scanning·push protection 적용[/+]1hyok commentedon Aug 29, 2026
이 이슈의 남은 범위
이 이슈를 열어 둔 채로 4·5번만 남긴다 — 별도 이슈로 쪼개지 않는다. 코드 몫이 없고 남은 것이 이 이슈 범위표의 두 줄 그대로라, 여기가 추적 자리다. 켜는 판단과 실행은 저장소 admin 몫이다.
1hyok commentedon Aug 29, 2026
2026-08-30 실측 — 범위 7항목 중 5항목이 이미 충족돼 있습니다. 남은 것은 저장소 설정 2건뿐입니다.
.github/workflows/·.github/actions/전수 스캔에서 SHA 아닌uses:는 전부 로컬 참조(./.github/…)뿐 — 고정 대상인 외부 action 중 floating tag/branch 0건@masteraction 교체ScaCap/action-ktlint@master·dvdandroid/action-android-lint@master모두 남아 있지 않음.github/actions/까지 포함allowed_actions: "all"—selected-actions조회가 409 (All actions and workflows are allowed)secret_scanning: enabled,secret_scanning_push_protection: enabled대부분은 #1333(Actions hardening)이 끌고 온 것으로 보입니다.
남은 4·5번은 코드가 아니라 저장소 설정 변경이라 여기서 손대지 않았습니다. 특히 5번은 허용 목록에서 action 하나가 빠지면 그 순간 저장소 전체 CI 가 멈춥니다 — 적용 전에 현행
uses인벤토리를 그대로 허용 목록으로 옮기고, Copilot dynamic workflow 처럼 목록에 안 잡히는 경로가 있는지 확인하는 절차가 필요합니다. 완료 조건도 「기존 automation 이 깨지지 않는다」를 요구하고 있어, 되돌리기 쉬운 시점에 사람이 지켜보며 켜는 편이 맞다고 판단했습니다.1hyok commentedon Aug 29, 2026
실측 갱신 (2026-08-30,
origin/develop)범위 7개 중 넷이 이미 끝나 있다. 남은 것은 레포 설정 토글 둘뿐이라, 이 이슈에 남은 일이 코드 작업이 아니라는 점을 기록해 둔다.
끝난 것
.github/workflows+.github/actions의uses:22종 중 8종이 로컬 액션(./…), 나머지 14종 전부 40자리 SHA. floating tag·branch 0개@master액션 교체ScaCap/action-ktlint@master·dvdandroid/action-android-lint@master가 develop 에 없다.github/actions/*의 composite 까지 포함한 전수다repos/…실조회 —secret_scanning: enabled,secret_scanning_push_protection: enabled1·2·3 은 PR #1349(
ci/1333-actions-hardening)가 가져간 것으로 보인다.남은 것 — 레포 설정 두 개
allowed_actions가 아직all.selected로 좁히려면 허용 목록을 함께 정해야 한다둘 다 레포 관리자 권한이 필요한 설정 변경이고 코드 PR 로 닿지 않는다. 7(유효 secret 회전)은 그 다음이다.
완료 조건의 「unpinned action 과 test secret 패턴이 각각 정책에 의해 차단되는 것을 fixture 로 확인」은 4·5 를 켠 뒤라야 의미가 있다.
[-]Actions SHA 고정·허용 정책·secret scanning·push protection 적용[/-][+]Actions 참조 SHA 고정 · secret scanning · push protection 적용[/+]1hyok commentedon Aug 29, 2026
본문을 끝난 범위만 남기도록 고쳐 닫는다. 워크플로 참조 고정(외부
uses전량 SHA·floating 0건·composite action 포함)과 secret scanning·push protection 활성화는 실측으로 확인했고, secret scanning alert 는 0건이라 회전 대상이 없다.남은 것은 저장소 설정 쪽 하나다 —
allowed_actions: "all"·sha_pinning_required: false. #1538 이 이어받는다.