次の方法で共有


Defender for Cloud CLI と CI/CD パイプラインの統合 (プレビュー)

概要

Microsoft Defender for Cloud コマンド ライン インターフェイス (Defender CLI) を使用すると、継続的インテグレーションおよび継続的デプロイ (CI/CD) ワークフローにセキュリティ スキャンを直接埋め込むことができます。 CLI は、いくつかの業界標準スキャナーを調整し、検出された問題を Microsoft Defender for Cloud によって監視されるリソースと自動的に関連付けます。

現在、Trivy コンテナー脆弱性スキャナーの結果のみが Microsoft Defender for Cloud にアップロードされます。 他のすべてのスキャナーからの結果をスキャンしても実行され、ビルド ログ/SARIF ファイルに表示されますが、Defender for Cloud バックエンドには送信されません。

主な機能

  • Trivy と Cloud Security Explorer への自動インジェストを使用したコンテナー イメージの脆弱性評価。
  • SAST、シークレット検出、依存関係分析、IaC スキャンなどのパイプライン内のソース コード チェック。
  • 任意の CI ランナー (Azure Pipelines、GitHub Actions、Jenkins、Bitbucket、GitLab、CircleCI、Travis CI、AWS CodeBuild など) で動作する統合されたクロスプラットフォーム CLI。
  • プル要求注釈および品質ゲートと統合された標準ベースのSARIF出力。
  • 詳細な制御のために、単一の Azure サブスクリプションを対象とするトークンベースの認証。

前提条件

  • Defender for Cloud がオンボードされている Azure サブスクリプション。 まだ Azure アカウントを持っていない場合は、無料で作成します。

  • 次のいずれかの CI/CD パイプライン ツール: Jenkins、BitBucket Pipelines、Google Cloud Build、Bamboo、CircleCI、Travis CI、TeamCity、Oracle DevOps サービス、AWS CodeBuild

  • Defender CSPM が有効になっていること。

  • クライアント ID とシークレットを作成するためのセキュリティ管理者アクセス許可。

セットアップ

以降のセクションでは、クライアント ID とシークレットを取得し、CI/CD パイプライン スクリプトを更新し、CI/CD パイプラインに環境変数を追加する方法について説明します。

API トークンを取得する

Defender for Cloud CLI からのセキュリティ結果を Defender for Cloud バックエンドに渡せるようにするには、Microsoft Defender for Cloud のセキュリティ管理者が最初に認証のために Defender for Cloud から API キーを生成する必要があります。

  1. Azure portalにサインインし、Microsoft Defender for Cloud を開きます

  2. 管理に移動します 。 環境設定に移動します 。 統合

    Defender for Cloud の [環境の設定] の [統合] のスクリーンショット。

  3. 「+ 統合を追加 ▸ DevOps インジェスト (プレビュー)」を選択してください

    新しい [DevOps インジェスト] オプションのスクリーンショット。

  4. アプリケーション名を入力します。

    1. シークレットを格納するテナントを選択します。
    2. 有効期限を設定し、トークンを 有効にします
    3. [保存] を選択します。

    DevOps インジェスト統合の追加のスクリーンショット。

    DevOps インジェストの作成とトークンの作成のスクリーンショット。

  5. 保存した後、クライアント IDクライアント シークレット、およびテナント ID をコピーします。 それらを再度取得することはできません。

    DevOps インジェストが正常に作成されたスクリーンショット。

パイプライン変数

トークンを安全に受信したら、キーの環境変数を構成します。 環境変数はシェル スクリプトを使用して CLI に渡されます。これは curl を使用して取得するか、リポジトリに手動でコピーすることで取得できます。

Variable Description
GDN_MDC_CLI_CLIENT_ID 上記で生成されたクライアント ID
GDN_MDC_CLI_CLIENT_SECRET 上記で生成されたクライアント シークレット
GDN_MDC_CLI_TENANT_ID Azure AD テナント ID
GDN_PIPELINENAME bitbucketjenkinsgcpbamboocircletravisteamcityoci、または aws
GDN_TRIVY_ACTION image
GDN_TRIVY_TARGET スキャン対象のイメージの名前

CI/CD パイプライン スクリプトを更新する

最新のクロスプラットフォーム ビルドをダウンロードし、プロジェクトを初期化して Trivy を実行する、最小限の Bitbucket パイプラインの例を次に示します。 CI/CD パイプラインの他の例は、この GitHub リポジトリにあります。

image: atlassian/default-image:3
 
pipelines:
  default:
    - parallel:
      - step:
          name: 'Defender CLI Trivy Scan'
          script:
            - curl -L -o ./msdo_linux.zip https://www.nuget.org/api/v2/package/Microsoft.Security.DevOps.Cli.linux-x64/
            - unzip ./msdo_linux.zip
            - chmod +x tools/guardian
            - chmod +x tools/Microsoft.Guardian.Cli
            - tools/guardian init --force
            - tools/guardian run -t trivy --export-file ./ubuntu-test.sarif --publish-file-folder-path ./ubuntu-test.sarif            

クラウド セキュリティ エクスプローラーで結果を確認する

  1. パイプラインが正常に実行されたら、Microsoft Defender for Cloud に移動します。

  2. Defender for Cloud メニューで、[クラウド セキュリティ エクスプローラー] を選択します。

  3. [リソースの種類を選択] ドロップダウンを選択し、[DevOps] を選択し、[完了] を選択します。

    クラウド セキュリティ エクスプローラーの [CI/CD パイプライン] のスクリーンショット。

  4. + アイコンを選択して、新しい検索条件を追加します。

    クラウド セキュリティ エクスプローラーでの新しい検索のスクリーンショット。

  5. [条件の選択] ドロップダウンを選択します。 次に、[データ] を選択し、[プッシュ] を選択します。

    クラウド セキュリティ エクスプローラーの条件を選択しているスクリーンショット。

  6. [リソースの種類を選択] ドロップダウンを選択します。 次に、[コンテナー][コンテナー イメージ] を選択してから、[完了] を選択します。

    クラウド セキュリティ エクスプローラーでコンテナー イメージを選択しているスクリーンショット。

  7. [環境の設定] で統合の作成時に選択したスコープを選択します。

    [クラウド セキュリティ エクスプローラー] のスコープを選択しているスクリーンショット。

  8. [Search] を選択します。

    クラウド セキュリティ エクスプローラーでの検索のスクリーンショット。

  9. パイプラインからイメージへのマッピングの結果を確認します。

監視対象コンテナーと関連付ける

  1. クラウド セキュリティ エクスプローラーで、クエリ [CI/CD パイプライン] ->[パイプライン] + [コンテナー イメージ] ->[保有先] + [コンテナー レジスタ (グループ)] を入力します。

  2. [リソース名] を確認して、コンテナー マッピングを確認します。