Создание пользовательских стандартов и рекомендаций в Microsoft Defender для облака

рекомендации Security в Microsoft Defender для облака помогут вам улучшить и ужесточить состояние безопасности. Рекомендации основаны на оценках на соответствие стандартам безопасности, определённым для подписок Azure, учётных записей Amazon Web Services (AWS) и проектов Google Cloud Platform (GCP), в которых включён Defender для облака.

В этой статье описывается, как выполнить следующее:

  • Создайте пользовательские рекомендации для всех облаков (Azure, AWS и GCP) с помощью запроса языка запросов Kusto (KQL).
  • Назначьте пользовательские рекомендации пользовательскому стандарту безопасности.

Перед началом работы

  • Для создания нового стандарта безопасности требуется разрешение владельца подписки.
  • Вам нужны разрешения администратора безопасности для создания пользовательских рекомендаций.
  • Чтобы создать пользовательские рекомендации на основе языка запросов Kusto (KQL), необходимо включить план Defender Cloud Security Posture Management (CSPM. Все клиенты могут создавать пользовательские рекомендации на основе Политика Azure.
  • Просмотрите поддержку в облаках Azure для пользовательских рекомендаций.

Мы рекомендуем посмотреть этот выпуск Defender для облака in the field, чтобы узнать больше о пользовательских рекомендациях и узнать, как писать запросы KQL.

Создание пользовательской рекомендации

Создайте настраиваемые рекомендации, включая шаги по устранению, уровень серьезности и стандарты, к которым следует отнести рекомендацию. Вы добавляете логику рекомендаций с помощью KQL. Вы можете использовать простой редактор запросов со встроенными шаблонами запросов, которые можно настроить по мере необходимости или записать запрос KQL с нуля.

Чтобы создать пользовательскую рекомендацию, выполните следующее:

  1. Войдите на портал Azure.

  2. Перейдите в Microsoft Defender для облака>Параметры среды> для соответствующей подписки.

  3. Выберите Политики безопасности>+ Создать пользовательскую рекомендацию.

    Снимок экрана страницы политик безопасности Microsoft Defender для облака с выделенным действием «Создать настраиваемую рекомендацию».

  4. Введите данные: обязательные поля: имя, область действия, степень серьёзности и проблема безопасности. Необязательно. Описание, исправление.

  5. Нажмите кнопку Далее.

  6. Введите запрос KQL или выберите редактор запросов Open.

    Снимок экрана: пользовательский поток рекомендаций с действием редактора запросов Open, используемым для запуска редактора KQL.

  7. Нажмите кнопку Далее.

  8. Выберите соответствующие стандарты для рекомендации.

    Снимок экрана панели сведений о рекомендации Microsoft Defender для облака, на котором отображаются поля имени, уровня серьезности и назначенных стандартов.

  9. Нажмите кнопку Далее.

  10. Выберите настраиваемые стандарты для назначения.

  11. Выберите "Рецензирование" и "Создать".

  12. Просмотрите сведения о рекомендации.

  13. Нажмите кнопку "Создать".

    Снимок экрана страницы «Проверка и создание» в Microsoft Defender для облака, показывающий сводку рекомендаций перед отправкой.

Использование редактора запросов

Мы рекомендуем использовать редактор запросов для создания запроса рекомендаций. Вы также можете использовать предоставленные шаблоны запросов и примеры , чтобы просмотреть примеры запросов и узнать, как создавать собственные.

  • Использование редактора помогает создавать и тестировать запрос перед началом работы с ним.
  • Выберите How to, чтобы получить справку о том, как структурировать запрос, а также дополнительные инструкции и ссылки.
  • Редактор содержит встроенные примеры запросов рекомендаций, которые можно использовать для создания собственного запроса. Данные отображаются в той же структуре, что и в API.
  1. Выберите новый запрос.

    Снимок экрана редактора запросов с выбранным новым запросом для начала написания запроса рекомендаций.

  2. Используйте пример шаблона запроса со своими инструкциями или выберите пример встроенного запроса рекомендаций из нижней части страницы, чтобы приступить к работе.

  3. Выберите "Выполнить запрос", чтобы проверить созданный запрос .

  4. Когда запрос будет готов, вырезать и вставить его из редактора в область запросов рекомендаций .

  5. Перейдите к шагу 7 из раздела "Создание пользовательской рекомендации".

Шаблоны запросов и примеры

Редактор запросов включает встроенные примеры, а шаблоны в этом разделе показывают, как структурировать распространенные проверки безопасности. Каждый шаблон возвращает ресурсы в пределах области действия и помечает несоответствующие ресурсы как UNHEALTHY. В этом шаблоне измените только выражение condition и оставьте строку HealthStatus без изменений.

Note

Шаблоны в этом разделе используют типы ресурсов Azure. Для ресурсов AWS и GCP измените Environment == 'Azure' на Environment == 'AWS' или Environment == 'GCP' и обновите Identifiers.Type, чтобы он соответствовал типу ресурса в вашей среде.

Определите виртуальные машины, у которых отсутствуют обязательные управляющие теги, такие как центр затрат или сведения о владельце.

RawEntityMetadata
| where Environment == 'Azure' and Identifiers.Type =~ 'Microsoft.Compute/virtualMachines'
| extend condition = (isnull(Record.tags["CostCenter"]) or isnull(Record.tags["Owner"]))
| extend HealthStatus = iff(condition, 'UNHEALTHY', 'HEALTHY')
| project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus

Выходные столбцы:Id, , NameEnvironmentIdentifiersAdditionalDataRecord,HealthStatus

Логика оценки: Машины, у которых отсутствуют обязательные теги, имеют для HealthStatus значение UNHEALTHY и отображаются как несоответствующие результаты. Устройства, у которых заданы оба тега, имеют параметр HealthStatus, установленный в значение HEALTHY.

Требования к выходной схеме KQL

Прежде чем писать запрос, изучите необходимую схему выходных данных. Это то, как Microsoft Defender для облака интерпретирует результаты и сопоставляет результаты с ресурсами.

Обязательные выходные столбцы:

Column Type Purpose
Id Строка (обязательно) Идентификатор ресурса, используемый Defender для облака для ссылки на ресурс.
Name Строка (обязательно) Имя ресурса, доступное для чтения человеком, отображаемое в результатах.
Environment Строка (обязательно) Облачная среда: Azure, AWS или GCP.
Identifiers Динамический (обязательный) Тип и идентификаторы ресурсов, передаваемые из исходной записи.
AdditionalData Динамический (обязательный) Дополнительные метаданные ресурсов, передаваемые из исходной записи.
Record Динамический (обязательный) Полная запись ресурса, содержащая все свойства.
HealthStatus Строка (обязательно) Результат оценки: UNHEALTHY (несоответствующий) или HEALTHY (совместимый).

Всегда заканчивайте запрос следующими параметрами: | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus

Сопоставление оценок:

Каждый запрос должен задать HealthStatus значение для каждого ресурса. iff() Используйте функцию для оценки условия и назначения состояния:

| extend condition = (your condition here)
| extend HealthStatus = iff(condition, 'UNHEALTHY', 'HEALTHY')

В этом шаблоне измените только выражение condition. Не изменяйте HealthStatus строку:

| extend HealthStatus = iff(condition, 'UNHEALTHY', 'HEALTHY')

Ресурсы, в которых HealthStatus имеет значение UNHEALTHY, отображаются в Defender для облака как выводы о несоответствии. Ресурсы, для которых HealthStatus имеет значение HEALTHY, соответствуют требованиям и не отображаются в результатах проверки.

Это важно

Всегда устанавливайте HealthStatus в значение 'UNHEALTHY' или 'HEALTHY'. Вернуть все ресурсы в заданной области видимости. Defender для облака использует столбец HealthStatus для определения соответствия требованиям. Исключение ресурсов из набора результатов рассматривается как отсутствие данных, а не как признак работоспособности.

Распространенные ошибки и исправления:

  • Отсутствующие обязательные столбцы: Если отсутствует любой из семи обязательных столбцов, запрос завершается ошибкой. Всегда заканчивайте с | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus.
  • Неправильные HealthStatus значения: Только 'UNHEALTHY' и 'HEALTHY' являются допустимыми значениями (с учетом регистра). Другие значения или null вызывают ошибки синтаксического анализа.
  • Неверные пути к свойствам: Доступ к свойствам осуществляется через Record.properties.*, а не напрямую. Например, используйте Record.properties.httpsOnly, а не properties.httpsOnly.
  • Чувствительность к регистру типа ресурса: Используйте =~ (сравнение без учета регистра) для сравнения Identifiers.Type. Например: Identifiers.Type =~ 'Microsoft.Storage/storageAccounts'.
  • Свойства со значением NULL в разных подписках: Протестируйте запрос в разных подписках с различными конфигурациями. Используйте проверки isnull() там, где свойства могут отсутствовать.

Используйте персонализированные рекомендации в больших масштабах

Создание пользовательских рекомендаций на портале Azure лучше всего подходит для большинства пользователей. Интерфейс предоставляет удобный редактор KQL и встроенные средства проверки. Программный подход также может оказаться полезным, если необходимо развернуть рекомендации во многих средах или подписках.

Автоматизация с помощью API

Если вы предварительно проверили запросы KQL и хотите автоматизировать создание пользовательских рекомендаций, вы можете использовать API Microsoft Defender для облака. Этот метод позволяет быстро развертывать рекомендации, обеспечивая согласованность и масштабируемость в облачных средах.

  • Преимущества. Вы можете автоматизировать и масштабировать развертывание пользовательских рекомендаций.
  • При использовании: этот метод идеально подходит для крупномасштабных реализаций, где необходимо последовательно применять рекомендации в нескольких средах.

Дополнительные сведения об использовании API для управления пользовательскими рекомендациями см. в справочнике по составным API Defender для облака.

Создайте собственный стандарт

Пользовательские рекомендации можно назначить одному или нескольким пользовательским стандартам.

Чтобы создать пользовательский стандарт, выполните приведенные действия.

  1. Войдите на портал Azure.

  2. Перейдите в Microsoft Defender для облака>Параметры среды> для соответствующей подписки.

  3. Выберите Политики безопасности>+ Создать>Стандарт.

  4. Выберите рекомендации, которые необходимо добавить в пользовательский стандарт.

  5. (Необязательно) Для Azure подписок просмотрите столбец Source.

    Страница создания пользовательского стандарта в Microsoft Defender для облака, отображающая список доступных рекомендаций для выбора.

  6. Нажмите кнопку "Создать".

Создание и улучшение настраиваемых рекомендаций в Политика Azure (устаревшая версия)

Для подписок Azure можно создавать пользовательские рекомендации и стандарты, а также улучшать их с помощью Политика Azure. Это устаревшая функция, и мы рекомендуем использовать новую пользовательскую функцию рекомендаций.

Создание пользовательской рекомендации и стандарта (устаревшая версия)

Пользовательские рекомендации и стандарты можно создавать в Defender для облака путем создания определений и инициатив политики в Политика Azure и их адаптации в Defender для облака.

Чтобы создать пользовательскую рекомендацию или стандарт с Политика Azure (устаревшая версия):

  1. Создайте одно или несколько определений политик на портале Политика Azure или программным способом.
  2. Создайте инициативу политики, содержащую определения настраиваемых политик.

Добавьте инициативу как пользовательский стандарт (устаревший)

Назначения политик используются в Политике Azure для привязки ресурсов Azure к политике или инициативе.

Чтобы подключить инициативу к пользовательскому стандарту безопасности в Defender для облака, необходимо включить "ASC":"true" в текст запроса, как показано здесь. Поле ASC подключает инициативу к Microsoft Defender для облака.

Чтобы подключить настраиваемую инициативу, выполните приведенные действия.

Пример подключения настраиваемой инициативы

PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}?api-version=2021-06-01

