GitHub Dependabot / code scanningのOIDC対応とは?Private Registryのシークレット管理を減らす実務ポイント

GitHub Dependabot / code scanningでprivate package feedsを使っている組織にとって、OIDC対応の最大のメリットは、レジストリ用の長期トークンやパスワードをGitHub Secretsに保存・配布・更新する手間を減らせることです。AWS CodeArtifact、Azure DevOps Artifacts、JFrog Artifactoryなどのprivate registriesに対して、必要なときだけ短命の認証情報を取得できるため、漏えいリスク、ローテーション作業、監査対応の負担を下げやすくなります。

2026年4月時点のGitHub更新では、Dependabotとcode scanningがorganization-level private registries向けのOIDC認証に対応したことが発表されました。DevSecOpsチームやGitHub Platform管理者は、「依存関係更新」と「コード解析」の両方で、プライベートパッケージに安全にアクセスさせる設計を見直すタイミングです。(The GitHub Blog)

目次

何が変わったのか:private registriesへのアクセスを組織レベルで扱いやすくなった

今回のポイントは、GitHub Dependabot / code scanningが使うprivate registriesの認証を、リポジトリごとの静的シークレット中心から、組織レベルの設定とOIDC中心に寄せられることです。

GitHubのChangelogでは、Dependabotとcode scanningがorganization-level private registriesに対するOIDC認証をサポートし、長期資格情報をrepository secretsとして保存する必要を減らせると説明されています。対応レジストリとしては、AWS CodeArtifact、Azure DevOps Artifacts、JFrog Artifactoryが挙げられており、発表時点ではCloudsmithとGoogle Artifact Registryのサポート追加も予定されています。(The GitHub Blog)

また、別の同日更新では、同じエコシステムに対して複数のprivate registriesを組織レベルで登録できるようになったことも示されています。これにより、npm、Maven、NuGet、Docker、pip、RubyGemsなどで、社内フィードや事業部別フィードを複数持つ組織でも、リポジトリ単位の個別設定に頼りすぎずに管理しやすくなります。(The GitHub Blog)

観点従来のよくある運用OIDC対応後に狙える運用
認証情報PAT、APIトークン、パスワードをGitHub Secretsに保存クラウドIDプロバイダーから短命の認証情報を動的に取得
管理単位リポジトリごと、またはDependabot secretsごとに分散organization-level private registriesで集約しやすい
ローテーショントークン更新のたびに複数リポジトリへ反映長期シークレットの更新作業を削減
監査「どこに何の秘密情報があるか」の棚卸しが必要信頼関係、ロール、ポリシー、実行ログを中心に説明しやすい
漏えい時の影響長期トークンが流出すると失効まで影響が続く短命トークンのため、影響範囲を抑えやすい

OIDCが削減する「つらいシークレット管理」とは

private package feedsを使うDependabot運用では、これまで次のような作業が発生しがちでした。

  • パッケージレジストリ側で専用ユーザーやトークンを作る
  • GitHub側にrepository secretまたはorganization secretとして登録する
  • dependabot.ymlからそのsecretを参照する
  • トークンの期限切れや退職者アカウントの整理に合わせて更新する
  • どのリポジトリがどのsecretにアクセスできるかを定期的に確認する
  • 漏えい時に、影響リポジトリと利用先を急いで洗い出す

小規模なリポジトリなら対応できますが、数十〜数百リポジトリを管理するDevSecOpsチームでは、これが大きな運用負荷になります。特に、社内npmフィード、Mavenリポジトリ、NuGetフィード、コンテナレジストリが混在する組織では、依存関係更新のためだけに多数の長期資格情報を維持することになります。

OIDCでは、この「秘密情報を作ってGitHubに複製する」流れを変えます。GitHubのOIDCモデルでは、GitHub側のジョブがOIDCトークンを取得し、クラウドプロバイダー側がそのトークンのclaimを検証したうえで短命のアクセス資格情報を発行します。GitHub Docsでも、OIDCを使うことで長期のクラウド認証情報をGitHub secretsとして複製せずに済み、より細かい認証・認可管理や自動失効を利用できると説明されています。(GitHub Docs)

仕組みを簡単に言うと:GitHubに「鍵」を置かず、実行時に「通行証」をもらう

