Azure Pipelinesの拡張機能
Azure Pipelinesの拡張機能を使用して、アプリケーションのデプロイのワークフローにContrastを連携します。本項では、Contrastと連携するための拡張機能を設定する方法と手順を説明します。
拡張機能を設定する前に、Microsoftの拡張機能をインストールする権限があることを確認してください。アクセス権限をお持ちでない場合は、プロジェクトの拡張機能をリクエストできます。
Azure Pipelinesの拡張機能のインストールと設定
以下の手順で拡張機能をインストールし、サービス接続を作成します。
拡張機能をインストール
Microsoftの説明に従って、 Contrast ADO Pipeline Integration という拡張機能を検索して、インストールします。
サービス接続を作成
「Contrast Server Connection」サービス接続によって、Azure DevOpsをContrastと連携できます。
サイドバーの下にあるProject Settings(プロジェクトの設定)にアクセスします。プロジェクト管理グループに属しているか、設定を変更するのに十分な権限を持っている必要があります。
プロジェクトの設定ページのPipelines(パイプライン)セクションで、Service connections(サービス接続)を選択します。
Create service connection(サービス接続の作成)を選択し、Contrast Server Connectionを選択します。
全てのフィールドに必要なデータを入力します。
Contrast URL:お使いのContrastサーバのURL。 末尾の
/Contrast
は除き、ホスト名のみが必要です。Contrastの認証情報:これらの認証情報は、Contrast Webインターフェイスのユーザメニュー > ユーザの設定の下にあるあなたのキーからコピーします。
組織のUUID(組織ID)
サービスキー
APIキー
Contrastユーザ名:Contrastへのログイン時に使用するユーザ名。
必要に応じて、Logging(ログ管理)オプションを選択します。
有効にすると、ログがパイプラインアーティファクトに保存され、タスクの実行とContrast APIのやりとりを可視化できます。
Azure Pipelinesの拡張機能でタスクを設定
以下の手順を使用して、リリースまたはビルドパイプラインのタスクを設定します。
手順
タスクを追加するパイプラインを選択して、Edit(編集)を選択します。
リリースパイプラインの場合は、タスクを追加するステージを選択します。
タスクを追加するために、省略符号(...)メニューをクリックして、Add an agentless job(エージェントレスジョブの追加)を選択します。
エージェントレスジョブの横にある+ボタンを選択して、Contrast Assess Securityタスクを追加します。
接続先とアプリケーションを選択するために、Contrast Service Connectionメニューで、接続したいService Connection(サービス接続)を選択します。また、Manage(管理)を選択して、Project Settings(プロジェクトの設定)ページのService connections(サービス接続)の設定画面にアクセスすることもできます。
必要に応じて、別のVulnerability Source(脆弱性ソース)を選択して下さい。デフォルトでは、 「Assess」が選択されます。
脆弱性ソースとしてAssess-Librariesを選択した場合、Contrastはライブラリの数ではなく、指定された深刻度基準に従ってそのライブラリが使用されているインスタンスの数を調べます。例えば、11個のライブラリがあり、それらのライブラリの中で脆弱性のある箇所(インスタンス)が合計で45個ある、というような状況が考えられます。
Applicationメニューで、アプリケーションを1つ選択します。
タスクの設定として、Allowed Status(許可するステータス)フィールドとBuild Number(ビルド番号)フィールドを使用して、Contrastからの結果にフィルターをかけます。結果にフィルターをかけたくない場合は、空欄のままにします。これらのフィールドで設定した値が、以降のフィールドで設定する条件に対して検証されます。
深刻度の設定に進み、深刻度ごとに許容する脆弱性の上限数を設定する必要があります。選択したアプリケーションに、その深刻度で許容する数を超える脆弱性がある場合、タスクは失敗になります。
ビルドパイプラインの場合のみ:タスクが失敗した場合にジョブが実行されないようにするには、Contrastタスクを含むエージェントレスジョブへの依存をジョブに設定する必要があります。
タスク失敗時に実行したくないジョブを選択します。
Dependencies(依存関係)セクションで、Agentless job(エージェントレスジョブ)を追加します。
注記
このタスクは、エージェントレスジョブにのみ使用できます。
Azure Pipelinesのパイプラインにリリースゲートを追加
リリースゲートは、特定のアプリケーションの脆弱性が一定のしきい値を超えた場合に、デプロイを止める保護機能です。
開始する前に
ステージのゲートの定義方法やゲートの設定方法については、Microsoftのドキュメントに詳しい説明があります。
必要な場合、Contrast Securityのサービス接続を作成して下さい。
ゲートを追加して設定
ゲートを追加するリリースパイプラインを検索し、Edit(編集)を選択します。
ゲートを設定するステージとデプロイの条件を選択します。ゲートは、デプロイ前条件、またはデプロイ後条件のいずれかになります。同じ条件に複数のゲートを追加することができます。
ステージのデプロイ条件アイコンを選択し、トグルボタンを選択してGates(ゲート)を有効にします。
+Add(追加)を選択して、Verify application vulnerabilities(アプリケーションの脆弱性を検査)を選択します。
お使いのContrastのサービス接続を選択します。
サービス接続をまだ作成していない場合は、サービス接続のドロップダウンメニューの横にあるNew(新規)を選択して、Contrastのサービス接続を作成して下さい。全てのフィールドに入力したら、OKを選択します。
Refresh list(リストをリフレッシュ)を選択して、新規に作成した接続を選択します。
フィールドにカーソルを合わせるか、リフレッシュボタンを選択すると、アプリケーションの一覧が表示されます。リリースパイプラインに最も適したものを選択します。
必要に応じて、ゲート評価のデータの取得時に、フィルタリングに使用する脆弱性のステータスやビルド番号を選択できます。
脆弱性の最大許容脆弱性数を設定します。ここには、Threshold Definition(しきい値の定義)がSplit(分割)またはCombined(結合)かに基づいて、深刻度ごとまたは合計しきい値ごとに許可される脆弱性の最大数を設定します。
パイプラインがこのゲートに達して検証が失敗した場合、パイプラインが有効になるか、評価(Evaluation)がタイムアウトするまでサンプリングが要求され続けます。
ヒント
Evaluation(評価)オプションをカスタマイズして、ゲートの再評価の間隔を設定できます。例えば、この値を24時間に設定すると、ゲートは毎日評価されます。これにより、パイプラインの実行を最初からやり直したり(手動での承認が存在する場合はは承認を取得したり)することなく、脆弱性を修正して必要なゲート条件を通過させることができます。
Splitしきい値の定義:しきい値の定義をSplit(分割)に設定した場合、各深刻度ごとに個別に許容する脆弱性の最大数を指定します。評価では、各深刻度の脆弱性数が、定義されたしきい値と比較されます。
Combinedしきい値の定義:しきい値の定義をCombined(結合)に設定した場合は、全ての深刻度の脆弱性を合算した総数に対して、許容する合計しきい値を指定します。評価では、合算された深刻度数が、定義された合計しきい値と比較されます。
Azure Pipelinesのログの検索
Logging(ログ管理)オプションをオンにすると、パイプラインタスクの詳細がキャプチャされ、パイプラインアーティファクトにログファイルとして保存されます。
開始する前に
サービス接続のLoggingオプションが選択されていることを確認して下さい。
手順
パイプラインのタスクを実行します。
タスク結果のログファイルが、パイプラインアーティファクトとして保存されます。
ビルドパイプライン:ログファイルを検索するには以下を行います。
Azure DevOps → Pipelines → Runs に移動します。
パイプラインの実行を選択します。
Artifacts(アーティファクト)に移動します。
Logs(ログ)を選択します。
ログファイルをダウンロードします。
リリースパイプライン:ログファイルを検索するには以下を行います。
Azure DevOps → Pipelines → Releasesに移動します。
ログを参照するリリースを選択します。
ステージにカーソルを合わせ、 Logs(ログ)を選択します。
Download all logs(全てのログをダウンロード)を選択します。