概要
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 キーを生成する必要があります。
Azure portalにサインインし、Microsoft Defender for Cloud を開きます。
管理に移動します 。 環境設定に移動します 。 統合。
「+ 統合を追加 ▸ DevOps インジェスト (プレビュー)」を選択してください
アプリケーション名を入力します。
- シークレットを格納するテナントを選択します。
- 有効期限を設定し、トークンを 有効にします 。
- [保存] を選択します。
保存した後、クライアント ID、クライアント シークレット、およびテナント ID をコピーします。 それらを再度取得することはできません。
パイプライン変数
トークンを安全に受信したら、キーの環境変数を構成します。 環境変数はシェル スクリプトを使用して 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 |
bitbucket、 jenkins、 gcp、 bamboo、 circle、 travis、 teamcity、 oci、または 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
クラウド セキュリティ エクスプローラーで結果を確認する
パイプラインが正常に実行されたら、Microsoft Defender for Cloud に移動します。
Defender for Cloud メニューで、[クラウド セキュリティ エクスプローラー] を選択します。
[リソースの種類を選択] ドロップダウンを選択し、[DevOps] を選択し、[完了] を選択します。
+ アイコンを選択して、新しい検索条件を追加します。
[条件の選択] ドロップダウンを選択します。 次に、[データ] を選択し、[プッシュ] を選択します。
[リソースの種類を選択] ドロップダウンを選択します。 次に、[コンテナー]、[コンテナー イメージ] を選択してから、[完了] を選択します。
[環境の設定] で統合の作成時に選択したスコープを選択します。
[Search] を選択します。
パイプラインからイメージへのマッピングの結果を確認します。
監視対象コンテナーと関連付ける
クラウド セキュリティ エクスプローラーで、クエリ [CI/CD パイプライン] ->[パイプライン] + [コンテナー イメージ] ->[保有先] + [コンテナー レジスタ (グループ)] を入力します。
[リソース名] を確認して、コンテナー マッピングを確認します。