OIDCを使ったprivate registriesアクセスは、次のような流れで考えると分かりやすいです。

ステップ何が起きるか管理者が見るべきポイント
クラウド側で信頼関係を作るAWS IAM、Azure AD、JFrogなどでGitHubのOIDCプロバイダーを信頼するどのGitHub organization、repository、条件を許可するか
GitHub側でprivate registryを登録するorganization settingsまたはAPIでレジストリURL、種類、OIDC関連項目を設定する全リポジトリに開けるのか、selected repositoriesに絞るのか
Dependabotや解析ジョブが動く実行時にGitHubがOIDCトークンを発行する実行主体が想定したリポジトリ・条件か
クラウド側が検証するclaimがポリシーに合えば短命の認証情報を発行するロールや権限が読み取り専用・最小権限になっているか

重要なのは、OIDCが「認証情報を不要にする魔法」ではないことです。不要になるのは、長期トークンやパスワードをGitHubに保存して使い回す運用です。代わりに、クラウド側の信頼ポリシー、GitHub側のレジストリ定義、リポジトリのアクセス範囲を正しく設計する必要があります。

Dependabotでの実務メリット:private package feedsの更新PRを安全に出しやすくなる

Dependabotは、private registryにアクセスできなければ、そのレジストリにある依存関係のセキュリティ更新やバージョン更新を確認できません。GitHub Docsでも、private registryへのアクセスを設定しない場合、Dependabotはそのレジストリ内の依存関係を更新するpull requestを作成できないと説明されています。(GitHub Docs)

たとえば、次のような組織ではOIDCの価値が大きくなります。

利用シーン従来の課題OIDCで改善しやすい点
社内npmフィードを多数のNode.jsサービスで利用npmトークンを各リポジトリに配布しがちorganization-level private registryで集約し、短命資格情報に寄せられる
Maven / NuGetの社内ライブラリを複数部門で共有部門ごとに別トークン、別secretが増えるレジストリ単位・リポジトリ範囲単位で管理しやすい
AWS CodeArtifactを利用AWSアクセスキーの扱いが監査上の論点になりやすいIAMロールとOIDC信頼ポリシーで制御しやすい
JFrog Artifactoryを全社利用長期パスワードやサービスアカウントの棚卸しが重いOIDC provider名やidentity mappingを使った統制に寄せられる

DependabotのOIDC認証は、usernamepassword型の認証を使うレジストリタイプで、AWS CodeArtifact、Azure DevOps Artifacts、JFrog Artifactoryにホストされている場合に対応すると説明されています。設定に必要な項目はプロバイダーごとに異なり、AWSではregion、account ID、role名、domainなど、Azure DevOps Artifactsではtenant IDとclient ID、JFrogではOIDC provider nameなどを指定します。(GitHub Docs)

ここでの実務上の狙いは、Dependabotを止めないことです。シークレット管理が面倒だからprivate dependenciesの更新を後回しにする、という状態はサプライチェーンリスクにつながります。OIDCで認証情報の運用負担を下げられれば、Dependabot security updatesやversion updatesを組織全体に展開しやすくなります。

code scanningで重要な理由:private dependenciesを読めない解析は見落としにつながる

code scanningでもprivate registriesへのアクセスは重要です。GitHub Docsでは、リポジトリのコードがprivate registry内の依存関係を使っている場合、code scanning default setupやDependabotなどのセキュリティ機能は、その依存関係へアクセスできないと効果が制限されると説明されています。特にcode scanningでは、アクセスできない依存関係があるとデータフローの一部を解釈できず、脆弱性を検出できないfalse negativeにつながる可能性があります。(GitHub Docs)

これは、単に「ビルドが通るか」だけの問題ではありません。たとえば、社内ライブラリに入力検証、認可チェック、SQL実行、HTTPクライアント、シリアライズ処理などが含まれている場合、code scanningがその中身や型情報を十分に見られないと、アプリケーション全体のデータの流れを正確に追いにくくなります。

ただし、code scanningは設定方式によって見るべきポイントが変わります。GitHub Docsでは、code scanning default setupはorganization-level private registriesの定義を利用できる一方、advanced setupではcodeql-actionを実行するワークフローが利用できるprivate registriesが対象であり、default setup用のorganization-level private registriesにはアクセスしないと説明されています。(GitHub Docs)

