パイプライン リソース

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Azure Pipelines は、YAML ファイルとソース コードにとどまらないセキュリティを提供します。 YAML パイプラインを実行すると、リソースへのアクセスはチェックというシステムを経由します。 チェックはリソースを安全に保つために、パイプラインの実行を中断したり、失敗したりすることもあります。 パイプラインは、保護されたリソースと開いているリソースの 2 種類にアクセスできます。

保護されたリソース

多くの場合、パイプラインはシークレットにアクセスできます。 たとえば、ビルドに署名するには、署名証明書が必要です。 運用環境にデプロイするには、その環境に対する資格情報が必要です。 Azure Pipelines では、環境を除くすべての保護されたリソースのすべてのパイプラインへのリソースへのアクセスを開くときに 、管理者 ロールが必要です。 環境の場合は、 Creator ロールが必要です。 リソース保護の詳細については、こちらを参照してください。
Azure Pipelines では、次のすべてが YAML パイプラインの保護されたリソースと見なされます。

"保護された" とは、次のことを意味します。

  • プロジェクト内の特定のユーザーと特定のパイプラインからアクセスできるようにすることができます。 プロジェクトの外部のユーザーやパイプラインからアクセスすることはできません。
  • YAML パイプラインでこれらのリソースのいずれかを使用するたびに、他の手動または自動チェックを実行できます。 保護されたリソースの詳細については、「パイプライン リソースについて」を参照してください。

リポジトリ リソースの保護

リポジトリは必要に応じて保護できます。 組織またはプロジェクト レベルでは、Azure Pipelines アクセス トークンのスコープを前述のリポジトリに制限することができます。 これを行うと、Azure Pipelines によってさらに 2 つの保護が追加されます。

  • ジョブを実行するためにエージェントに与えられたアクセス トークンは、パイプラインの resources セクションで明示的に言及されているリポジトリにのみアクセスできます。
  • パイプラインに追加されたリポジトリは、パイプラインがリポジトリを初めて使用する際に、リポジトリへの投稿アクセス権を持つユーザーによって承認される必要があります。

この設定は、2020 年 5 月以降に作成されたすべての組織に対して既定でオンになっています。 その前に作成された組織は、組織の設定で有効にする必要があります。

リソースを開く

プロジェクト内の他のすべてのリソースは、開いているリソースと見なされます。 開いているリソースには、次のものがあります。

  • Artifacts
  • Pipelines
  • テスト計画
  • 作業項目

どのパイプラインがどのリソースにアクセスできるかについては、プロジェクト セクションで詳しく学習します。

ユーザーのアクセス許可

保護されたリソースの防御の最前線は、ユーザーのアクセス許可です。 通常は、必要なユーザーにのみアクセス許可を付与するようにしてください。 保護されたすべてのリソースには、同様のセキュリティ モデルがあります。 リソースのユーザー ロールのメンバーは、次のことができます。

  • そのリソースで構成されている承認者とチェックを削除する
  • そのリソースを使用する他のユーザーまたはパイプラインへのアクセス権を付与する

パイプラインに対するユーザーのアクセス許可のスクリーンショット

パイプラインのアクセス許可

YAML パイプラインを使用する場合、ユーザーのアクセス許可は、保護されたリソースをセキュリティで保護するのに十分ではありません。 保護されたリソースの名前 (運用環境のサービス接続など) を簡単にコピーし、別のパイプラインに含めることができます。 パイプラインのアクセス許可は、そのようなコピーから保護します。 保護された各リソースについて、"すべてのパイプライン" へのアクセスを許可するオプションが無効になっていることを確認します。 代わりに、信頼できる特定のパイプラインへのアクセスを明示的に許可します。

パイプラインのアクセス許可のスクリーンショット

チェック

YAML では、ユーザーとパイプラインのアクセス許可の組み合わせは、保護されたリソースを完全にセキュリティで保護するのに十分ではありません。 リソースに対するパイプラインのアクセス許可は、パイプライン全体に付与されます。 敵対者がリポジトリに別のブランチを作成し、悪意のあるコードを挿入し、同じパイプラインを使用してそのリソースにアクセスすることを妨げるものは何もありません。 悪意のある意図がなくても、ほとんどのパイプラインでは、運用環境にデプロイする前に、(特にパイプライン自体に対して) 変更を確認するための第 2 の目が必要です。 チェックを使用すると、特定の条件が満たされるまでパイプラインの実行を一時停止できます。

  • 手動承認チェック。 プロジェクトで保護されたリソースを使用するすべての実行は、続行する前に手動承認のためにブロックされます。 手動保護を使用すると、コードを確認し、適切なブランチから取得されていることを確認できます。
  • 保護されたブランチ チェック。 一部のブランチに対して手動コード レビュー プロセスが実施されている場合は、この保護をパイプラインに拡張できます。 各リソースで保護されたブランチ チェックを構成します。 これにより、パイプラインがユーザー ブランチの上で実行されるのを自動的に停止します。
  • 保護されたリソース チェック環境、サービス接続、リポジトリ、変数グループ、エージェント プール、変数グループ、およびセキュリティで保護されたファイルにチェックを追加して、パイプライン内のステージでリソースを使用する前に満たす必要がある条件を指定できます。 チェックと承認の詳細を参照してください。

チェックの構成のスクリーンショット

次のステップ

次に、リソースをプロジェクト構造にグループ化する方法を検討します。