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 パイプラインに追加されるトークンを開発者に安全に渡す必要があります。
Azure portal にサインインします。
[Microsoft Defender for Cloud]>[管理]>[環境の設定]>[統合] に移動します。
[統合の追加] を選択し、[DevOps インジェスト] を選択します。
トークンのわかりやすい名前を入力します。選択したテナントにはトークン情報が保存されます。 クライアント シークレットは、シークレットの説明と有効期限を入力すると生成されます。
[構成] でトークンを有効にして、トークンを作成します。
各トークンをコピーします。 [OK]/ を選択した後で編集または取得することはできません
[統合] テーブルに、新しいインジェストが表示されます。
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> |
クラウド セキュリティ エクスプローラーで結果を確認する
パイプラインが正常に実行されたら、もう一度 Microsoft Defender for Cloud に移動します。
Defender for Cloud メニューで、[クラウド セキュリティ エクスプローラー] を選択します。
[リソースの種類を選択] ドロップダウンを選択し、[DevOps] を選択し、[完了] を選択します。
+ アイコンを選択して、新しい検索条件を追加します。
[条件の選択] ドロップダウンを選択します。 次に、[データ] を選択し、[プッシュ] を選択します。
[リソースの種類を選択] ドロップダウンを選択します。 次に、[コンテナー]、[コンテナー イメージ] を選択してから、[完了] を選択します。
[環境の設定] で統合の作成時に選択したスコープを選択します。
[Search] を選択します。
パイプラインからイメージへのマッピングの結果を確認します。
監視対象コンテナーと関連付ける
クラウド セキュリティ エクスプローラーで、クエリ [CI/CD パイプライン] ->[パイプライン] + [コンテナー イメージ] ->[保有先] + [コンテナー レジスタ (グループ)] を入力します。
[リソース名] を確認して、コンテナー マッピングを確認します。