アップストリームの動作の構成
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Artifacts アップストリーム ソースを使用すると、開発者は統合フィードを利用して、成果物フィードと、NuGet.org や npmjs.com などの一般的なパブリック レジストリからパッケージを発行および使用する利便性を得ることができます。 以前は、Artifact フィードは、フィード自体と構成されているすべてのアップストリーム ソースの両方から利用可能なパッケージ バージョンの一覧を組み合わせていました。
アップストリーム動作は、開発者が外部から提供されるパッケージ バージョンを使用するかどうかを選択できる機能です。 特定のパッケージのパブリック レジストリからアクセスできるパッケージを管理します。
アップストリームの動作が有効になると、パッケージが Azure Artifacts フィードに発行されると、パブリック レジストリのすべてのバージョンがブロックされ、ダウンロードできなくなります。
この方法では、パブリック レジストリに侵入した可能性のある悪意のあるパッケージへの潜在的な露出を防ぐことで、セキュリティの層が強化されます。
ただし、ユーザーはアップストリームの動作設定を非アクティブ化して、必要に応じてパブリック レジストリからパッケージを使用できます。
Note
新しい動作は、フィードの@local ビュー内に保持されるため、現在使用中のパッケージ バージョンには影響しません。
適用可能なシナリオ
次のセクションでは、アップストリームの動作がトリガーされて外部ソース パッケージのバージョンがブロックされるさまざまな一般的なシナリオと、パブリック パッケージへのアクセスをブロックする必要がないその他のシナリオを示します。
パブリック バージョンがブロックされる
プライベート パッケージのバージョンが公開されている
このシナリオでは、チームにはパブリックにされたプライベート パッケージがあります。 この場合のアップストリームの動作は、新しいパブリック バージョン (信頼されていないパッケージ) をブロックするためにトリガーされます。
プライベート パッケージとパブリック パッケージの両方を持つ
このシナリオでは、チームがプライベート パッケージとパブリック パッケージの組み合わせを使用する場合、アップストリームの動作を有効にすると、パブリック レジストリから新しいパッケージ バージョンがブロックされます。
パブリック バージョンはブロックされません
すべてのパッケージはプライベートです*
既存のすべてのパッケージがプライベートであり、チームがパブリック パッケージを使用する予定がない場合、新しいアップストリーム動作は、このシナリオでのチームのワークフローには影響しません。
すべてのパッケージがパブリックである
このシナリオでは、パブリック レジストリやその他のオープン ソース リポジトリのどちらからでも、チームがパブリック パッケージのみを使用する場合、新しいアップストリーム動作はワークフローに影響しません。
プライベートにされたパブリック パッケージ
このような状況では、パブリック パッケージがプライベート パッケージに変換されるとき、新しいアップストリーム動作はチームのワークフローに何らかの影響を与えません。
外部バージョンを許可する
Note
外部ソースバージョンを 許可するには、フィード所有者 である必要があります。 詳細については、「フィードのアクセス許可」を参照してください。
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
[ 成果物] を選択し、ドロップダウン メニューからフィードを選択します。
パッケージを選択し、省略記号ボタンを選択して他のオプションを表示します。 [外部ソース バージョンを許可する] を選択 します。
トグル ボタンを選択して、外部バージョンを許可します。 完了したら、[閉じる] を選択します。
REST API を使用して外部バージョンを許可する
PowerShell を使用して外部バージョンを許可する
パッケージ>化の読み取り、書き込み、管理のアクセス許可を使用して個人用アクセス トークンを作成します。
個人用アクセス トークンの環境変数を作成します。
$env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
個人用アクセス トークンを baser64 でエンコードされた文字列に変換し、HTTP 要求ヘッダーを作成します。
$token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar"))) $headers = @{ Authorization = "Basic $token" }
エンドポイント URL を構築します。 例: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1
プロジェクト スコープ フィード:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
組織スコープのフィード:
$url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
次のコマンドを実行して、パッケージのアップストリーム動作状態を取得します。 $url
は、前のセクションで使用したのと $headers
同じ変数です。
Invoke-RestMethod -Uri $url -Headers $headers
関連記事
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示