쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

패키지 원본 제어 편집

포커스 모드
패키지 원본 제어 편집 - Amazon CodeCatalyst

Amazon CodeCatalyst에서는 패키지 버전을 직접 게시하거나, 업스트림 리포지토리에서 가져오거나, 게이트웨이를 통해 외부 퍼블릭 리포지토리에서 수집하여, 패키지 버전을 리포지토리에 추가할 수 있습니다. 직접 게시와 퍼블릭 리포지토리에서 수집하는 방법 모두를 통해 패키지의 버전을 추가하면, 종속성 대체 공격에 취약해집니다. 자세한 내용은 종속성 대체 공격 섹션을 참조하세요. 종속성 대체 공격을 방어하려면 리포지토리의 패키지에서 패키지 원본 제어를 구성하여 해당 패키지 버전을 리포지토리에 추가하는 방법을 제한합니다.

직접 게시 같은 내부 소스와 퍼블릭 리포지토리 같은 외부 소스 모두에서 서로 다른 패키지의 새 버전을 가져오려면 패키지 원본 제어 구성을 고려해야 합니다. 기본적으로 패키지 원본 제어는 패키지의 첫 번째 버전이 리포지토리에 추가되는 방식을 기반으로 구성됩니다.

패키지 원본 제어 설정

패키지 원본 제어를 사용하여 패키지 버전을 리포지토리에 추가하는 방법을 구성할 수 있습니다. 다음 목록에는 사용 가능한 패키지 원본 제어 설정 및 값이 포함되어 있습니다.

게시

이 설정은 패키지 관리자 또는 이와 유사한 도구를 사용하여 패키지 버전을 리포지토리에 직접 게시할 수 있는지를 구성합니다.

  • 허용: 패키지 버전을 직접 게시할 수 있습니다.

  • 차단: 패키지 버전을 직접 게시할 수 없습니다.

업스트림

이 설정은 패키지 관리자가 요청하는 경우 패키지 버전을 외부 또는 퍼블릭 리포지토리에서 수집하거나 업스트림 리포지토리에서 유지할 수 있는지를 구성합니다.

  • 허용: 모든 패키지 버전은 업스트림 리포지토리로 구성된 다른 CodeCatalyst 리포지토리에서 유지하거나 외부 연결을 통해 공개 소스에서 수집할 수 있습니다.

  • 차단: 패키지 버전은 업스트림 리포지토리로 구성된 다른 CodeCatalyst 리포지토리에서 유지하거나 외부 연결을 통해 공개 소스에서 수집할 수 없습니다.

기본 패키지 원본 제어 설정

패키지의 기본 패키지 원본 제어는 해당 패키지의 첫 번째 버전이 패키지 리포지토리에 추가되는 방식을 기반으로 합니다.

  • 패키지 관리자가 첫 번째 패키지 버전을 직접 게시하는 경우 설정은 게시: 허용업스트림: 차단이 됩니다.

  • 패키지 관리자를 공개 소스에서 수집하는 경우 설정은 게시: 차단업스트림: 허용이 됩니다.

일반적인 패키지 액세스 제어 시나리오

이 섹션에는 CodeCatalyst 리포지토리에 패키지 버전이 추가되는 일반적인 시나리오를 설명합니다. 새 패키지에 대한 패키지 원본 제어 설정은 첫 번째 패키지 버전이 추가되는 방식에 따라 설정됩니다.

다음 시나리오에서 내부 패키지는 패키지 관리자가 리포지토리에 직접 게시하는 패키지(예: 사용자가 유지 관리하는 패키지)입니다. 외부 패키지는 게이트웨이 리포지토리 업스트림을 통해 리포지토리에 수집될 수 있는 퍼블릭 리포지토리에 있는 패키지입니다.

외부 패키지 버전은 기존 내부 패키지를 대상으로 게시됩니다.

이 시나리오에서는 내부 패키지인 packageA를 가정합니다. 팀은 packageA의 첫 번째 패키지 버전을 CodeCatalyst 패키지 리포지토리에 게시합니다. 이 패키지의 첫 번째 패키지 버전이므로, 패키지 원본 제어 설정은 게시: 허용업스트림: 차단으로 자동 설정됩니다. 패키지가 리포지토리에 게시되면, CodeCatalyst 패키지 리포지토리에 연결된 퍼블릭 리포지토리에 같은 이름의 패키지가 게시됩니다. 이는 내부 패키지에 대한 종속성 대체 공격 시도일 수도 있고 우연의 일치일 수도 있습니다. 하지만 패키지 원본 제어는 새로운 외부 버전의 수집을 차단하여 잠재적 공격을 방어하도록 구성되어 있습니다.

