GitHub AI Scan 사용법: PR 보안 검사 설정·비용과 안전한 검토

GitHub AI Scan for pull requests는 풀 리퀘스트(PR)에 포함된 변경 코드에서 보안 문제를 찾아 주는 AI 기반 코드 스캔 기능이다. 2026년 10월 15일 정식 출시됐으며, PHP·Shell/Bash·Terraform HCL·Dockerfile·JSP·Blazor처럼 CodeQL이 현재 직접 다루지 않는 언어와 프레임워크의 빈틈을 보완한다. 다만 결과는 어디까지나 검토 신호다. AI Scan 경고만으로 병합을 막을 수 없고 오탐도 가능하므로, “켜기”보다 “어떻게 검토하고 비용을 통제할지”가 더 중요하다.

이 글에서는 사용 조건, CodeQL과의 차이, 조직과 공개 저장소에서 켜는 순서, PR에서 결과를 읽는 법, 안전한 시험 운영 방법을 차례대로 정리한다. Read this guide in English.

AI Scan이 해결하는 문제

기존 코드 스캔은 규칙과 데이터 흐름 분석이 잘 갖춰진 언어에서 매우 강하다. 그러나 팀의 실제 저장소에는 배포 스크립트, 인프라 구성, 컨테이너 정의, 오래된 서버 템플릿처럼 분석 범위가 고르지 않은 파일도 함께 있다. AI Scan은 PR에 새로 들어온 변경분을 중심으로 이런 영역을 살펴보고, 위험 설명과 수정 제안을 PR 화면에 표시한다.

동작 조건은 세 가지다. 저장소에서 코드 스캔이 활성화돼 있어야 하고, AI Scan 설정이 켜져 있어야 하며, 포크나 Dependabot이 만든 PR이 아닌 적격 PR에 지원 대상 변경이 있어야 한다. PR을 만들거나 새 커밋을 푸시하면 자동으로 다시 실행된다. CodeQL 기본 설정이 반드시 필요한 것은 아니며, CodeQL 분석이 실패하거나 대기 중이어도 AI Scan은 독립적으로 실행될 수 있다.

구분AI ScanCodeQL
주요 범위PR의 변경 코드, CodeQL 미지원 영역 보완지원 언어의 정적 분석과 데이터 흐름
결과 위치PR의 Conversation·Files changedPR 및 저장소 Security의 코드 스캔 경고
과거 전체 저장소지원하지 않음설정에 따라 분석 가능
병합 차단현재 규칙 집합의 필수 검사로 사용 불가구성에 따라 정책에 활용 가능
GitHub 풀 리퀘스트에서 AI Scan 보안 경고와 수정 제안이 표시된 공식 화면
PR 변경 코드 옆에 AI 표시, 위험 설명, 수정 제안이 나타나는 공식 예시 화면. 출처: GitHub Changelog, 2026-10-18 확인.

사용할 수 있는 저장소와 비용부터 확인하기

공개 저장소는 조직 소유와 개인 계정 소유 모두 사용할 수 있다. 비공개·내부 저장소는 조직이 소유하고 GitHub Code Security 또는 GitHub Advanced Security를 사용해야 한다. 개인 계정의 비공개 저장소와 관리형 사용자 계정의 개인 네임스페이스는 대상이 아니다. 별도의 GitHub Copilot 라이선스는 필요하지 않다.

하지만 “Copilot 좌석이 필요 없다”와 “비용이 전혀 없다”는 같은 말이 아니다. AI Scan은 Code Security AI Credits를 사용하며, 적격 PR이 실제로 스캔될 때 사용량이 발생한다. 결제 계정에 포함된 AI 크레딧이 있으면 먼저 차감되고, 이후에는 설정된 예산에 따라 종량 사용이 이어질 수 있다. 하드 예산으로 사용 가능 크레딧이 막히면 새 결과가 생성되지 않으며, 예산을 늘리거나 다음 결제 주기가 시작돼야 스캔이 재개된다.

따라서 조직 전체에 바로 켜기 전에 결제 담당자와 함께 포함 크레딧, Code Security AI Credits 예산, 제한 도달 시 동작을 확인하는 편이 안전하다. 공개 저장소도 AI 기능 사용량 자체는 크레딧 계산 대상이 될 수 있다.

조직에서 AI Scan 켜는 순서

  1. 기업 정책 확인: Enterprise를 사용한다면 소유자가 먼저 AI Scan을 허용해야 한다. 기본 정책은 “Not allowed”이며, 허용만 해도 자동 활성화되지는 않는다.
  2. 조직 설정 열기: 프로필 사진 → Organizations → 대상 조직의 Settings로 이동한다.
  3. 글로벌 보안 설정 이동: 왼쪽의 Security에서 Advanced Security를 펼치고 Global settings를 선택한다.
  4. AI Scan 활성화: Code scanning 영역의 AI Scan을 선택한다. 이 설정은 코드 스캔이 켜진 적격 저장소에 즉시 상속된다.
  5. 저장소별 예외 처리: 저장소 관리자는 조직 설정이 켜진 경우 개별 저장소에서 제외할 수 있다. 반대로 조직 설정이 꺼져 있으면 저장소에서 임의로 켤 수 없다.

개인 계정 소유의 공개 저장소는 저장소 설정의 Code scanning 아래에서 AI Scan for pull requests 토글을 직접 켜거나 끈다. 모델을 고르는 단계는 없다. 설정 뒤에는 Security overview의 Coverage 화면에서 실제 적용 상태가 enabled인지 확인한다.

첫 시험 PR을 설계하는 방법

