코드 검사란?
코드 검사는 CodeQL을 사용하여 GitHub 리포지토리의 코드를 분석하고 보안 취약성 및 코딩 오류를 찾습니다. 코드 검사는 모든 퍼블릭 리포지토리에 사용할 수 있으며, GitHub Advanced Security를 사용하도록 설정한 조직이 소유한 프라이빗 리포지토리에 사용할 수 있습니다. 코드 검사에서 코드에서 잠재적 취약성 또는 오류가 발견되면 GitHub가 그 리포지토리의 보안 탭에 경고를 표시합니다. 경고를 트리거한 코드를 수정한 후 GitHub가 경고를 닫습니다.
코드 검색을 사용하여 코드에서 기존 문제에 대한 수정 사항을 찾고 심사하고 우선 순위를 지정할 수 있습니다. 코드 검사를 통해 개발자는 새로운 문제가 발생하지 않도록 방지할 수도 있습니다. 특정 날짜 및 시간에 대한 검사를 예약하거나 푸시와 같은 특정 이벤트가 리포지토리에서 발생할 때 검사를 트리거할 수 있습니다.
이 단원에서는 CodeQL, 코드 검사를 설정하는 세 가지 옵션, CodeQL 워크플로를 리포지토리에 추가하는 방법에 대해 알아봅니다.
CodeQL을 사용하는 코드 검사 안내
CodeQL은 보안 확인을 자동화하기 위해 GitHub가 개발한 코드 분석 엔진입니다. CodeQL을 사용하여 코드를 분석하고 결과를 코드 검사 경고로 표시할 수 있습니다. 코드 검색을 위해 CodeQL 분석을 설정하는 세 가지 주요 방법이 있습니다.
- 기본 설정을 사용하여 리포지토리에서 코드 검색을 위한 CodeQL 분석을 신속하게 구성합니다. 기본 설정은 분석할 언어, 실행할 쿼리 도구 모음, 언어 및 쿼리 도구 모음을 수동으로 구성하는 옵션을 사용하여 검사를 트리거하는 이벤트 선택을 처리합니다. 이 설치 옵션은 GitHub 작업으로 코드 검색을 실행합니다.
- 고급 설정을 사용하여 CodeQL 워크플로를 리포지토리에 직접 추가합니다. CodeQL 워크플로를 리포지토리에 직접 추가하면 Github/codeql-action 을 사용하여 CodeQL CLI를 GitHub 작업으로 실행하는 사용자 지정 가능한 워크플로 파일이 생성됩니다.
- 외부 CI 시스템에서 직접 CodeQL CLI를 실행하고 결과를 GitHub로 업로드합니다.
CodeQL은 데이터와 같은 코드를 처리하므로 기존 정적 분석기보다 더 높은 신뢰도로 코드에서 잠재적 취약성을 찾을 수 있습니다. 코드베이스를 나타내는 CodeQL 데이터베이스를 생성한 다음, 해당 데이터베이스에서 CodeQL 쿼리를 실행하여 코드베이스의 문제를 확인합니다. 코드 검사와 함께 CodeQL을 사용하면 쿼리 결과가 GitHub 코드 검사 경고로 표시됩니다.
CodeQL은 컴파일된 언어와 해석된 언어를 모두 지원하며 다음 지원되는 언어로 작성된 코드에서 취약성 및 오류를 찾을 수 있습니다.
- C 또는 C++
- C# (프로그래밍 언어)
- 가라
- Java/Kotlin
- 자바스크립트/타입스크립트
- 파이썬
- 루비
- 재빠르다
다음 섹션에서는 CodeQL 워크플로를 리포지토리에 추가하는 방법을 설명합니다. 외부 도구를 사용하여 CodeQL을 설정하는 방법은 타사 도구로 코드 검색 활성화 유닛에서 배울 수 있습니다.
기본 설정을 사용하여 리포지토리에서 CodeQL 사용
리포지토리에 대한 쓰기 권한이 있으면 해당 리포지토리에 대한 코드 검사를 설정하거나 구성할 수 있습니다.
다음 단계에 따라 CodeQL GitHub Actions 워크플로를 사용해 코드 검사를 설정합니다.
GitHub.com에서 리포지토리의 기본 페이지로 이동합니다.
리포지토리 이름 아래에서 보안을 선택합니다.
코드 검색 설정을 선택합니다. 이 옵션을 사용할 수 없는 경우 조직 소유자나 리포지토리 관리자에게 GitHub 고급 보안 지원을 요청하세요.
설정 드롭다운에서 기본값을 선택합니다.
기본 옵션을 검토합니다. 필요한 경우 새 창의 왼쪽 아래 모서리에 있는 편집 단추를 선택하여 CodeQL 실행 방법을 사용자 지정합니다.
on:pull_request및on:push트리거는 각각 다른 용도로 유용한 코드 검색의 기본값입니다. 코드 스캔 구성 단원에서 이러한 트리거에 대해 자세히 알아봅니다.코드 검색을 켤 준비가 되면 CodeQL 사용을 선택합니다.
기본 CodeQL 분석 워크플로에서는 코드 검사가 보호된 분기로 변경 내용을 푸시하거나 기본 분기에 대한 끌어오기 요청을 실행할 때마다 코드를 분석하도록 구성됩니다. 푸시가 수행되면 코드 검색이 자동으로 실행됩니다.
이전 섹션에서는 워크플로 파일을 유지 관리할 필요 없이 코드 검사를 GitHub 작업으로 실행하는 기본 설정을 사용하여 코드 검사를 사용하도록 설정했습니다. 다른 옵션은 고급 구성 및 더 많은 단계에 대해 편집할 수 있는 기본 워크플로 파일을 생성하는 고급 설정입니다. 이후 단원에서 코드 검색을 구성하기 위한 고급 설정을 사용하는 방법을 설명합니다.
GitHub Actions로 코드 검사를 실행하면 월별 청구 분에 영향이 갑니다. 사용자의 계정에 포함된 스토리지 또는 시간(분)을 벗어나 GitHub Actions를 사용하면 추가 사용량에 대한 요금이 청구됩니다.
작업에 대한 청구 안내
코드 검사는 GitHub Actions를 사용하며, 코드 검사 워크플로를 실행할 때마다 GitHub Actions에 몇 분이 소요됩니다. 퍼블릭 리포지토리와 자체 호스팅 실행기 둘 다 GitHub Actions를 별도의 비용 없이 사용할 수 있습니다. 프라이빗 리포지토리에서 각 GitHub 계정은 계정에 사용되는 제품에 따라 특정 개수의 사용 가능한 시간(분)과 스토리지를 받습니다. 지출 한도는 포함된 금액을 초과하는 모든 사용량을 제어합니다. 월별 요금 청구 고객인 경우, 계정의 기본 지출 한도는 0 미국 달러(USD)로 설정되어 있어, 계정에 포함된 분이나 스토리지 양을 초과하여 개인 리포지토리를 추가로 사용하지 못하도록 방지합니다. 청구서로 계정을 지불하는 경우는 계정의 기본 지출 한도가 무제한입니다. 시간(분)은 매월 재설정되지만 스토리지 사용량은 재설정되지 않습니다.