その他のセキュリティの考慮事項

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

パイプラインをセキュリティで保護する場合は、他にもいくつか考慮すべき点があります。

PATH への依存

エージェントの PATH 設定に依存することは危険です。 以前のスクリプトやツールで変更されている可能性があるため、意図している場所を指していない可能性があります。 セキュリティ クリティカルなスクリプトやバイナリの場合は、常にプログラムへの完全修飾パスを使用します。

シークレットのログ記録

Azure Pipelines は、可能な限りログからシークレットをスクラブしようとします。 このフィルター処理はベストエフォート ベースであり、シークレットが漏洩するおそれがあるすべての方法をキャッチすることはできません。 シークレットをコンソールにエコーしたり、コマンド ライン パラメーターで使用したり、ファイルにログしたりしないでください。

コンテナーのロックダウン

コンテナーには、ホスト エージェントとの通信に必要な、システムによって提供されるボリューム マウント マッピングが、タスク、ワークスペース、および外部コンポーネントにいくつか用意されています。 これらのボリュームの一部またはすべてを、読み取り専用に設定してください。

resources:
  containers:
  - container: example
    image: ubuntu:22.04
    mountReadOnly:
      externals: true
      tasks: true
      tools: true
      work: false  # the default; shown here for completeness

ほとんどのユーザーは、最初の 3 つは読み取り専用としてマークし、work は読み取り/書き込みにするとよいでしょう。 特定のジョブまたはステップでの作業ディレクトリへの書き込みがないことがわかっている場合は、work も読み取り専用にしてください。 パイプラインに自己変更するタスクがある場合は、tasks は読み取り/書き込みのままにします。

使用可能なタスクを制御する

Marketplace からタスクをインストールして実行する機能を無効にすることができます。 これにより、パイプラインで実行されるコードをより詳細に制御できます。 また、すべてのインザボックス タスクを無効にすることもできます (エージェントに対する特別なアクションである Checkout を除く)。 インザボックス タスクは、ほとんどの状況では無効にしないことをお勧めします。

tfx で直接インストールしたタスクは常に使用できます。 これらの機能両方を有効にすると、それらのタスクのみ使用できます。

監査サービスを使用する

監査サービスには、多くのパイプライン イベントが記録されます。 監査ログを定期的に確認して、悪意のある変更が見逃されていないことを確認します。 https://dev.azure.com/ORG-NAME/_settings/audit にアクセスして始めましょう。

次のステップ

概要に戻り、すべての記事を網羅していることを確認します。