Skip to main content

セキュリティ機能にプライベート レジストリへのアクセスを許可する

Organization でプライベート レジストリを使っている場合は、これらのレジストリへのアクセスを設定することで、code scanning の分析結果を改善し、Dependabot がより多くの依存関係を維持できるようにすることができます。

プライベート レジストリへのアクセスを提供することの重要性

リポジトリがプライベート レジストリに格納されたコードを使う場合、一部のセキュリティ機能が効果的に機能できるようにするには、レジストリにアクセスする必要があります。 リポジトリのすべての依存関係にアクセスできない場合、code scanning の既定の設定と Dependabot は制限されます。

プライベート レジストリに対する Code scanning の既定の設定アクセス

Note

Organization で使うように code scanning の既定の設定に対してプライベート レジストリを構成することは、現在 パブリック プレビュー 段階であり、変更される可能性があります。 サポートされているレジストリ: Maven リポジトリと NuGet フィード。

Code scanning の既定の設定では、ビルドせずに C# および Java コードを分析できます。 Organization が使うプライベート レジストリへのアクセスを定義していない場合、code scanning により、パブリック レジストリで使用できる依存関係から必要なデータのみが収集されます。 ほとんどの場合、この方法でほとんどの脆弱性を検出できます。 ただし、場合によっては、アクセスがないために、偽陰性の結果になる可能性があります。つまり、コードの分析に必要なすべての情報が含まれていないため、code scanning ではコード内の脆弱性を検出できません。 たとえば、アクセスできない依存関係でステップが定義されていても、code scanning はその解釈方法がわからないため、一部のデータ フロー パスが検出されない可能性があります。

Organization で使われるプライベート レジストリへのアクセスを構成すると、code scanning は必要なすべての情報にアクセスできるようになり、脆弱性を見逃す可能性が大幅に低くなります。

Tip

Organization ごとに 1 つのプライベート Maven レジストリと 1 つのプライベート NuGet フィードを定義できます。 Organization 内のコードベースで複数のレジストリまたはフィードを使っている場合は、その organization 内のコードベースに対して最も重要なレジストリへのアクセスを定義する必要があります。

code scanning の既定の設定に対するレジストリ アクセスを定義する

ユーザー インターフェイスでプライベート レジストリへのアクセスを設定するには、organization 所有者である必要があります。 Organization 所有者または {read,write}_org_private_registries のアクセス許可があれば、REST API を使うこともできます。

  1. Organization の [Settings] タブで、[Security] セクションまで下にスクロールし、[Secrets and variables] を選びます。
  2. シークレットと変数の展開された一覧で、[Private registries] を選び、[Private registries] ページを表示します。
  3. [New private registry] を選び、プライベート レジストリのアクセス情報を追加します。
  4. [URL] および [Type] フィールドを使って、レジストリの場所と種類を定義します。
    • [URL] は、プライベート レジストリにアクセスする場所です。 たとえば、NuGet に GitHub Packages レジストリを使うには: https://nuget.pkg.github.com/
    • [Type] はレジストリの種類です。
  5. 認証方法に応じて [Token] または [Username and password] のいずれかを選び、適切なフィールドにデータを入力します。
  6. すべて、プライベートと内部、または選んだリポジトリのみという情報を使って、organization 内のどのリポジトリがプライベート レジストリにアクセスできるかを定義します。
  7. プライベート レジストリの定義が完了したら、[Add Registry] を選んでレジストリ情報を保存します。

Tip

プライベート レジストリを organization に追加すると、トークンまたはパスワードが暗号化されたシークレットとして格納されます。 レジストリが作成された後に、トークンまたはパスワードを再度表示することはできません。

レジストリ定義を使うために code scanning の既定の設定を有効にする

リポジトリまたはリポジトリのグループに対して code scanning の既定の設定を有効にすると、GitHub により、リポジトリが既存のプライベート レジストリにアクセスできるかどうかが確認されます。 リポジトリが使用できるプライベート レジストリがある場合、分析時に、code scanning によって関連する定義が使われます。

初めてプライベート レジストリを構成するときは、新しい定義を使うリポジトリの code scanning の既定の設定を無効にして再度有効にする必要があります。 新規の、または変更された構成は、以降の実行時に自動的に取得されます。

code scanning の分析によってプライベート レジストリが正常に使われたかどうかを確認するには、アクション ログ ファイルを調べます。「コード スキャンの既定の設定でプライベート レジストリが使われているかどうかを判断する」を参照してください。

プライベート レジストリに対する Code scanning の詳細設定アクセス

Code scanning の詳細設定には、codeql-action を使って分析を実行するワークフローが使用できるプライベート レジストリが使われます。 既定の設定で使われる organization レベルのプライベート レジストリにはアクセスできません。

コンパイルされた言語の場合、codeql-action はコードのビルドを監視する必要があります。 既存のビルド ワークフローを修正して codeql-action も実行するか、運用バージョンのコードをビルドして codeql-action も実行する新しいワークフローを作成できます。

ビルドで使われるプライベート レジストリは、codeql-action を実行するワークフローからもアクセスできる必要があります。 詳細設定の詳細については、「コード スキャンの高度なセットアップの構成」を参照してください。

Dependabot によるプライベート レジストリに対するアクセスの更新

Dependabot は、dependabot.yml ファイルで定義されているプライベート レジストリを使います。 code scanning の既定の設定で使われる organization レベルのプライベート レジストリにはアクセスできません。

Dependabot は、レジストリにアクセスできない場合、プライベート レジストリに格納されているコードのセキュリティやバージョンの更新をチェックできません。 プライベート レジストリへのアクセスを構成しない場合、Dependabot は、レジストリに格納されている依存関係を更新する pull request を発行できません。

1 つ以上のプライベート レジストリへのアクセスを構成する場合、Dependabot を使って、脆弱な依存関係をアップグレードしたり依存関係を維持したりする pull request の提案を受けることができます。「Dependabot のプライベート レジストリへのアクセスの構成」と「Dependabot のプライベート レジストリの構成に関するガイダンス」を参照してください。