Note
이 문서는 대규모 GitHub Advanced Security를 채택하는 시리즈의 일부입니다. 이 시리즈의 이전 문서는 4단계: 내부 설명서 만들기을(를) 참조하세요.
코드 검색 사용
2단계에서 수집한 데이터를 사용하여 GHAS를 사용하도록 설정한 다음 리포지토리의 code scanning을(를) 한 번에 하나의 언어로 설정할 수 있습니다. GHAS를 사용하도록 설정하는 단계별 프로세스는 다음과 같습니다.
- 리포지토리에서 GHAS를 사용하도록 설정합니다. 자세한 내용은 리포지토리에 대한 보안 및 분석 설정 관리을(를) 참조하세요.
- 해당 언어에 대해 CodeQL을(를) 실행하는 방법에 대한 예제를 포함하는
codeql-analysis.yml
파일을 사용하여 리포지토리의 기본값 분기에 대한 끌어오기 요청을 만듭니다. 자세한 내용은 끌어오기 요청 만들기을(를) 참조하세요. - 리포지토리에서 문제를 만들어 끌어오기 요청이 발생한 이유를 설명합니다. 만든 문제에는 모든 사용자에게 전송된 이전 통신 링크가 포함될 수 있지만 끌어오기 요청에 적용되는 변경 내용, 팀이 수행해야 하는 다음 단계, 팀의 책임, 팀이 code scanning를 어떻게 사용해야 하는지를 설명할 수도 있습니다. 자세한 내용은 문제 만들기을(를) 참조하세요.
ghas-enablement tool이라는 처음 두 단계를 완료하는 공개적으로 사용할 수 있는 도구가 있습니다. ghas-enablement tool을 의미 있는 언어 일괄 처리로 다시 실행할 수 있습니다. 예를 들어 JavaScript, TypeScript, Python 및 Go는 빌드 프로세스가 유사하므로 유사한 CodeQL 분석 파일을 사용할 수 있습니다. ghas-enablement tool은 Java, C 및 C++와 같은 언어에도 사용할 수 있지만 이러한 언어가 빌드하고 컴파일하는 방식의 다양한 특성으로 인해 더 많은 대상 CodeQL 분석 파일을 만들어야 할 수 있습니다.
Note
GitHub Actions를 사용하여 code scanning을 제어하려고 하고 ghas 사용 도구를 사용하지 않는 경우 .github/workflow
디렉터리에 대한 API 액세스 권한이 없음에 유의하세요. 즉, 자동화를 기본으로 하는 git 클라이언트가 없으면 스크립트를 만들 수 없습니다. 해결 방법은 git 클라이언트가 있는 컴퓨터 또는 컨테이너에서 bash 스크립팅을 활용하는 것입니다. git 클라이언트는 codeql-analysis.yml
파일이 있는 .github/workflows
디렉터리로 파일을 푸시하고 끌어올 수 있습니다.
리포지토리의 기본 분기로 codeql-analysis.yml
파일을 푸시하는 것만이 아니라 이 부분도 중요합니다. 끌어오기 요청을 사용하면 개발 팀의 소유권이 검토 및 병합되므로 개발 팀이 code scanning에 대해 알아보고 프로세스에 팀을 참여시키는 방법을 배울 수 있습니다.
자동화에서 만든 끌어오기 요청 URL을 캡처하고 매주 모든 활동을 확인한 후 닫힌 작업을 확인해야 합니다. 몇 주 후에 끌어오기 요청이 남아 있는 경우 다른 문제를 만들거나 내부 메일을 보내는 것이 좋습니다.
주제 전문 지식 구축
그런 다음 내부 SME(실무 전문가)를 만들고 회사 회의를 준비하는 다음 지원 단계로 진행할 수 있습니다. 리포지토리에서 끌어오기 요청 및 문제를 열면 채택의 상당 부분을 해결할 수 있지만 특정 빌드 프로세스, 프레임워크 또는 라이브러리에 특정 기능 플래그를 사용하도록 설정해야 하는 일회성 사용 사례는 다루지 않습니다. 특히 Java, C 및 C++의 경우 더 많이 채택하도록 하려면 보다 개인화된 실습 접근 방식이 필요합니다.
특정 주제에 대해 정기적으로 회사 회의를 열여 더 큰 그룹과 롤아웃에 대해 교육하고 논의하는 것이 좋습니다. 이는 한 번에 한 팀으로 작업하는 것에 비해 수천 개의 리포지토리가 있는 기업에게 있어 시간적으로 훨씬 더 효율적입니다. 팀은 해당 세션과 관련된 세션에 참가할 수 있습니다. 이전에 실행된 몇 가지 예제 세션은 다음과 같습니다.
- 컨테이너의 Code scanning
- Code scanning 및 Java Struts
- Code scanning 및 JSP
리포지토리 간에 다양한 언어 배포에 대해 수집한 데이터를 사용하여 대상 회의를 만들 수 있습니다.
Note
이 시리즈의 다음 문서는 6단계: 비밀 검사 롤아웃 및 크기 조정을(를) 참조하세요.