Crie padrões e recomendações personalizados no Microsoft Defender para a Cloud

Recomendações de segurança no Microsoft Defender para a Cloud ajudam-no a melhorar e reforçar a sua postura de segurança. As recomendações baseiam-se em avaliações em relação a normas de segurança definidas para subscrições Azure, contas Amazon Web Services (AWS) e projetos Google Cloud Platform (GCP) que tenham Defender para a Cloud ativados.

Este artigo descreve como:

  • Crie recomendações personalizadas para todas as clouds (Azure, AWS e GCP) com uma consulta Kusto Query Language (KQL).
  • Atribua recomendações personalizadas a um padrão de segurança personalizado.

Antes de começar

Recomendamos ver este episódio de Defender para a Cloud no campo para saber mais sobre recomendações personalizadas e como escrever consultas KQL.

Criar uma recomendação personalizada

Crie recomendações personalizadas, incluindo etapas de correção, gravidade e os padrões aos quais a recomendação deve ser atribuída. Você adiciona lógica de recomendação com o KQL. Pode usar um editor de consultas simples com modelos de consulta incorporados que pode ajustar conforme necessário, ou pode escrever a sua query KQL do zero.

Para criar uma recomendação personalizada:

  1. Inicie sessão no portal do Azure.

  2. Aceda a Microsoft Defender para a Cloud>Definições do ambiente> da subscrição relevante.

  3. Selecione políticas>de segurança+ Criar recomendação personalizada.

    Captura de ecrã da página de políticas de segurança do Microsoft Defender para a Cloud com a ação Criar recomendação personalizada destacada.

  4. Introduza os detalhes: Obrigatório: Nome, Âmbito, Gravidade e questão de segurança. Opcional: Descrição, Remediação.

  5. Selecione Seguinte.

  6. Introduza uma consulta KQL ou selecione Editor de consultas abertas.

    Captura de ecrã do fluxo de recomendações personalizado com a ação Open query editor usada para lançar o editor KQL.

  7. Selecione Seguinte.

  8. Selecione os critérios relevantes para a recomendação.

    Captura de ecrã do painel de detalhes da recomendação no Microsoft Defender para a Cloud, mostrando campos para nome, gravidade e padrões atribuídos.

  9. Selecione Seguinte.

  10. Selecione os padrões personalizados a atribuir.

  11. Selecione Rever e criar.

  12. Veja os detalhes das recomendações.

  13. Selecione Criar.

    Captura de ecrã de Microsoft Defender para a Cloud Revisão e criação de página com o resumo das recomendações antes da submissão.

Usar o editor de consultas

Recomendamos usar o editor de consultas para criar uma consulta de recomendação. Também pode usar os modelos de consulta e exemplos fornecidos para visualizar exemplos de consultas e aprender a construir as suas próprias.

  • Usar o editor ajuda você a criar e testar sua consulta antes de começar a usá-la.
  • Selecione Como obter ajuda para estruturar a consulta, além de instruções e links adicionais.
  • O editor contém exemplos de consultas de recomendação incorporados que pode usar para ajudar a construir a sua própria consulta. Os dados aparecem na mesma estrutura que na API.
  1. Selecionar Nova consulta.

    Captura de ecrã do editor de consultas com Nova consulta selecionada para começar a escrever uma consulta de recomendação.

  2. Use o modelo de consulta de exemplo com as suas instruções, ou selecione um exemplo de consulta de recomendação incorporada na parte inferior da página, para começar.

  3. Selecione Executar consulta para testar a consulta que você criou.

  4. Quando a consulta estiver pronta, corte-a e cole do editor para o painel de consultas de Recomendações .

  5. Continue com o passo 7 da secção Criar uma recomendação personalizada.

Modelos de consulta e exemplos

O editor de consultas inclui exemplos incorporados, e os modelos nesta secção mostram como estruturar verificações de segurança comuns. Cada modelo devolve os recursos abrangidos e assinala os recursos não conformes como UNHEALTHY. Neste padrão, edite apenas a condition expressão e mantenha a HealthStatus linha inalterada.

