Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

パッケージオリジンコントロールの編集

フォーカスモード
パッケージオリジンコントロールの編集 - 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.1 をパッケージリポジトリに公開したいと考えています。通常、バージョン 1.2 を repoA に公開できますが、公開が [ブロック] に設定されているため、バージョン 1.2 は公開できません。

パッケージの公開がブロックされていることを示すシンプルなグラフィック。

既存の外部パッケージにパッチを適用したパッケージバージョンを公開する

このシナリオでは、packageB という名前のパッケージは、パッケージリポジトリに接続したパブリックリポジトリの外部に存在します。リポジトリに接続しているパッケージマネージャーが packageB をリクエストすると、パッケージバージョンはパブリックリポジトリからリポジトリに取り込まれます。これは packageB の最初のパッケージバージョンであるため、パッケージオリジンコントロール設定は自動的に [公開: ブロック] および [アップストリーム: 許可] に設定されます。チームは、このパッケージのパッチが適用されたパッケージバージョンをリポジトリに公開することを決めました。パッケージバージョンを直接公開するために、チームはパッケージのオリジンコントロール設定を [公開: 許可] および アップストリーム: ブロック] に変更します。これで、このパッケージのバージョンをリポジトリに直接公開し、パブリックリポジトリから取り込むことができます。チームがパッチを適用したパッケージバージョンを公開した後、チームはパッケージオリジンの設定を [公開: ブロック] および [アップストリーム: 許可] に戻します。

パッケージオリジンコントロールの編集

パッケージオリジンコントロールは、パッケージの最初のパッケージバージョンがパッケージリポジトリに追加された方法に基づいて自動的に設定されます。詳細については、「パッケージオリジンコントロールのデフォルト設定」を参照してください。CodeCatalyst パッケージリポジトリ内のパッケージのパッケージオリジンコントロールを追加または編集する手順は次のとおりです。

パッケージオリジンコントロールを追加または編集するには
  1. ナビゲーションペインで、[Packages (パッケージ)] を選択します。

  2. 編集するパッケージを含むパッケージリポジトリを選択します。

  3. [パッケージ] の表で、編集するパッケージを検索して選択します。

  4. パッケージの要約ページの [オリジンコントロール] を選択します。

  5. [オリジンコントロール] で、パッケージに設定するパッケージオリジンコントロールを選択します。[公開][アップストリーム] の両方のパッケージオリジンコントロール設定を同時に設定する必要があります。

    • パッケージバージョンを直接公開できるようにするには、[公開][許可] を選択します。パッケージバージョンの公開を禁止するには、[ブロック] を選択します。

    • 外部リポジトリからのパッケージの取り込みとアップストリームリポジトリからのパッケージの取得を許可するには、[アップストリームソース][許可] を選択します。外部リポジトリおよびアップストリームリポジトリからのパッケージバージョンの取り込みとプルをすべてブロックするには、[ブロック] を選択します。

  6. [Save] を選択します。

公開リポジトリとアップストリームリポジトリ

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 上のパッケージオリジンコントロール設定は、[公開: ブロック][アップストリーム: 許可] です。この場合、どのパッケージバージョンもリポジトリに直接公開することはできません。

依存関係置換攻撃

パッケージマネージャーは、再利用可能なコードをパッケージ化して共有するプロセスを簡素化します。これらのパッケージは、ある組織がアプリケーションで使用するために開発したプライベートパッケージの場合もあれば、組織外で開発され、パブリックパッケージリポジトリによって配布されるパブリックパッケージ (通常はオープンソースパッケージ) の場合もあります。パッケージをリクエストする際、開発者はパッケージマネージャーを使用して依存関係の新しいバージョンを取得します。依存関係置換攻撃 (依存関係かく乱攻撃とも呼ばれる) は、通常、パッケージマネージャーでパッケージの正規バージョンと悪意のあるバージョンを区別できない点を悪用するものです。

依存関係置換攻撃は、ソフトウェアサプライチェーン攻撃と呼ばれる攻撃のサブセットに属します。ソフトウェアサプライチェーン攻撃は、ソフトウェアサプライチェーンのあらゆる場所にある脆弱性を利用する攻撃です。

依存関係置換攻撃は、内部で開発されたパッケージとパブリックリポジトリから取得したパッケージの両方を使用するすべてのユーザーを標的にする可能性があります。攻撃者は内部パッケージ名を特定し、同じ名前の悪意のあるコードを公開パッケージリポジトリに戦略的に配置します。通常、悪意のあるコードはバージョン番号の高いパッケージで公開されます。パッケージマネージャーは、悪意のあるパッケージをパッケージの最新バージョンとみなすため、これらの公開フィードから悪意のあるコードを取得します。これにより、目的のパッケージと悪意のあるパッケージが「かく乱」または「置換」され、コードが危険にさらされることになります。

依存関係置換攻撃を防ぐために、CodeCatalyst にはパッケージオリジンコントロールが用意されています。パッケージオリジンコントロールは、パッケージをリポジトリに追加する方法を制御する設定です。このコントロールは、新しいパッケージの最初のパッケージバージョンが CodeCatalyst リポジトリに追加される際に自動的に設定されます。このコントロールにより、パッケージバージョンをリポジトリに直接公開したり、公開ソースから取り込んだりすることができないため、依存関係置換攻撃から保護されます。パッケージオリジンコントロールとその変更方法については、「パッケージオリジンコントロールの編集」を参照してください。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.