애플리케이션 카드란?
GitHub’s application and platform cards are intended to help you understand how our AI technology works, the choices application owners can make that influence application performance and behavior, and the importance of considering the whole application, including the technology, the people, and the environment. Application cards are created for AI applications and platform cards are created for AI platform services. These resources can support the development or deployment of your own applications and can be shared with users or stakeholders impacted by them.
As part of its commitment to responsible AI, GitHub adheres to Microsoft's six core principles: fairness, reliability and safety, privacy and security, inclusiveness, transparency, and accountability. These principles are embedded in the Responsible AI Standard, which guides teams in designing, building, and testing AI applications. Application and Platform Cards play a key role in operationalizing these principles by offering transparency around capabilities, intended uses, and limitations. For further insight, readers are encouraged to explore Microsoft’s Responsible AI Transparency Report and GitHub 약관.
1 - 개요
GitHub 보안 및 품질 플랫폼에는 개발자가 보안 취약성을 찾아서 수정하고, 유출된 비밀을 검색하고, 코드 품질을 개선하는 데 도움이 되는 몇 가지 AI 기반 기능이 포함되어 있습니다. 이 애플리케이션 카드는 다음과 같은 환경을 다룹니다.
-
**코드 스캔용 Copilot Autofix**: 풀 리퀘스트와 기본 분기의 CodeQL 경고에 대한 수정 제안을 자동으로 생성합니다. - 일반 비밀 검색: 모델을 사용하여 결정적 패턴 일치를 찾을 수 없는 소스 코드에서 구조화되지 않은 비밀을 식별합니다.
- 사용자 지정 패턴 정규식 생성기: AI를 사용하여 자연어 설명에서 사용자 지정 비밀 검사 패턴에 대한 정규식을 생성합니다.
- GitHub 코드 품질: 코드 품질 문제를 표시하고 끌어오기 요청 및 기본 분기에 대한 LLM 기반 수정 제안을 제공합니다.
Copilot Autofix는 사용자에게 새로운 보안 취약성의 도입을 방지하면서 코드 검색 경고를 수정하는 데 도움이 되는 대상 권장 사항을 제공하는 코드 검색의 확장입니다. 잠재적인 수정은 코드베이스의 데이터와 코드 검색 분석을 사용하여 LLM(대규모 언어 모델)에 의해 자동으로 생성됩니다. Copilot Autofix는 CodeQL 분석에 사용할 수 있으며 GitHub Copilot 구독이 필요하지 않습니다.
코드 검사 사용자는 끌어오기 요청에 대한 보안 경고를 이미 볼 수 있습니다. 그러나 개발자는 보안 코딩에 대한 교육이 거의 없는 경우가 많으므로 이러한 경고를 수정하려면 상당한 노력이 필요합니다. Copilot Autofix는 모범 사례에 대한 정보와 코드베이스의 세부 정보 및 경고를 결합하여 잠재적인 수정 사항을 제안하여 진입 장벽을 낮춥니다. 취약성에 대한 정보 검색을 시작하는 대신, 개발자는 코드베이스에 대한 잠재적 솔루션을 보여 주는 코드 제안으로 시작합니다. 개발자는 해당 잠재적인 수정 사항을 평가하여 코드베이스에 가장 적합한 솔루션인지 결정하고 의도한 동작을 유지 관리하는지 확인합니다.
비밀 검색의 일반 비밀 검색은 소스 코드 또는 기타 GitHub 표면에서 구조화되지 않은 비밀을 식별하고 경고를 생성하는 AI 기반 비밀 검색 확장입니다. GitHub 비밀 보호 및 GitHub 고급 보안 사용자는 소스 코드에 있는 파트너 또는 사용자 지정 패턴에 대한 비밀 검사 경고를 이미 받을 수 있지만 구조화되지 않은 비밀은 쉽게 검색할 수 없습니다. 비밀 정보 검색은 모델을 사용해 이러한 비밀 정보를 식별합니다. 발견이 감지되면 유지 관리 관리자 및 보안 관리자가 경고를 검토하고 필요한 경우 자격 증명을 제거하거나 수정을 구현할 수 있도록 경고가 비밀 검색 경고의 "일반" 목록(리포지토리, 조직 또는 엔터프라이즈의 보안 및 품질보안 탭 아래)에 표시됩니다. 일반 비밀 검색에는 GitHub Copilot 구독이 필요하지 않습니다.
비밀 검사의 사용자 지정 패턴 정규식 생성기를 사용하면 정규식에 대한 지식 없이 사용자 지정 비밀 검사 패턴을 정의할 수 있습니다. 사용자는 선택적 예제 문자열과 함께 검색하려는 항목에 대한 자연어 설명을 입력하고 생성기는 최대 3개의 후보 정규식을 생성합니다. 그런 다음, 이러한 패턴은 사용자 지정 패턴으로 배포되기 전에 시험 실행 메커니즘을 통해 유효성을 검사할 수 있습니다. 정규식 생성기에는 GitHub Copilot 구독이 필요하지 않습니다.
GitHub 코드 품질은 사용자가 실행 가능한 피드백을 표시하고 끌어오기 요청 및 기본 분기의 결과에 대한 자동 수정을 제공하여 코드 안정성, 유지 관리 효율성 및 전반적인 프로젝트 상태를 개선하는 데 도움이 됩니다. 코드 품질을 사용하도록 설정하면 두 가지 유형의 분석이 실행됩니다. CodeQL 품질 쿼리는 코드의 유지 관리 가능성, 안정성 또는 스타일 문제를 식별하고 LLM 기반 분석은 결정적 엔진이 찾을 수 있는 것 이상의 추가 인사이트를 제공합니다. 품질 문제가 감지되면 Copilot Autofix에서 관련 수정 사항을 제안합니다. 끌어오기 요청에서 결과는 봇이 남긴 github-code-quality 메모로 표시됩니다. 기본 분기의 LLM 기반 결과는 **** 표시됩니다.
GitHub Code Security AI 기능에 지원되는 기본 언어는 영어입니다.
2. 주요 용어
다음 목록에서는 GitHub Code Security AI 기능과 관련된 주요 용어집을 제공합니다.
- CodeQL: 소스 코드에서 보안 취약성을 식별하기 위한 GitHub 의미 체계 코드 분석 엔진입니다.
- Copilot 자동 수정: 코드 스캐닝 경고에 대한 수정 제안을 자동으로 생성하는 GitHub의 LLM 기반 기능입니다. Copilot Autofix는 CodeQL 분석에 사용할 수 있으며 GitHub Copilot 구독이 필요하지 않습니다.
- LLM(큰 언어 모델) : 자연어 및 코드를 생성, 분석 및 변환할 수 있는 대규모 텍스트 데이터 본문에서 학습된 신경망 유형입니다. Copilot Autofix는 하나 이상의 LLM을 사용하여 코드 검사 경고를 처리하고 수정 제안을 생성합니다.
- 비밀 검색을 위한 AI 검색: 일반 비밀 검색을 포함하여 비밀 검색을 확장하는 AI 기반 기능입니다. GitHub Copilot 구독이 필요하지 않습니다.
- 일반 비밀 검색: 파트너 또는 사용자 지정 패턴에서 다루지 않는 구조화되지 않은 비밀(예: 암호)의 AI 식별입니다. 일반 비밀 검색은 모델을 사용하여 소스 코드에서 암호와 유사한 문자열을 검색합니다.
- 사용자 지정 패턴: 비밀 검색에서 특정 형식과 일치하는 비밀을 검색하는 데 사용되는 사용자 정의 정규식입니다. 사용자 지정 패턴 정규식 생성기는 자연어 설명에서 이러한 패턴을 만드는 데 도움이 됩니다.
- SARIF: 정적 분석 결과 교환 형식 - CodeQL이 경고 위치 및 설명을 포함하여 코드 검색 결과를 보고하는 데 사용하는 표준 형식입니다.
- GitHub 코드 품질: 코드 품질 문제를 표시하고 LLM 기반 수정을 제공하는 기능입니다. 코드 품질은 CodeQL 품질 쿼리를 LLM 기반 분석과 결합하여 유지 관리 가능성, 안정성 및 스타일 문제를 식별합니다.
- AI 결과: 기본 분기에 대한 LLM 기반 코드 품질 결과가 표시되는 보안 및 품질보안 탭 아래 의 대시보드입니다.
3. 주요 기능 또는 역량
여기에 설명된 주요 특징과 기능은 GitHub Code Security AI 기능이 무엇을 하도록 설계되었는지와 지원되는 작업 전반에서 어떻게 작동하는지를 설명합니다.
- 보안 경고에 대한 수정 제안: Copilot Autofix는 끌어오기 요청 및 기본 분기에 있는 CodeQL 경고에 대한 코드 변경 제안을 자동으로 생성합니다. 각 제안에는 제안된 코드 변경과 수정에 대한 자연어 설명이 모두 포함됩니다.
- 경고를 수정안으로 변환: Copilot Autofix는 코드 스캐닝 경고의 설명과 위치를 근본적인 보안 취약성을 해결할 수 있는 적용 가능한 코드 변경 사항으로 변환합니다. 시스템은 CODEQL 경고 데이터를 SARIF 형식, 주변 코드 조각 및 쿼리 도움말 텍스트를 사용하여 관련 수정 사항을 생성합니다.
- Multi-language 지원: Copilot Autofix는 C#, C/C++, Go, Java/Kotlin, Swift, JavaScript/TypeScript, Python, Ruby 및 Rust에 대한 기본 및 보안 확장 CodeQL 쿼리 제품군에 포함된 쿼리의 하위 집합에 대한 수정 생성을 지원합니다. CodeQL 쿼리 도구 모음에서 이러한 쿼리 도구 모음에 대한 자세한 내용을 참조하세요.
- AI 기반 암호 검색: 비밀 검색의 일반 비밀 검색은 AI를 사용하여 리포지토리 콘텐츠를 검색하여 결정적 패턴 일치를 찾을 수 없는 구조화되지 않은 비밀(예: 암호)을 식별합니다. 검색된 비밀은 보안 및 품질보안 탭 아래 의 비밀 검색 경고 목록에 경고로 표시됩니다.
- AI 기반 정규식 생성: 비밀 검사의 정규식 생성기는 선택적 예제 문자열과 함께 검색하려는 패턴에 대한 자연어 설명을 사용하고 최대 3개의 후보 정규식을 생성합니다. 각 결과에는 AI에서 생성된 일반 언어 설명이 포함되며 배포 전에 시험 실행을 통해 패턴의 유효성을 검사할 수 있습니다.
- 코드 품질 문제 감지: GitHub 코드 품질은 풀 리퀘스트에서 변경된 코드에 대해 CodeQL 품질 쿼리를 실행하고, 기본 브랜치 전체에 대해서도 주기적으로 실행합니다. 이러한 쿼리는 유지 관리 가능성, 안정성 및 스타일 문제를 식별합니다.
- LLM 기반 코드 품질 분석: 각 푸시가 기본 분기로 푸시된 후 LLM은 결정적 엔진이 찾을 수 있는 것 이상의 품질 문제에 대해 최근에 변경된 파일을 분석합니다. 결과는 AI 결과 대시보드에 표시됩니다.
- 품질 문제에 대한 자동 수정 제안: 두 가지 분석 유형 중 어느 하나에서 품질 문제가 감지되면 Copilot Autofix가 수정 제안을 생성합니다. 끌어오기 요청에서 봇은
github-code-quality제안된 변경 내용이 포함된 댓글을 게시합니다.
4. 용도
GitHub Code Security AI 기능은 다양한 산업의 여러 시나리오에서 사용할 수 있습니다. 사용 사례의 몇 가지 예는 다음과 같습니다.
- 보안 취약성 수정: Copilot Autofix를 사용하여 CodeQL 경고에 대한 수정 제안을 신속하게 생성하여 코드 검사 중에 발견된 보안 문제를 해결하는 데 필요한 시간과 전문 지식을 줄입니다.
- 보안 코딩의 진입 장벽 낮추기: Copilot Autofix는 보안 코딩 교육을 충분히 받지 못한 개발자에게 도움을 줍니다. 개발자는 취약성을 독립적으로 조사하는 대신 코드베이스에 대한 잠재적 솔루션을 보여 주는 코드 제안으로 시작합니다.
- 끌어오기 요청 검토 간소화: 코드 스캔이 끌어오기 요청에서 경고를 발견하면 Copilot Autofix가 인라인으로 수정 제안을 제공하여 개발자가 병합 전에 보안 문제를 해결할 수 있도록 지원합니다.
- 기본 브랜치의 경고 수정: Copilot Autofix는 기본 브랜치의 기존 경고에 대해서도 수정 제안을 생성해 팀이 보안 경고 사항의 백로그를 줄이는 데 도움을 줍니다.
- 소스 코드에서 유출된 암호 검색: 일반 비밀 검색을 사용하여 파트너 및 사용자 지정 비밀 검사 패턴의 범위를 벗어난 리포지토리에서 구조화되지 않은 비밀을 찾습니다.
- 상황별 경고를 사용하여 자격 증명 심사: 암호가 검색되면 경고 목록에 AI 검색 컨텍스트가 있는 경고가 표시되어 유지 관리자와 보안 관리자가 검색을 검토하고 조치를 취할 수 있습니다.
- 정규식 전문 지식 없이 사용자 지정 비밀 검사 패턴 만들기: 정규식 생성기를 사용하여 자연어로 검색할 내용을 설명하고 정규식을 수동으로 작성할 필요가 없도록 하여 사용자 지정 패턴을 정의합니다.
- 배포 전에 생성된 패턴의 유효성 검사: 정규식을 생성한 후에는 실행 방식 메커니즘을 사용하여 사용자 지정 패턴으로 배포하기 전에 리포지토리 또는 조직 전체에서 패턴을 테스트합니다.
- **리포지토리에서 코드 품질 문제 **: GitHub 코드 품질을 사용하여 유지 관리 가능성, 안정성 및 스타일 문제를 식별하여 개발자와 관리자가 위험 영역의 우선 순위를 빠르게 지정할 수 있습니다.
- 코드 품질 결과의 수정 지원: Copilot Autofix는 품질 결과에 대한 수정을 제안하고, 모범 사례에 대한 정보와 코드베이스의 세부 정보를 결합하여 끌어오기 요청 또는 AI 결과 대시보드에서 직접 잠재적인 수정을 제안합니다.
- 끌어오기 요청에 대한 실행 가능한 피드백 제공: 봇은
github-code-quality끌어오기 요청에 대한 제안된 수정 사항이 포함된 의견을 게시하여 개발자가 병합하기 전에 품질 문제를 해결할 수 있도록 지원합니다.
5. 모델 및 학습 데이터
Copilot Autofix는 코드에서 제안된 수정 사항과 해당 수정에 대한 설명 텍스트를 모두 생성하는 큰 언어 모델과 상호 작용하는 내부 GitHub Copilot API 사용합니다.
일반 비밀 검색은 모델을 사용하여 구조화되지 않은 비밀을 검색합니다.
사용자 지정 패턴 정규식 생성기는 LLM 및 GitHub Copilot API를 사용하여 사용자가 제공한 설명 및 예제와 일치하는 정규식을 생성합니다.
GitHub Code Quality의 LLM 기반 분석은 Copilot 언어 모델을 사용하여 최근에 변경된 파일을 분석하여 품질 문제를 분석합니다. CodeQL 품질 쿼리 구성 요소는 LLM을 사용하지 않습니다. 코드 품질 결과를 위한 Copilot Autofix는 코드 검사에 Copilot Autofix와 동일한 LLM 파이프라인을 사용합니다.
Copilot 사용할 수 있는 모델의 비교는 AI 모델 비교 참조하세요. 지원되는 모델의 전체 목록은 GitHub Copilot에서 지원되는 AI 모델을 참조하세요. 모델이 호스트되는 위치에 대한 자세한 내용은 GitHub Copilot 위한 모델 호스팅을 참조하세요. GitHub 보안 및 품질 기반 모델을 학습하는 데 사용되는 데이터에 대해 자세히 알아보려면 GitHub Copilot FAQ에서 GitHub Copilot 학습된 데이터는 무엇입니까?를 참조하세요.
Copilot Autofix에서 처리하는 데이터는 LLM 학습 목적으로 사용되지 않습니다. 이 기능의 사용은 GitHub Advanced Security와 관련된 기존 사용 약관에 따라 관리됩니다. 자세한 내용은 GitHub 추가 제품 및 기능 약관을 참조하세요 무료, Pro 및 팀 설명서에 있습니다.
6. 성능
리포지토리에 Copilot Autofix를 사용하도록 설정하면 다음 파이프라인을 통해 코드 검사 경고가 처리됩니다.
- 인푸트 처리: 코드 검색 경고가 식별되면 GitHub 관련 데이터를 언어 모델에 대한 프롬프트로 어셈블합니다. 이 데이터에는 다음이 포함됩니다.
- SARIF 형식의 CodeQL 경고 데이터
- 소스 위치, 싱크 위치, 그리고 경고 메시지나 흐름 경로에서 참조된 모든 위치 주변의 짧은 코드 조각을 포함하여, 해당 분기의 현재 버전에 있는 코드
- 해당 위치에 관련된 각 파일의 처음 ~10줄
- 문제를 식별한 CodeQL 쿼리에 대한 도움말 텍스트
- 언어 모델 분석: 어셈블된 프롬프트는 경고 컨텍스트, 코드 구조 및 쿼리 도움말 정보를 분석하는 언어 모델로 전송됩니다.
- 응답 생성: 모델은 제안된 코드 변경 내용과 수정 사항을 설명하는 설명 텍스트를 포함하여 잠재적인 수정을 생성합니다.
- 출력 형식 지정: 제안은 코드 검색 백 엔드 내에 저장되고 끌어오기 요청 또는 경고 세부 정보 페이지에 인라인 제안으로 표시됩니다. 코드베이스에서 코드 검색을 사용하도록 설정하고 끌어오기 요청을 만드는 것 외에는 사용자 상호 작용이 필요하지 않습니다.
환경별 차이점
AI 비밀 검색 은 입력을 처리하고 다음과 같이 출력을 생성합니다.
- 입력 처리: 입력은 사용자가 리포지토리에 체크 인한 텍스트(일반적으로 코드)로 제한됩니다. 시스템은 입력 범위 내에서 구조화되지 않은 비밀을 찾도록 모델에 요청하는 메타 프롬프트와 함께 이 텍스트를 모델에 제공합니다. 사용자는 모델과 직접 상호 작용하지 않습니다. 여러 모델을 사용하여 단일 발견의 유효성을 검사할 수 있습니다.
- 모델 분석: 모델은 암호와 같은 구조화되지 않은 비밀과 유사한 문자열을 검색합니다.
- 응답 생성: 모델은 응답에 포함된 식별된 문자열이 실제로 입력에 있는지 확인합니다.
- 출력 서식: 검색된 문자열은 일반 비밀 검색 경고와는 별개의 목록의 비밀 검색 경고 페이지에 경고로 표시됩니다. 각 경고는 AI에 의해 검색되었음을 지적합니다. 일반 비밀에 대한 경고를 보는 방법에 대한 자세한 내용은 비밀 스캔에서 경고 보기 및 필터링을 참조하세요.
사용자 지정 패턴 정규식 생성기는 입력을 처리하고 다음과 같이 출력을 생성합니다.
- 입력 처리: 사용자는 일치해야 하는 선택적 예제 문자열과 함께 감지하려는 패턴에 대한 자연어 텍스트 설명을 입력합니다.
- 미리 모델 분석: 설명 및 예제는 입력과 일치하는 정규식을 생성하는 GitHub Copilot API를 통해 LLM으로 전송됩니다.
- 응답 생성: 모델은 최대 3개의 후보 정규식을 반환합니다. 각 결과에는 AI에서 생성된 일반 언어 설명이 포함됩니다. 일부 결과는 매우 유사할 수 있으며 일부 결과는 의도한 패턴의 모든 인스턴스와 일치하지 않을 수 있습니다.
- 출력 서식: 결과가 사용자 지정 패턴 정의 형식으로 표시됩니다. 결과 사용을 클릭하면 식과 예제가 기본 사용자 지정 패턴 양식에 복사됩니다. 여기서는 리포지토리 또는 조직 전체에서 패턴의 유효성을 검사하기 위해 드라이 런을 수행할 수 있습니다. 자세한 내용은 비밀 검사를 위한 사용자 지정 패턴 정의을(를) 참조하세요.
GitHub 코드 품질 LLM 기반 분석 입력을 처리하고 다음과 같이 출력을 생성합니다.
- 입력 처리: 각 푸시가 기본 분기로 푸시된 후 최근에 변경된 파일이 다른 관련 컨텍스트 정보와 결합되어 프롬프트를 형성합니다. 프롬프트가 Copilot 언어 모델로 전송됩니다.
- 언어 모델 분석: 언어 모델은 유지 관리 가능성, 안정성 및 기타 품질 문제에 대한 코드를 분석합니다.
- 응답 생성: 모델은 특정 줄에 연결된 자연어 제안 및 코드 제안을 포함할 수 있는 응답을 생성합니다.
- 출력 서식: 검색 결과는 **** 표시됩니다. 코드 품질에서 코드 제안을 제공하는 경우 몇 번의 클릭으로 적용할 수 있는 제안된 변경 내용으로 표시됩니다.
풀 리퀘스트의 코드 품질 문제에 대한 Copilot 자동 수정:
- 입력 처리: 끌어오기 요청에 대한 CodeQL 분석의 코드 품질 결과는 주변 코드 컨텍스트와 함께 LLM으로 전송됩니다.
- 언어 모델 분석: LLM은 결과를 분석하고 잠재적인 수정 사항을 생성합니다.
- 응답 생성: LLM에서 수정을 생성할 수 있는 경우 제안된 코드 변경이 생성됩니다.
- 출력 형식 지정: 봇은
github-code-quality제안된 변경 내용이 포함된 끌어오기 요청에 주석을 게시합니다. 사용자는 기본 브랜치의 결과에 대해 자동 수정 생성을 요청할 수도 있습니다.
7. 제한 사항
GitHub Code Security AI 기능의 제한 사항을 이해하는 것은 안전하고 효과적인 경계 내에서 사용되는지 확인하는 데 중요합니다. 고객이 혁신적인 솔루션 또는 애플리케이션에서 GitHub Code Security AI 기능을 활용하는 것이 좋지만, GitHub Code Security AI 기능은 가능한 모든 시나리오에 맞게 설계되지 않았다는 점에 유의해야 합니다. 사용 사례를 선택할 때는 다음과 같은 고려 사항뿐만 아니라 GitHub 약관 을 참조하는 것이 좋습니다.
- Non-determinism: Copilot Autofix는 결정적이지 않은 생성 모델을 사용합니다. 동일한 경고 및 코드가 있더라도 실행 가능한 제안을 생성하지 못하거나 제안 사항이 시도에 따라 다를 수 있습니다.
- 문제 복잡성 및 컨텍스트: 복잡한 다중 파일 코드베이스에서 추적 데이터 흐름이 필요하거나 미묘한 논리 결함을 나타내는 경고와 같은 일부 보안 경고는 모델을 해결하기 어려울 수 있습니다.
- 파일 크기: 영향을 받는 코드가 매우 큰 파일 또는 리포지토리 내에 있는 경우 LLM에 제공된 컨텍스트가 잘려질 수 있습니다. 컨텍스트가 제한되면 기능이 수정을 시도하지 않습니다.
- 언어 및 프레임워크 적용 범위: Copilot Autofix는 증가하는 언어 및 CodeQL 경고 목록을 지원하지만 가능한 모든 경고 유형 또는 언어를 다루지는 않습니다.
- LLM 운영 용량: 수정 생성에는 LLM 운영 용량이 적용됩니다. 제안을 사용할 수 없거나 제안된 수정 사항이 내부 테스트에 실패하는 경우 제안이 표시되지 않습니다.
- 영어 중심 데이터: 시스템은 주로 프롬프트, LLM 학습 데이터 세트의 코드 및 내부 평가에 사용되는 테스트 사례를 포함하여 영어 데이터를 사용합니다. 제안은 소스 코드 및 다른 언어의 주석에 대한 성공률이 낮을 수 있습니다.
- 구문 오류: 시스템에서 코드 변경을 구문적으로 수정하지 않는 수정을 제안할 수 있습니다.
- 위치 오류: 시스템에서 잘못된 위치에서 수정을 제안할 수 있습니다. 위치를 편집하지 않고 이러한 수정을 수락하면 구문 오류가 발생할 수 있습니다.
- 의미 체계 오류: 시스템에서 구문상 유효하지만 프로그램의 의미 체계를 변경하는 수정을 제안할 수 있습니다. 시스템은 프로그래머의 의도를 이해하지 않습니다.
- 보안 취약성 및 잘못된 수정 사항: 시스템은 기본 취약성을 수정하지 못하거나 새로운 취약성을 도입하지 못하는 수정 사항을 제안할 수 있습니다.
- 부분 수정: 시스템에서 보안 취약성을 부분적으로만 해결하거나 의도한 코드 기능만 부분적으로만 유지하는 수정 사항을 제안할 수 있습니다.
- 종속성 변경: 제안된 수정 사항에는 소프트웨어 종속성 추가 또는 업데이트가 포함될 수 있습니다. 시스템은 지원되거나 안전한 종속성 버전을 알지 못하며 통계적으로 가능성이 있는 이름으로 게시된 조작된 종속성을 제안할 수 있습니다. 병합하기 전에 항상 종속성 변경을 확인합니다.
AI 비밀 검색과 관련된 제한 사항
- 불완전한 보고: AI 비밀정보 탐지는 리포지토리에 체크인된 자격 증명을 놓칠 수 있습니다. 비밀에 대한 AI 검색은 시간이 지남에 따라 향상됩니다. 코드의 보안을 보장할 책임은 사용자에게 있습니다.
- 테스트 코드: AI 비밀 검색은 테스트 코드에서 비밀을 검색하지 못할 수 있습니다. 시크릿 검색은 다음과 같은 특정 조건이 충족되면 탐지를 건너뜁니다.
- 파일 경로에 "test", "mock" 또는 "spec"이 포함됩니다.
- 파일 확장명이
.cs,.go,.java,.js,.kt,.php,.py,.rb,.scala,.swift또는.ts인 경우
사용자 지정 패턴 정규식 생성기에 특정한 제한 사항
- 불완전한 패턴 검사: 생성된 정규식이 의도한 모든 토큰과 일치하지 않을 수 있습니다. 결과의 품질은 입력 설명의 특이성과 명확성에 따라 달라집니다.
- 잘못되었거나 부적절한 결과: 생성기는 의도한 사용 사례에 유효하지 않거나 부적절한 정규식을 생성할 수 있습니다.
- 구조적 패턴만: 정규식 생성기는 자유 형식 텍스트 일치가 아닌 구조화되고 예측 가능한 형식을 검색하는 패턴을 만드는 데만 적합합니다.
- 영어 중심 성능: 모델은 주로 영어 콘텐츠에 대해 학습되었습니다. 영어 이외의 언어로 자연어 입력 프롬프트를 제공하는 경우 성능이 저하될 수 있습니다.
- 비슷한 결과: 반환된 정규식 중 일부는 서로 매우 유사하여 유효 후보 패턴 수를 줄일 수 있습니다.
GitHub 코드 품질과 관련된 제한 사항
- ** Copilot 코드 검토의 공유 제한 사항**: 코드 품질의 LLM 기반 분석은 Copilot 코드 검토와 동일한 기본 언어 모델 및 분석 엔진을 사용합니다. 이 역시 불완전한 탐지, 오탐, 코드 제안 정확도, 잠재적 편향 등과 같은 유사한 한계가 있습니다. 자세한 내용은 애플리케이션 카드: GitHub Copilot 에이전트을(를) 참조하세요.
-
**최선형 자동 수정**: 코드 품질 문제에 대한 Copilot Autofix는 최선형으로 제공되며, 모든 문제에 대한 수정 사항을 생성한다고 보장되지는 않습니다. - 검토 필요: 항상 Copilot Autofix의 제안을 검토하고, 수락하기 전에 필요에 따라 변경 사항을 편집해야 합니다.
8. 평가
성능 및 안전 평가는 유해한 콘텐츠를 생성하는 위험을 식별하면서 근거, 관련성 및 일관성과 같은 요인을 검토하여 AI 애플리케이션이 안정적이고 안전하게 운영되는지 여부를 평가합니다. 다음 평가는 이미 있는 안전 구성 요소를 사용하여 수행되었으며, 9에도 설명되어 있습니다. 안전 구성 요소 및 완화.
성능 및 품질 평가
GitHub 보안 AI 기능은 업계 표준 벤치마크(예: SWE-Bench) 및 내부적으로 개발된 평가 제품군의 조합을 사용하여 지원되는 표면에서 평가됩니다. 벤치마크 작업은 공용 오픈 소스 리포지토리 및 가상 시나리오에서 제공됩니다. 실제 사용자 쿼리 또는 고객 코드는 권한 없이 사용되지 않습니다. 각 평가에는 모델 출력의 비결정성을 고려하기 위한 여러 독립 실행이 포함됩니다. 주요 메트릭에는 해결 속도(성공적으로 완료된 작업의 백분율), 토큰 효율성, 대기 시간 및 도구 호출 안정성이 포함됩니다. 모델은 오류율, 응답 대기 시간 및 집계 사용 패턴을 통해 업데이트가 생성되고 프로덕션 환경에서 지속적으로 모니터링될 때 다시 평가됩니다.
성능 및 품질 평가 방법
새 모델은 Code Security, Code Quality 및 Secret Protection에 배포하기 전에 단계적 평가 프로세스를 거칩니다. 통합자 팀은 표면과 관련된 벤치마크 제품군을 실행하여 버그 수정, 코드 생성 및 다중 파일 리팩터링과 같은 대표적인 코딩 작업에서 모델을 테스트합니다. 기존 기준 및 기존 프로덕션 모델에 대해 결과를 검토합니다. 모델은 다음 단계로 넘어가기 전에 해상도 속도, 토큰 효율성 및 대기 시간과 같은 주요 메트릭에서 기준 성능을 충족하거나 초과해야 합니다.
위험 및 안전 평가
다양한 심각도의 콘텐츠 위험으로부터 보호하기 위해 AI 생성 콘텐츠와 관련된 잠재적 위험을 평가하는 것이 필수적입니다. 여기에는 유해한 콘텐츠를 생성하거나 탈옥 공격에 대한 취약성을 테스트하기 위한 AI 애플리케이션의 소인을 평가하는 것이 포함됩니다. GitHub의 경우, Microsoft Foundry의 평가를 코딩 용도에 맞게 조정한 평가를 포함해 성능 평가를 수행합니다.
- 증오와 불공평
- Sexual
- 폭력
- 자해
- 보호 재질
- 탈 옥
- 코드 취약성
품질 및 안전을 위한 평가 데이터
평가 데이터는 안전 및 품질의 주요 영역에서 AI 애플리케이션 성능을 평가하여 실제 시나리오와 위험을 시뮬레이션하도록 사용자 지정 빌드되었습니다. 우리는 다학제 연구 및 전문가의 의견을 기반으로 우려의 관련 평가 측면을 식별하는 것으로 시작합니다. 이러한 문제는 대상 평가 목표로 변환되고 평가 메트릭의 공식화 가이드로 변환됩니다. safety 경우 바람직하지 않거나 에지 케이스 응답을 유도하는 악의적 프롬프트를 만든 다음, GitHub 표준과의 맞춤을 평가하도록 학습된 AI 지원 주석을 사용하여 점수가 매깁니다. 품질을 위해 RAG(검색 보강 세대) 애플리케이션 및 에이전트 평가를 포함하여 시나리오와 관련된 루브릭 기반 프롬프트를 만듭니다. 데이터 세트는 실제 사용자 시나리오를 시뮬레이션하기 위해 가상 및 공용 데이터 세트를 비롯한 다양한 원본에서 큐레이팅됩니다. 큐레이팅된 데이터 세트를 사용하여 두 평가 모두 반복적인 구체화와 인적 맞춤을 거쳐 메트릭 효능과 안정성을 향상시킵니다. 이 방법론은 고객이 평가를 사용하여 더 나은 AI를 구축하는 방법을 반영하는 반복 가능하고 엄격한 평가의 기초를 형성합니다.
사용자 지정 평가
GitHub 자동화된 테스트 하네스를 사용하여 Copilot Autofix 제안의 품질을 지속적으로 모니터링합니다. 테스트 도구에는 다양한 퍼블릭 리포지토리 집합에서 수집한 2,300개 이상의 경고 집합이 포함되어 있으며, 여기에서 강조 표시된 코드에 테스트 적용 범위가 포함됩니다. 이러한 경고에 대한 제안은 개발자가 코드베이스에 커밋하기 전에 편집해야 하는 양을 결정하기 위해 테스트됩니다. 대부분의 테스트 경고에서 LLM에서 생성된 제안은 기존의 모든 CI 테스트를 성공적으로 통과하면서 경고를 수정하기 위해 as-is 커밋될 수 있습니다.
GitHub 코드 검사 및 결과 코드에서 리포지토리의 단위 테스트를 실행하기 전에 제안된 모든 변경 내용을 편집되지 않은 상태로 병합하여 제안의 효과를 테스트합니다.
- 코드 검사 경고가 제안에 의해 수정되었나요?
- 이 수정 사항으로 인해 새 코드 검색 경고가 발생했나요?
- 이 수정으로 인해 코드 검색에서 감지할 수 있는 구문 오류가 발생했나요?
- 리포지토리 테스트의 출력이 수정 사항으로 인해 변경되었나요?
또한 GitHub 많은 성공적인 제안을 확인하고 새로운 문제를 도입하지 않고 경고를 수정하는지 확인합니다. 이러한 검사 중 하나 이상이 실패하면 수동 심사를 통해 제안된 수정 사항이 거의 정확하지만 사용자가 식별하고 수동으로 수행할 수 있는 몇 가지 사소한 수정이 필요한 것으로 나타났습니다.
또한 시스템은 잠재적인 피해(빨간색 팀)를 확인하기 위해 스트레스 테스트를 받고 LLM의 필터링 시스템을 통해 잠재적으로 유해한 제안이 사용자에게 표시되지 않도록 방지할 수 있습니다.
AI 시크릿 탐지는 Responsible AI 레드 팀 테스트를 거쳤으며, GitHub는 시간이 지나면서 이 기능의 효과와 안전성을 지속적으로 모니터링합니다.
사용자 지정 패턴 정규식 생성기 결과는 사용자가 사용자 지정 패턴으로 배포하기 전에 리포지토리 또는 조직에서 생성된 패턴을 테스트할 수 있도록 하는 시험 실행 메커니즘을 통해 유효성을 검사합니다. 이 기본 제공 유효성 검사 단계는 생성된 정규식이 프로덕션에서 사용되기 전에 예상대로 수행되도록 하는 데 도움이 됩니다.
GitHub Code Quality의 LLM 기반 분석은 Copilot 코드 검토의 평가 프레임워크를 공유합니다. 코드 품질 발견 사항에 대한 Copilot Autofix 제안은 코드 스캐닝용 Copilot Autofix와 동일한 테스트 하니스를 따릅니다.
9. 안전 구성 요소 및 완화
- ** 휴먼 인 더 루프 검토**: Copilot Autofix는 적용하기 전에 명시적 개발자 검토 및 동의가 필요한 제안된 코드 변경으로 모든 제안을 제공합니다. 개발자는 각 제안을 평가하고 코드베이스의 의도된 동작을 유지 관리하는지 확인해야 합니다.
- 콘텐츠 필터링: LLM의 필터링 시스템은 잠재적으로 유해한 제안이 사용자에게 표시되지 않도록 감지하고 방지합니다. 시스템은 잠재적인 취약성을 식별하기 위해 빨간색 팀을 통해 스트레스 테스트를 거쳤습니다.
- 내부 품질 테스트: 내부 테스트에 실패한 제안은 사용자에게 표시되지 않습니다. 수정 생성은 시스템이 제안의 품질에 대한 충분한 신뢰도를 갖고 있는 경우에만 표시됩니다.
- Opt-in/opt-out 컨트롤: Copilot Autofix는 기본적으로 허용되고 CodeQL을 사용하는 모든 리포지토리에 대해 사용하도록 설정되지만 관리자는 엔터프라이즈, 조직 및 리포지토리 수준에서 Copilot Autofix를 사용하지 않도록 설정할 수 있습니다. 자세한 내용은 코드 스캔 보안 경고에 대한 Copilot 자동 수정 비활성화을(를) 참조하세요.
- ** 고객 데이터에 대한 교육은 없습니다**: Copilot Autofix에서 처리하는 데이터는 LLM 학습 목적으로 사용되지 않습니다. 이 기능의 사용은 GitHub Advanced Security와 관련된 기존 사용 약관에 따라 관리됩니다.
- 오탐 피드백 루프: 사용자가 일반 비밀 탐지 경고를 닫고 그 이유를 "오탐"으로 표시하면 GitHub는 오탐 건수를 사용해 모델을 개선합니다. GitHub 비밀 리터럴 자체에 액세스할 수 없습니다.
- 생성된 패턴에 대한 실행 유효성 검사: 사용자 지정 패턴 정규식 생성기에서 생성된 정규식은 배포 전에 실행이 용이한 유효성 검사 단계를 거쳐야 합니다. 사용자는 명시적으로 결과를 사용자 지정 패턴 양식으로 가져와 리포지토리 또는 조직 전체에서 테스트하여 패턴이 프로덕션 환경에서 사용되기 전에 예상대로 수행되도록 합니다.
- 명시적 사용자 작업 필요: regex 생성기가 패턴을 자동으로 배포하지 않습니다. 사용자는 결과 사용을 클릭하여 생성된 식을 사용자 지정 패턴 양식에 복사한 다음 수동으로 저장하고 사용하도록 설정해야 합니다.
- 코드 품질을 위한 피드백 메커니즘: 사용자는
github-code-quality봇의 댓글에서 좋아요 및 싫어요 버튼을 사용해 코드 품질 제안에 대한 피드백을 제공할 수 있으며, 이를 통해 GitHub가 제안 품질을 개선하는 데 도움이 됩니다. - 프리뷰 기반 제한적 제공: GitHub 코드 품질은 프리뷰로 제공되므로 조직에서 본격적으로 도입하기 전에 이 기능을 평가할 수 있습니다.
10. GitHub Code Security AI 기능 배포 및 채택 모범 사례
책임 있는 AI는 GitHub 고객과의 공동 약속입니다. GitHub 보안, 공정성 및 투명성을 핵심으로 AI 애플리케이션을 빌드하지만, 고객은 이러한 기술을 자체 컨텍스트 내에서 책임감 있게 배포하고 사용하는 데 중요한 역할을 합니다. 이 파트너십을 지원하기 위해 고객이 책임 있는 AI를 효과적으로 구현할 수 있도록 배포자와 최종 사용자를 위한 다음과 같은 모범 사례를 제공합니다.
- 중대한 결정을 내리거나 민감한 분야에서 GitHub Security AI 기능을 사용할 때는 주의를 기울이고 결과를 평가하세요: 결과적 결정은 교육, 고용, 금융 플랫폼, 정부 혜택, 의료, 주택, 보험, 법적 플랫폼에 대한 개인의 접근에 법적 또는 중대한 영향을 미칠 수 있거나 신체적, 심리적 또는 재정적 피해를 초래할 수 있는 결정입니다. 금융 플랫폼, 의료 및 주택과 같은 중요한 도메인은 다른 그룹의 사람들에게 불균형적으로 영향을 미칠 수 있기 때문에 특별한 주의가 필요합니다. 이러한 영역에서 결정에 AI를 사용하는 경우 영향을 받는 이해 관계자가 의사 결정 방법을 이해하고, 결정에 이의를 제기하고, 관련 입력 데이터를 업데이트할 수 있는지 확인합니다.
- 법률 및 규제 고려 사항을 평가합니다. 고객은 모든 산업 또는 시나리오에서 사용하기에 적합하지 않을 수 있는 AI 플랫폼 및 솔루션을 사용할 때 잠재적인 특정 법률 및 규제 의무를 평가해야 합니다. 또한 AI 플랫폼 또는 솔루션은 해당 서비스 약관 및 관련 행동 강령에서 금지된 방식으로 설계되지 않았으며 사용할 수 없습니다.
- 수락하기 전에 항상 제안 사항을 검토합니다. 제안된 코드 변경을 평가하여 코드의 의도된 동작을 변경하지 않고 보안 취약성을 올바르게 수정했는지 확인합니다. 테스트 범위가 양호하면 수정 사항이 코드베이스의 동작을 변경하지 않는지 확인하는 데 도움이 됩니다.
- CI 테스트 통과 확인: 제안된 수정 또는 수정된 수정을 커밋한 후 항상 코드베이스에 대한 CI(연속 통합 테스트)가 계속 전달되고 끌어오기 요청을 병합하기 전에 경고가 해결된 것으로 표시되는지 확인합니다.
- 종속성 변경 내용을 신중하게 검토합니다. 제안된 수정에 종속성 변경 내용이 포함된 경우 추가되거나 업데이트된 종속성이 안전한지 확인하고, 지원되며, 코드베이스의 의도된 동작을 유지 관리합니다. 종속성 검토 API 및 작업과 같은 종속성 관리 솔루션을 사용하여 변경 내용을 평가합니다. 자세한 내용은 종속성 검토을(를) 참조하세요.
-
**가양성 경고를 적절하게 닫습니다**. AI 비밀 검색은 파트너 패턴 검색보다 더 많은 가양성 발생을 생성할 수 있으므로 각 경고의 정확도를 검토합니다. 경고가 가양성임을 확인한 경우 경고를 닫고 GitHub UI에서 사유를 "가양성"으로 지정합니다. 이 피드백은 모델을 개선하는 데 도움이 됩니다. - 건식 실행으로 생성된 정규식 패턴의 유효성 검사: 사용자 지정 패턴 정규식 생성기를 사용하는 경우 생성된 패턴 조직 전체를 배포하기 전에 항상 대표 리포지토리에서 드라이 런을 수행합니다.
- 설명에 대해 구체적으로 설명합니다. 생성된 정규식의 품질을 향상하려면 자연어 설명과 함께 가능한 한 구체적으로 지정하고 검색하려는 패턴을 나타내는 다양한 예제 문자열을 포함합니다.
- 생성된 모든 패턴을 검토합니다. AI에서 생성된 일반 언어 설명을 포함하여 생성된 각 정규식을 신중하게 검토하고 요구 사항에 보다 완벽하게 맞게 결과를 수정하는 것이 좋습니다. 사용자는 선택한 사용자 지정 패턴의 최종 책임을 집니다.
- 수정 사항을 적용하기 전에 코드 품질 발견 사항을 검토하세요: 코드 품질 발견 사항과 자동 수정 제안의 정확성과 코드베이스에 대한 적용 가능성을 수락하기 전에 항상 확인하세요.
- 코드 품질 제안에 대한 피드백 제공: 봇의 주석에서
github-code-quality엄지 손가락 및 엄지 손가락 아래로 단추를 사용하여 도구를 개선하고 우려 사항 또는 제한 사항을 해결합니다. - 적절한 경우 사용자 감독 연습: AI 애플리케이션과 상호 작용할 때 인간의 감독은 중요한 안전 장치입니다. AI 애플리케이션을 지속적으로 개선하는 동안 AI는 여전히 실수를 할 수 있습니다. 생성된 출력은 부정확하거나, 불완전하거나, 편향되거나, 잘못 정렬되거나, 의도한 목표와 무관할 수 있습니다. 이는 입력의 모호성 또는 기본 모델의 제한 사항과 같은 다양한 이유로 인해 발생할 수 있습니다. 따라서 사용자는 GitHub Code Security AI 기능에서 생성된 응답을 검토하고 예상 및 요구 사항과 일치하는지 확인해야 합니다.
- 지나친 의존의 위험에 유의하세요. AI에 대한 지나친 의존은 AI 출력의 실수가 감지하기 어려울 수 있기 때문에 사용자가 올바르지 않거나 불완전한 AI 출력을 수락할 때 발생합니다. 최종 사용자의 경우, 과잉 의존은 생산성 감소, 신뢰 상실, 신청 포기, 재정적 손실, 심리적 피해, 신체적 피해 등을 초래할 수 있습니다. (예: 의사가 잘못된 AI 출력을 수락합니다).
- 중요한 도메인에서 에이전트 AI를 디자인할 때 주의해야 합니다. 사용자는 에이전트 작업이 돌이킬 수 없거나 매우 중요한 중요한 도메인에 에이전트 AI 애플리케이션을 디자인 및/또는 배포할 때 주의를 기울여야 합니다. GitHub 약관에 자세히 설명된 대로 자율 에이전트 AI를 만들 때도 추가 예방 조치를 취해야 합니다.
- 풀 리퀘스트에 대해 CI 테스트를 활성화: 개발자가 수정 사항을 적용한 후 기능 요구 사항이 검증되도록, Copilot Autofix를 사용하도록 설정하기 전에 지속적 통합 테스트가 마련되어 있는지 확인하세요.
- 종속성 관리 솔루션 사용: 끌어오기 요청에 대한 종속성 검토를 사용하도록 설정하여 Autofix 제안에서 도입된 잠재적으로 위험한 종속성 변경을 catch합니다.
- 보안 개요 메트릭 보기: 조직의 보안 개요 대시보드를 사용하여 지정된 기간 동안 열려 있고 닫힌 끌어오기 요청에서 생성된 총 Copilot Autofix 제안 수를 확인합니다. 자세한 내용은 보안 인사이트 보기을(를) 참조하세요.
-
**비밀 탐지의 가양성 규모 평가**: 가양성 규모를 평가하고 알림 목록에 대한 분류 프로세스를 수립합니다. - 코드 품질 제안 볼륨 및 품질 모니터링: 코드 품질 제안의 볼륨과 품질을 평가하고 조직에 맞게 활성화를 조정합니다.
11. GitHub 보안 AI 기능에 대해 자세히 알아보기
GitHub 보안 AI 기능의 책임 있는 사용에 대한 추가 지침은 다음 설명서를 검토하는 것이 좋습니다.
- 코드 검사 경고
- 끌어오기 요청에서 코드 검사 경고 심사
- 코드 검사 경고 해결
- 코드 스캔 보안 경고에 대한 Copilot 자동 수정 비활성화
- GitHub 추가 제품 및 기능 약관
- 비밀 스캐닝
- AI가 감지한 비밀에 대한 일반 비밀 감지 활성화
- 비밀 검사 경고 관리
- 엔터프라이즈에 대한 코드 보안 및 분석을 위한 정책 적용
- AI를 사용하여 사용자 지정 패턴에 대한 정규식 생성
- 비밀 검사를 위한 사용자 지정 패턴 정의
- GitHub 코드 품질에 대한 빠른 시작
- 애플리케이션 카드: GitHub Copilot 에이전트
- 코드 품질 피드백에 대한 커뮤니티 토론