そのため、GitHub Platform管理者は次のように切り分けると安全です。

利用形態確認すべきこと
code scanning default setuporganization-level private registryの定義が対象リポジトリに許可されているか
code scanning advanced setupCodeQLを実行するActions workflow内で、ビルドに必要なprivate registriesへアクセスできるか
Dependabot updatesDependabotが対象private registryを使えるか、更新ジョブのログで失敗していないか

ロールアウト直後の機能は、UI、REST API、ドキュメントの表記が変わることがあります。特にOIDCをcode scanningで使う場合は、自社のGitHubプラン、GitHub Enterprise Serverのバージョン、default setup / advanced setupのどちらかを確認し、小さなリポジトリで動作検証してから全社展開するのが現実的です。

導入すべき組織の判断基準

OIDC対応は、すべての組織が即日移行すべき機能ではありません。ただし、次の条件に当てはまる場合は優先度が高いです。

状況優先度理由
private package feedsを複数のリポジトリで使っているsecretの配布・棚卸し・ローテーション負荷が大きい
AWS CodeArtifact、Azure DevOps Artifacts、JFrog Artifactoryを使っているOIDC対応の対象になりやすい
Dependabotの更新PRがprivate dependenciesで失敗している認証方式を整理すると更新自動化を再開しやすい
code scanningの解析精度を組織全体で上げたい中〜高private dependenciesにアクセスできない解析の見落としを減らせる
リポジトリ数が少なく、既存secretの管理が単純急がなくてもよいが、将来の標準方式として検討価値がある
独自レジストリや未対応プロバイダー中心低〜中対応状況を確認し、従来方式と併用する必要がある

判断の軸は、「OIDCが使えるか」だけではなく、「今の長期シークレット運用がどれだけリスクと手間を生んでいるか」です。監査で毎回secret一覧を説明している、退職者やサービスアカウントの棚卸しが重い、トークン期限切れでDependabotが止まりがち、といった組織ほど効果が出やすくなります。

移行手順:いきなり全社展開せず、1フィード・数リポジトリから始める

OIDC移行は、GitHub側だけで完結しません。クラウドID、パッケージレジストリ、GitHub organization設定、対象リポジトリの運用を合わせて設計します。

手順作業内容失敗しないための確認点
依存関係とフィードを棚卸しするnpm、Maven、NuGet、pipなど、どのリポジトリがどのprivate registryを使うか整理する「誰も管理していない古いsecret」がないかも確認する
対象プロバイダーを選ぶAWS CodeArtifact、Azure DevOps Artifacts、JFrog Artifactoryなど、OIDC対応対象を優先する未対応レジストリは従来方式を残す
クラウド側で信頼関係を作るAWS IAM OIDC provider、Azure federated credential、JFrog OIDC providerなどを設定するorganization、repository、audience、role条件を広げすぎない
GitHub organizationにprivate registryを登録するSettingsのSecurity配下、またはREST APIでregistry定義を作るall repositoriesではなく、まずselected repositoriesで始める
Pilotリポジトリで検証するDependabot update job、code scanningの解析、Actionsログを確認する失敗ログを残し、権限不足かURLミスかを切り分ける
既存secretを段階的に廃止する使われなくなったPAT、パスワード、サービスアカウントを削除・失効する削除前に参照元検索とロールバック手順を用意する
標準テンプレート化する新規リポジトリ作成時のDependabot設定、registryアクセス申請、レビュー観点を文書化する例外申請のルールも決めておく

code scanning default setupで初めてprivate registry設定を使う場合、GitHub Docsでは、対象リポジトリでcode scanning default setupをいったん無効化して再有効化する必要があると説明されています。また、private registriesが解析に使われたかはtool status pageやActionsログで確認できます。(GitHub Docs)

OIDC移行で失敗しやすいポイント

信頼ポリシーを広げすぎる

OIDCでは、GitHubに長期シークレットを置かない代わりに、クラウド側の信頼ポリシーが重要になります。

