Azure Monitor ログの Azure AD 認証

Azure Monitor を使って、複数のソースから Azure Monitor ログにデータを収集できます。 これらのソースには、仮想マシン上のエージェント、Application Insights、Azure リソースの診断設定、データ コレクター API などがあります。

Log Analytics エージェントでは、初期アクセスを確認し、さらにエージェントと Azure Monitor 間にセキュリティで保護された接続を確立するために使用される証明書をプロビジョニングするため、ワークスペース キーが登録キーとして使用されます。 詳細については、「エージェントからデータを送信する」を参照してください。 データ コレクター API では、アクセスを認可するために、同じワークスペース キーが使われます。

資格情報を管理することは困難であるため、これらのオプションは煩雑で、リスクとなる可能性があります。ワークスペース キーを大規模に管理する場合は特にそうです。 ローカル認証を使わず、マネージド ID と Azure Active Directory (Azure AD) を使って排他的に認証されたテレメトリのみが Azure Monitor に取り込まれるようにすることを明示的に選択できます。 この機能により、運用上とビジネス上の重要な決定を下すために使われるテレメトリのセキュリティと信頼性が高められています。

Azure Monitor ログに対して Azure AD 統合を有効にし、これらの共有シークレットへの依存を削除するには:

  1. Log Analytics エージェントから Azure Monitor エージェントに移行します。 Azure Monitor エージェントにキーは不要ですが、代わりにシステム マネージド ID が必要です
  2. Log Analytics ワークスペースのローカル認証を無効にします
  3. Application Insights の Azure AD 認証 (プレビュー) を使って、認証されたテレメトリのみが Application Insights リソースに取り込まれるようにします。

Log Analytics のローカル認証を無効にする

Log Analytics エージェントへの依存を解消した後で、Log Analytics ワークスペースのローカル認証を無効にすることができます。 これで、Azure AD によって排他的に認証されたテレメトリを取り込み、クエリを実行できるようになります。

ローカル認証を無効にすると、一部の機能の可用性が制限される場合があります。具体例を次に示します。

  • 既存の Log Analytics エージェントは機能しなくなります。 Azure Monitor エージェントのみがサポートされています。 Log Analytics エージェントで使用できる一部の機能は、Azure Monitor エージェントでは使用できません。 たとえば、カスタム ログ収集や IIS ログ収集などです。
  • データ コレクター API (プレビュー) は Azure AD 認証をサポートしておらず、データの取り込みには使用できなくなります。
  • VM 分析情報とコンテナー分析情報は動作を停止します。 これらの機能でサポートされている唯一の認可方法は、ローカル認可です。

Azure Policy を使ってローカル認証を無効にすることができます。 または、Azure Resource Manager テンプレート、PowerShell、または Azure CLI を使って、プログラムで無効にすることができます。

Azure Policy

このプロパティを true に設定しない限り、Azure Policy for DisableLocalAuth を使って新しい Log Analytics ワークスペースを作成することはできません。 ポリシー名は Log Analytics Workspaces should block non-Azure Active Directory based ingestion です。 このポリシー定義をサブスクリプションに適用するには、新しいポリシー割り当てを作成してポリシーを割り当てます

ポリシー テンプレートの定義:

{
  "properties": {
    "displayName": "Log Analytics Workspaces should block non-Azure Active Directory based ingestion.",
    "policyType": "BuiltIn",
    "mode": "Indexed",
    "description": "Enforcing log ingestion to require Azure Active Directory authentication prevents unauthenticated logs from an attacker which could lead to incorrect status, false alerts, and incorrect logs stored in the system.",
    "metadata": {
      "version": "1.0.0",
      "category": "Monitoring"
    },
    "parameters": {
      "effect": {
        "type": "String",
        "metadata": {
          "displayName": "Effect",
          "description": "Enable or disable the execution of the policy"
        },
        "allowedValues": [
          "Deny",
          "Audit",
          "Disabled"
        ],
        "defaultValue": "Audit"
      }
    },
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.OperationalInsights/workspaces"
          },
          {
            "field": "Microsoft.OperationalInsights/workspaces/features.disableLocalAuth",
            "notEquals": "true"
          }
        ]
      },
      "then": {
        "effect": "[parameters('effect')]"
      }
    }
  },
  "id": "/providers/Microsoft.Authorization/policyDefinitions/e15effd4-2278-4c65-a0da-4d6f6d1890e2",
  "type": "Microsoft.Authorization/policyDefinitions",
  "name": "e15effd4-2278-4c65-a0da-4d6f6d1890e2"
}

Azure Resource Manager

DisableLocalAuth プロパティは、Log Analytics ワークスペースでローカル認証を無効にするために使います。 このプロパティを true に設定すると、すべてのアクセスで Azure AD 認証を使用することが必須になります。

次の Azure Resource Manager テンプレートを使って、ローカル認証を無効にします。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "workspaces_name": {
            "defaultValue": "workspace-name",
            "type": "string"
        },
        "workspace_location": {
          "defaultValue": "region-name",
          "type": "string"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.OperationalInsights/workspaces",
            "apiVersion": "2020-08-01",
            "name": "[parameters('workspaces_name')]",
            "location": "[parameters('workspace_location')]",
            "properties": {
                 "sku": {
                    "name": "PerGB2018"
                },
                "retentionInDays": 30,
                "features": {
                    "disableLocalAuth": false,
                    "enableLogAccessUsingOnlyResourcePermissions": true
                }
            }
        }
    ]
}

Azure CLI

DisableLocalAuth プロパティは、Log Analytics ワークスペースでローカル認証を無効にするために使います。 このプロパティを true に設定すると、すべてのアクセスで Azure AD 認証を使用することが必須になります。

次の Azure CLI コマンドを使ってローカル認証を無効にします。

    az resource update --ids "/subscriptions/[Your subscription ID]/resourcegroups/[Your resource group]/providers/microsoft.operationalinsights/workspaces/[Your workspace name]--api-version "2021-06-01" --set properties.features.disableLocalAuth=True

PowerShell

DisableLocalAuth プロパティは、Log Analytics ワークスペースでローカル認証を無効にするために使います。 このプロパティを true に設定すると、すべてのアクセスで Azure AD 認証を使用することが必須になります。

次の PowerShell コマンドを使ってローカル認証を無効にします。

    $workspaceSubscriptionId = "[You subscription ID]"
    $workspaceResourceGroup = "[You resource group]"
    $workspaceName = "[Your workspace name]"
    $disableLocalAuth = $false
    
    # login
    Connect-AzAccount
    
    # select subscription
    Select-AzSubscription -SubscriptionId $workspaceSubscriptionId
    
    # get private link workspace resource
    $workspace = Get-AzResource -ResourceType Microsoft.OperationalInsights/workspaces -ResourceGroupName $workspaceResourceGroup -ResourceName $workspaceName -ApiVersion "2021-06-01"
    
    # set DisableLocalAuth
    $workspace.Properties.Features | Add-Member -MemberType NoteProperty -Name DisableLocalAuth -Value $disableLocalAuth -Force
    $workspace | Set-AzResource -Force

次のステップ

Application Insights の Azure AD 認証 (プレビュー)」を参照してください。