프라이빗 레지스트리에 액세스 부여의 중요성에 대한 정보
리포지토리의 코드에 프라이빗 레지스트리에 저장된 종속성이 있는 경우 일부 보안 기능은 효과적으로 작동할 수 있도록 레지스트리에 액세스해야 합니다. 저장소의 모든 종속성에 접근할 수 없다면, Code Quality(공개 미리 보기), code scanning 기본 설정과 Dependabot의 효과는 제한적일 수 있습니다.
프라이빗 레지스트리에 대한 Code scanning 기본 설정 액세스
조직에서 사용하는 프라이빗 레지스트리에 대한 액세스를 정의하지 않으면, code scanning은 공용 레지스트리에서 이용 가능한 종속성으로부터 필요한 데이터만 수집합니다. 대부분의 경우, 이것만으로 취약성이 대부분 드러납니다. 그러나 경우에 따라 액세스 권한이 부족하면 잘못된 부정적인 결과가 발생할 수 있습니다. 즉, code scanning는 코드를 분석하는 데 필요한 모든 정보가 없기 때문에 코드의 취약성을 감지할 수 없습니다. 예를 들어, 액세스할 수 없는 종속성에 단계가 정의되어 있거나 code scanning이 이를 해석하지 못하여 일부 데이터 흐름 경로가 감지되지 않을 수 있습니다.
조직에 사용되는 프라이빗 레지스트리에 대한 액세스를 구성할 경우, code scanning를 이용하면 필요한 모든 정보로 접근할 수 있어 취약성을 놓칠 가능성이 훨씬 줄어듭니다.
Code scanning 기본 설정은 다음 레지스트리 유형을 지원합니다.
| Language | 레지스트리 유형 |
|---|---|
| C# | NuGet 피드 |
| Go | GOPROXY 서버, Git 원본 |
| Java | Maven 리포지토리 |
팁
조작마다 한 가지 유형의 레지스트리를 정의할 수 있습니다. 조직의 코드베이스에서 지정된 형식의 레지스트리를 둘 이상 사용하는 경우 통합 액세스 지점을 설정하거나 해당 조직의 코드베이스에 대한 가장 중요한 레지스트리에 대한 액세스를 정의해야 합니다.
code scanning 기본 설정을 위한 레지스트리 액세스 정의하기
사용자 인터페이스에 프라이빗 레지스트리에 대한 액세스를 설정하려면 조직 소유자여야 합니다. 조직 소유자 또는 {read,write}_org_private_registries 사용 권한과 함께 REST API를 사용할 수도 있습니다.
- 조직의 설정 탭에서 "보안" 섹션까지 아래로 스크롤한 후에 비밀 및 변수를 선택하세요.
- 확장된 비밀 및 변수 목록에서 프라이빗 레지스트리를 선택하여 "Private Registries" 페이지를 표시합니다.
-
**New private registry**를 선택하여 프라이빗 레지스트리에 대한 액세스 세부 정보를 추가합니다. -
* URL은 프라이빗 레지스트리로 접근하는 위치입니다. 예를 들어, NuGet에 대해 GitHub Packages 레지스트리를 사용하려면 다음을 수행합니다.**URL** 및 **Type** 필드를 사용하여 레지스트리의 위치 및 유형을 정의하세요.https://nuget.pkg.github.com/* Type은 레지스트리의 유형입니다. - 인증 방법에 따라 Token 또는 Username and password를 선택한 후 해당 필드에 데이터를 입력합니다. GitHub Personal Access Token를 비롯한 일부 인증 토큰은 각 사용자의 개별 ID와 연결되어 있습니다. 사용자 이름 및 암호 옵션을 선택하고 관련 사용자 이름을 사용자 이름으로 입력하고 토큰을 암호로 입력 합니다.
- 모든 리포지토리, 프라이빗/내부 리포지토리 또는 선택한 리포지토리 전용 등 세부 정보를 사용하여 프라이빗 레지스트리로 접근할 수 있는 조직 내 리포지토리를 정의합니다.
- 프라이빗 레지스트리 정의가 끝나면 Add Registry를 선택하여 레지스트리 정보를 저장합니다.
팁
조직에 대해 프라이빗 레지스트리를 추가하면 토큰 또는 암호가 암호화된 비밀로 저장됩니다. 레지스트리가 생성되면 토큰 또는 암호를 다시 볼 수 없습니다.
레지스트리 정의를 사용하기 위해 code scanning 기본 설정 활성화하기
리포지토리 또는 리포지토리 그룹의 code scanning 기본 설정을 활성화하면 GitHub는 리포지토리가 기존 프라이빗 레지스트리에 액세스할 수 있는지 여부를 확인합니다. 리포지토리에서 프라이빗 레지스트리를 사용할 수 있는 경우 code scanning은 분석 중 관련 정의를 사용할 것입니다.
프라이빗 레지스트리를 최초 구성 시에는 새 정의를 사용하려는 리포지토리에 대해 code scanning 기본 설정을 비활성화한 후 다시 활성화해야 합니다. 새로 생성되거나 수정된 구성은 이후 실행 시 자동으로 반영됩니다.
프라이빗 패키지 레지스트리를 지원하는 언어의 경우 code scanning의 기본 설정은 도구 상태 페이지에 대한 정보를 제공합니다. 이 구성은 분석을 위한 프라이빗 레지스트리 설정 방식을 안내하고 있으나, 기본 설정만으로 code scanning이 프라이빗 종속성을 문제없이 내려받을 수 있는지에 대해서는 확답하기 어렵습니다. 도구 상태 페이지에 대한 자세한 내용은 코드 검색에 도구 상태 페이지 사용을(를) 참조하세요.
또는 작업 로그 파일을 확인하여 code scanning 분석에서 프라이빗 레지스트리가 성공적으로 사용되었는지 확인할 수 있습니다. 코드 검색 로그을 참조하세요.
Code scanning 프라이빗 레지스트리 고급 설정 액세스
Code scanning 고급 설정에서는 codeql-action을 이용해 분석을 실시하는 워크플로에서 이용 가능한 프라이빗 레지스트리를 사용합니다. 이것은 기본 설정에서 사용하는 조직 수준의 프라이빗 레지스트리에 액세스할 수 없습니다.
컴파일 언어에서는 codeql-action이 코드 빌드 단계를 확인해야 합니다.
codeql-action을 실행하는 기존 빌드 워크플로를 수정하거나, 코드의 프로덕션 버전을 빌드하고 codeql-action을 실행하는 새로운 워크플로를 만들 수 있습니다.
빌드에서 사용하는 모든 프라이빗 레지스트리는 codeql-action을 실행하는 워크플로에서도 액세스할 수 있어야 합니다. 고급 설정에 대한 정보는 코드 검사에 대한 고급 설정 구성을 참조하세요.
Dependabot 업데이트에서 프라이빗 레지스트리에 대한 액세스 지원
Dependabot는 조직 수준의 프라이빗 레지스트리를 사용할 뿐만 아니라, 리포지토리의 dependabot.yml 파일에 저장된 프라이빗 레지스트리를 사용합니다.
Dependabot은 레지스트리에 액세스할 수 없는 한 프라이빗 레지스트리에 저장된 코드에 대해 보안 또는 버전 업데이트를 확인할 수 없습니다. 프라이빗 레지스트리에 대한 액세스를 구성하지 않으면 Dependabot은 해당 레지스트리에 저장된 종속성을 업데이트하기 위한 병합 요청을 생성하지 못합니다.
하나 이상의 프라이빗 레지스트리에 대해 액세스를 구성하는 경우, Dependabot는 취약한 종속성으로 업그레이드하거나 종속성을 유지하기 위한 병합 요청을 제안할 수 있습니다. Dependabot에 대한 개인 레지스트리 액세스 구성 및 Dependabot의 개인 레지스트리 구성에 대한 지침을 참조하세요.