Текст запроса (JSON):

{
    "properties": {
      "displayName": "Cost Management",
      "description": "Policies to enforce low cost storage SKUs",
      "metadata": {
        "category": "Cost Management",
        "ASC":"true"
      },
      "parameters": {
        "namePrefix": {
          "type": "String",
          "defaultValue": "myPrefix",
          "metadata": {
            "displayName": "Prefix to enforce on resource names"
          }
        }
      },
      "policyDefinitions": [
        {
          "policyDefinitionId": "/subscriptions/<Subscription ID>/providers/Microsoft.Authorization/policyDefinitions/7433c107-6db4-4ad1-b57a-a76dce0154a1",
          "policyDefinitionReferenceId": "Limit_Skus",
          "parameters": {
            "listOfAllowedSKUs": {
              "value": [
                "Standard_GRS",
                "Standard_LRS"
              ]
            }
          }
        },
        {
          "policyDefinitionId": "/subscriptions/<Subscription ID>/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming",
          "policyDefinitionReferenceId": "Resource_Naming",
          "parameters": {
            "prefix": {
              "value": "[parameters('namePrefix')]"
            },
            "suffix": {
              "value": "-LC"
            }
          }
        }
      ]
    }
  }

Пример удаления назначения

В этом примере показано, как удалять назначения:

