このガイドでは、シンプルなユースケースを用いて、GitHub Advanced Security (GHAS) と Microsoft Defender for Cloud のエンドツーエンド統合を評価するのに役立つサンドボックスプロジェクトのセットアップ手順について説明します。
この統合により、ランタイムのリスクとコンテキストを元のコードと関連付けることで、MICROSOFT のクラウドネイティブ アプリケーションのセキュリティを最大化し、AI を利用した修復を高速化できます。
このガイドに従うことで、次の操作を行うことができます。
- Defender for Cloud カバレッジ用に GitHub リポジトリを設定します。
- ランタイム リスクファクターを作成します。
- コードをランタイム リソースにリンクします。
- Defender for Cloud で実際のユース ケースをテストします。
Prerequisites
| Aspect | 詳細 |
|---|---|
| 環境要件 | - Defender for Cloud で作成されたコネクタを含む GitHub アカウント - GHAS ライセンス - サブスクリプションで有効になっている Defender Cloud Security Posture Management (DCSPM) - Microsoft Security Copilot (自動修復の場合は省略可能) |
| ロールとアクセス許可 | - セキュリティ管理者のアクセス許可 - Azure サブスクリプションのセキュリティ管理者 (Defender for Cloud で結果を表示するため) - GitHub組織の所有者 |
| クラウド環境 | 商用クラウドでのみ利用できます (Azure Government、21Vianet によって運用されている Azure、またはその他のソブリンクラウドは対象外)。 |
環境を準備する
手順 1: GitHub リポジトリを設定し、ワークフローを実行する
統合をテストするには、サンドボックスの例GitHubリポジトリを使用します。このリポジトリには、脆弱なコンテナー イメージを構築するためのすべてのコンテンツが既に含まれています。
リポジトリを設定する前に、次の点を確認してください。
- Defender for Cloud ポータルで使用するGitHub組織のコネクタを定義します。 「GitHub 環境を Microsoft Defender for Cloud に接続する」の手順に従います。
- GitHub コネクタのエージェントレス コード スキャンを構成します。 エージェントレス コード スキャンの構成 (プレビュー) の手順に従います。
- 統合にはプライベート リポジトリを使用します。
- GitHub組織に次のリポジトリを複製します。
- https://github.com/build25-woodgrove/mdc-customer-playbook このリポジトリでは GHAS が有効になっており、Defender CSPMが有効になっているAzure テナントにオンボードされます。
リポジトリで、次の手順に従います。
- 設定 に移動します。
- 左側のウィンドウで、[ シークレットと変数] > [アクション] を選択します。 次に、新しいリポジトリ シークレット を選択します。
- リポジトリまたは組織レベルで次のシークレットを追加します。
| 変動 | 説明 |
|---|---|
| ACR_ENDPOINT | コンテナー レジストリの認証サーバー。 |
| ACR_USERNAME | コンテナー レジストリのユーザー名。 |
| ACR_PASSWORD | コンテナー レジストリのパスワード。 |
Note
これらの変数には任意の名前を選択できます。 特定のパターンに従う必要はありません。
この情報は、次の手順に従って Azure portal で確認できます。
- デプロイするコンテナー レジストリを選択します。
- [ 設定] で、[ アクセス キー] を選択します。
- [ アクセス キー ] ウィンドウには、認証サーバー、ユーザー名、およびパスワードのキーが表示されます。
リポジトリで [ アクション] を選択 し、[ビルドして ACR にプッシュ ] ワークフローを選択し、[ ワークフローの実行] を選択します。
イメージがコンテナー レジストリにデプロイされたことを確認します。 リポジトリの例では、タグがmdc-mock-0001された mdc-ghas-integration というレジストリにイメージを配置する必要があります。
クラスターで実行中のコンテナーと同じイメージをデプロイします。 この手順を完了する 1 つの方法は、クラスターに接続し、 kubectl run コマンドを使用することです。 Azure Kubernetes Service (AKS) の例を次に示します。
クラスター サブスクリプションを設定します。
az account set --subscription $subscriptionID
クラスターの資格情報を設定します。
az aks get-credentials --resource-group $resourceGroupName --name $kubernetesClusterName --overwrite-existing
イメージをデプロイします。
kubectl run $containerName --image=$registryName.azurecr.io/mdc-mock-0001:mdc-ghas-integration
手順 2: リスク要因の例を作成する (ビジネス クリティカルなルール)
Defender for Cloud がこの統合に対して検出するリスク要因の 1 つは、ビジネスの重要度です。 組織は、リソースにビジネス クリティカルとしてラベルを付けるルールを作成できます。
- Defender for Cloud ポータルで、[>] に移動します。
- 右側のウィンドウで、リンクを選択して Microsoft Defender を開きます。
- [ 新しい分類の作成] を選択します。
- 名前と説明を入力します。
- クエリ ビルダーで、[ クラウド リソース] を選択します。 リソース 名 を、検証のためにクラスターにデプロイしたコンテナーの名前と同じ名前に設定するクエリを記述します。 次に、[次へ] を選択します。
- Preview Assets ページで、もし Microsoft Defender がリソースを既に検出している場合、コンテナーの名前は資産の種類が K8s-container または K8s-pod として表示されます。 名前がまだ表示されていない場合でも、次の手順に進みます。
- 重要度レベルを選択し、分類規則を確認して送信します。
Note
Microsoft Defender は、コンテナーを検出した後、コンテナーに重要度ラベルを適用します。 このプロセスには最大で 24 時間かかります。
手順 3: 環境の準備ができていることを検証する
検証では、コードを実行時の推奨事項に表示し、実行可能な結果を生成するように環境が正しく構成されていることを確認します。
この手順では、Defenderは完全なコードからランタイムへの可視性を検証します。
- Microsoft Defender for Cloudは、セキュリティの脆弱性についてソース コード リポジトリを継続的に監視します。
- コンテナー イメージなどのビルド成果物は、デプロイ前にコンテナー レジストリでスキャンされます。
- Kubernetes クラスターにデプロイされたランタイム ワークロードは、セキュリティ リスクを監視します。
- Defender for Cloud、コードからビルドとデプロイ、ランタイム、および戻る各成果物を関連付け、トレースします。
Note
次の結果を確認するには、前の手順が適用されてから最大 24 時間かかる場合があります。
GitHubのエージェントレススキャンがリポジトリを検出するかをテストします。
Cloud Security Explorer に移動し、クエリを実行します。 検証クエリは、Defender がパイプラインとワークロードによって生成された成果物を識別できるかどうかをテストします。 クエリから結果が返された場合は、スキャンと相関関係が期待どおりに動作していることを示します。
Note
結果が返されない場合は、アーティファクトがまだ生成されていない、スキャンが構成されていない、またはアクセス許可が不足していることを示している可能性があります。
- Defender for Cloud (Azure Container Registry) がコンテナー イメージをスキャンし、それを使用してコンテナーを作成したことを確認します。
- クエリで、特定のデプロイの条件を追加します。
- コンテナーが実行されていること、および Defender for Cloud が AKS クラスターをスキャンしたことを確認します。
- Defender for Cloud 側でリスク要因が正しく構成されていることを検証します。 Defender for Cloud インベントリ ページでコンテナー名を検索すると、それが重大としてマークされていることがわかります。
Note
この手順は、環境内でリスク要因がまだ構成されていない場合にのみ必要です。
検証が成功すると、推奨事項、キャンペーン、GitHubのイシューの生成などの後続の手順が意味のある結果をもたらします。