Microsoft Defender for Cloud における AWS 推奨事項の適用除外
はじめに
Microsoft Defendr for Cloud の CSPM 機能では Azure だけではなく AWS や GCP に対してもセキュリティ チェックが可能です。Azure 向けの推奨事項については Azure ポリシーを使用して実現していますが、AWS や GCP 向けは仕組みが異なります。こちらの有効化に関してはドキュメントで説明がありますが、除外設定についてはあまり解説がありません。そのためこのブログでは AWS 向けの推奨事項の除外設定について確認していきます。
Azure ポータルからの除外設定
Azure ポータルにおける除外設定自体は Azure と変わらず、推奨事項画面から設定可能です。
Azure の場合は Azure ポリシーの適用除外に反映されるためそこから編集や削除できるのですが、AWS・GCP は 各セキュリティ ポリシーから管理します。
AWS の場合は、[環境設定] から AWS のアカウントを選択します。
[セキュリティ ポリシー] から対象のセキュリティ標準の三点リーダーを選択し、[推奨事項の表示] をクリックします。
対象の推奨事項を探し、三点リーダーから [適用除外の管理] をクリックします。
表示された適用除外の三点リーダーをクリックすると、編集や削除が可能です。
ちなみに AWS コネクタと同一リソース グループに除外設定のリソースが作成されています。
CLI で設定したい
Azure ポータルであれば、比較的簡単に設定できるのですが、多数の AWS アカウントを管理するのであれば、Azure PowerShell などで設定したいところです。調べた限り、Azure 以外の適用除外を作成する Azure PowerShell が準備されていないようです。(Azure であれば Azure ポリシーの PowerShell コマンドが利用可能)
そのため、以下の REST API をキックしようとしたのですが、うまく動かず。(検証不足)
そのため、先ほど表示した適用除外のリソースから ARM テンプレートを取得し、そちらを利用して CLI から設定することにしました。
ARM テンプレートで設定する
ARM テンプレートで設定するにあたり、セキュリティ標準の ID や推奨事項の ID を取得する必要があります。ただし、Azure ポータル上では表示されないため、Resource Graph から確認します。
まず対象の推奨事項から [クエリを開く] をクリックし、そのままクエリを実行します。その後、表示された結果の [詳細を表示] をクリックします。
詳細から properties 欄の statusPerInitiative で除外したいセキュリティ標準の ID を取得します。
次に一番下の assessmentKey (推奨事項のID) を取得します。
これで準備完了なので、以下の ARM テンプレートとパラメータファイルを作成します。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"assignment_guid": {
"type": "String"
},
"display_name": {
"type": "String"
},
"securityconnector_id": {
"type": "String"
},
"assignedstandard_id": {
"type": "String"
},
"assignedcomponent_key": {
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Security/assignments",
"apiVersion": "2021-08-01-preview",
"name": "[parameters('assignment_guid')]",
"location": "[resourceGroup().location]",
"properties": {
"displayName": "[parameters('display_name')]",
"description": "チェック不要のため除外",
"assignedStandard": {
"id": "[concat('/providers/Microsoft.Security/standards/', parameters('assignedstandard_id'))]"
},
"assignedComponent": {
"key": "[parameters('assignedcomponent_key')]"
},
"effect": "Exempt",
"scope": "[parameters('securityconnector_id')]",
"additionalData": {
"exemptionCategory": "Waiver"
},
"metadata": {}
}
}
]
}
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"assignment_guid": {
"value": "[newGuid()]"
},
"display_name": {
"value": "<Azure ポータル上の表示名>"
},
"securityconnector_id": {
"value": "</subscriptions/ から始まる AWS コネクタのリソース ID>"
},
"assignedstandard_id": {
"value": "<セキュリティ標準の ID>"
},
"assignedcomponent_key": {
"value": "<推奨事項の ID>"
}
}
}
上記をもとに以下コマンドで ARM テンプレートを実行します。
New-AzResourceGroupDeployment -Name <deployName> -ResourceGroupName <resourceGroupName> -TemplateFile <templateFilePath> -TemplateParameterFile <parameterFilePath>
実行結果は以下の通りです。しばらくすると Azure ポータルから確認できます。
まとめ
今回は Defender for Cloud における AWS 推奨事項の除外を確認しました。Azure ポータルからであれば Azure 向けの推奨事項とあまり変わらず操作が可能ですが、CLI では Azure PowerShell などが準備されておらず少し難ありのため、運用時に少し工夫が必要になりそうです。
Discussion