Skip to main content

프라이빗 레지스트리에 대한 보안 기능 액세스 부여

조직에서 프라이빗 레지스트리를 사용하는 경우, code scanning 분석의 결과를 개선하고 Dependabot을 활성화하여 이러한 레지스트리에 액세스를 설정함으로써 더 많은 종속성을 유지할 수 있습니다.

프라이빗 레지스트리에 액세스 부여의 중요성에 대한 정보

리포지토리에서 프라이빗 레지스트리에 저장된 코드를 사용하는 경우, 일부 보안 기능은 효과적인 작동을 위해 레지스트리에 대한 액세스를 필요로 합니다. 리포지토리의 모든 종속성으로 액세스가 없다면 Code Quality (공개 미리 보기), code scanning 기본 설정 및 Dependabot이 제한됩니다.

프라이빗 레지스트리에 대한 Code scanning 기본 설정 액세스

조직에서 사용하는 프라이빗 레지스트리에 대한 액세스를 정의하지 않으면, code scanning은 공용 레지스트리에서 이용 가능한 종속성으로부터 필요한 데이터만 수집합니다. 대부분의 경우, 이것만으로 취약성이 대부분 드러납니다. 그러나 경우에 따라 액세스가 없으면 거짓 부정 결과가 발생할 수 있으며, code scanning가 코드 분석에 필요한 모든 정보를 갖고 있지 않아 코드에서 취약성을 감지할 수가 없습니다. 예를 들어, 액세스할 수 없는 종속성에 단계가 정의되어 있거나 code scanning이 이를 해석하지 못하여 일부 데이터 흐름 경로가 감지되지 않을 수 있습니다.

조직에 사용되는 프라이빗 레지스트리에 대한 액세스를 구성할 경우, code scanning를 이용하면 필요한 모든 정보로 접근할 수 있어 취약성을 놓칠 가능성이 훨씬 줄어듭니다.

조작마다 한 가지 유형의 레지스트리를 정의할 수 있습니다. 조직의 코드베이스에서 특정 유형의 레지스트리를 2개 이상 사용하는 경우, 조직 내 코드베이스에 가장 중요한 레지스트리에 대한 액세스를 정의해야 합니다.

code scanning 기본 설정을 위한 레지스트리 액세스 정의하기

사용자 인터페이스에 프라이빗 레지스트리에 대한 액세스를 설정하려면 조직 소유자여야 합니다. 조직 소유자 또는 {read,write}_org_private_registries 권한으로 REST API를 사용하는 방법도 있습니다.

  1. 조직의 설정 탭에서 "보안" 섹션까지 아래로 스크롤한 후에 비밀 및 변수를 선택하세요.
  2. 확장된 비밀 및 변수 목록에서 프라이빗 레지스트리를 선택하여 "Private Registries" 페이지를 표시합니다.
  3. New private registry를 선택하여 프라이빗 레지스트리에 대한 액세스 세부 정보를 추가합니다.
  4. URLType 필드를 사용하여 레지스트리의 위치 및 유형을 정의하세요.
    •           **URL**은 프라이빗 레지스트리로 접근하는 위치입니다. 예를 들어, NuGet에 대해 GitHub Packages 레지스트리를 사용하려면 다음을 수행합니다. `https://nuget.pkg.github.com/` 
      
    •           **Type**은 레지스트리의 유형입니다.
      
  5. 인증 방법에 따라 Token 또는 Username and password를 선택한 후 해당 필드에 데이터를 입력합니다.
  6. 모든 리포지토리, 프라이빗/내부 리포지토리 또는 선택한 리포지토리 전용 등 세부 정보를 사용하여 프라이빗 레지스트리로 접근할 수 있는 조직 내 리포지토리를 정의합니다.
  7. 프라이빗 레지스트리 정의가 끝나면 Add Registry를 선택하여 레지스트리 정보를 저장합니다.

조직에 대해 프라이빗 레지스트리를 추가하면 토큰 또는 암호가 암호화된 비밀로 저장됩니다. 레지스트리가 생성되면 토큰 또는 암호를 다시 볼 수 없습니다.

레지스트리 정의를 사용하기 위해 code scanning 기본 설정 활성화하기

리포지토리 또는 리포지토리 그룹의 code scanning 기본 설정을 활성화하면 GitHub는 리포지토리가 기존 프라이빗 레지스트리에 액세스할 수 있는지 여부를 확인합니다. 리포지토리에서 프라이빗 레지스트리를 사용할 수 있는 경우 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의 개인 레지스트리 구성에 대한 지침을 참조하세요.