이 가이드에서는 기존 또는 평가판 GitHub Advanced Security 엔터프라이즈 계정의 GitHub Advanced Security 평가판을 계획하고 시작했다고 가정합니다. GitHub Advanced Security의 평가판 계획을(를) 참조하세요.
소개
Code scanning 및 종속성 분석은 퍼블릭 리포지토리와 프라이빗 리포지토리 및 GitHub Advanced Security가 사용되도록 설정된 내부 리포지토리에서 동일한 방식으로 작동합니다. 또한 GitHub Advanced Security를 사용하면 보안 전문가와 개발자가 협업하여 기술적인 문제를 효과적으로 줄일 수 있는 보안 캠페인을 만들 수 있습니다.
이 문서에서는 이러한 기능을 엔터프라이즈 수준 컨트롤과 결합하여 개발 프로세스를 표준화하고 적용하는 방법에 중점을 둡니다.
보안 구성 구체화
일반적으로 모든 리포지토리에 단일 보안 구성이 적용되는 secret scanning과 달리 다양한 유형의 리포지토리에 대해 code scanning 구성을 미세 조정해야 할 수도 있습니다. 예를 들어 다음과 같은 추가 구성을 만들어야 할 수도 있습니다.
- Code scanning은 특정 레이블이 있는 실행기를 사용하여 특수한 환경이 필요하거나 프라이빗 레지스터를 사용하는 리포지토리에 적용합니다.
- Code scanning은 고급 설정을 사용해야 하거나 타사 도구가 필요한 리포지토리에 적용하기 위해 "Not set" 상태입니다.
평가판의 경우 기본 엔터프라이즈 수준 보안 구성을 만들고 이를 테스트 리포지토리에 적용하는 것이 가장 간단합니다. 그런 다음, 필요한 추가 보안 구성을 만들고 코드 언어, 사용자 지정 속성, 표시 여부 및 기타 필터 옵션을 사용하여 선택한 리포지토리의 하위 집합에 적용할 수 있습니다. 자세한 내용은 평가판 엔터프라이즈에서 보안 기능 사용 설정 및 사용자 지정 보안 구성 적용을(를) 참조하세요.
code scanning의 결과를 볼 수 있는 액세스 권한 제공
기본적으로 리포지토리 관리자와 조직 소유자만 해당 영역에서 모든 code scanning 경고를 볼 수 있습니다. 평가판 체험 중에 발견된 경고에 액세스하려는 모든 조직 팀과 사용자에게 미리 정의된 보안 관리자 역할을 할당해야 합니다. 또한 엔터프라이즈 계정 소유자에게 평가판의 각 조직에 대해 이 역할을 부여할 수도 있습니다. 자세한 내용은 조직의 보안 관리자 관리 및 조직 역할 사용을(를) 참조하세요.
기본 설정에서 결과 평가 및 구체화
code scanning의 기본 설정은 신뢰도가 높은 쿼리 집합을 실행합니다. 이는 전체 코드베이스에서 code scanning을 배포할 때 개발자가 가양성 결과가 거의 없는 제한된 고품질 결과 집합을 볼 수 있도록 하기 위해 선택되었습니다.
엔터프라이즈의 Code security 탭에서 평가판 엔터프라이즈의 조직에서 찾은 결과에 대한 요약을 볼 수 있습니다. 각 보안 경고 유형에 대한 별도의 보기도 있습니다. 보안 인사이트 보기을(를) 참조하세요.
code scanning에 대해 예상한 결과가 표시되지 않으면 기본 설정을 업데이트하여 더 많은 결과를 찾을 것으로 예상되는 리포지토리에 대한 확장 쿼리 모음을 실행할 수 있습니다. 이는 리포지토리 수준에서 제어됩니다. 기본 설정 구성 편집을(를) 참조하세요.
Tip
code scanning의 리포지토리 설정 편집이 차단된 경우 설정이 적용되지 않도록 리포지토리에서 사용하는 보안 구성을 편집합니다.
확장 도구 모음에서 아직도 예상 결과를 찾지 못한 경우 분석을 완전히 사용자 지정할 수 있도록 고급 설정을 사용하도록 설정해야 할 수도 있습니다. 자세한 내용은 코드 스캔을 위한 도구 상태 페이지 정보 및 코드 스캔을 위한 고급 설정 구성을(를) 참조하세요.
끌어오기 요청의 자동화된 분석 적용
GitHub에는 세 가지 유형의 끌어오기 요청의 자동화된 분석이 기본 제공됩니다.
- Code scanning 분석: 쿼리를 사용하여 알려진 잘못된 코딩 패턴 및 보안 취약성을 강조 표시합니다. Copilot Autofix는 code scanning을 통해 식별된 문제에 대한 수정 사항을 제안합니다.
- 종속성 검토: 끌어오기 요청으로 종속성 변경 내용을 요약하고 알려진 취약성이 있거나 개발 표준을 충족하지 않는 모든 종속성을 강조 표시합니다.
- Copilot 코드 검토: AI를 사용하여 가능한 경우 제안된 수정 사항과 함께 변경 내용에 대한 피드백을 제공합니다.
이러한 자동화된 검토는 자체 검토를 위한 중요한 확장이며 개발자가 동료 평가를 위해 보다 완전하고 안전한 끌어오기 요청을 보다 쉽게 제시할 수 있도록 합니다. 또한 code scanning 및 종속성 검토를 적용하여 코드의 보안 및 규정 준수를 보호할 수 있습니다.
Note
GitHub Copilot Autofix는 GitHub Advanced Security 라이선스에 포함되어 있습니다. Copilot 코드 검토에는 유료 Copilot 플랜이 필요합니다.
Code scanning 분석
code scanning을 사용하도록 설정하면 끌어오기 요청이 엔터프라이즈 또는 조직을 위한 코드 규칙 집합을 만들어 요구 사항을 충족하지 않는 한 중요한 분기로의 병합을 차단할 수 있습니다. 일반적으로 code scanning의 결과가 있어야 하며 중요한 경고가 해결되어야 합니다.
- 규칙 집합 유형: 분기
- code scanning 결과 필요: 커밋 및 끌어오기 요청 대상 참조에 대한 결과가 성공적으로 생성될 때까지 병합을 차단합니다.
- 필수 도구 및 경고 임계값: 사용하는 각 code scanning 도구에 대해 끌어오기 요청을 병합하기 전에 해결해야 하는 경고 수준을 정의합니다.
모든 규칙 집합과 마찬가지로 어떤 조직(엔터프라이즈 수준), 리포지토리, 분기에 규칙을 적용할지 여부를 정확하게 제어할 수 있으며, 규칙을 우회할 수 있는 역할 또는 팀을 정의할 수도 있습니다. 자세한 내용은 규칙 세트 정보을(를) 참조하세요.
종속성 검토
GitHub Advanced Security 및 종속성 그래프가 리포지토리에 대해 활성화된 경우, 매니페스트 파일에는 추가하거나 업데이트되는 종속성의 요약을 보여 주는 다양한 차이 보기가 있습니다. 이는 끌어오기 요청의 사용자 검토자에게 유용한 요약이지만 코드베이스에 추가되는 종속성을 제어할 수는 없습니다.
대부분의 엔터프라이즈는 알려진 취약성 또는 지원되지 않는 사용 조건의 종속성 사용을 차단하기 위해 자동 검사를 시행합니다.
- 엔터프라이즈에 재사용 가능한 워크플로를 저장할 수 있는 중앙 홈 역할의 프라이빗 리포지토리를 만듭니다.
- 엔터프라이즈의 모든 프라이빗 리포지토리가 이 중앙 리포지토리의 워크플로에 액세스할 수 있도록 리포지토리의 작업 설정을 편집합니다. 프라이빗 리포지토리의 구성 요소에 대한 액세스 허용을 참조하세요.
- 중앙 리포지토리에서 다시 사용할 수 있는 워크플로를 만들어 종속성 검토 작업을 실행하고 비즈니스 요구 사항에 맞게 작업을 구성합니다. 종속성 검토 작업 구성을(를) 참조하세요.
- 각 조직에서 필요한 상태 검사에 새 워크플로를 추가하기 위해 분기 규칙 집합을 만들거나 업데이트합니다. 조직 전체에서 종속성 검토 적용을(를) 참조하세요.
이렇게 하면 단일 위치에서 구성을 업데이트하면서도 여러 리포지토리에서 워크플로를 사용할 수 있습니다. 이 중앙 리포지토리를 사용하여 다른 워크플로를 유지 관리할 수 있습니다. 자세한 내용은 워크플로 다시 사용을(를) 참조하세요.
Copilot 검토
Note
- GitHub Copilot 코드 검토는 공개 미리 보기에 있으며 변경될 수 있습니다.
- 공개 미리 보기에 참여하려면 조직 관리자가 Copilot 기능의 미리 보기 사용을 옵트인해야 합니다. 조직에서 Copilot에 대한 정책 관리을(를) 참조하세요.
- 일부 기능은 활성화된 모든 Copilot 구독자에서 사용할 수 있지만 다른 기능은 제한된 수의 사용자만 사용할 수 있습니다. 추가 기능의 대기 목록에 등록하려면 Copilot 코드 검토 대기 목록에 등록을 참조하세요.
- GitHub 시험판 사용 조건은(는) 이 제품의 사용에 적용됩니다.
기본적으로 사용자는 사용자 검토자와 동일한 방식으로 Copilot에서 검토를 요청합니다. 그러나 조직 수준 분기 규칙 집합을 업데이트하거나 새로 만들어 모든 리포지토리 또는 선택된 리포지토리에서 선택한 분기에 수행된 모든 끌어오기 요청에 대해 Copilot을 자동으로 검토자로 추가할 수 있습니다. 자세한 내용은 GitHub Copilot 코드 검토 사용을(를) 참조하세요.
Copilot은 끌어오기 요청을 승인하거나 변경 내용을 요청하지 않고 검토하는 각 끌어오기 요청마다 검토 주석을 남깁니다. 이렇게 하면 해당 검토는 권고 사항이 되며 개발 작업을 차단하지 않게 됩니다. 마찬가지로 AI 제안에는 알려진 제한 사항이 있으므로 Copilot에서 제안한 해결 방법을 적용해서는 안 됩니다. GitHub Copilot 코드 검토의 책임 있는 사용을(를) 참조하세요.
Copilot Autofix가 허용되고 활성화된 위치 정의
Copilot Autofix는 개발자가 끌어오기 요청서 발견된 code scanning 경고를 이해하고 수정하는 데 도움이 되는 기능입니다. 개발자가 경고를 효율적으로 해결하고 보안 코딩에 대한 이해를 높일 수 있도록 모든 리포지토리에 이 기능을 사용하도록 설정하는 것이 좋습니다.
두 가지의 제어 수준이 있습니다.
- 엔터프라이즈에서는 "코드 보안" 정책을 사용하여 엔터프라이즈 전체에서 Copilot Autofix의 사용을 허용하거나 차단할 수 있습니다. 엔터프라이즈에 대한 코드 보안 및 분석을 위한 정책 적용을(를) 참조하세요.
- 조직에서는 조직의 "전역 설정"에서 조직 소유의 모든 리포지토리에 대해 Copilot Autofix를 사용하거나 사용하지 않도록 설정할 수 있습니다. 조직에 대한 글로벌 보안 설정 구성을(를) 참조하세요.
보안 수정에 개발자 참여시키기
보안 캠페인은 보안 팀이 개발자와 협력하여 보안 기술적인 문제를 해결할 수 있는 방법을 제공합니다. 또한 보안 코딩에 대한 교육을 개발자가 잘 알고 있는 코드의 취약한 코드 예제와 결합하는 실용적인 방법을 제공합니다. 자세한 내용은 보안 캠페인 정보 및 대규모 보안 경고 수정 모범 사례을(를) 참조하세요.
안전한 개발 환경 제공
개발 환경에는 다양한 구성 요소가 있습니다. GitHub에서 안전한 개발 환경을 스케일링하고 표준화하는 데 가장 유용한 기능 중 일부는 다음과 같습니다.
- 보안 구성: 엔터프라이즈, 조직, 조직 리포지토리의 하위 집합 또는 새 리포지토리에 대한 보안 기능 설정을 정의합니다. 보안 구성 구체화를 참조하세요.
- 정책: 엔터프라이즈 또는 조직의 리소스 사용을 보호하고 제어합니다. 엔터프라이즈에 대한 정책 적용을(를) 참조하세요.
- 규칙 집합: 조직, 조직 리포지토리의 하위 집합 또는 리포지토리에 대한 분기, 태그, 푸시를 보호하고 제어합니다. 조직에서 리포지토리에 대한 규칙 집합 만들기을(를) 참조하세요.
- 리포지토리 템플릿: 각 환경 유형에 필요한 보안 워크플로 및 프로세스를 정의합니다. 템플릿 리포지토리 만들기을(를) 참조하세요. 예를 들어, 각 템플릿에는 다음과 같은 특수화된 항목이 포함될 수 있습니다.
- 회사의 보안 입장과 보안 문제를 보고하는 방법을 정의하는 보안 정책 파일입니다.
- 회사에서 사용하는 패키지 관리자의 Dependabot version updates를 사용하도록 설정하는 워크플로입니다.
- 기본 설정 결과가 충분하지 않은 지원되는 개발 언어에 대한 code scanning의 고급 설정을 정의하는 워크플로입니다.
또한 개발자가 템플릿에서 리포지토리를 만들 때 필요한 사용자 지정 속성의 값을 정의해야 합니다. 사용자 지정 속성은 구성, 정책 또는 규칙 집합을 적용하려는 특정 리포지토리의 하위 집합을 선택하는 데 매우 유용합니다. 엔터프라이즈의 리포지토리에 대한 사용자 지정 속성 관리을(를) 참조하세요.
다음 단계
이러한 옵션과 secret scanning 기능 탐색을 마치면 지금까지의 검색 내용을 비즈니스 요구 사항에 맞게 테스트한 다음, 더 자세히 살펴볼 준비가 된 것입니다.