Note

Os templates nesta secção utilizam tipos de recursos do Azure. Para recursos AWS e GCP, altere Environment == 'Azure' para Environment == 'AWS' ou Environment == 'GCP' e atualize Identifiers.Type para corresponder ao tipo de recurso no seu ambiente.

Identificar máquinas virtuais que não têm etiquetas obrigatórias de governação, como informações de centros de custos ou do proprietário.

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

Colunas de saída:Id, Name, Environment, Identifiers, AdditionalDataRecordHealthStatus

Lógica de avaliação: As máquinas sem as etiquetas obrigatórias têm HealthStatus definido como UNHEALTHY e aparecem como deteções não conformes. Máquinas com ambas as etiquetas definidas têm HealthStatus definido para HEALTHY.

Requisitos do esquema de saída KQL

Antes de escrever a sua consulta, compreenda o esquema de saída necessário. É assim que o Microsoft Defender para a Cloud interpreta os seus resultados e mapeia as descobertas para os recursos.

Colunas de saída obrigatórias:

Coluna Tipo Purpose
Id String (obrigatório) Identificador de recurso usado pelo Defender para a Cloud para referenciar o recurso.
Name String (obrigatório) Nome de recurso legível por humanos apresentado nas conclusões.
Environment String (obrigatório) Ambiente cloud: Azure, AWS ou GCP.
Identifiers Dinâmica (obrigatória) O tipo de recurso e os identificadores são transmitidos a partir do registo de origem.
AdditionalData Dinâmica (obrigatória) Metadados suplementares do recurso transferidos do registo de origem.
Record Dinâmica (obrigatória) Registo completo de recursos contendo todas as propriedades.
HealthStatus String (obrigatório) Resultado da avaliação: UNHEALTHY (não conforme) ou HEALTHY (conforme).

Termine sempre a sua consulta com: | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus

Mapeamento de avaliação:

Cada consulta deve definir um HealthStatus valor para cada recurso. Use a iff() função para avaliar a sua condição e atribuir o estado:

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

Neste padrão, edita apenas a condition expressão. Mantenha a HealthStatus linha inalterada:

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

Recursos onde HealthStatus está UNHEALTHY aparecem como conclusões não conformes em Defender para a Cloud. Os recursos em que HealthStatus está HEALTHY são conformes e não aparecem nas conclusões.

Importante

Defina sempre HealthStatus como 'UNHEALTHY' ou 'HEALTHY'. Devolver todos os recursos abrangidos. Defender para a Cloud utiliza a coluna HealthStatus para determinar a conformidade. Omitir recursos do conjunto de resultados é tratado como ausência de dados, não como saudável.

Erros e correções comuns:

  • Colunas obrigatórias em falta: Se alguma das sete colunas obrigatórias estiver em falta, a consulta falha. Termina sempre por | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus.
  • Valores errados HealthStatus : Apenas 'UNHEALTHY' e 'HEALTHY' são valores válidos (distinção de maiúsculas e minúsculas). Outros valores ou nulo causam erros de análise sintática.
  • Caminhos de propriedade incorretos: As propriedades são acedidas via Record.properties.*, não diretamente. Por exemplo, use Record.properties.httpsOnly, não properties.httpsOnly.
  • Sensibilidade a maiúsculas/minúsculas do tipo de recurso: Utilize =~ (correspondência sem distinção entre maiúsculas e minúsculas) nas comparações de Identifiers.Type. Por exemplo, Identifiers.Type =~ 'Microsoft.Storage/storageAccounts'.
  • Propriedades nulas entre subscrições: Teste a sua consulta entre subscrições com configurações variadas. Use verificações isnull() quando as propriedades possam não existir.

Use recomendações personalizadas em escala

