끌어오기 요청에 대한 AI 스캔은 끌어오기 요청에서 실행되며 CodeQL을 보완하는 AI 기반 검사 엔진을 사용하여 추가 보안 결과를 생성합니다. 경고와 달리 CodeQL AI 검사 결과는 끌어오기 요청에서만 사용할 수 있으며 리포지토리의 보안 보기에 백로그 경고로 표시되지 않습니다.
AI Scan은 별도의 검사 도구 또는 빌드 구성 없이 code scanning 적용 범위를 확장합니다.
Availability
가용성은 리포지토리의 소유자와 해당 가시성에 따라 달라집니다.
| 리포지토리 소유자 | 가시성 | 가용성 및 요구 조건 |
|---|---|---|
| Organization | Public | 활성 커밋자 라이선스 없이 사용 가능 |
| Organization | 비공개 또는 내부 | |
| GitHub Code Security 또는 GitHub Advanced Security에서 사용 가능 | ||
| 개인 계정 | Public | 사용 가능 |
| 개인 계정 | 비공개 | 사용할 수 없음 |
끌어오기 요청용 AI Scan은 관리형 사용자 계정의 개인 네임스페이스에 있는 리포지토리에서는 사용할 수 없으며, 리포지토리에서 code scanning이 활성화되어 있더라도 마찬가지입니다.
GitHub Copilot 라이선스가 없어도 AI Scan을 사용할 수 있습니다.
Billing
AI 검사 사용량은 활성 커미터 라이선스와는 별개이며 Code Security AI 크레딧 SKU로 보고됩니다. 사용량은 적격 풀 리퀘스트를 검사할 때만 시작됩니다.
조직 소유 리포지토리의 경우 사용량은 조직의 청구를 담당하는 계정에 청구됩니다.
개인 계정이 소유한 공용 리포지토리의 경우 리포지토리 소유자가 GitHub Copilot 조직 또는 기업에서 제공하는 라이선스가 없는 한 해당 개인 계정으로 사용 요금이 청구됩니다. 이 경우 사용량은 라이선스를 제공하는 조직 또는 기업에 청구됩니다.
청구 계정이 AI credits 자격을 통해 포함된 GitHub Copilot를 받는 경우 AI Scan은 먼저 해당 크레딧을 사용합니다. 포함된 크레딧이 소진되거나 계정에 포함된 크레딧이 없는 경우, 사용량에 따라 과금되며 해당 예산의 적용을 받습니다. 엄격한 예산 한도로 인해 사용할 수 있는 Code Security AI 크레딧이 없으면 AI Scan에서 결과를 생성할 수 없습니다. 관리자가 제한 예산을 늘리거나 새 청구 주기가 시작되면 검사가 다시 시작됩니다.
청구 모델에 대한 자세한 내용은 GitHub Advanced Security 라이선스 결제을 참조하세요.
AI Scan 작동 방식
AI 스캔은 다음 조건이 모두 충족되면 자동으로 실행됩니다.
- Code scanning 는 리포지토리에 대해 사용하도록 설정되어 있습니다.
- 리포지토리의 풀 요청에 대한 AI Scan 설정이 사용 설정되어 있습니다.
- 포크에서 온 것이 아니거나 Dependabot에 의해 생성된 끌어오기 요청에는 CodeQL에서 다루지 않는 지원되는 언어 또는 프레임워크의 변경 내용이 포함됩니다.
검사는 끌어오기 요청을 만들 때와 새 커밋 CodeQL 이후에 실행되며, CodeQL의 경우와 마찬가지입니다.
AI 스캔에는 CodeQL 기본 설정이 필요하지 않으며 CodeQL 분석 상태에 의존하지 않습니다. 분석이 실패하거나 대기 중 상태이면 CodeQL AI 스캔이 계속 실행됩니다.
결과가 발견되면 끌어오기 요청에 게시됩니다. CodeQL 검사를 완료하는 데 시간이 더 오래 걸리는 경우 결과가 나타나기 전에 CodeQL AI 검사 결과를 표시하거나 그 반대의 경우도 마찬가지입니다.
조사 결과는 참고용입니다. ** Code scanning ** 검사를 실패하지 않으며 규칙 집합 요구 사항을 통해 끌어오기 요청 병합을 차단할 수 없습니다. 워크플로를 중단하지 않고 코드 보안을 개선할 수 있는 위치에 대한 신호를 제공합니다.
검사 엔진은 빌드 시스템을 요구하지 않고 풀 리퀘스트 코드를 분석하고 코드 검색을 사용하여 문제를 플래그 지정하기 전에 리포지토리에서 더 많은 컨텍스트를 수집할 수 있습니다. 사용자 지정 지침 파일(예: /.github/copilot-instructions.md 또는 /CLAUDE.md.)이 아닌 특수 프롬프트를 사용합니다.
끌어오기 요청에 AI 검사 결과 표시 방법
AI Scan 결과는 풀 리퀘스트의 Conversation 탭과 CodeQL 탭에서 **** 경고와 함께 표시됩니다. 각 탐지 항목에는 CodeQL 경고와 구분할 수 있도록 "AI" 표시가 붙습니다.
각 발견은 보안 문제를 설명하고 위험을 설명합니다. 대부분의 발견 사항에는 제안된 해결 방안도 포함됩니다. 가능한 경우 Copilot Autofix는 CodeQL 경고에 대해서처럼 코드 변경을 권장합니다.
좋아요 또는 싫어요 컨트롤을 사용하여 피드백을 제공하고 감지 품질을 향상시킬 수 있습니다.
Limitations
- AI Scan은 끌어오기 요청만 분석합니다. 전체 리포지토리 검사는 지원되지 않습니다.
- AI 검사 결과를 규칙 집합에 사용하여 병합 요구 사항을 적용할 수는 없습니다.
- AI Scan은 포크에서 온 풀 리퀘스트 또는 Dependabot가 생성한 풀 리퀘스트에서는 실행되지 않습니다.
- 기능이 진화함에 따라 검색 범주 및 지원되는 언어가 변경 될 수 있습니다.
- 다른 AI 기반 도구와 마찬가지로 AI Scan 결과에는 가양성이 포함될 수 있습니다. 피드백 메커니즘을 사용하여 부정확한 결과를 보고합니다.
지원되는 언어
CodeQL가 현재 지원하지 않는 선택한 언어 및 프레임워크를 AI Scan이 지원합니다. 예를 들어 PHP, Shell/Bash, HCL(Terraform 구성), Dockerfiles, Java JSP 및 C#용 Blazor가 있습니다.
언어를 지원하는지 확인 CodeQL 하려면 CodeQL을 사용하여 코드 검색을 참조하세요.
감지 범주
AI Scan은 현재 결과를 다음 범주로 분류합니다. 기능이 진화함에 따라 적용 범위가 변경 될 수 있습니다.
- 문자열 인젝션 — 이스케이프 처리 또는 새니타이징이 누락되었거나 올바르지 않은, 문자열로 구성된 안전하지 않은 SQL, HTML, 셸, JSON 또는 YAML.
- 약한 암호화 — 약한 알고리즘, 작은 키, 안전하지 않은 임의성, 누락된 암호화 또는 약한 암호 해시입니다.
- 취약한 액세스 제어 — 경로 순회, CSRF 허점 또는 사용자 유도형 오픈 리디렉션.
- 중요한 데이터 노출 - 적절한 보호 없이 저장, 기록 또는 전송된 비밀, 토큰, 암호 또는 스택 추적입니다.
- 보안 구성 오류 - 보안 컨트롤을 사용하지 않도록 설정하거나 디버그 기능을 사용하도록 설정하는 것과 같은 위험한 기본값 또는 설정입니다.
- 인증 실패 - TLS 또는 유효성 검사 누락, 안전하지 않은 인증 흐름 또는 누락된 속도 제한
- 데이터 무결성 오류 - 안전하지 않은 역직렬화, 중요한 작업에 대한 HTTP, 프로토타입 오염 또는 신뢰할 수 없는 콘텐츠 실행
- SSRF(서버 쪽 요청 위조) - 서버는 공격자가 제어하는 URL, 호스트 또는 프로토콜을 가져옵니다.
- 공급망 위험 — 고정되지 않은 타사 작업, 패키지 또는 이미지 또는 무결성 검사 없이 다운로드.
AI 스캔 활성화
조직에 대한 풀 리퀘스트에서 AI 검사를 사용하도록 설정하기 전에 리포지토리 자격을 확인하고, 청구 계정의 포함된 AI credits을 검토하고, 종량제 사용량에 대한 예산을 구성합니다.
조직 설정을 사용하도록 설정하면 code scanning이 활성화된 모든 적격 리포지토리에서 AI 검사가 즉시 활성화됩니다. 그러면 리포지토리 관리자는 옵트아웃할 수 있지만, 적격 끌어오기 요청은 관리자가 옵트아웃하기 전에 코드 보안 AI 크레딧을 사용할 수 있습니다.
AI 스캔을 사용하도록 설정하기 위해 모델을 선택할 필요가 없습니다.
- 엔터프라이즈: 엔터프라이즈 소유자는 조직이 AI Scan을 사용하도록 설정하는 것을 허용하거나 방지할 수 있습니다. 정책은 기본적으로 "허용되지 않음"으로 설정됩니다. AI 스캔을 허용해도 자동으로 활성화되지는 않습니다. 엔터프라이즈에 대한 코드 보안 및 분석을 위한 정책 적용을(를) 참조하세요.
- 조직: 조직 소유자 및 보안 관리자는 적격 리포지토리에 대한 풀 요청에 대해 AI Scan을 사용하도록 설정할 수 있습니다. 리포지토리는 조직 설정을 상속합니다. 조직에 대한 글로벌 보안 설정 구성을(를) 참조하세요.
- 조직 소유 리포지토리: 조직이 AI Scan을 사용하도록 설정한 경우 리포지토리에 대한 관리자 액세스 권한이 있는 사용자는 옵트아웃할 수 있습니다. 조직 설정이 비활성화된 경우 옵트인할 수 없습니다.
- 개인 계정이 소유한 공용 리포지토리: 리포지토리에 대한 관리자 액세스 권한이 있는 사람은 "****" 아래의 Code scanning 토글을 사용하여 AI Scan을 직접 활성화하거나 비활성화할 수 있습니다.
조직 소유자 및 보안 관리자는 보안 개요의 "적용 범위" 보기에서 끌어오기 요청에 대한 AI 검사의 유효 사용 상태를 검토할 수 있습니다. 보안 기능 채택 평가을(를) 참조하세요.
보안 개요에 액세스할 수 있는 사용자는 조직 또는 기업 전체에서 AI 스캔 결과를 모니터링할 수도 있습니다.
- 개요 대시보드의 예방 탭은 AI 스캔 결과의 추세, 해결된 결과 수 및 개발자가 Copilot Autofix 제안을 수락한 빈도를 보여 줍니다.
- "끌어오기 요청 시 코드 스캔" 보고서의 AI 스캔 탭은 시간에 따른 탐지 결과, Copilot Autofix 제안의 가용성 및 제안이 있는 탐지 결과와 없는 탐지 결과의 결과를 보여 줍니다.
자세한 내용은 풀 리퀘스트에 대한 코드 검사을(를) 참조하세요.
REST API를 사용하여 조직 또는 리포지 ai-scan 토리 설정을 관리할 수 있습니다.
코드 검색에 대한 REST API 엔드포인트을(를) 참조하세요.