たとえば、organization全体を無条件で許可すると、本来アクセスさせたくないリポジトリからも同じレジストリに到達できる可能性があります。最初は対象リポジトリ、ブランチ、環境、repository visibility、custom propertyなどで絞り、必要に応じて広げる設計が安全です。

「OIDCにしたからローテーション不要」と考える

短命トークンは自動で期限切れになりますが、信頼関係そのもののレビューは必要です。クラウド側のロール、Azure ADアプリ、JFrogのidentity mapping、GitHub側のprivate registry定義は、定期的に棚卸しするべきです。

見直すべき観点は次の通りです。

確認項目見るべき内容
対象リポジトリすでに廃止されたリポジトリが許可されていないか
権限読み取りだけで足りるのに書き込み権限が付いていないか
audience意図したGitHub organizationやプロバイダー向けに限定されているか
ロール名・client ID使途が分かる命名になっているか
ログ誰が、どのジョブで、どのレジストリへアクセスしたか追えるか

authentication typeを後から変えられる前提で作る

GitHub Docsでは、private registry作成後にauthentication typeは変更できず、OIDCから別方式へ、または別方式からOIDCへ切り替えるには既存registryを削除して作り直す必要があると説明されています。(GitHub Docs)

そのため、本番登録前にPilot用のregistry定義で検証し、命名、URL、provider-specific fields、対象リポジトリ範囲を確認してから展開する方が安全です。

Dependabotの外部コード実行制限を見落とす

Dependabotにprivate registryへのアクセスを与えると、GitHubは保護のため外部コード実行を自動的に無効化します。その結果、一部のversion updatesが失敗する場合があります。必要な場合はinsecure-external-code-executionの扱いを検討できますが、これはリスクを理解したうえで、対象を絞って使うべき設定です。(GitHub Docs)

code scanning advanced setupとdefault setupを混同する

code scanning advanced setupでは、CodeQLを実行するActions workflowがビルドを観測します。そのため、ビルド時にprivate registryへアクセスできるよう、workflow側の認証設計が必要です。organization-level private registriesを登録しただけでadvanced setupのビルドが自動的に解決する、とは考えない方が安全です。(GitHub Docs)

セキュリティとコンプライアンスでの価値

OIDC plus private registriesが重要なのは、単にDependabotの設定が楽になるからではありません。ソフトウェアサプライチェーンの統制ポイントを、散らばったsecretから、IDプロバイダーとポリシーに移せる点に価値があります。

特にグローバル組織では、次のような説明がしやすくなります。

監査・統制の観点OIDCで説明しやすくなること
最小権限どのrepositoryが、どのroleで、どのregistryを読めるかをポリシーで制御できる
資格情報の寿命長期secretではなく、ジョブ単位の短命credentialを使う
アクセスの一貫性リポジトリごとの手作業ではなく、organization-level設定に集約できる
退職・異動対応個人PATに依存したregistryアクセスを減らせる
インシデント対応漏えいしたsecret探しではなく、信頼ポリシーとロールを中心に遮断できる

ただし、OIDCに移行しても、すべての運用リスクが消えるわけではありません。広すぎるロール、雑なrepository access設定、検証されていないregistry URL、ログ未確認のままの全社展開は、別の形のリスクになります。

まず取るべき次の行動

最初にやるべきことは、OIDC対応の有無を調べることではなく、現在のprivate package feedsとシークレットの棚卸しです。

次の順番で進めると、失敗しにくくなります。

  1. Dependabotやcode scanningで失敗しているprivate dependenciesを洗い出す
  2. GitHub organization内のDependabot secrets、repository secrets、private registries設定を確認する
  3. AWS CodeArtifact、Azure DevOps Artifacts、JFrog Artifactoryのどれを優先移行するか決める
  4. selected repositoriesでPilotを作り、Dependabot jobとcode scanningログを確認する
  5. 成功した設定をテンプレート化し、古い長期secretを段階的に削除する

OIDC対応の本質は、「便利な新認証方式を追加すること」ではありません。Dependabotとcode scanningがprivate registriesへ安全にアクセスできる状態を作り、長期シークレットの配布・更新・監査というつらい作業を減らすことです。private package feedsを多用している組織ほど、まずは1つの重要フィードからOIDC化を検証する価値があります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次