운영 코드 전체에 곧바로 적용하기보다 작고 검증 가능한 PR로 시작하는 것이 좋다. 예를 들어 테스트용 Dockerfile에서 루트 사용자 실행이나 고정되지 않은 이미지 태그를 검토하거나, Terraform에서 과도하게 열린 네트워크 규칙을 변경하거나, Bash 스크립트에서 외부 입력을 따옴표 없이 명령에 연결하는 부분을 수정하는 식이다. 일부러 실제 비밀키를 넣거나 취약 코드를 기본 브랜치에 병합해서는 안 된다.

  1. 지원 대상 파일이 들어 있는 별도 브랜치를 만든다.
  2. 검토하기 쉬운 한 가지 보안 관련 변경만 포함한 PR을 연다.
  3. Conversation과 Files changed 탭에서 AI 표지가 붙은 결과를 찾는다.
  4. 설명된 공격 경로가 실제 입력과 실행 흐름에 맞는지 확인한다.
  5. 제안 수정이 있더라도 코드 리뷰, 테스트, 최소 권한 원칙을 거쳐 적용한다.
  6. 새 커밋을 푸시한 뒤 결과가 해소되는지 다시 확인한다.

아무 결과도 없을 때는 “안전함이 증명됐다”고 해석하지 않는다. 먼저 코드 스캔 활성화, 조직 상속 상태, 지원 언어, 포크·Dependabot PR 여부, AI 크레딧 예산을 순서대로 확인한다. 결과가 늦게 보이는 경우 CodeQL과 AI Scan이 서로 다른 시점에 완료될 수 있으므로 두 분석이 모두 끝났는지도 살핀다.

경고를 검토할 때 보는 네 가지 기준

1. 사용자 입력이 실제 위험 지점까지 도달하는가

문자열 삽입, 경로 조작, SSRF처럼 입력 흐름이 핵심인 문제는 값의 출처와 검증 단계를 확인해야 한다. 예제 코드 모양이 비슷하다는 이유만으로 취약하다고 단정하지 않는다.

2. 제안 수정이 기능과 배포 환경을 보존하는가

셸 인자를 무조건 삭제하거나 네트워크 규칙을 지나치게 좁히면 운영 기능이 깨질 수 있다. 수정안은 단위 테스트, 통합 테스트, 인프라 계획 결과와 함께 검토한다.

3. 비밀정보나 내부 자료가 피드백에 섞이지 않는가

오탐 피드백을 남길 때 고객 데이터, 토큰, 내부 장애 정보를 댓글에 복사하지 않는다. 필요한 최소 맥락만 제공하고 민감 값은 제거한다.

4. AI Scan을 필수 병합 게이트로 오해하지 않는가

현재 AI Scan 결과는 advisory이며 Code scanning 검사를 실패시키지 않는다. 브랜치 보호, 테스트, 사람의 보안 리뷰, CodeQL과 비밀 스캔을 대체하는 장치가 아니다.

팀에 단계적으로 적용하는 세 가지 예시

예시 A: Terraform 변경 사전 검토

인프라 팀은 인터넷 공개 범위, 암호화, 로그 설정이 바뀌는 PR만 먼저 대상으로 삼을 수 있다. AI 경고를 Terraform plan과 대조하고, 실제 리소스 정책이 더 엄격한지 확인한다. 산출물은 “수정함·위험 수용·오탐” 중 하나로 기록한 짧은 검토 메모다.

예시 B: 배포 스크립트와 Dockerfile 점검

플랫폼 팀은 Shell과 Dockerfile 변경이 포함된 PR을 작은 저장소 몇 곳에서 시험한다. 명령 삽입, 검증되지 않은 다운로드, 고정되지 않은 이미지나 패키지 같은 공급망 위험을 중심으로 본다. 자동 수정은 바로 병합하지 않고 빌드 재현성과 최소 권한을 확인한다.

예시 C: PHP 레거시 서비스의 PR 보완

CodeQL 지원 범위 밖에 있던 PHP 서비스에서는 사용자 입력이 SQL·HTML·파일 경로로 이어지는 변경부터 검토한다. AI Scan 결과를 기존 정적 분석기와 비교해 중복, 새로 발견된 범주, 오탐을 구분하면 도입 가치와 비용을 판단하기 쉽다.

GitHub Security overview에서 AI Scan 결과와 자동 수정 제안 지표를 보여 주는 공식 화면
조직 단위로 AI Scan 결과, 해결 추세, 수정 제안 적용을 확인하는 공식 Security overview 화면. 출처: GitHub Changelog, 2026-10-18 확인.

운영 체크리스트

  • 공개·비공개 여부와 소유 계정에 따른 사용 조건을 확인했다.
  • Code Security AI Credits 예산과 하드 제한을 설정했다.
  • 코드 스캔과 AI Scan의 실제 적용 상태를 Coverage에서 확인했다.
  • 초기 대상 저장소와 지원 언어를 좁혀 시험했다.
  • AI 경고를 사람의 검토와 테스트 없이 자동 병합하지 않는다.
  • 포크·Dependabot PR, 전체 저장소 과거 스캔, 병합 차단이 지원되지 않는다는 점을 문서화했다.
  • 오탐·수정률·크레딧 사용량을 일정 기간 측정한 뒤 확대 여부를 결정한다.

정리

GitHub AI Scan은 CodeQL을 대체하는 도구가 아니라, PR에서 아직 분석이 약했던 언어와 구성 파일의 보안 신호를 추가하는 보완 계층이다. 가장 안전한 도입 순서는 자격과 예산 확인, 소수 저장소 활성화, 작은 시험 PR, 사람이 검증하는 수정 흐름, 조직 지표 검토다. 특히 결과가 병합을 막지 않고 오탐이 가능하다는 한계를 팀 규칙에 명시해야 “AI가 봤으니 안전하다”는 잘못된 확신을 피할 수 있다.

공식 자료

자료 확인일: 2026년 10월 18일

댓글