Ensure that a 'Diagnostic Setting' exists for Subscription Activity Logs
Description
Enable Diagnostic settings for exporting activity logs. Diagnostic settings are available for each individual resource within a subscription. Settings should be configured for all appropriate resources for your environment.
Rationale
A diagnostic setting controls how a diagnostic log is exported. By default, logs are retained only for 90 days. Diagnostic settings should be defined so that logs can be exported and stored for a longer duration to analyze security activities within an Azure subscription.
Impact
None identified.
Audit Procedure
Using Azure Portal
To identify Diagnostic Settings on a subscription:
- Go to
Monitor. - Click
Activity Log. - Click
Export Activity Logs. - Select a
Subscription. - Ensure a
Diagnostic settingexists for the selected Subscription.
To identify Diagnostic Settings on specific resources:
- Go to
Monitoring. - Click
Diagnostic settings. - Ensure a
Diagnostic settingexists for all appropriate resources.
Using Azure CLI
To identify Diagnostic Settings on a subscription:
az monitor diagnostic-settings subscription list --subscription <subscription-id>
To identify Diagnostic Settings on a resource:
az monitor diagnostic-settings list --resource <resource-id>
Using PowerShell
To identify Diagnostic Settings on a Subscription:
Get-AzSubscriptionDiagnosticSetting -SubscriptionId <subscription-id>
To identify Diagnostic Settings on a specific resource:
Get-AzDiagnosticSetting -ResourceId <resource-id>
Expected Result
At least one Diagnostic Setting should exist for each subscription, exporting activity logs to a destination such as Log Analytics workspace, Storage Account, or Event Hub.
Remediation
Remediate from Azure Portal
To enable Diagnostic Settings on a Subscription:
- Go to
Monitor. - Click on
Activity log. - Click on
Export Activity Logs. - Click
+ Add diagnostic setting. - Enter a
Diagnostic setting name. - Select
Categoriesfor the diagnostic setting. - Select the appropriate
Destination details(Log Analytics, Storage Account, Event Hub, or Partner solution). - Click
Save.
Remediate from Azure CLI
az monitor diagnostic-settings subscription create --subscription <subscription id> --name <diagnostic settings name> --location <location> <[--event-hub <event hub ID> --event-hub-auth-rule <event hub auth rule ID>] [--storage-account <storage account ID>] [--workspace <log analytics workspace ID>]> --logs "<JSON encoded categories>" (e.g. [{category:Security,enabled:true},{category:Administrative,enabled:true},{category:Alert,enabled:true},{category:Policy,enabled:true}])
Remediate from PowerShell
$logCategories = @();
$logCategories += New-AzDiagnosticSettingSubscriptionLogSettingsObject -Category Administrative -Enabled $true
$logCategories += New-AzDiagnosticSettingSubscriptionLogSettingsObject -Category Security -Enabled $true
$logCategories += New-AzDiagnosticSettingSubscriptionLogSettingsObject -Category ServiceHealth -Enabled $true
$logCategories += New-AzDiagnosticSettingSubscriptionLogSettingsObject -Category Alert -Enabled $true
$logCategories += New-AzDiagnosticSettingSubscriptionLogSettingsObject -Category Recommendation -Enabled $true
$logCategories += New-AzDiagnosticSettingSubscriptionLogSettingsObject -Category Policy -Enabled $true
$logCategories += New-AzDiagnosticSettingSubscriptionLogSettingsObject -Category Autoscale -Enabled $true
$logCategories += New-AzDiagnosticSettingSubscriptionLogSettingsObject -Category ResourceHealth -Enabled $true
New-AzSubscriptionDiagnosticSetting -SubscriptionId <subscription ID> -Name <Diagnostic settings name> <[-EventHubAuthorizationRule <event hub auth rule ID> -EventHubName <event hub name>] [-StorageAccountId <storage account ID>] [-WorkSpaceId <log analytics workspace ID>] [-MarketplacePartner ID <full ARM Marketplace resource ID>]> -Log $logCategories
Default Value
No Diagnostic Settings are configured by default.
References
- https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/diagnostic-settings
- https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/resource-manager-diagnostic-settings
- https://learn.microsoft.com/en-us/security/benchmark/azure/mcsb-logging-threat-detection#lt-3-enable-logging-for-security-investigation
- https://learn.microsoft.com/en-us/cli/azure/monitor/diagnostic-settings?view=azure-cli-latest
- https://learn.microsoft.com/en-us/powershell/module/az.monitor/new-azsubscriptiondiagnosticsetting?view=azps-13.4.0
CIS Controls
| Controls Version | Control | IG 1 | IG 2 | IG 3 |
|---|---|---|---|---|
| v8 | 8.5 Collect Detailed Audit Logs | x | x | |
| v7 | 6.3 Enable Detailed Logging | x | x |
MITRE ATT&CK Mappings
| Techniques | Tactics | Mitigations |
|---|---|---|
| T1485 | TA0040 | M1053 |
Profile
Level 1 | Automated