Microsoft Defender for Cloud 規制コンプライアンスの適用除外を Azure PowerShell で作成する
はじめに
Microsoft Defender for Cloud の推奨事項や規制コンプライアンスで除外したい項目があった場合に、Azure PowerShell から設定する方法を調べました。
コマンドで設定
規制コンプライアンスの実態は Azure Policy なので、適用除外は Azure Policy の以下の PowerShell コマンドを使用します。
サブスクリプションに依存しないようにするため、サンプルにあるコマンドを少しカスタマイズして Get-AzPolicyAssignment
のパラメータをポリシー割り当てごとに変わる可能性がある -name
ではなく、-PolicyDefinitionId
を使用します。
また、イニシアティブでの除外設定の場合、-PolicyDefinitionReferenceId
で除外したい個別ポリシーを指定します。
$Subscription = Get-AzSubscription -SubscriptionName "<subscriptionName>"
$Assignment = Get-AzPolicyAssignment -PolicyDefinitionId "<policyDefinitionId>"
New-AzPolicyExemption -Name "<policyExemptionName>" -PolicyAssignment $Assignment -Scope "/subscriptions/$($Subscription.Id)" -PolicyDefinitionReferenceId "<policyDefinitionReferenceId>" -ExemptionCategory Waiver
次に "<PolicyDefinitionId>"
と "<policyDefinitionReferenceId>"
を確認します。これらは Azure ポータルの Azure Policy から確認可能です。
ポリシーの割り当てから該当のイニシアティブを開き、[定義の表示] をクリックします。
こちらのページで [定義ID] と [参照ID] がそれぞれ "<PolicyDefinitionId>"
と
"<policyDefinitionReferenceId>"
に該当します。
今回は [Azure Defender for servers should be enabled] の 参照 ID である "4da35fc9-c9e7-4960-aec9-797fe7d9051d" を使用します。
パラメータを埋めたコマンドがこちらです。
$Subscription = Get-AzSubscription -SubscriptionName "Azure Subscription"
$Assignment = Get-AzPolicyAssignment -PolicyDefinitionId "/providers/microsoft.authorization/policysetdefinitions/612b5213-9160-4969-8578-1518bd2a000c"
New-AzPolicyExemption -Name "Azure CIS 1.3.0 Custom Exemption" -PolicyAssignment $Assignment -Scope "/subscriptions/$($Subscription.Id)" -PolicyDefinitionReferenceId "4da35fc9-c9e7-4960-aec9-797fe7d9051d" -ExemptionCategory Waiver
実行すると以下のように適用除外が作成されます。
なお、削除する場合は以下のコマンドで可能です。
Remove-AzPolicyExemption -Name "Azure CIS 1.3.0 Custom Exemption" -Force
まとめ
こちらを使用して For などでループすることで、複数のサブスクリプションに対してまとめて適用除外を作成することが可能になります。
Discussion