この記事には、プライベート レジストリにアクセスするように Dependabot を構成するのに役立つ推奨事項および、次について説明します。
- 各パッケージ マネージャーの
dependabot.yml構成ファイルの詳細なスニペット - 重要な制限事項または注意事項
- 構成が機能していることをテストする方法を説明する手順
- 必要に応じて追加の構成オプション (たとえば、npm には設定する必要がある構成ファイルがあります)
- レジストリ ホストの構成に関するアドバイス
次のパッケージ マネージャーのセットアップに関する詳細なガイダンスがあります。
-
[Bun](#bun) -
[Bundler](#bundler) -
[貨物](#cargo) -
[Docker](#docker) -
[Docker Compose](#docker-compose) -
[進む](#go) -
[Gradle](#gradle) -
[Helm チャート](#helm-charts) -
[Maven](#maven) -
[npm](#npm) -
[NuGet](#nuget) -
[pub](#pub) -
[Python](#python) (pip、pip-compile、pipenv、および詩を含む) -
[uv](#uv) -
[Yarn](#yarn)
また、次のレジストリ ホストのセットアップに関する推奨事項も記載してあります。
-
[Artifactory](#artifactory) -
[Azure Artifacts](#azure-artifacts) -
[Cloudsmith](#cloudsmith) -
[GitHub Packages レジストリ](#github-packages-registry) -
[Nexus](#nexus) -
[ProGet](#proget)
プライベート レジストリと内部ネットワーク リソースへの Dependabot のアクセスをより詳細に制御するには、Dependabot を GitHub Actions セルフホステッド ランナーで実行するように構成します。 詳細については、「GitHub Actions ランナーの Dependabot について」および「セルフホステッド ランナーでの Dependabot の設定」を参照してください。
パッケージ マネージャーを構成する
Bun
Bun は npm と同じ構成ガイドラインに従います。
.npmrc ファイルは必須ではありませんが、構成をカスタマイズするために指定できることに注意してください。 詳細な手順については、「npm」を参照してください。
Bundler
Artifactory、Artifacts、Cloudsmith、GitHub Packages レジストリ、Nexus、および ProGet でサポートされています。
ユーザー名とパスワード、またはトークンを使用して認証できます。 詳細については、rubygems-serverの「」を参照してください。
ユーザー名とパスワードを使用する dependabot.yml ファイルのスニペット。
registries:
ruby-example:
type: rubygems-server
url: https://rubygems.example.com
username: octocat@example.com
password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
registries:
ruby-example:
type: rubygems-server
url: https://rubygems.example.com
username: octocat@example.com
password: ${{secrets.MY_RUBYGEMS_PASSWORD}}
次の dependabot.yml ファイルのスニペットは、トークンを使用します。 GitHub Packages レジストリ (xyz.pkg.github.com) を使用するこの種類のレジストリでは、トークンは実際には GitHub personal access token (PAT) です。
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
registries:
ruby-github:
type: rubygems-server
url: https://rubygems.pkg.github.com/octocat/github_api
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
注記
GitHub リポジトリから直接ソースされた依存関係により、GitHub UI を介してリポジトリにアクセス Dependabot できます。 Dependabot にプライベート GitHub 依存関係へのアクセスを許可する方法については、「Dependabot によるプライベート依存関係へのアクセスを許可する」を参照してください。
貨物
Cargo では、ユーザー名、パスワード、およびトークン ベースの認証をサポートしています。 詳細については、cargo-registryの「」を参照してください。
以下のスニペットは、トークンを使用する dependabot.yml ファイル構成を示しています。
registries:
cargo-example:
type: cargo-registry
registry: "name-of-your-registry"
url: https://cargo.cloudsmith.io/foobaruser/test/
token: "Token ${{secrets.CARGO_TOKEN}}"
https://cargo.cloudsmith.io プライベート レジストリに対してこの構成をテストしました。
Docker
Docker では、レジストリのユーザー名とパスワードの使用がサポートされています。 詳細については、docker-registryの「」を参照してください。
ユーザー名とパスワードを使用する dependabot.yml ファイルのスニペット。
registries:
dockerhub:
type: docker-registry
url: https://registry.hub.docker.com
username: octocat
password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
registries:
dockerhub:
type: docker-registry
url: https://registry.hub.docker.com
username: octocat
password: ${{secrets.MY_DOCKERHUB_PASSWORD}}
`docker-registry` は、静的な AWS 資格情報を使ってプライベート Amazon ECR からプルするためにも使用できます。
registries:
ecr-docker:
type: docker-registry
url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}
registries:
ecr-docker:
type: docker-registry
url: https://1234567890.dkr.ecr.us-east-1.amazonaws.com
username: ${{secrets.ECR_AWS_ACCESS_KEY_ID}}
password: ${{secrets.ECR_AWS_SECRET_ACCESS_KEY}}
注記
Dependabot は、Open Container Initiative (OCI) 配布使用が実装されたレジストリ コンテナで動作します。 詳細については、「https://github.com/opencontainers/distribution-spec/blob/main/spec.md」を参照してください。
Dependabot では、中央トークン サービスまたは HTTP 基本認証を介したプライベート レジストリへの認証がサポートされています。詳細については、Docker ドキュメントの「トークン認証仕様」と Wikipedia の「基本アクセス認証」を参照してください。
制限事項と回避策
- イメージ名は、Containerfiles、Helm ファイル、または yaml ファイルで常に検出されるとは限りません。
- Dockerfile は、最初の
FROMディレクティブのバージョン更新のみを受け取る場合があります。 - Dockerfile は、
ARGディレクティブで指定されたイメージの更新を受け取りません。COPYディレクティブには使用可能な回避策が用意されています。 詳細については、 リポジトリのdependabot/dependabot-coreを参照してください。 - Dependabot は、マルチステージ Docker ビルドをサポートしません。 詳細については、 リポジトリの
dependabot/dependabot-coreを参照してください。
Docker Compose
Docker Compose は、Docker と同じ構成ガイドラインに従います。 詳細については、「Docker」を参照してください。
Helm チャート
Helm では、レジストリのユーザー名とパスワードの使用がサポートされています。 詳しくは、「Dependabot のプライベート レジストリへのアクセスの構成」をご覧ください。
ユーザー名とパスワードを使用する dependabot.yml ファイルのスニペット。
registries:
helm_registry:
type: helm-registry
url: https://registry.example.com
username: octocat
password: ${{secrets.MY_REGISTRY_PASSWORD}}
registries:
helm_registry:
type: helm-registry
url: https://registry.example.com
username: octocat
password: ${{secrets.MY_REGISTRY_PASSWORD}}
注記
`helm-registry`の種類では、HTTP 基本認証のみがサポートされ、OCI 準拠のレジストリはサポートされません。 Helm チャートの OCI 準拠レジストリにアクセスする必要がある場合は、代わりに [`docker-registry`](#docker) を構成します。 基本認証の詳細については、Wikipedia の [基本アクセス認証](https://en.wikipedia.org/wiki/Basic_access_authentication) を参照してください。
Helm グラフ用に Dependabot を構成すると、それらのグラフ内で参照されている Docker イメージも自動的に更新され、グラフのバージョンと含まれているイメージの両方が最新の状態に保たれていきます。
制限事項と回避策
- Dependabot は、
Chart.yamlファイル内の依存関係のみを更新します。 -
`values.yaml` ファイルと `Chart.yaml` ファイルのイメージが更新されます。 - Helm の依存関係の更新は、最初に Helm CLI を使って試行され、
index.yamlの検索にフォールバックします。 - YAML 内にバージョンの配列があるイメージは更新できません。
- Helm ファイルまたは YAML ファイルで、イメージ名が常に検出されるわけではありません。
- Helm v2 の更新プログラムの場合は、Docker エコシステムを使用します。
Gradle
Dependabot は、Gradle を実行しませんが、特定の Gradle ファイルの更新に対応しています。 詳細については、「AUTOTITLE」の「Gradle」を参照してください。
Gradle は、maven-repositoryレジストリ型をサポートします。 詳細については、maven-repositoryの「」を参照してください。
`maven-repository`の種類では、ユーザー名、パスワード、および replaces-base がサポートされます。 アカウントが GitHub アカウントの場合は、パスワードの代わりに GitHub personal access token を使用できます。
registries:
gradle-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-gradle-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
replaces-base: true
updates:
- package-ecosystem: "gradle"
directory: "/"
registries:
- gradle-artifactory
schedule:
interval: "monthly"
registries:
gradle-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-gradle-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
replaces-base: true
updates:
- package-ecosystem: "gradle"
directory: "/"
registries:
- gradle-artifactory
schedule:
interval: "monthly"
注記
特に、一部の依存関係がビルド時の依存関係である場合は、依存関係グラフで表されているすべての依存関係が表示されない場合があります。 依存関係送信 API を使用して、他の依存関係について GitHub に通知し、それらのセキュリティ更新プログラムを受け取ることができます。 詳しくは、「依存関係サブミッション API を使用する」をご覧ください。
Go
Jfrog Artifactory と Nexus でサポートされています。
Go では、プライベート レジストリでのユーザー名とパスワードの使用がサポートされています。
`dependabot.yml` ファイルと `goproxy-server` タイプを使って、プライベート レジストリを構成します。
registries:
my-private-registry:
type: goproxy-server
url: https://acme.jfrog.io/artifactory/api/go/my-repo
username: octocat
password: ${{secrets.MY_GO_REGISTRY_TOKEN}}
registries:
my-private-registry:
type: goproxy-server
url: https://acme.jfrog.io/artifactory/api/go/my-repo
username: octocat
password: ${{secrets.MY_GO_REGISTRY_TOKEN}}
必要に応じて、リポジトリ ルートに go.env ファイルを作成し、Go ツールチェーンがプロキシ サーバーにアクセスする方法を構成することもできます。 このファイルを使うと、GOPROXY、GOPRIVATE、GONOSUMDB、GOSUMDB などの環境変数を設定して、Go モジュールの解決方法を制御できます。
GOPROXY=https://acme.jfrog.io/artifactory/api/go/my-repo GOPRIVATE=my-company.com/* GONOSUMDB=my-company.com/*
GOPROXY=https://acme.jfrog.io/artifactory/api/go/my-repo
GOPRIVATE=my-company.com/*
GONOSUMDB=my-company.com/*
注記
この機能を使うと、1 つの Dependabot ワークフロー内でパブリックとプライベート両方の Go モジュールの依存関係をまとめて管理できるため、JFrog Artifactory や Nexus などの企業成果物管理システムを使用する organization に最適です。
**すべてのモジュールに対応するプライベート プロキシ**: すべてのモジュール要求は、最初にプロキシを経由します。 パブリック モジュールの取得に失敗した場合、プロキシは 404/410 を返し、Go は直接バージョン コントロール システム (VCS) アクセスにフォールバックします。 JFrog Artifactory のようなプライベート リポジトリにのみ公開されているプライベート モジュールについては、VCS へのフォールバックは機能しません。これはプロキシ経由でしかアクセスできないためです。
**プライベート モジュールに対応するプライベート プロキシ**: リポジトリのルートに go.env を追加し、プライベート モジュールのパターンに一致するように GONOSUMDB を設定します (例: my-company.com/ で始まるすべてのプライベート モジュールの場合は `GONOSUMDB=my-company.com/*`)。 これにより、プライベート モジュールのパブリックなチェックサム検証が無効になります。パブリックなチェックサム データベースにこれらのプライベート モジュールが存在しないためです。
**プライベート モジュールに直接アクセス**: `GOPRIVATE=my-company.com/*` を プロキシを経由せずに VCS から直接取得するように設定します。 この設定は、プライベート モジュールが、ソース コントロールでセマンティック バージョン タグ付きで適切に公開されている場合にのみ機能します。
GitHub リポジトリから直接ソースされた依存関係により、GitHub UI を介してリポジトリにアクセス Dependabot できます。 Dependabot にプライベート GitHub 依存関係へのアクセスを許可する方法については、「Dependabot によるプライベート依存関係へのアクセスを許可する」を参照してください。
Maven
Maven では、ユーザー名、パスワード、および replaces-base がサポートされています。 詳細については、maven-repositoryの「」を参照してください。
registries:
maven-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-maven-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
replaces-base: true
registries:
maven-artifactory:
type: maven-repository
url: https://acme.jfrog.io/artifactory/my-maven-registry
username: octocat
password: ${{secrets.MY_ARTIFACTORY_PASSWORD}}
replaces-base: true
アカウントが GitHub アカウントの場合は、パスワードの代わりに GitHub personal access token を使用できます。
version: 2
registries:
maven-github:
type: maven-repository
url: https://maven.pkg.github.com/octocat
username: octocat
password: ${{secrets.OCTOCAT_GITHUB_PAT}}
replaces-base: true
updates:
- package-ecosystem: "maven"
directory: "/"
registries:
- maven-github
schedule:
interval: "monthly"
version: 2
registries:
maven-github:
type: maven-repository
url: https://maven.pkg.github.com/octocat
username: octocat
password: ${{secrets.OCTOCAT_GITHUB_PAT}}
replaces-base: true
updates:
- package-ecosystem: "maven"
directory: "/"
registries:
- maven-github
schedule:
interval: "monthly"
注記
特に、一部の依存関係がビルド時の依存関係である場合は、依存関係グラフで表されているすべての依存関係が表示されない場合があります。 依存関係送信 API を使用して、他の依存関係について GitHub に通知し、それらのセキュリティ更新プログラムを受け取ることができます。 詳しくは、「依存関係サブミッション API を使用する」をご覧ください。
npm
`dependabot.yml` 型を使用して `npm-registry` ファイルの構成を定義したり、Dependabot を構成して、指定したベース URL 経由ですべてのレジストリ要求を送信したりできます。
構成ファイルで npm-registry 型を使用する
`dependabot.yml` 型を使用して `npm-registry` ファイルでプライベート レジストリ構成を定義できます。 詳しくは、「[AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configuring-access-to-private-registries-for-dependabot#npm-registry)」をご覧ください。
次の dependabot.yml ファイルのスニペットは、トークンを使用します。 GitHub Packages レジストリ (xyz.pkg.github.com) を使用するこの種類のレジストリでは、トークンは実際には GitHub personal access token (PAT) です。
registries:
npm-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
registries:
npm-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
npm エコシステムでは、プライベート レジストリの URL を含む .npmrc ファイルをリポジトリにチェックインする必要があります。
`.npmrc` ファイルのサンプル コンテンツ:
registry=https://<private-registry-url>
または、次のコマンドを使用して、既存の .npmrc ファイルにプライベート レジストリ URL を追加できます。
npm config set registry <url>
詳細については、npm ドキュメントの「レジストリ」を参照してください。
また、構成を単一依存関係または組織のみに絞ることもできます。この場合、トークンは、組織に対してのみに有効になり、別のトークンは、同じリポジトリの別の組織に使用できます。
npm config set @<org-name>:registry <url>
これにより、レジストリを持つ '.npmrc' が生成されます。
@<org-name>:registry=https://<private-registry-url>
npm は、replace-registry-host を含むロックファイルでプライベート レジストリの URL を使用するように構成できます。 詳細については、npm ドキュメントの「replace-registry-host」を参照してください。
npm config set replace-registry-host "never"
`replace-registry-host` を使用する場合は、ロックファイルを再生成するためにローカルで `npm install` を実行して、プライベート レジストリ URL を使用する必要があります。 Dependabot は、更新する際に同じ URL を使用します。
レジストリが構成されたら、構成が正しく有効であることを確認するために npm login を実行することもできます。 ロックファイルを再生成して、再度 npm install を実行することで、新しいプライベート レジストリを使用することもできます。
`.npmrc` ファイルがプロジェクトの `package.json` と同じディレクトリにチェック インされていること、およびファイルに環境変数やシークレットが含まれていないことを確認する必要があります。
monorepo を使用する場合、.npmrc ファイルはプロジェクトのルート ディレクトリに存在する必要があります。
指定したベース URL 経由でレジストリ要求を送信するように Dependabot を構成する
指定したベース URL 経由ですべてのレジストリ要求を送信するように Dependabot を構成できます。 Dependabot がパブリック依存関係にアクセスするには、レジストリに要求されたバージョンの依存関係の複製されたコピーがあるか、依存関係が使用できない場合にパブリック レジストリからトラフィックをフェッチできるようにする必要があります。
`.npmrc` ファイルにグローバル レジストリが定義されていない場合は、`replaces-base` ファイルで `true` を `dependabot.yml` として設定できます。 詳細については、`replaces-base`の「`registries`」を参照してください。
注記
GitHub リポジトリから直接ソースされた依存関係により、GitHub UI を介してリポジトリにアクセス Dependabot できます。 Dependabot にプライベート GitHub 依存関係へのアクセスを許可する方法については、「Dependabot によるプライベート依存関係へのアクセスを許可する」を参照してください。
注: スコープ付き依存関係 (@my-org/my-dep) の場合、Dependabot では、プロジェクトの .npmrc ファイルでプライベート レジストリが定義されている必要があります。 個々のスコープのプライベート レジストリを定義するには、@myscope:registry=https://private_registry_url を使います。
レジストリは、https プロトコルを使用して構成する必要があります。
NuGet
Artifactory、Artifacts、Cloudsmith、GitHub Packages レジストリ、Nexus、および ProGet でサポートされています。
`nuget-feed` タイプは、ユーザー名とパスワード、またはトークンをサポートします。 詳細については、`nuget-feed`の「[](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configuring-access-to-private-registries-for-dependabot#nuget-feed)」を参照してください。
registries:
nuget-example:
type: nuget-feed
url: https://nuget.example.com/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_NUGET_PASSWORD}}
registries:
nuget-example:
type: nuget-feed
url: https://nuget.example.com/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_NUGET_PASSWORD}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
注記
`dependabot.yml` ファイルでトークンを使用することもできます。 GitHub Packages レジストリ (`xyz.pkg.github.com`) を使用するこの種類のレジストリでは、トークンは実際には GitHub personal access token (PAT) です。
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/.../_packaging/My_Feed/nuget/v3/index.json
token: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
pub
`dependabot.yml` 型を使用して `pub-repository` ファイルでプライベート レジストリ構成を定義できます。 詳しくは、「[AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configuring-access-to-private-registries-for-dependabot#pub-repository)」をご覧ください。
registries:
my-pub-registry:
type: pub-repository
url: https://example-private-pub-repo.dev/optional-path
token: ${{secrets.MY_PUB_TOKEN}}
updates:
- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "weekly"
registries:
- my-pub-registry
registries:
my-pub-registry:
type: pub-repository
url: https://example-private-pub-repo.dev/optional-path
token: ${{secrets.MY_PUB_TOKEN}}
updates:
- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "weekly"
registries:
- my-pub-registry
注記
GitHub リポジトリから直接ソースされた依存関係により、GitHub UI を介してリポジトリにアクセス Dependabot できます。 Dependabot にプライベート GitHub 依存関係へのアクセスを許可する方法については、「Dependabot によるプライベート依存関係へのアクセスを許可する」を参照してください。
pub では、URL とトークン認証がサポートされています。 レジストリに使用される URL は、pub でホストされている URL と一致している必要があります。 詳細については、 リポジトリのgithub/dart-lang/pubを参照してください。
Dependabot は、既定のパッケージ レジストリへのオーバーライドをサポートしていません。 オーバーライドの詳細と、一部のユーザーがオーバーライドを実装する理由については、Dart ドキュメントの「既定のパッケージ リポジトリをオーバーライドする」を参照してください。
Python
Artifactory、Azure Artifacts、Cloudsmith、Nexus、および ProGet でサポートされています。 GitHub Packages レジストリはサポートされていません。
`python-index` タイプは、ユーザー名とパスワード、またはトークンをサポートします。 詳細については、`python-index`の「[](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configuring-access-to-private-registries-for-dependabot#python-index)」を参照してください。
registries:
python-example:
type: python-index
url: https://example.com/_packaging/my-feed/pypi/example
username: octocat
password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
registries:
python-example:
type: python-index
url: https://example.com/_packaging/my-feed/pypi/example
username: octocat
password: ${{secrets.MY_BASIC_AUTH_PASSWORD}}
registries:
python-azure:
type: python-index
url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
python-azure:
type: python-index
url: https://pkgs.dev.azure.com/octocat/_packaging/my-feed/pypi/example
username: octocat@example.com
password: ${{secrets.MY_AZURE_DEVOPS_TOKEN}}
registries:
python-gemfury:
type: python-index
url: https://pypi.fury.io/my_org
token: ${{secrets.MY_GEMFURY_TOKEN}}
registries:
python-gemfury:
type: python-index
url: https://pypi.fury.io/my_org
token: ${{secrets.MY_GEMFURY_TOKEN}}
注記
GitHub リポジトリから直接ソースされた依存関係により、GitHub UI を介してリポジトリにアクセス Dependabot できます。 Dependabot にプライベート GitHub 依存関係へのアクセスを許可する方法については、「Dependabot によるプライベート依存関係へのアクセスを許可する」を参照してください。
`url` には、URL、組織、および "フィード" またはリポジトリが含まれている必要があります。
uv
uv レジストリでは、Python インデックスと同様の構成が使用されます。 詳細については、python-indexの「」を参照してください。
Yarn
Yarn レジストリでは、npm レジストリと同様の構成が使用されます。 詳細については、npm-registryの「」を参照してください。
registries:
yarn-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
registries:
yarn-github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
- プライベート レジストリの場合は、
.yarnrc.ymlファイル (Yarn 3 の場合) または.yarnrcファイル (Yarn Classic の場合) にチェック インする必要があります。 - yarn 構成ファイルには環境変数を含めてはなりません。
-
`dependabot.yml` を使用して `https` ファイルに一覧されているプライベート レジストリを構成する必要があります。
Yarn Classic
`dependabot.yml` ファイルでプライベート レジストリ構成を指定するか、標準のパッケージ マネージャー手順を実行して Yarn Classic を設定します。
`dependabot.yml` ファイルでプライベート レジストリ構成を定義する
`dependabot.yml` ファイルでプライベート レジストリ構成を定義できます。 詳細については、[「上位 `registries` キー」](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/dependabot-options-reference#top-level-registries-key)を参照してください。
プライベート レジストリがプロジェクトの yarn.lock ファイルの依存関係ソースとして確実にリストされるようにするには、プライベート レジストリにアクセスできるマシンで yarn install を実行する必要があります。 プライベート レジストリ URL を含むように、Yarn は、解決済みフィールドを更新するはずです。
encoding@^0.1.11:
version "0.1.13"
resolved "https://private_registry_url/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
dependencies:
iconv-lite "^0.6.2"
パッケージ マネージャーからの標準手順を実行する
`yarn.lock` ファイルでプライベート レジストリが依存関係ソースとしてリストされない場合は、標準のパッケージ マネージャーの手順を実行して Yarn Classic を設定できます。
-
プライベート レジストリの構成を
dependabot.ymlファイルで定義します。 -
その後、次のいずれかを実行できます。
- キー レジストリを使用してプロジェクト ルート内の
.yarnrcファイルにレジストリを追加して、プライベート レジストリを.yarnrc.ymlファイルに手動で設定する、または - ターミナルで
yarn config set registry <private registry URL>を実行して、同じアクションを実行します。
定義されたプライベート レジストリを持つ
.yarnrcの例:registry https://nexus.example.com/repository/yarn-all - キー レジストリを使用してプロジェクト ルート内の
Yarn Berry (v3)
構成の詳細については、Yarn ドキュメントの「設定 (.yarnrc.yml) 」を参照してください。
Yarn Classic を使用して、dependabot.yml ファイルでプライベート レジストリ構成を指定するか、標準のパッケージ マネージャー手順を実行して Yarn Berry を設定します。
`dependabot.yml` ファイルでプライベート レジストリ構成を定義する
`dependabot.yml` ファイルでプライベート レジストリ構成を定義できます。 詳細については、[「上位 `registries` キー」](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/dependabot-options-reference#top-level-registries-key)を参照してください。
プライベート レジストリがプロジェクトの yarn.lock ファイルの依存関係ソースとして確実にリストされるようにするには、プライベート レジストリにアクセスできるマシンで yarn install を実行します。 プライベート レジストリ URL を含むように、Yarn は、解決済みフィールドを更新するはずです。
encoding@^0.1.11:
version "0.1.13"
resolved "https://private_registry_url/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
dependencies:
iconv-lite "^0.6.2"
`npmAuthIdent` または `npmAuthToken` を使用しても、プライベート レジストリを構成できます。 詳細については、[Yarn ドキュメント](https://yarnpkg.com/configuration/yarnrc/#npmAuthIdent)の「npmAuthIdent」および「npmAuthToken」を参照してください。
yarn config set registry <url>
構成は、単一の依存関係または組織のみに限定することができます。
yarn config set @<SCOPE>:registry <url>
最後に、構成が正しく有効であることを確認するために yarn login を実行することをお勧めします。 ロックファイルを再生成して、再度 yarn install を実行することで、新しいプライベート レジストリを使用することもできます。
パッケージ マネージャーからの標準手順を実行する
`yarn.lock` ファイルでプライベート レジストリが依存関係ソースとしてリストされない場合は、標準のパッケージ マネージャーの手順を実行して Yarn Berry を設定できます。
-
プライベート レジストリの構成を
dependabot.ymlファイルで定義します。 -
その後、次のいずれかを実行できます。
- キー
.yarnrcを使用してプロジェクト ルート内の.yarnrc.ymlファイルにレジストリを追加して、プライベート レジストリをnpmRegistryServerファイルに手動で設定する、または - ターミナルで
yarn config set npmRegistryServer <private registry URL>を実行して、同じアクションを実行します。
構成されたプライベート レジストリを持つ
.yarnrc.ymlファイルの例:npmRegistryServer: "https://nexus.example.com/repository/yarn-all"詳細については、Yarn ドキュメントの「npmRegistryServer」を参照してください。
- キー
注記
GitHub リポジトリから直接ソースされた依存関係により、GitHub UI を介してリポジトリにアクセス Dependabot できます。 Dependabot にプライベート GitHub 依存関係へのアクセスを許可する方法については、「Dependabot によるプライベート依存関係へのアクセスを許可する」を参照してください。
注: 限定されている依存関係 (@my-org/my-dep) の場合、Dependabot では、プロジェクトの .yarnrc file でプライベート レジストリが定義されている必要があります。 個々のスコープのプライベート レジストリを定義するには、@myscope:registry" "https://private_registry_url" を使います。
プライベート レジストリ ホストを構成する
Artifactory
Artifactory の構成の詳細については、JFrog Artifactory ドキュメントの「Artifactory を構成する」を参照してください。
リモート リポジトリ
リモート リポジトリは、ビルド アーティファクトと依存関係のキャッシュとして機能します。 ビルド ツールでは、グローバル依存関係リポジトリにアクセスする必要なく、アーティファクト キャッシュを使用できるため、ビルド時間が短縮されます。 詳細については、JFrog Artifactory ドキュメントの「リモート リポジトリ」を参照してください。
この replace-base 設定を使用する場合は、プライベート レジストリで依存関係が見つからない場合に、Dependabot が別のレジストリにアクセスできるようにする場合は、Artifactory のリモート リポジトリも構成する必要があります。
仮想レジストリ
仮想レジストリを使用すると、すべてのプライベート依存関係とパブリック依存関係を 1 つのドメインでグループ化できます。 詳細については、JFrog Artifactory ドキュメントの「npm Registry」を参照してください。
Azure Artifacts
Azure Artifacts の詳細と、Azure Artifacts を使用するように Dependabot を構成する方法については、Azure Artifacts ドキュメントの「Azure DevOps」と「Azure Artifacts で GitHub の Dependabot を使用する」をそれぞれ参照してください。
Azure Artifacts レジストリの例:
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/my_org/_packaging/public/nuget/v3/index.json
token: ${{secrets.AZURE_DEVOPS_TOKEN}}
registries:
nuget-azure-devops:
type: nuget-feed
url: https://pkgs.dev.azure.com/my_org/_packaging/public/nuget/v3/index.json
token: ${{secrets.AZURE_DEVOPS_TOKEN}}
Azure Artifacts パスワードは、エンコードされていないトークンである必要があり、トークン後に : を含める必要があります。 さらに、パスワードを base64 でエンコードすることはできません。
プライベート レジストリが正常にアクセスされたかどうかをチェックするには、Dependabot ログを確認します。
Cloudsmith
Cloudsmith と Dependabot を構成して Cloudsmith を使用する方法の詳細については、Cloudsmith ドキュメントの「Cloudsmith の概要」および「Cloudsmith で GitHub Dependabot を統合する」を参照してください。
GitHub Packages レジストリ
GitHub Packages レジストリの詳細については、「AUTOTITLE」を参照してください。 この記事では、次のレジストリを構成する方法を説明するページにアクセスできます。
- Bundler (rubygems) - Rubyの依存関係管理ツール
- Docker (コンテナー)
- GitHub Actions
- Gradle
- Maven
- Npm
- NuGet
- Yarn
registries:
github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{ secrets.<token> }}
registries:
github:
type: npm-registry
url: https://npm.pkg.github.com
token: ${{ secrets.<token> }}
注記
Python コンテナー レジストリはありません。
特定の組織を対象とするプライベート レジストリの場合、Dependabot は URL が、dependabot.yml ファイルに組織名を含めることを想定します。
Nexus
Nexus の構成の詳細については、Sonatype ドキュメントの「リポジトリ マネージャー 3」を参照してください。
注記
Nexus Repository Pro では、ユーザー トークンを有効にできます。 詳細については、Sonatype ドキュメントの「ユーザー トークン」を参照してください。
Nexus レジストリの例:
registries:
npm-nexus:
type: npm-registry
url: https://registry.example.com/repository/npm-internal/
token: ${{secrets.NEXUS_NPM_TOKEN}}
registries:
npm-nexus:
type: npm-registry
url: https://registry.example.com/repository/npm-internal/
token: ${{secrets.NEXUS_NPM_TOKEN}}
リバース プロキシの背後で Nexus を実行している場合は、curl -v -H 'Authorization: Bearer <token>' 'https://<nexus-repo-url>/repository/<repo-name>/@<scope>%2<package>' を使用することで認証トークンを使用してサーバーにアクセスできるようにする必要があります。 詳細については、Sonatype ドキュメントの「リバース プロキシの背後で実行する」を参照してください。
Nexus ホストに到達できる IP を制限する場合は、Dependabot IP を許可リストに追加する必要があります。
- Dependabot が、レジストリにアクセスするために使用する IP アドレスは、meta API エンドポイントの dependabot キーで確認できます。 詳しくは、「メタデータ用 REST API エンドポイント」をご覧ください。
- 現在の IP は次のとおりです。
- "18.213.123.130/32"
- "3.217.79.163/32"
- "3.217.93.44/32" 詳細については、Sonatype ドキュメントの「Nexus Repository Manager をセキュリティで保護する」を参照してください。
プライベート レジストリで依存関係が使用できない場合は、レジストリをプロキシして、パブリック レジストリにアクセスできるようにします。 ただし、Dependabot でプライベート レジストリにのみアクセスし、パブリック レジストリにまったくアクセスしないようにすることができます。 詳しくは、Sonatype ドキュメントの「クイック スタート ガイド - Maven と NPM のプロキシ」と「AUTOTITLE」を参照してください。
ProGet
ProGet の詳細と、ProGet でフィードを操作するように Dependabot を構成する方法については、「ProGet のドキュメント」を参照してください。
NuGet フィードの ProGet レジストリ構成の例:
registries:
proget-nuget-feed:
type: nuget-feed
url: https://proget.corp.local/nuget/MyNuGetFeed/v3/index.json
token: ${{secrets.PROGET_APK_KEY}}
registries:
proget-nuget-feed:
type: nuget-feed
url: https://proget.corp.local/nuget/MyNuGetFeed/v3/index.json
token: ${{secrets.PROGET_APK_KEY}}
Bundler (rubygems) の ProGet レジストリ構成の例:
registries:
proget-gems-feed:
type: rubygems-server
url: https://proget.corp.local/rubygems/MyRubygemsFeed
token: ${{secrets.PROGET_APK_KEY}}
registries:
proget-gems-feed:
type: rubygems-server
url: https://proget.corp.local/rubygems/MyRubygemsFeed
token: ${{secrets.PROGET_APK_KEY}}
Python (PyPI) の ProGet レジストリ構成の例:
registries:
proget-python-feed:
type: python-index
url: https://proget.corp.local/pypi/MyPythonFeed
token: ${{secrets.PROGET_APK_KEY}}
registries:
proget-python-feed:
type: python-index
url: https://proget.corp.local/pypi/MyPythonFeed
token: ${{secrets.PROGET_APK_KEY}}
注記
`token` は、パッケージを表示するアクセス権を持つ API キーである必要があります。 詳細については、ProGet ドキュメントの[「API アクセスと API キー」](https://docs.inedo.com/docs/buildmaster-administration-security-api-keys)を参照してください。
プライベート レジストリが正常にアクセスされたかどうかをチェックするには、Dependabot ログを確認します。