Control: 6.1.1.1 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.
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.
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(this may be Log Analytics, Storage Account, Event Hub, or Partner solution) - Click
Save.
To enable Diagnostic Settings on a specific resource:
- Go to
Monitoring. - Click
Diagnostic settings. - Select
Add diagnostic setting. - Enter a
Diagnostic setting name. - Select the appropriate log, metric, and destination (this may be Log Analytics, Storage Account, Event Hub, or Partner solution)
- Click
Save.
Repeat these step for all resources as needed.
Remediate from Azure CLI
To configure Diagnostic Settings on a Subscription:
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 workspaceID>] --logs "<JSON encoded categories>" (e.g.[{category:Security,enabled:true},{category:Administrative,enabled:true},{category:Alert,enabled:true},{category:Policy,enabled:true}])
To configure Diagnostic Settings on a specific resource:
az monitor diagnostic-settings create --subscription <subscription ID> --resource <resource ID> --name <diagnostic settings name> <[--event-hub <eventhub ID> --event-hub-rule <event hub auth rule ID>] [--storage-account<storage account ID>] [--workspace <log analytics workspace ID>] --logs<resource specific JSON encoded log settings> --metrics <metric settings(shorthand|json-file|yaml-file)>
Remediate from PowerShell
To configure Diagnostic Settings on a subscription:
$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 $trueNew-AzSubscriptionDiagnosticSetting -SubscriptionId <subscription ID> -Name<Diagnostic settings name> <[-EventHubAuthorizationRule <event hub auth ruleID> -EventHubName <event hub name>] [-StorageAccountId <storage account ID>][-WorkSpaceId <log analytics workspace ID>] [-MarketplacePartner ID <full ARMMarketplace resource ID>]> -Log $logCategories
To configure Diagnostic Settings on a specific resource:
$logCategories = @()$logCategories += New-AzDiagnosticSettingLogSettingsObject -Category<resource specific log category> -Enabled $trueRepeat command and variable assignment for each Log category specific to theresource where this Diagnostic Setting will get configured.$metricCategories = @()$metricCategories += New-AzDiagnosticSettingMetricSettingsObject -Enabled$true [-Category <resource specific metric category | AllMetrics>] [-RetentionPolicyDay <Integer>] [-RetentionPolicyEnabled $true]Repeat command and variable assignment for each Metric category or use the'AllMetrics' category.New-AzDiagnosticSetting -ResourceId <resource ID> -Name <Diagnostic settingsname> -Log $logCategories -Metric $metricCategories [-EventHubAuthorizationRuleId <event hub auth rule ID> -EventHubName <event hubname>] [-StorageAccountId <storage account ID>] [-WorkspaceId <log analyticsworkspace ID>] [-MarketplacePartnerId <full ARM marketplace resource ID>]>
Default Value
By default, diagnostic setting is not set.
Usage
Run the control in your terminal:
powerpipe control run azure_compliance.control.cis_v500_6_1_1_1Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run azure_compliance.control.cis_v500_6_1_1_1 --shareSQL
This control uses a named query:
select id as resource, 'info' as status, 'Manual verification required.' as reason, display_name as subscriptionfrom azure_subscription;