다음 이미지에서 repoAnpm-public-registry-gateway 리포지토리에 대한 업스트림 연결이 있는 CodeCatalyst 패키지 리포지토리입니다. 리포지토리에 packageA 버전 1.1 및 2.1이 있지만 버전 3.0은 퍼블릭 리포지토리에 게시됩니다. 일반적으로 repoA는 패키지 관리자가 패키지를 요청한 후 버전 3.0을 수집합니다. 패키지 수집이 차단으로 설정되어 있기 때문에 버전 3.0은 CodeCatalyst 패키지 리포지토리에 수집되지 않으며 이 리포지토리에 연결된 패키지 관리자가 사용할 수 없습니다.

퍼블릭 리포지토리에서 차단된 새 외부 패키지 버전을 보여주는 간단한 그래픽입니다.

내부 패키지 버전은 기존 외부 패키지를 대상으로 게시됩니다.

이 시나리오에서는 패키지인 packageB가 리포지토리에 연결된 퍼블릭 리포지토리의 외부에 존재합니다. 리포지토리에 연결된 패키지 관리자가 packageB를 요청하면 해당 패키지 버전이 퍼블릭 리포지토리에서 사용자의 리포지토리로 수집됩니다. 이것은 리포지토리에 추가된 packageB의 첫 번째 패키지 버전이므로, 패키지 원본 설정은 게시: 차단업스트림: 허용으로 구성됩니다. 나중에 패키지 이름이 동일한 버전을 리포지토리에 게시합니다. 퍼블릭 패키지를 모르는 상태에서 관련 없는 패키지를 같은 이름으로 게시하려고 하거나, 패치가 적용된 버전을 게시하려고 하거나, 이미 외부에 있는 패키지 버전을 직접 게시하게 될 수 있습니다. CodeCatalyst는 사용자가 게시하려는 버전을 거부하지만, 사용자가 거부를 명시적으로 무시하고 필요한 경우에만 버전을 게시할 수 있습니다.

다음 이미지에서 repoAnpm-public-registry-gateway 리포지토리에 대한 업스트림 연결이 있는 CodeCatalyst 패키지 리포지토리입니다. 패키지 리포지토리에는 퍼블릭 리포지토리에서 수집된 버전 3.0이 포함되어 있습니다. 버전 1.2를 리포지토리에 게시하려 합니다. 일반적으로 버전 1.2를 repoA에 게시할 수 있지만 게시가 차단으로 설정되어 있기 때문에 버전 1.2는 게시할 수 없습니다.

패키지 게시가 차단되었음을 보여주는 간단한 그래픽입니다.

기존 외부 패키지의 패치가 적용된 패키지 버전 게시

이 시나리오에서는 패키지인 packageB가 패키지 리포지토리에 연결된 퍼블릭 리포지토리의 외부에 존재합니다. 리포지토리에 연결된 패키지 관리자가 packageB를 요청하면 해당 패키지 버전이 퍼블릭 리포지토리에서 사용자의 리포지토리로 수집됩니다. 이것은 사용자의 리포지토리에 추가된 packageB의 첫 번째 패키지 버전이므로, 패키지 원본 설정은 게시: 차단업스트림: 허용으로 구성됩니다. 팀에서 이 패키지의 패치가 적용된 패키지 버전을 리포지토리에 게시하기로 합니다. 패키지 버전을 직접 게시하기 위해 팀은 패키지 원본 제어 설정을 게시: 허용업스트림: 차단으로 변경합니다. 이제 이 패키지의 버전을 리포지토리에 직접 게시하고 퍼블릭 리포지토리에서 수집할 수 있습니다. 팀에서 패치된 패키지 버전을 게시하면 패키지 원본 설정을 게시: 차단업스트림: 허용으로 되돌립니다.

패키지 원본 제어 편집

패키지 원본 제어는 패키지 첫 번째 패키지 버전이 리포지토리에 추가되는 방식에 따라 자동으로 구성됩니다. 자세한 내용은 기본 패키지 원본 제어 설정 섹션을 참조하세요. CodeCatalyst 패키지 리포지토리에서 패키지의 패키지 원본 제어를 추가하거나 편집하려면 다음 절차의 단계를 수행하세요.

패키지 원본 제어 추가 또는 편집하려면
  1. 탐색 창에서 패키지를 선택합니다.

  2. 편집하려는 패키지가 포함된 패키지 리포지토리를 선택합니다.

  3. 패키지 표에서 편집할 패키지를 검색하여 선택합니다.

  4. 패키지 요약 페이지의 원본 제어를 선택합니다.

  5. 원본 제어에서 이 패키지에 설정할 패키지 원본 제어를 선택합니다. 패키지 원본 제어 설정인 게시업스트림을 동시에 설정해야 합니다.

    • 패키지 버전을 직접 게시할 수 있도록 허용하려면 게시에서 허용을 선택합니다. 패키지 버전 게시를 차단하려면 차단을 선택합니다.

    • 외부 리포지토리에서 패키지를 수집하고 업스트림 리포지토리에서 패키지를 가져오도록 허용하려면 업스트림 소스에서 허용을 선택합니다. 외부 및 업스트림 리포지토리에서의 패키지 버전 수집과 가져오기를 모두 차단하려면 차단을 선택합니다.

  6. 저장을 선택합니다.

리포지토리 게시 및 업스트림

CodeCatalyst에서는 연결 가능한 업스트림 리포지토리 또는 퍼블릭 리포지토리에 있는 패키지 버전을 게시할 수 없습니다. 예를 들어 npm 패키지 lodash@1.0을 리포지토리 myrepo에 게시하려고 하는데 myrepo에 npmjs.com과의 외부 연결이 있는 업스트림 리포지토리가 있다고 가정해 보겠습니다. 다음 시나리오를 고려해 보세요.

  1. lodash에서의 패키지 원본 제어 설정은 게시: 허용업스트림: 허용입니다. lodash@1.0이 업스트림 리포지토리 또는 npmjs.com에 있다면, CodeCatalyst는 myrepo에서 이에 게시하려는 모든 시도를 거부하며 409 충돌 오류가 발생합니다. lodash@1.1 같은 다른 버전은 게시할 수 있습니다.

  2. lodash에서의 패키지 원본 제어 설정은 게시: 허용업스트림: 차단입니다. lodash의 모든 버전은 아직 존재하지 않는 리포지토리에 게시할 수 있습니다. 패키지 버전에 연결할 수 없기 때문입니다.

  3. lodash에서의 패키지 원본 제어 설정은 게시: 차단업스트림: 하용입니다. 패키지 버전은 리포지토리에 직접 게시할 수 없습니다.

종속성 대체 공격

패키지 관리자는 재사용 가능한 코드를 패키징하고 공유하는 프로세스를 단순화합니다. 이러한 패키지는 애플리케이션에서 사용하기 위해 조직에서 개발한 프라이빗 패키지일 수도 있고, 조직 외부에서 개발되어 퍼블릭 패키지 리포지토리에서 배포하는 퍼블릭(대부분의 경우 오픈 소스) 패키지일 수도 있습니다. 패키지를 요청할 때 개발자는 패키지 관리자를 이용해 종속 항목의 새 버전을 가져옵니다. 종속성 혼동 공격이라고도 하는 종속성 대체 공격은 대부분의 패키지 관리자가 패키지의 합법적인 버전과 악성 버전을 구분할 방법이 없다는 사실을 악용합니다.

종속성 대체 공격은 소프트웨어 공급망 공격이라 알려진 공격의 하위 집합에 속합니다. 소프트웨어 공급망 공격은 소프트웨어 공급망에 존재하는 취약성을 악용하는 공격입니다.

종속성 대체 공격은 내부적으로 개발된 패키지와 퍼블릭 리포지토리에서 가져온 패키지를 모두 사용하는 사용자라면 누구나 노릴 수 있습니다. 공격자는 내부 패키지 이름을 식별한 다음 같은 이름의 악성 코드를 전략적으로 퍼블릭 패키지 리포지토리에 배치합니다. 일반적으로 악성 코드는 버전 번호가 높은 패키지에 게시됩니다. 패키지 관리자는 악성 패키지가 패키지 최신 버전이라고 생각하기 때문에 이러한 퍼블릭 피드에서 악성 코드를 가져옵니다. 결과적으로 원하는 패키지와 악성 패키지 간에 ‘혼동’ 또는 ‘대체’가 발생하여 코드가 손상될 수 있습니다.

종속성 대체 공격을 방지하기 위해 Amazon CodeCatalyst는 패키지 원본 제어 기능을 제공합니다. 패키지 원본 제어는 패키지를 리포지토리에 추가하는 방법을 제어하는 설정입니다. 제어는 새 패키지의 첫 번째 패키지 버전이 CodeCatalyst 리포지토리에 추가될 때 자동으로 구성됩니다. 제어를 사용하면 패키지 버전을 리포지토리에 직접 게시하거나 퍼블릭 소스에서 수집할 수 없게 하여 종속성 대체 공격을 방어할 수 있습니다. 패키지 원본 제어 및 이를 변경하는 방법에 대한 자세한 내용은 패키지 원본 제어 편집 섹션을 참조하세요.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.