Рубрики
Uncategorized

Настройка Azure диагностические настройки с помощью полисов Azure

Настройка диагностических настроек Azure с помощью политик Azure Talics Content 1 Obj … Помечено с Azure, DevOps, Arm, политикой.

Оглавление

1 Объективные 2 Настройки диагностики В Azure Portal 3 Политика 3.1 Политика Правило 3.2 Набор политик Определения 4 Разрешения 5 Развертывание 6 Политика в Azure Portal

1 цель

Ресурсы Azure должны были быть настроены с помощью диагностических настроек. Чтобы применить эти настройки общий подход с Политика Azure имел самые преимущества:

  • Управление с шаблонами руки
  • Проверьте соблюдение
  • Интеграция CI/CD

Азудные диагностические настройки Может быть настроен несколькими способами:

2 Настройки диагностики в Azure Portal

Скриншоты ниже отображают диагностические настройки (журналы и метрики) для учетной записи COSMOS DB.

3 Политика

А политика Содержит разные элементы.

3.1 Правила политики

Каждый тип ресурса нуждается в Правило политики Отказ

Я мое дело, я настроил политику для следующих типов ресурсов:

  • Microsoft. Keywault/хранилища
  • Microsoft. EventGrid/Timics.
  • Microsoft. Eventgrid/eventsubscriptions.
  • Microsoft. Веб/сайты
  • Microsoft. ServiceBus/пространства имен
  • Microsoft. Сеть/NetworksecurityGroups.
  • Microsoft. Network/ApplicationGateways.

3.1.1 Пример Тип правила политики

Извлечь из полицию:

          "policyRule": {
  "if": {
    "field": "type",
    "equals": "Microsoft.DocumentDB/databaseAccounts"
  },
  "then": {
    "effect": "[[parameters('effect')]",
    "details": {
      "type": "Microsoft.Insights/diagnosticSettings",
      "name": "[[parameters('profileName')]",
      "existenceCondition": {
        "allOf": [
          {
            "field": "Microsoft.Insights/diagnosticSettings/logs.enabled",
            "equals": "[[parameters('logsEnabled')]"
          },
          {
            "field": "Microsoft.Insights/diagnosticSettings/metrics.enabled",
            "equals": "[[parameters('metricsEnabled')]"
          },
          {
            "field": "Microsoft.Insights/diagnosticSettings/storageAccountId",
            "equals": "[[parameters('storageExists')]"
          }
        ]
      },
      "roleDefinitionIds": [
        "/providers/microsoft.authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa",
        "/providers/microsoft.authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293"
      ]
    }
  }
}

3.1.1.1 Существующее

На основании значений параметров будут проверяются диагностические настройки для ведения журнала, метрики и регистрации хранения.

3.1.1.2 RoledefinitioniDs.

Azure встроенные роли обязаны устанавливать правильные разрешения:

3.1.2

Свойство развертывания содержит журналы и метрики.

Извлечь из полицию:

{
  "policyRule": {
    "if": {
    },
    "then": {
      "deployment": {
        "properties": {
          "mode": "incremental",
          "template": {
            "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "parameters": {
              "resourceName": {
                "type": "string"
              },
              "location": {
                "type": "string"
              },
              "logAnalytics": {
                "type": "string"
              },
              "archiveStorage": {
                "type": "string"
              },
              "metricsEnabled": {
                "type": "string"
              },
              "logsEnabled": {
                "type": "string"
              },
              "storageExists": {
                "type": "string"
              },
              "profileName": {
                "type": "string"
              }
            },
            "variables": {},
            "resources": [
              {
                "type": "Microsoft.DocumentDB/databaseAccounts/providers/diagnosticSettings",
                "apiVersion": "2017-05-01-preview",
                "name": "[[concat(parameters('resourceName'), '/', 'Microsoft.Insights/', parameters('profileName'))]",
                "location": "[[parameters('location')]",
                "dependsOn": [],
                "properties": {
                  "workspaceId": "[[parameters('logAnalytics')]",
                  "storageAccountId": "[[parameters('archiveStorage')]",
                  "metrics": [
                    {
                      "category": "Requests",
                      "enabled": true,
                      "retentionPolicy": {
                        "days": 0,
                        "enabled": false
                      },
                      "timeGrain": null
                    }
                  ],
                  "logs": [
                    {
                      "category": "DataPlaneRequests",
                      "enabled": true
                    },
                    {
                      "category": "QueryRuntimeStatistics",
                      "enabled": true
                    },
                    {
                      "category": "PartitionKeyStatistics",
                      "enabled": true
                    },
                    {
                      "category": "PartitionKeyRUConsumption",
                      "enabled": true
                    },
                    {
                      "category": "ControlPlaneRequests",
                      "enabled": true
                    },
                    {
                      "category": "GremlinRequests",
                      "enabled": true
                    }
                  ]
                }
              }
            ],
            "outputs": {}
          },
          "parameters": {
            "location": {
              "value": "[[field('location')]"
            },
            "resourceName": {
              "value": "[[field('name')]"
            },
            "logAnalytics": {
              "value": "[[parameters('logAnalytics')]"
            },
            "archiveStorage": {
              "value": "[[parameters('archiveStorage')]"
            },
            "metricsEnabled": {
              "value": "[[parameters('metricsEnabled')]"
            },
            "logsEnabled": {
              "value": "[[parameters('logsEnabled')]"
            },
            "storageExists": {
              "value": "[[parameters('storageExists')]"
            },
            "profileName": {
              "value": "[[parameters('profileName')]"
            }
          }
        }
      }
    }
  }
}

