Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Recomendaciones de seguridad en Microsoft Defender para la nube le ayudarán a mejorar y reforzar la posición de seguridad. Las recomendaciones se basan en evaluaciones con respecto a los estándares de seguridad definidos para suscripciones de Azure, cuentas de Amazon Web Services (AWS) y proyectos de Google Cloud Platform (GCP) que tienen habilitado Defender for Cloud.
En este artículo se describe cómo:
- Cree recomendaciones personalizadas para todas las nubes (Azure, AWS y GCP) con una consulta del lenguaje de consulta Kusto (KQL).
- Asigne recomendaciones personalizadas a un estándar de seguridad personalizado.
Prerequisites
Antes de crear recomendaciones o estándares personalizados, asegúrate de cumplir con los siguientes requisitos:
- Para crear un estándar de seguridad necesita permisos de propietario en la suscripción.
- Para crear recomendaciones personalizadas necesitas permisos de administrador de seguridad.
- Para crear recomendaciones personalizadas basadas en el lenguaje de consulta kusto (KQL), debe tener habilitado el plan de administración de posturas de seguridad en la nube (CSPM) Defender. Todos los clientes pueden crear recomendaciones personalizadas basadas en Azure Policy.
- Para obtener recomendaciones personalizadas, consulte la compatibilidad con las nubes de Azure.
Se recomienda ver este episodio de Defender for Cloud en el campo para obtener más información sobre las recomendaciones personalizadas y cómo escribir consultas KQL.
Crear una recomendación personalizada
Cree recomendaciones personalizadas, entre las que se incluyen los pasos necesarios para la corrección, la gravedad y los estándares a los que se debe asignar la recomendación. Agregue lógica de recomendación con KQL. Puede usar un editor de consultas simple con plantillas de consulta integradas que puede ajustar según sea necesario, o bien puede escribir la consulta KQL desde cero.
Para crear una recomendación personalizada:
Inicie sesión en Azure Portal.
Vaya a Microsoft Defender para la nube>Configuración del entorno> de la suscripción correspondiente.
Seleccione Directivas de seguridad>+ Crear recomendación personalizada.
Escriba los detalles: Obligatorio: Nombre, Ámbito, Gravedad y Problema de seguridad. Opcional: Descripción, Corrección.
Seleccione Siguiente.
Escriba una consulta KQL o seleccione Abrir editor de consultas.
Seleccione Siguiente.
Seleccione los estándares pertinentes para la recomendación.
Seleccione Siguiente.
Seleccione los estándares personalizados que se van a asignar.
Seleccione Revisar y crear.
Revise los detalles de la recomendación.
Selecciona Crear.
Uso del editor de consultas
Para crear una consulta de recomendación, es aconsejable usar el editor de consultas. También puede usar las plantillas de consulta y los ejemplos proporcionados para ver consultas de ejemplo y aprender a crear las suyas propias.
- El uso del editor le ayuda a compilar y probar la consulta antes de empezar a usarla.
- Seleccione Cómo para obtener ayuda sobre cómo estructurar la consulta, así como instrucciones y vínculos adicionales.
- El editor contiene ejemplos de consultas de recomendaciones integradas que puede usar para ayudar a crear su propia consulta. Los datos aparecen con la misma estructura que en la API.
Seleccione Nueva consulta.
Use la plantilla de consulta de ejemplo con sus instrucciones o seleccione una consulta de recomendación integrada de ejemplo en la parte inferior de la página para empezar.
Selecciona Ejecutar consulta para probar la consulta que has creado.
Cuando la consulta esté lista, corte y péguela del editor en el panel Consulta de recomendación .
Seleccione Siguiente, seleccione los estándares relevantes para la recomendación, seleccione los estándares personalizados a asignar y luego seleccione Revisar y crear.
Revisa los detalles de la recomendación y selecciona Crear.
Plantillas y ejemplos de consultas
El editor de consultas incluye ejemplos integrados y las plantillas de esta sección muestran cómo estructurar comprobaciones de seguridad comunes. Cada plantilla devuelve los recursos dentro del ámbito y marca los recursos no conformes como UNHEALTHY. En este patrón de plantilla, edite solo la condition expresión y mantenga la HealthStatus línea sin cambios.
Note
Las plantillas de esta sección usan tipos de recursos de Azure. Para los recursos de AWS y GCP, cambie Environment == 'Azure' a Environment == 'AWS' o Environment == 'GCP' y actualice Identifiers.Type para que coincida con el tipo de recurso en su entorno.
Requisitos del esquema de salida de KQL
Antes de escribir la consulta, comprenda el esquema de salida necesario. Así es como Microsoft Defender para la nube interpreta los resultados y asigna los resultados a los recursos.
Columnas de salida necesarias:
| Column | Type | propósito |
|---|---|---|
Id |
Cadena (obligatorio) | Identificador de recursos usado por Defender for Cloud para hacer referencia al recurso. |
Name |
Cadena (obligatorio) | Nombre del recurso legible para el ser humano que se muestra en resultados. |
Environment |
Cadena (obligatorio) | Entorno en la nube: Azure, AWS o GCP. |
Identifiers |
Dinámico (obligatorio) | Tipo de recurso e identificadores transferidos desde el registro de origen. |
AdditionalData |
Dinámico (obligatorio) | Metadatos complementarios del recurso transferidos desde el registro de origen. |
Record |
Dinámico (obligatorio) | Registro de recursos completo que contiene todas las propiedades. |
HealthStatus |
Cadena (obligatorio) | Resultado de la evaluación: UNHEALTHY (no compatible) o HEALTHY (compatible). |
Finalice siempre la consulta con: | project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus
Asignación de evaluación:
Cada consulta debe establecer un HealthStatus valor para cada recurso. Utiliza el siguiente patrón como lógica central de evaluación de salud en tu consulta de recomendación personalizada, reemplazando la condición provisional por tu propia prueba:
| extend condition = (your condition here)
| extend HealthStatus = iff(condition, 'UNHEALTHY', 'HEALTHY')
En este patrón, edite solo la condition expresión. Mantén la siguiente HealthStatus expresión sin cambios en tu consulta para que Defender for Cloud pueda clasificar los recursos coincidentes como compatibles o no conformes:
| extend HealthStatus = iff(condition, 'UNHEALTHY', 'HEALTHY')
Los recursos en los que HealthStatus es UNHEALTHY aparecen como hallazgos no compatibles en Defender for Cloud. Los recursos donde HealthStatus es HEALTHY son conformes y no aparecen en los resultados.
Importante
Establezca siempre HealthStatus en 'UNHEALTHY' o 'HEALTHY'. Devuelve todos los recursos dentro del ámbito. Defender for Cloud usa la columna HealthStatus para determinar el cumplimiento. La omisión de recursos del conjunto de resultados se considera una ausencia de datos, no un buen estado.
Errores frecuentes y soluciones
-
Faltan columnas necesarias: Si falta alguna de las siete columnas necesarias, se produce un error en la consulta. Siempre termina con
| project Id, Name, Environment, Identifiers, AdditionalData, Record, HealthStatus. -
Valores de
HealthStatusincorrectos: solo'UNHEALTHY'y'HEALTHY'son valores válidos (se distingue entre mayúsculas y minúsculas). Otros valores o null provocan errores de análisis. -
Rutas de acceso de propiedades incorrectas: Se accede a las propiedades a través de
Record.properties.*, no directamente. Por ejemplo, useRecord.properties.httpsOnly, noproperties.httpsOnly. -
Diferenciación entre mayúsculas y minúsculas en el tipo de recurso: utilice
=~(coincidencia sin distinción entre mayúsculas y minúsculas) en las comparaciones deIdentifiers.Type. Por ejemplo:Identifiers.Type =~ 'Microsoft.Storage/storageAccounts'. -
Propiedades nulas entre suscripciones: Pruebe la consulta entre suscripciones con configuraciones variadas. Utilice comprobaciones
isnull()cuando las propiedades puedan no estar presentes.
Uso de recomendaciones personalizadas a escala
La creación de recomendaciones personalizadas en el portal de Azure es la mejor para la mayoría de los usuarios. La interfaz proporciona un cómodo editor KQL y herramientas de validación integradas. Un enfoque mediante programación también puede ser útil cuando necesita implementar recomendaciones en muchos entornos o suscripciones.
Automatización mediante la API
Si validó previamente las consultas KQL y quiere automatizar la creación de recomendaciones personalizadas, puede usar la API de Microsoft Defender para la nube. Este método permite implementar recomendaciones rápidamente y garantiza que son coherentes y escalables en los entornos de nube.
- Ventajas: puede automatizar y escalar la implementación de recomendaciones personalizadas.
- Idoneidad: este método es ideal para implementaciones a gran escala en las que deben aplicarse recomendaciones de forma coherente en varios entornos.
Para obtener más información sobre el uso de la API para administrar recomendaciones personalizadas, consulte la referencia de API compuesta Defender for Cloud.
Creación de un estándar personalizado
Las recomendaciones personalizadas se pueden asignar a uno o varios estándares personalizados.
Para crear un estándar personalizado:
Inicie sesión en Azure Portal.
Vaya a Microsoft Defender para la nube>Configuración del entorno> de la suscripción correspondiente.
Seleccione Directivas de seguridad>+ Crear>Estándar.
Seleccione las recomendaciones que desea agregar al estándar personalizado.
(Opcional) Para Azure suscripciones, revise la columna Origen.
Selecciona Crear.
Creación y mejora de recomendaciones personalizadas con Azure Policy (heredado)
En el caso de las suscripciones de Azure, puedes crear recomendaciones y estándares personalizados, así como mejorarlas mediante Azure Policy. Se trata de una característica heredada y se recomienda usar la nueva característica de recomendaciones personalizadas.
Creación de una recomendación personalizada y un estándar (heredado)
Puede crear recomendaciones y estándares personalizados en Defender for Cloud mediante la creación de definiciones de directivas e iniciativas en Azure Policy e incorporarlas en Defender for Cloud.
Para crear una recomendación personalizada o estándar con Azure Policy (heredado):
- Crea una o más definiciones de política en el portal de Azure Policy, o crea definiciones de políticas de forma programática.
- Cree una iniciativa de directiva que contenga las definiciones de directiva personalizadas.
Incorporar la iniciativa como estándar personalizado (heredado)
Azure Policy usa asignaciones de directivas para asignar recursos de Azure a una directiva o iniciativa.
Para incorporar una iniciativa a un estándar de seguridad personalizado en Defender for Cloud, debe incluir "ASC":"true" en el cuerpo de la solicitud, como se muestra aquí. El campo ASC incorpora la iniciativa en Microsoft Defender para la nube.
Para incorporar una iniciativa personalizada:
Ejemplo para incorporar una iniciativa personalizada
Utiliza la siguiente solicitud REST para crear o actualizar la iniciativa Azure Policy que respalda tu estándar personalizado Defender for Cloud:
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policySetDefinitions/{policySetDefinitionName}?api-version=2021-06-01
Cuerpo de la solicitud (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"
}
}
}
]
}
}
Ejemplo para quitar una asignación
Para eliminar un estándar personalizado heredado de una suscripción, utilice la siguiente solicitud REST para eliminar la asignación de políticas:
DELETE https://management.azure.com/{subscription}/providers/Microsoft.Authorization/policyAssignments/{policyAssignmentName}?api-version=2018-05-01
Mejora de las recomendaciones personalizadas (heredadas)
Las recomendaciones integradas que se suministran con Microsoft Defender for Cloud incluyen detalles como los niveles de gravedad y las instrucciones de corrección. Si desea agregar este tipo de información a recomendaciones personalizadas para Azure, use la API de REST.
Los dos tipos de información que puede agregar son:
- RemediationDescription, cadena
- Gravedad, enumeración [baja, media, alta]
Los metadatos deben agregarse a la definición de la directiva para una directiva que forme parte de la iniciativa personalizada. Los metadatos deben estar en la propiedad 'securityCenter', como se muestra:
{
"metadata": {
"securityCenter": {
"RemediationDescription": "Custom description goes here",
"Severity": "High"
}
}
}
El siguiente ejemplo muestra una definición completa de política personalizada que incluye la propiedad de securityCenter metadatos con detalles de remediación y gravedad:
{
"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 ver otro ejemplo de la propiedad securityCenter, consulte ejemplos de la API de REST para los metadatos de evaluaciones.
Pasos siguientes
En los siguientes vínculos encontrará más información sobre las consultas de Kusto: