次の方法で共有


Defender for Cloud CLI と CI/CD パイプラインを統合する

Defender for Cloud コマンド ライン インターフェイス (CLI) は、継続的インテグレーションと継続的デプロイ (CI/CD) パイプラインで使用できるアプリケーションです。 静的分析ツールを実行し、コードをクラウド サービスに接続します。 任意のビルド プロセスで Defender for Cloud CLI を使用して、組み込みのセキュリティ スキャナーを使用してイメージのセキュリティの脆弱性をスキャンできます。 スキャン結果が Defender for Cloud ポータルに送信されます。 その後、クラウド セキュリティ エクスプローラーからコンテナー イメージとその脆弱性にアクセスできます。

前提条件

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

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

  • Azure DevOps の場合、Azure DevOps 組織にインストールされた Microsoft Security DevOps (MSDO) 拡張機能

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

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

セットアップ

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

API トークンを取得する

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

トークンが生成されると、セキュリティ管理者は、トークンに関連付けるサブスクリプション スコープを選択します。 このトークンから Defender for Cloud に "プッシュ" されるデータのスコープは、トークンが関連付けられているサブスクリプションに設定されます。 これらの API トークンは不変であり、生成/削除のみ可能です。

そこから、セキュリティ管理者は、CI/CD パイプラインに追加されるトークンを開発者に安全に渡す必要があります。

  1. Azure portal にサインインします。

  2. [Microsoft Defender for Cloud]>[管理]>[環境の設定]>[統合] に移動します。

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

  3. [統合の追加] を選択し、[DevOps インジェスト] を選択します。

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

  4. トークンのわかりやすい名前を入力します。選択したテナントにはトークン情報が保存されます。 クライアント シークレットは、シークレットの説明と有効期限を入力すると生成されます。

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

  5. [構成] でトークンを有効にして、トークンを作成します。

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

  6. 各トークンをコピーします。 [OK] を選択した後で編集または取得することはできません

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

  7. [統合] テーブルに、新しいインジェストが表示されます。

    新しいインジェストを含む [DevOps インジェスト] テーブルのスクリーンショット。

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

CI/CD パイプライン ツールごとに構文が異なります。 次のコードは、Bitbucket パイプラインの例です。

image: atlassian/default-image:3
 
pipelines:
  default:
    - parallel:
      - step:
          name: 'MSDO trivy test'
          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
            - ls -lah .
            - tools/guardian init --force
            - tools/guardian run -t trivy --export-file ./ubuntu-test.sarif --publish-file-folder-path ./ubuntu-test.sarif            

パイプライン変数

トークンを安全に受け取った後、開発者はキーの環境変数を構成する必要があります。 環境変数は、開発者が curl から受け取ることができるシェル スクリプトを介して、またはシェル スクリプトをリポジトリに手動でコピーすると、CLI に渡されます。

名前
GDN_PUSH_TOKEN_CLIENT_ID <クライアント ID>
GDN_PUSH_TOKEN_CLIENT_ID <クライアント ID>
GDN_PUSH_TOKEN_CLIENT_SECRET <クライアント シークレット>
GDN_PIPELINENAME bitbucket、jenkins、gcp、bamboo、circle、travis、teamcity、oci、aws
GDN_PUSH_TOKEN_TENANT_ID <テナント ID>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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