Azure Pipelines をセキュリティで保護する
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Azure Pipelines には、個別のセキュリティ上の課題があります。 パイプラインを使用すると、スクリプトを実行したり、コードを運用環境にデプロイしたりできますが、悪意のあるコードのコンジットにならないようにすることが重要です。 セキュリティと、開発チームが必要とする柔軟性とパワーのバランスを取ることが不可欠です。
Note
Azure Pipelines は、Azure DevOps Services のスイートの一部であり、すべて Azure 内のセキュリティで保護されたインフラストラクチャ上に構築されています。 すべての Azure DevOps Services のセキュリティ概念を包括的に理解するには、次のリソースを参照することをお勧めします。
従来、組織は厳密なロックダウンによってセキュリティを適用します。 コード、パイプライン、運用環境では、厳しいアクセス制限が発生します。 このアプローチは、ユーザーとプロジェクトが限られている小規模な組織では適切に機能しますが、大規模な組織は異なる現実に直面しています。 多くの共同作成者がコードにアクセスできるようになると、"侵害を想定する" という原則が重要になります。 敵対者がリポジトリへの共同作成者アクセス権を持っているかのように動作し、注意力を高める必要があります。
セキュリティ目標を達成するには、次の点を考慮してください。
悪意のあるコードの実行を防ぐ:
- 次のタスクを含む、悪意のあるコードの不正な実行を防ぐためにパイプラインが構成されていることを確認します。
- 機密性の高いシークレットと資格情報へのアクセスを制限します。
- 意図しない動作を防ぐために、入力パラメーターと引数を検証します。
- 潜在的なセキュリティ リスクのパイプライン スクリプトを定期的に確認して監査します。
- 次のようなセキュリティ プラクティスを実装します。
- SQL インジェクションを防ぐために、スクリプトでパラメーター化されたクエリを使用します。
- シェル コマンドの挿入を回避するために、引数内の特殊文字をエスケープします。
- パイプライン サービス接続のアクセス許可を制限します。
- 実行をきめ細かく制御し、セキュリティ リスクを受けにくい YAML パイプラインの使用を検討してください。
- 次のタスクを含む、悪意のあるコードの不正な実行を防ぐためにパイプラインが構成されていることを確認します。
横方向の露出を軽減する:
- パイプラインを分離して、組織のプロジェクトとリポジトリ内の横移動を防ぎます。
- 各パイプラインに必要なリポジトリとリソースのみにアクセスを制限します。
- パイプライン アクティビティを監視し、疑わしい動作のアラートを設定します。
- アクセス許可を確認して更新し、定期的に露出を最小限に抑えます。
YAML パイプラインを使用する:
- YAML パイプラインには、セキュリティの面で次の利点があります。
- パイプラインのステップと依存関係を明示的に定義します。
- パイプライン定義のバージョン管理。
- パイプライン構成の可視性を明確にします。
- 誤った構成のリスクが軽減されました。
- コード レビューとプル要求:
- 他のコードと同様に YAML パイプラインを扱います。
- 悪意のある手順を防ぐために、変更をマージするためのプル要求を適用します。
- ブランチ ポリシーを使用してこのレビュー プロセスを設定します。
- リソース アクセス管理:
- リソース所有者は、YAML パイプラインが特定のリソースにアクセスできるかどうかを制御します。
- このセキュリティ機能により、別のリポジトリのなどの攻撃を防ぐことができます。
- 承認とチェック 各パイプライン実行のアクセス制御を提供します。
- ランタイム パラメーター:
- ランタイム パラメーターArgument インジェクションなど、変数に関連するセキュリティの問題を回避するのに役立ちます。
- セキュリティと保守容易性を向上させるために、既存のパイプラインを YAML 形式に移行することを検討してください。
- YAML パイプラインには、セキュリティの面で次の利点があります。
セキュリティは継続的なプロセスであり、定期的な評価と更新が不可欠です。 YAML パイプラインでは、Azure Pipelines に最適なセキュリティが提供されます。
次の記事では、セキュリティで保護された YAML ベースのパイプラインの開発に役立つ推奨事項について説明します。