Criar recomendações personalizadas no portal do Azure é o melhor para a maioria dos utilizadores. A interface oferece um editor KQL conveniente e ferramentas de validação integradas. Uma abordagem programática também pode ser útil quando é necessário implementar recomendações em vários ambientes ou subscrições.

Automatize através da API

Se pré-validou as consultas KQL e quiser automatizar a criação de recomendações personalizadas, pode usar a API Microsoft Defender para a Cloud. Esse método permite implantar recomendações rapidamente, garantindo que elas sejam consistentes e escaláveis em seus ambientes de nuvem.

  • Vantagens: Você pode automatizar e dimensionar a implantação de recomendações personalizadas.
  • Quando usar: esse método é ideal para implementações em grande escala nas quais você precisa aplicar recomendações de forma consistente em vários ambientes.

Para mais informações sobre a utilização da API para gerir recomendações personalizadas, consulte a referência Defender para a Cloud Composite API.

Criar um padrão personalizado

As recomendações personalizadas podem ser atribuídas a um ou mais padrões personalizados.

Para criar um padrão personalizado:

  1. Inicie sessão no portal do Azure.

  2. Aceda a Microsoft Defender para a Cloud>Definições do ambiente> da subscrição relevante.

  3. Selecione Políticas de segurança>+ Criar>Padrão.

  4. Selecione as recomendações que pretende adicionar ao padrão personalizado.

  5. (Opcional) Para subscrições do Azure, consulte a coluna Source.

    Página de criação de normas personalizadas em Microsoft Defender para a Cloud, mostrando a lista de recomendações disponíveis para seleção.

  6. Selecione Criar.

Criar e melhorar recomendações personalizadas com a Política do Azure (legado)

Para assinaturas do Azure, você pode criar recomendações e padrões personalizados e aprimorá-los usando a Política do Azure. Esse é um recurso herdado e recomendamos o uso do novo recurso de recomendações personalizadas.

Crie uma recomendação personalizada e um padrão (legado)

Pode criar recomendações e padrões personalizados no Defender para a Cloud, criando definições e iniciativas de políticas no Azure Policy, e integrando-as no Defender para a Cloud.

Para criar uma recomendação ou padrão personalizado com o Azure Policy (legacy):

  1. Crie uma ou mais definições de política no portal de Política do Azure ou programaticamente.
  2. Crie uma iniciativa de política que contenha as definições de política personalizadas.

Adicione a iniciativa como um padrão personalizado (legado)

As atribuições de política são usadas pela Política do Azure para atribuir recursos do Azure a uma política ou iniciativa.

Para integrar uma iniciativa num padrão de segurança personalizado em Defender para a Cloud, é necessário incluir "ASC":"true" no corpo do pedido, como aqui mostrado. O ASC campo integra a iniciativa ao Microsoft Defender para a Cloud.

Para integrar uma iniciativa personalizada:

Exemplo para integrar uma iniciativa personalizada

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

Corpo do pedido (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"
            }
          }
        }
      ]
    }
  }

Exemplo para remover uma atribuição

Este exemplo mostra como remover uma atribuição:

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

Melhorar as recomendações personalizadas (legado)

As recomendações internas fornecidas com o Microsoft Defender para a Cloud incluem detalhes como níveis de gravidade e instruções de correção. Se você quiser adicionar esse tipo de informação a recomendações personalizadas para o Azure, use a API REST.

Os dois tipos de informação que pode adicionar são:

  • RemediationDescription – String
  • Gravidade – Enum [Baixa, Média, Alta]

Os metadados devem ser adicionados à definição de política para uma política que faz parte da iniciativa personalizada. Deve estar na propriedade 'securityCenter', conforme mostrado:

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

Aqui está outro exemplo de uma política personalizada, incluindo a propriedade 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')]"
      }
    }
  }
}
}
}

Para outro exemplo de propriedade do securityCenter, veja exemplos da API REST para metadados de avaliações.

Passos seguintes

Você pode usar os links a seguir para saber mais sobre as consultas Kusto: