Codex use case
CI에서 보안 검사 자동화하기
pull request나 main 브랜치의 커밋을 검사하거나 일정에 따라 리포지터리를 검사하세요.
CI 파이프라인에 Codex Security CLI를 추가하세요. 검사 시점과 검토할 코드를 선택하고, 발견된 보안 이슈와 검사 범위를 기록해 보관하세요. 검사 결과를 배포 과정에 어떻게 반영할지도 정하세요.
Best for
- pull request나 병합 요청에 보안 검사를 추가하려는 팀
- 변경 사항이 반영된 후 기본 브랜치를 검사하는 유지관리자
- 리포지터리 보안 평가를 정기적으로 실행하려는 보안 팀
Contents
CI에서 보안 검사 자동화하기
pull request나 main 브랜치의 커밋을 검사하거나 일정에 따라 리포지터리를 검사하세요.
CI 파이프라인에 Codex Security CLI를 추가하세요. 검사 시점과 검토할 코드를 선택하고, 발견된 보안 이슈와 검사 범위를 기록해 보관하세요. 검사 결과를 배포 과정에 어떻게 반영할지도 정하세요.
CI 파이프라인에 Codex Security CLI를 추가하세요. 검사 시점과 검토할 코드를 선택하고, 발견된 보안 이슈와 검사 범위를 기록해 보관하세요. 검사 결과를 배포 과정에 어떻게 반영할지도 정하세요.
Best for
- pull request나 병합 요청에 보안 검사를 추가하려는 팀
- 변경 사항이 반영된 후 기본 브랜치를 검사하는 유지관리자
- 리포지터리 보안 평가를 정기적으로 실행하려는 보안 팀
개발 워크플로우에 보안 스캔을 추가하세요. pull request가 올라올 때, 변경 사항이 기본 브랜치에 반영된 후 또는 정해진 일정에 따라 Codex Security를 실행할 수 있습니다. 각 트리거에 맞게 스캔 범위를 정하고, 발견한 보안 이슈와 실제로 스캔한 범위를 기록해 팀이 매번 같은 절차로 결과를 검토할 수 있게 하세요.
스캔 시점 선택하기
팀의 워크플로우에 맞는 트리거 하나로 시작하세요. 스캔에 걸리는 시간과 비용, 팀이 보안 이슈를 어떻게 활용하는지 파악한 뒤 다른 트리거를 추가하세요.
| 실행 시점 | 권장 범위 | 검토 대상 |
|---|---|---|
| 정기 실행 | 리포지터리 전체, 필요에 따라 심층 스캔 사용 | 일정한 주기로 코드베이스 전반을 검토합니다. |
| main에 커밋을 푸시할 때 | 푸시한 커밋 기준으로 리포지터리 전체 | 변경 사항이 기본 브랜치에 통합된 후의 코드를 검토합니다. |
| pull request 또는 병합 요청이 올라올 때 | 공통 조상 커밋(merge base)과 제안된 커밋 사이의 변경 사항 | 변경으로 인해 새로운 보안 문제가 생기거나 기존 문제가 재발할 가능성이 있는지 병합 전에 검토합니다. |
리포지터리의 기본 브랜치 이름이 main과 다르면 실제 기본 브랜치를 사용하세요. 트리거와 스캔 범위를 모두 설정하세요. pull request의 diff를 스캔하면 해당 변경 사항만 검사합니다. 변경 사항이 main에 반영된 후에 실행하는 스캔으로는 이미 병합된 pull request를 차단할 수 없습니다.
시작하기 전에
보안 평가 권한이 있는 리포지터리, 해당 리포지터리의 CI 파이프라인과 시크릿을 설정할 권한, Codex Security에 액세스할 수 있는 OpenAI API 키가 필요합니다. CLI 빠른 시작에서 액세스 및 설정 요건을 확인하세요.
CI 요구 사항을 충족하는 신뢰할 수 있는 러너를 사용하세요. 스캔은 러너의 로컬 권한으로 실행됩니다. 스캔 작업에 불필요한 자격 증명을 제공하지 마세요. 포크에서 올라온 pull request나 그 밖의 신뢰할 수 없는 코드를 처리할 때는 플랫폼의 제한 사항을 따르세요.
파이프라인 설정하기
-
파이프라인에 Codex Security 추가하기
사용 중인 CI 플랫폼에 맞는 예제를 선택하세요. 예제에 따라 Codex Security CLI를 설치하고 CI 제공업체의 시크릿 저장소를 통해 API 키를 제공하세요.
플랫폼별로 다음 가이드를 참고하세요.
- GitHub Actions: pull request 워크플로우를 사용해 제안된 변경 사항을 스캔하고 결과를 보관하세요.
- GitLab CI/CD: 병합 요청 스캔, 기본 브랜치 스캔, 정기 스캔을 설정하려면 파이프라인 가이드를 참고하세요. 가이드에서 파이프라인을 다운로드하고 어떤 옵션을 활성화해야 하는지 확인할 수 있습니다.
- 기타 CI 플랫폼: CI에서 Codex Security 실행하기의 스캔 및 내보내기 명령어를 사용 중인 플랫폼의 트리거, 시크릿 저장소, 코드 체크아웃 방식, 아티팩트 처리 방식에 맞게 조정하세요.
-
트리거와 스캔 범위 설정하기
변경 사항이
main에 반영되면 푸시된 커밋을 기준으로 리포지터리를 스캔하세요. 선택한 브랜치에서도 정기적으로 스캔을 실행하세요. 주 1회로 시작해 리포지터리의 변경 빈도, 스캔 소요 시간, 비용에 따라 주기를 조정하세요.pull request나 병합 요청의 경우 베이스 브랜치와 헤드 브랜치의 커밋 이력을 가져온 뒤, 두 브랜치의 공통 조상 커밋부터 헤드 커밋까지의 diff를 스캔하세요.
각 작업에서 의도한 코드를 스캔하도록 설정하세요. 정기 스캔이나
main에 커밋을 푸시할 때는 리포지터리 전체를, pull request에서는 제안된 변경 사항을 스캔하세요. 플랫폼별 예제에 따라 스캔을 설정하세요.스캔 범위와 빈도에 맞게 예산을 설정하세요. 리포지터리 전체를 스캔하면 diff만 스캔할 때보다 시간과 비용이 더 들 수 있습니다.
--max-cost는 예상 비용을 기준으로 한 한도이며 실제 지출의 상한을 보장하지 않습니다. 이 한도에 도달하면 대상 코드의 일부가 스캔되지 않을 수 있습니다. -
파이프라인 실행 및 결과 검토하기
팀의 일반적인 검토 절차에 따라 파이프라인 변경 사항을 제출한 뒤 스캔을 실행하세요. 실행 내역과
scan-manifest.json에서 대상 리비전과 스캔 범위를 확인하세요.저장된 보고서에서 보안 이슈와 이를 뒷받침하는 근거를 검토하세요. 보고된 보안 이슈가 없어도
coverage.json에서 스캔이 완료되지 않았거나 보류된 영역을 확인하세요. 스캔 빈도를 높이거나 대상 리포지터리를 늘리기 전에 실행 시간과 비용을 검토하세요.보고서를 CI 아티팩트로 보관하세요. 아티팩트에 포함된 소스 코드와 근거 자료를 고려해 접근 권한과 보관 기간을 설정하세요.
플랫폼의 보안 인터페이스에서 결과를 확인하려면 보안 이슈를 기록하는 구조화된 형식인 SARIF로 결과를 내보낼 수 있습니다. 지원 버전, 필요한 권한, 라이선스 요건은 플랫폼 가이드에서 확인하세요.
-
보안 이슈가 발견되면 병합을 차단할지 결정하기
처음에는 병합을 차단하지 않고 보안 이슈를 검토하세요. 팀이 결과에 익숙해지면 보안 검사를 통과한 pull request만 병합하도록 설정할 수 있습니다. 예를 들어 스캔에서 심각도가 ‘높음’ 또는 ‘치명적’인 취약점이 발견되면 병합을 차단할 수 있습니다.
스캔이 완료되었는지, 어떤 코드가 스캔되었는지 항상 확인하세요. 스캔이 실패했거나 일부 코드를 건너뛰었다면 보고된 보안 이슈가 없어도 원인을 살펴보세요.
자세한 설정 방법은 심각도 기준 설정 및 스캔 결과 해석하기를 참고하세요.
-
보안 이슈 후속 조치하기
팀의 일반적인 절차에 따라 보안 이슈를 조사하거나 해결할 담당자를 지정하세요. 다른 개발자도 조사할 수 있도록 스캔한 커밋, 영향을 받는 코드, 이슈를 뒷받침하는 근거를 함께 제공하세요.
보안 이슈를 종료하기 전에 수정 사항을 검증하고, 스캔을 마치지 못한 영역은 후속 스캔에서 검사하세요.