Management

Management Security Baselines

Management services form the operational backbone of Azure security. Log Analytics Workspace is the central data platform for security logs, metrics, and alerts — it feeds Sentinel, Defender for Cloud, and all diagnostic telemetry across your environment.

Log Analytics Security Data Flow

graph LR subgraph Sources["Log Sources"] AZ[Azure Resources] DC[Defender for Cloud] ENT[Entra ID] ON[On-Premises] end subgraph Platform["Data Platform"] LA[Log Analytics
Workspace] end subgraph Consumers["Security Consumers"] SEN[Microsoft Sentinel] WB[Workbooks & Dashboards] AL[Alert Rules] end AZ -->|Diagnostic Settings| LA DC -->|Security Alerts| LA ENT -->|Sign-in & Audit Logs| LA ON -->|AMA Agent| LA LA --> SEN LA --> WB LA --> AL style Sources stroke:#22d3ee,stroke-width:2px style Platform stroke:#a855f7,stroke-width:2px style Consumers stroke:#ec4899,stroke-width:2px

Log Analytics Workspace

Centralized log ingestion and query platform that underpins Microsoft Sentinel, Defender for Cloud, and Azure Monitor. The workspace stores all security telemetry — sign-in logs, resource diagnostics, threat alerts, and custom application logs. Securing the workspace protects the integrity of your entire detection and response capability.

PropertyValue
Defender PlanN/A — Log Analytics is the Defender backend
Azure Policy Built-inYes — CMK, Private Link, retention, workspace access mode
Network IsolationAzure Monitor Private Link Scope (AMPLS)
Key FeatureResource-context RBAC for per-table access control

Baseline Controls

NS✓ Supported

Private Link Scope

○ ManualCustomer
PA✓ Supported

RBAC Access Control

○ ManualCustomer
DP✓ Supported

Encryption at Rest

● DefaultMicrosoft
DP✓ Supported

CMK Encryption

○ ManualCustomer
BR✓ Supported

Data Retention

● DefaultCustomer

Terraform: Hardened Log Analytics Workspace

hcl
resource "azurerm_log_analytics_workspace" "main" {
  name                = "law-security-prod"
  resource_group_name = azurerm_resource_group.management.name
  location            = azurerm_resource_group.management.location
  sku                 = "PerGB2018"

  # BR-1: Retention configuration
  retention_in_days   = 90                      # Interactive retention

  # PA-7: Resource-context RBAC
  internet_ingestion_enabled = false            # NS-2: Disable public ingestion
  internet_query_enabled     = false            # NS-2: Disable public queries
}

# NS-2: Azure Monitor Private Link Scope
resource "azurerm_monitor_private_link_scope" "main" {
  name                = "ampls-prod"
  resource_group_name = azurerm_resource_group.management.name

  ingestion_access_mode = "PrivateOnly"
  query_access_mode     = "PrivateOnly"
}

resource "azurerm_monitor_private_link_scoped_service" "law" {
  name                = "ampls-law-link"
  resource_group_name = azurerm_resource_group.management.name
  scope_name          = azurerm_monitor_private_link_scope.main.name
  linked_resource_id  = azurerm_log_analytics_workspace.main.id
}

resource "azurerm_private_endpoint" "ampls" {
  name                = "pe-ampls-prod"
  location            = azurerm_resource_group.management.location
  resource_group_name = azurerm_resource_group.management.name
  subnet_id           = azurerm_subnet.management.id

  private_service_connection {
    name                           = "psc-ampls-prod"
    private_connection_resource_id = azurerm_monitor_private_link_scope.main.id
    subresource_names              = ["azuremonitor"]
    is_manual_connection           = false
  }
}

# LT-3: Diagnostic settings for the workspace itself
resource "azurerm_monitor_diagnostic_setting" "law" {
  name                       = "diag-law-audit"
  target_resource_id         = azurerm_log_analytics_workspace.main.id
  log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id

  enabled_log { category = "Audit" }
  enabled_log { category = "SummaryLogs" }
  metric { category = "AllMetrics" }
}
resource "azurerm_log_analytics_workspace" "main" {
  name                = "law-security-prod"
  resource_group_name = azurerm_resource_group.management.name
  location            = azurerm_resource_group.management.location
  sku                 = "PerGB2018"

  # BR-1: Retention configuration
  retention_in_days   = 90                      # Interactive retention

  # PA-7: Resource-context RBAC
  internet_ingestion_enabled = false            # NS-2: Disable public ingestion
  internet_query_enabled     = false            # NS-2: Disable public queries
}

