Azure Pipelines のリソースについて

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

リソースとは、パイプラインの外部に存在する、パイプラインによって使用されるものです。

リソースには次の利点があります。

  • パイプライン間でセキュア ファイルやパスワードなどを共有する方法。
    • 共有にリソースを使用する例には、変数グループ、セキュア ファイル、サービス接続などがあります。 いずれの場合も、パイプラインが何かにアクセスし、消費するための手段として、リソースを使用します。
  • アクセス チェックなどの制限によってセキュリティを強化するためのツール。
    • たとえば、サービス接続を 1 つのパイプラインのみで実行するように制限できます。 また、手動の承認チェックの後にのみ、パイプラインからリポジトリにアクセスできるようにすることもできます。
  • パイプラインの追跡可能性を向上し、環境のトラブルシューティングを容易にする方法。
    • たとえば、環境にデプロイされた最後の実行数を確認できます。

パイプライン間でリソースを共有する

パイプライン UI 内でリソースを設定し、パイプライン間でリソースを共有します。 次に、タスクでそれらのリソースを参照します。 一部の共有リソースには、resourcesYAML パイプライン構文を使用してアクセスすることもできます。

パイプライン UI でリソースを共有する例には、セキュア ファイル変数グループサービス接続などがあります。 resources 構文の例には、パイプライン自体、リポジトリ、パッケージへのアクセスが含まれます。

パイプラインでリソースがどのように使用されるかは、パイプラインの種類とリソースの種類によって異なります。

YAML パイプラインの場合

  • サービス接続とセキュア ファイルがタスクへの入力として直接使用されます。事前に宣言する必要はありません。
  • 変数グループでは、group 構文が使用されます。
  • パイプラインとリポジトリでは、resources 構文が使用されます。

たとえば、パイプラインで変数グループを使用するには、[パイプライン]>[ライブラリ] で変数を追加します。 その後は、variables 構文を使用して、YAML パイプライン内の変数グループを参照できます。

variables:
- group: my-variable-group

resources 構文を使用して、パイプラインから 2 番目のパイプラインを呼び出すには、pipelines を参照します。

resources:
  pipelines:
  - pipeline: SmartHotel-resource # identifier for the resource (used in pipeline resource variables)
    source: SmartHotel-CI # name of the pipeline that produces an artifact

リソースを使用してセキュリティを強化する

リソースの消費方法や未承認のアクセスを防ぐ方法を特定することで、リソースによるパイプラインのセキュリティを強化できます。

YAML パイプラインの場合のみ、リソースを保護またはオープンとして設定します。 リソースが保護されている場合、承認とチェックを適用して、特定のユーザーと YAML パイプラインへのアクセスを制限することができます。 保護されるリソースには、サービス接続、エージェント プール、環境、リポジトリ、グループ、およびセキュア ファイルが含まれます。

リソース どのように消費されますか? 意図しないパイプラインでの使用を回避する方法
サービス接続 サービス接続を入力として使用する YAML ファイル内のタスクによって消費されます。 チェックおよびパイプラインのアクセス許可で保護されます。 チェックおよびパイプラインのアクセス許可は、サービスの接続ユーザーによって制御されます。 リソースの所有者は、サービス接続にアクセスできるパイプラインを制御できます。 パイプラインのアクセス許可を使用して、特定の YAML パイプラインとすべてのクラシック パイプラインへのアクセスを制限することもできます。
変数グループの変数を選択する パイプラインやジョブで変数グループを使用するための、特別な構文が存在します。 変数グループはサービス接続のように追加されます。 チェックおよびパイプラインのアクセス許可で保護されます。 チェックとパイプラインのアクセス許可は、変数グループのユーザーによって制御されます。 リソース所有者は変数グループにアクセスできるパイプラインを制御できます。 パイプラインのアクセス許可を使用して、特定の YAML パイプラインとすべてのクラシック パイプラインへのアクセスを制限することもできます。
セキュア ファイル セキュア ファイルはタスクによって消費されます (例: セキュア ファイルのダウンロード タスク)。 チェックおよびパイプラインのアクセス許可で保護されます。 チェックとパイプラインのアクセス許可は、セキュア ファイルのユーザーによって制御されます。 リソース所有者は、セキュア ファイルにアクセスできるパイプラインを制御できます。 パイプラインのアクセス許可を使用して、特定の YAML パイプラインとすべてのクラシック パイプラインへのアクセスを制限することもできます。
エージェント プール エージェントプールを使用してジョブを実行するための、特別な構文があります。 チェックおよびパイプラインのアクセス許可で保護されます。 チェックとパイプラインのアクセス許可は、エージェント プールのユーザーによって制御されます。 リソース所有者はエージェント プールにアクセスできるパイプラインを制御できます。 パイプラインのアクセス許可を使用して、特定の YAML パイプラインとすべてのクラシック パイプラインへのアクセスを制限することもできます。
environments YAML で環境を使用するための、特別な構文があります。 環境ユーザーによって制御される、チェックとパイプラインのアクセス許可で保護されます。 パイプラインのアクセス許可を使用して、特定の環境へのアクセスを制限することもできます。
リポジトリ ジョブのアクセス トークンがリポジトリにアクセスできる場合、スクリプトはリポジトリを複製できます。 リポジトリの共同作成者によって制御される、チェックとパイプラインのアクセス許可で保護されます。 リポジトリ所有者は所有権を制限できます。
成果物、作業項目、パイプライン パイプライン成果物はリソースですが、Azure Artifacts は違います。 ジョブのアクセス トークンがフィードにアクセスできる場合、スクリプトは成果物をダウンロードできます。 パイプライン成果物は、リソース セクションでリソースとして宣言できます。これは主に、新しい成果物が使用可能になったときにパイプラインをトリガーしたり、パイプラインでその成果物を消費する目的で使用されます。 成果物と作業項目には、独自のアクセス許可の制御があります。 フィードのチェックとパイプラインのアクセス許可はサポートされていません。
コンテナーパッケージWebhook これらは Azure DevOps エコシステムの外部にあり、アクセスはサービス接続によって制御されます。 YAML パイプラインで 3 つの型をすべて使用するための特別な構文があります。 サービス接続のユーザーによって制御される、チェックとパイプラインのアクセス許可で保護されます。

追跡可能性のためにリソースを使用する

環境は次のリソースの種類をサポートしています。

次のステップ