3.2 определения политики

Инициатива политики Azure это набор политик.

Экстракт с определением поля политики:

{
  "type": "Microsoft.Authorization/policySetDefinitions",
  "name": "[variables('diagnosticSettingsInitiativeName')]",
  "apiVersion": "2019-09-01",
  "dependsOn": [
  ],
  "properties": {
    "displayName": "MarkusMeyer - Apply diagnostic settings for applicable resources - Log Analytics",
    "description": "This initiative configures application Azure resources to forward diagnostic logs and metrics to an Azure Log Analytics workspace.",
    "metadata": {
      "category": "Monitoring"
    },
    "parameters": {
      "logAnalytics": {
        "type": "string",
        "metadata": {
          "displayName": "Log Analytics workspace",
          "description": "Select the Log Analytics workspace from dropdown list",
          "strongType": "omsWorkspace"
        }
      }
    },
    "policyDefinitions": [
      {
        "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('kvLogPolicyName'))]",
        "parameters": {
          "logAnalytics": {
            "value": "[[parameters('logAnalytics')]"
          }
        }
      },
      {
        "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('sbLogPolicyName'))]",
        "parameters": {
          "logAnalytics": {
            "value": "[[parameters('logAnalytics')]"
          }
        }
      },
      {
        "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('cosmosLogPolicyName'))]",
        "parameters": {
          "logAnalytics": {
            "value": "[[parameters('logAnalytics')]"
          }
        }
      },
      {
        "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('funcLogPolicyName'))]",
        "parameters": {
          "logAnalytics": {
            "value": "[[parameters('logAnalytics')]"
          }
        }
      },
      {
        "policyDefinitionId": "[resourceId('Microsoft.Authorization/policyDefinitions/', variables('evgTopicLogPolicyName'))]",
        "parameters": {
          "logAnalytics": {
            "value": "[[parameters('logAnalytics')]"
          }
        }
      }
    ]
  }
}

Полный шаблон можно найти в моем Репозиторий GitHub Отказ

4 Разрешения

Следуя Разрешения требуются для развертывания политик:

Действия Описание
*/читать Прочитайте ресурсы всех типов, кроме секретов.
Microsoft. Авторизация / Пользование / * Создать и управлять заданиями политики
Microsoft. Авторизация / ПолитикаПоследие / * Создание и управление определениями политики
Microsoft. Авторизация / Политика Отпустя / *
Microsoft. Авторизация / PoliciSetEfinitions / * Создание и управление наборами политики
Microsoft. PolicyInsights / *
Microsoft. Служба поддержки/* Создание и обновление билета поддержки

5 развертывание

Политика THS будет развернут на уровне подписки

Политики также могут быть развернуты:

5.1 Azure CLI.

az deployment sub create  --location westeurope --template-file .\Policy.json --parameters "@Policy.parameters.json"

5.2 PowerShell.

New-AzDeployment -Name "diagPolicies" -location "West Europe" -TemplateFile .\Policy.json  -verbose -TemplateParameterFile .\Policy.parameters.json

6 Политика в Azure Portal

Развернутая политика будет отображаться в Azure Portal Отказ

Оригинал: «https://dev.to/markusmeyer13/configure-azure-diagnostic-settings-with-azure-policies-3j7k»