악의적인 공용 패키지로부터 보호
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Artifacts 업스트림 원본을 사용하면 개발자는 통합 피드를 사용하여 아티팩트 피드와 인기 있는 공용 레지스트리(예: NuGet.org 또는 npmjs.com)에서 패키지를 게시하고 사용할 수 있습니다. 이전에는 아티팩트 피드가 피드 자체와 구성된 모든 업스트림 원본에서 사용 가능한 패키지 버전 목록을 결합했습니다.
외부 소스 버전 허용은 개발자가 외부 소스 패키지 버전을 사용할지 선택할 수 있는 기능입니다. 특정 패키지에 대한 퍼블릭 레지스트리에서 액세스할 수 있는 패키지를 제어합니다.
외부 버전 허용 토글을 사용하지 않도록 설정하면 공용 레지스트리의 버전이 차단되고 다운로드할 수 없게 됩니다. 이렇게 하면 퍼블릭 레지스트리에서 잠재적으로 악의적인 패키지에 노출되는 것을 방지하여 추가 보안 계층이 추가됩니다.
그러나 사용자가 선호하는 경우 외부 버전 허용 토글을 사용하도록 설정하여 공용 레지스트리의 패키지에 대한 액세스를 허용하고 사용할 수 있습니다.
참고 항목
이 설정은 피드에 이미 저장된 패키지 버전을 변경하지 않습니다. 이러한 패키지 버전에 대한 액세스는 이 설정을 변경한 결과로 변경되지 않습니다.
적용 가능한 시나리오
다음 섹션에서는 외부 버전 설정이 외부 소스 패키지 버전을 차단하는 다양한 일반적인 시나리오와 퍼블릭 패키지에 대한 액세스를 차단할 필요가 없는 기타 시나리오를 보여 줍니다.
공용 버전이 차단됨
공개된 프라이빗 패키지 버전
이 시나리오에서 팀에는 공개된 프라이빗 패키지가 있습니다. 이 경우 외부 버전 설정으로 인해 피드가 퍼블릭 소스에서 해당 패키지 이름을 가진 새 버전의 사용을 차단합니다.
프라이빗 및 퍼블릭 패키지 모두 필요
이 시나리오에서 팀이 프라이빗 및 퍼블릭 패키지의 조합을 사용하는 경우 외부 소스 패키지를 허용하지 않으면 퍼블릭 레지스트리의 새 패키지 버전이 차단됩니다.
공용 버전은 차단되지 않습니다.
모든 패키지는 프라이빗*
모든 기존 패키지가 비공개이고 팀에서 공개 패키지를 사용할 계획이 없는 경우 외부 버전 설정은 이 시나리오에서 팀의 워크플로에 영향을 주지 않습니다.
모든 패키지는 공용입니다.
이 시나리오에서 팀에서 퍼블릭 레지스트리 또는 다른 오픈 소스 리포지토리에서 공용 패키지를 단독으로 사용하는 경우 설정은 워크플로에 어떤 방식으로도 영향을 주지 않습니다.
비공개로 만든 퍼블릭 패키지
이 경우 퍼블릭 패키지가 프라이빗 패키지로 변환되는 경우 외부 버전 설정은 어떤 방식으로든 팀의 워크플로에 영향을 주지 않습니다.
외부 버전 허용
참고 항목
외부 소스 버전을 허용하려면 피드 소유자 여야 합니다. 자세한 내용은 피드 권한을 참조 하세요.
Azure DevOps 조직에 로그인한 다음 프로젝트로 이동합니다.
아티팩트 및 드롭다운 메뉴에서 피드를 선택합니다.
패키지를 선택한 다음, 더 많은 옵션을 보려면 줄임표 단추를 선택합니다. 외부 소스 버전 허용을 선택합니다.
외부 버전을 허용하려면 토글 단추를 선택합니다. 완료되면 닫기를 선택합니다.
REST API를 사용하여 외부 버전 허용
PowerShell을 사용하여 외부 버전 허용
읽기, 쓰기 및 관리 권한을 패키징하여>개인용 액세스 토큰을 만듭니다.
개인 액세스 토큰에 대한 환경 변수를 만듭니다.
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
개인 액세스 토큰을 baser64로 인코딩된 문자열로 변환하고 HTTP 요청 헤더를 생성합니다.
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
엔드포인트 URL을 생성합니다. 예: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
프로젝트 범위 피드:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
조직 범위 피드:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
다음 명령을 실행하여 패키지의 업스트림 동작 상태를 검색합니다. $url
이전 $headers
섹션에서 사용한 것과 동일한 변수입니다.
Invoke-RestMethod -Uri $url -Headers $headers