# NS-2: Azure Monitor Private Link Scope
resource "azurerm_monitor_private_link_scope" "main" {
  name                = "ampls-prod"
  resource_group_name = azurerm_resource_group.management.name

  ingestion_access_mode = "PrivateOnly"
  query_access_mode     = "PrivateOnly"
}

resource "azurerm_monitor_private_link_scoped_service" "law" {
  name                = "ampls-law-link"
  resource_group_name = azurerm_resource_group.management.name
  scope_name          = azurerm_monitor_private_link_scope.main.name
  linked_resource_id  = azurerm_log_analytics_workspace.main.id
}

resource "azurerm_private_endpoint" "ampls" {
  name                = "pe-ampls-prod"
  location            = azurerm_resource_group.management.location
  resource_group_name = azurerm_resource_group.management.name
  subnet_id           = azurerm_subnet.management.id

  private_service_connection {
    name                           = "psc-ampls-prod"
    private_connection_resource_id = azurerm_monitor_private_link_scope.main.id
    subresource_names              = ["azuremonitor"]
    is_manual_connection           = false
  }
}

# LT-3: Diagnostic settings for the workspace itself
resource "azurerm_monitor_diagnostic_setting" "law" {
  name                       = "diag-law-audit"
  target_resource_id         = azurerm_log_analytics_workspace.main.id
  log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id

  enabled_log { category = "Audit" }
  enabled_log { category = "SummaryLogs" }
  metric { category = "AllMetrics" }
}

Azure Portal Instructions

Step-by-step instructions for configuring each Log Analytics Workspace control through the Azure Portal.

NS-2 — Private Link Scope
  1. Navigate to Azure Monitor Private Link Scopes in the Azure Portal
  2. Click + Create to create a new AMPLS resource
  3. Under Azure Monitor Resources, click + Add and select your Log Analytics workspace
  4. Navigate to the AMPLS resource > Networking > Private endpoint connections
  5. Click + Private endpoint and select the VNet, subnet, and DNS zone
  6. On the AMPLS resource, set Access mode to Private Only for both ingestion and query
  7. Verify that agents and queries can still reach the workspace over the private link
PA-7 — RBAC Access Control
  1. Navigate to your Log Analytics workspace in the Azure Portal
  2. In the left menu, select Access control (IAM)
  3. Click + Add role assignment
  4. Assign "Log Analytics Reader" for read-only access or "Log Analytics Contributor" for management
  5. For fine-grained control, set Access control mode to "Use resource or workspace permissions"
  6. This enables resource-context RBAC where users can only query logs from resources they have access to
  7. Navigate to Settings > Tables to configure per-table RBAC for sensitive data types
DP-4 — Encryption at Rest

This feature is managed by Microsoft and enabled by default. All log data, saved queries, and alert definitions are encrypted at rest with AES-256. No portal configuration is required.

DP-5 — CMK Encryption
  1. Navigate to Log Analytics clusters in the Azure Portal
  2. Click + Create to create a dedicated cluster (minimum 500 GB/day commitment tier)
  3. On the Encryption tab, select Customer-managed key
  4. Select the Key Vault and encryption key
  5. Configure the managed identity for Key Vault access
  6. Click Review + Create
  7. After the cluster is created, link your workspace: navigate to your workspace > Settings > Linked storage > Cluster link
BR-1 — Data Retention & Archive
  1. Navigate to your Log Analytics workspace in the Azure Portal
  2. In the left menu under General, select Usage and estimated costs
  3. Click Data Retention and set the interactive retention period
  4. For per-table retention, navigate to Settings > Tables
  5. Select a table and click the context menu (...) > Manage table
  6. Set the Interactive retention and Total retention periods
  7. Data beyond interactive retention moves to the archive tier at lower cost

Workspace Architecture

Use a single workspace per region for most organizations. Multi-workspace designs add complexity to cross-workspace queries and Sentinel analytics. Use resource-context RBAC and per-table retention to control access and costs within a single workspace instead of splitting into multiple workspaces.