A.8.4
소스코드 접근
기술적 통제확인사항 6증적 6사례 6
통제 목적
소스코드와 빌드 도구, 라이브러리, 파이프라인에 대한 읽기와 변경 권한을 업무 필요에 맞춰 관리하는 통제입니다. 무단 기능 삽입, 악의적 변경 및 실수로 인한 수정을 예방하고 변경 이력을 추적하는 것이 핵심입니다. 기밀성이 필요한 소스는 공개를 제한하고, 의도적인 오픈소스 공개는 승인된 정책에 따라 관리합니다. 공개 여부와 관계없이 쓰기 권한과 비밀정보를 보호하며, 실행에 소스가 필요한 환경에서는 필요한 파일을 보호된 구성으로 배포합니다.
주요 확인사항
- 소스코드 저장소(형상관리/버전관리 시스템)에 대한 접근 권한을 업무상 필요에 따라 최소권한으로 부여하고, 읽기/쓰기 권한을 구분하여 관리하는가?
- 저장소 접근을 개인 식별 계정으로 인증하고, 접근/커밋/병합/권한변경 이력이 감사 가능하도록 로그를 남기는가?
- 운영 시스템에 원본 소스코드가 불필요하게 존재하지 않도록 하고, 개발 도구, 라이브러리, 빌드 파이프라인 자격증명에 대한 접근도 통제하는가?
- 소스코드 변경이 코드리뷰/병합 승인 등 검토 절차를 거쳐 반영되며, 승인되지 않은 직접 변경이 차단되는가?
- 외부 개발자/협력업체가 소스코드에 접근하는 경우 접근 범위 및 기간을 제한하고 계약/보안서약으로 통제하는가?
- 접근권한을 주기적으로 검토하고, 퇴직/직무변경 시 즉시 회수하는가?
이행 지침
- 소스코드는 인가된 형상관리(버전관리) 시스템에서 중앙 관리하고, 저장소/브랜치 단위로 읽기/쓰기 권한을 역할 기반으로 분리합니다.
- 저장소에는 개인 식별 가능한 계정과 위험에 맞는 인증을 적용합니다. SSO를 사용하더라도 고위험 접근에 적용하는 MFA와 인증 정책을 별도로 확인하고, 접근/커밋/병합/권한 변경을 추적할 수 있는 기록을 수집합니다.
- 운영 환경에는 실행에 필요한 산출물만 배포하고 불필요한 저장소 메타데이터, 개발 자료 및 비밀정보를 제거합니다. 인터프리터 등 실행에 필요한 소스는 유지하되 비공개 파일의 외부 열람과 무단 수정을 제한합니다. 빌드 도구와 파이프라인 자격증명 접근도 최소화합니다.
- 변경은 코드리뷰 및 병합 승인, 보호 브랜치(강제 푸시 금지 등) 정책으로 통제하고, 승인 없는 직접 변경을 차단합니다.
- 소스코드에 자격증명/키가 하드코딩되어 유입되지 않도록 시크릿 스캐닝 및 커밋 전 점검을 적용합니다.
- 외부 인력의 접근은 필요한 저장소로 한정하고, 접근 기간 종료 및 계약 만료 시 즉시 권한을 회수하며, 권한 목록을 주기적으로 검토합니다.
증적자료
- 형상관리 시스템 접근 권한 목록 및 역할/권한 설정 화면
- 저장소 접근/커밋/병합/권한변경 로그
- 코드리뷰 및 병합 승인 기록, 보호 브랜치 정책 설정
- 소스코드 접근권한 정기 검토 기록 및 회수 이력
- 외부 개발자 대상 접근통제 계약/보안서약 및 접근 범위 지정 근거
- 시크릿 스캐닝/커밋 전 점검 수행 결과
부적합 사례
- 소스코드 저장소에 개발자 전원이 관리자/쓰기 권한을 보유하는 등 최소권한 원칙이 적용되지 않은 경우
- 공용 계정으로 저장소에 접근하여 변경 주체를 추적할 수 없는 경우
- 운영 서버의 불필요한 소스/저장소 자료 또는 비공개 실행 파일에 대한 접근 제한이 없어 무단 열람/변경이 가능한 경우
- 코드리뷰/병합 승인 없이 보호 브랜치에 직접 변경(강제 푸시 등)이 가능한 경우
- 퇴직/직무변경자에 대한 저장소 접근권한이 회수되지 않고 유지된 경우
- 소스코드에 자격증명/키가 하드코딩된 채 커밋되었으나 점검되지 않은 경우