DELETE https://management.azure.com/{subscription}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2018-05-01

Улучшение пользовательских рекомендаций (устаревшая версия)

Встроенные рекомендации, предоставляемые Microsoft Defender для облака, включают в себя такие сведения, как уровни серьезности и инструкции по исправлению. Если вы хотите добавить эту информацию в пользовательские рекомендации для Azure, используйте REST API.

Можно добавить два типа сведений.

  • RemediationDescription (описание исправления) — строка
  • Severity (степень серьёзности) — перечисление [Низкий, Средний, Высокий]

Метаданные следует добавить в определение политики для политики, входящей в состав пользовательской инициативы. Он должен находиться в свойстве securityCenter, как показано ниже.

{
  "metadata": {
    "securityCenter": {
      "RemediationDescription": "Custom description goes here",
      "Severity": "High"
    }
  }
}

Ниже приведен еще один пример настраиваемой политики, включая свойство metadata/securityCenter:

{
"properties": {
"displayName": "Security - ERvNet - AuditRGLock",
"policyType": "Custom",
"mode": "All",
"description": "Audit required resource groups lock",
"metadata": {
  "securityCenter": {
    "RemediationDescription": "Resource Group locks can be set via Azure Portal -> Resource Group -> Locks",
    "Severity": "High"
 }
},
"parameters": {
  "expressRouteLockLevel": {
    "type": "String",
    "metadata": {
      "displayName": "Lock level",
      "description": "Required lock level for ExpressRoute resource groups."
    },
    "allowedValues": [
      "CanNotDelete",
      "ReadOnly"
    ]
  }
},
"policyRule": {
  "if": {
    "field": "type",
    "equals": "Microsoft.Resources/subscriptions/resourceGroups"
  },
  "then": {
    "effect": "auditIfNotExists",
    "details": {
      "type": "Microsoft.Authorization/locks",
      "existenceCondition": {
        "field": "Microsoft.Authorization/locks/level",
        "equals": "[parameters('expressRouteLockLevel')]"
      }
    }
  }
}
}
}

Дополнительные примеры свойств securityCenter см. в примерах REST API для метаданных оценок.

Дальнейшие действия

Для получения дополнительных сведений о запросах Kusto можно использовать следующие ссылки: