Skip to main content

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

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

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

リポジトリ内のコードにプライベート レジストリに格納されている依存関係がある場合、一部のセキュリティ機能は、それらを効果的に機能させるためにレジストリにアクセスする必要があります。 リポジトリのすべての依存関係にアクセスできない場合、Code Quality (パブリック プレビュー)、code scanning の既定のセットアップと Dependabot の有効性が制限されます。

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

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

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

Code scanning の既定のセットアップでは、次のレジストリの種類がサポートされています。

Languageレジストリの種類
C#NuGet フィード
GoGOPROXY サーバー、Git ソース
JavaMaven リポジトリ

ヒント

Organization ごとに、レジストリの各種類を 1 つ定義できます。 組織内のコードベースで特定の種類の複数のレジストリを使用する場合は、統合アクセス ポイントを設定するか、その組織内のコードベースの最も重要なレジストリへのアクセスを定義する必要があります。

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

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

  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] のいずれかを選び、適切なフィールドにデータを入力します。 GitHub Personal Access Token など、一部の種類の認証トークンは、特定のユーザー ID に関連付けられています。 これらのユーザー 名とパスワード のオプションを選択し、関連するユーザー名を ユーザー名 として入力し、トークンをパスワードとして入力 します
  6. すべて、プライベートと内部、または選んだリポジトリのみという情報を使って、organization 内のどのリポジトリがプライベート レジストリにアクセスできるかを定義します。
  7. プライベート レジストリの定義が完了したら、[Add Registry] を選んでレジストリ情報を保存します。

ヒント

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

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

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

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

プライベートパッケージレジストリをサポートする言語の場合、code scanning の標準設定では、ツールの状態ページ に関する情報が提供されます。 これは、どのプライベート レジストリ構成を分析に使用できたかを示しますが、code scanning の既定のセットアップが、それらのプライベート依存関係からプライベート依存関係を正常にダウンロードできたかどうかは示されません。 ツールの状態ページ の詳細については、「コード スキャンにツールの状態ページを使用する」を参照してください。

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

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

Code scanning の高度なセットアップでは、codeql-action を使用して分析を実行するワークフローが利用できるプライベートレジストリを対象としています。 既定の設定で使われる organization レベルのプライベート レジストリにはアクセスできません。

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

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

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

Dependabot は、organization レベルのあらゆるプライベート レジストリを使用でき、リポジトリ内の dependabot.yml ファイルで定義されたプライベート レジストリも使用できます。

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

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

プライベート レジストリへの Code Quality アクセス

メモ

GitHub Code Quality は現在 パブリック プレビュー にあり、変更される可能性があります。 パブリック プレビュー の間、Code Quality は課金されませんが、Code Quality スキャンでは GitHub Actions 分が消費されます。

GitHub Code Quality では、リポジトリに対して有効になっているときに使用できる organization レベルの任意のプライベート レジストリを使用できます。

組織に新しいレジストリを追加する場合は、Code Quality を無効にして再度有効にして、分析で新しいレジストリが検出され、使用されるようにする必要があります。

組織のプライベート レジストリ アクセスを設定するには、「 既定のセットアップをスキャンするコードのレジストリ アクセスの定義」を参照してください。