Cobertura y solución de problemas en tiempo de ejecución para clústeres de Amazon ECS - Amazon GuardDuty

Cobertura y solución de problemas en tiempo de ejecución para clústeres de Amazon ECS

La cobertura en tiempo de ejecución para los clústeres de Amazon ECS incluye las tareas que se ejecutan en AWS Fargate y las instancias de contenedor 1 de Amazon ECS.

Si se trata de un clúster de Amazon ECS que se ejecuta en Fargate, la cobertura en tiempo de ejecución se evalúa a nivel de tarea. La cobertura en tiempo de ejecución de los clústeres de ECS incluye las tareas de Fargate que se han comenzado a ejecutar después de habilitar la Supervisión en tiempo de ejecución y la configuración automatizada del agente para Fargate (solo ECS). Las tareas de Fargate son inmutables de forma predeterminada. GuardDuty no podrá instalar el agente de seguridad para supervisar contenedores en tareas ya en ejecución. Para incluir una tarea de Fargate de este tipo, debe detener e iniciar de nuevo la tarea. Asegúrese de verificar si el servicio asociado es compatible.

Para obtener información sobre el contenedor de Amazon ECS, consulte Creación de capacidad.

Revisión de las estadísticas de cobertura

Las estadísticas de cobertura correspondientes a los recursos de Amazon ECS asociados a la cuenta propia o a las cuentas de miembro representan el porcentaje de los clústeres de Amazon ECS en buen estado sobre todos los clústeres de Amazon ECS en la Región de AWS seleccionada. Esto incluye la cobertura para clústeres de Amazon ECS asociados tanto a instancias de Fargate como de Amazon EC2. La siguiente ecuación lo representa de la siguiente manera:

(Clústeres en buen estado/Todos los clústeres)*100

Consideraciones

  • Las estadísticas de cobertura correspondientes al clúster de ECS incluyen el estado de cobertura de las tareas de Fargate o las instancias de contenedor de ECS asociadas a ese clúster de ECS. El estado de cobertura de las tareas de Fargate incluye tareas que están en estado de ejecución o que han terminado de ejecutarse recientemente.

  • En la pestaña Cobertura en tiempo de ejecución de clústeres de ECS, el campo Instancias de contenedor cubiertas indica el estado de cobertura de las instancias de contenedor asociadas al clúster de Amazon ECS.

    Si el clúster de Amazon ECS solo contiene tareas de Fargate, el recuento aparece como 0/0.

  • Si el clúster de Amazon ECS está asociado a una instancia de Amazon EC2 que no cuenta con un agente de seguridad, la cobertura del clúster de Amazon ECS también estará en mal estado.

    Para identificar y solucionar el problema de cobertura correspondiente a la instancia de Amazon EC2 asociada, consulte Resolución de problemas de cobertura en tiempo de ejecución de Amazon EC2 para instancias de Amazon EC2.

Elija uno de los métodos de acceso para revisar las estadísticas de cobertura de sus cuentas.

Console
  • Inicie sesión en la Consola de administración de AWS y abra la consola de GuardDuty en https://console.aws.amazon.com/guardduty/.

  • En el panel de navegación, elija Supervisión en tiempo de ejecución.

  • Elija la pestaña Cobertura en tiempo de ejecución.

  • En la pestaña Cobertura en tiempo de ejecución de clústeres de ECS, puede ver las estadísticas de cobertura agregadas por el estado de cobertura de cada clúster de Amazon ECS que esté disponible en la tabla Lista de clústeres.

    • Puede filtrar la tabla Lista de clústeres por las siguientes columnas:

      • Identificador* de cuenta

      • Nombre del clúster

      • Tipo de administración del agente

      • Estado de la cobertura

  • Si la cobertura de alguno de los clústeres de Amazon ECS está en mal estado, la columna Problema incluye información adicional sobre el motivo del mal estado.

    Si los clústeres de Amazon ECS están asociados a una instancia de Amazon EC2, vaya a la pestaña Cobertura en tiempo de ejecución de la instancia de EC2 y filtre por el campo Nombre del clúster para ver el problema asociado.

API/CLI
  • Ejecute la API ListCoverage con el ID de detector válido propio, la región actual y el punto de conexión del servicio. Puede filtrar y ordenar la lista de instancias a través de esta API.

    • Puede cambiar el ejemplo de filter-criteria con una de las siguientes opciones para CriterionKey:

      • ACCOUNT_ID

      • ECS_CLUSTER_NAME

      • COVERAGE_STATUS

      • MANAGEMENT_TYPE

    • Puede cambiar el ejemplo de AttributeName en sort-criteria con las siguientes opciones:

      • ACCOUNT_ID

      • COVERAGE_STATUS

      • ISSUE

      • ECS_CLUSTER_NAME

      • UPDATED_AT

        El campo se actualiza únicamente cuando se crea una nueva tarea en el clúster de Amazon ECS asociado o se produce un cambio en el estado de cobertura correspondiente.

    • Puede cambiar el valor de max-results (hasta 50).

    • Para encontrar el detectorId correspondiente a la cuenta y la región actual, consulte la página de Configuración en la consola https://console.aws.amazon.com/guardduty/ o ejecute la API ListDetectors.

    aws guardduty --region us-east-1 list-coverage --detector-id 12abc34d567e8fa901bc2d34e56789f0 --sort-criteria '{"AttributeName": "ECS_CLUSTER_NAME", "OrderBy": "DESC"}' --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"111122223333"}}] }' --max-results 5
  • Ejecute la API GetCoverageStatistics para recuperar las estadísticas agregadas de cobertura según statisticsType.

    • Puede cambiar el ejemplo de statisticsType a una de las siguientes opciones:

      • COUNT_BY_COVERAGE_STATUS: representa las estadísticas de cobertura de los clústeres de ECS agregadas por estado de cobertura.

      • COUNT_BY_RESOURCE_TYPE: estadísticas de cobertura agregadas en función del tipo de recurso de AWS de la lista.

      • Puede cambiar el ejemplo de filter-criteria en el comando. Puede usar las siguientes opciones para CriterionKey:

        • ACCOUNT_ID

        • ECS_CLUSTER_NAME

        • COVERAGE_STATUS

        • MANAGEMENT_TYPE

        • INSTANCE_ID

    • Para encontrar el detectorId correspondiente a la cuenta y la región actual, consulte la página de Configuración en la consola https://console.aws.amazon.com/guardduty/ o ejecute la API ListDetectors.

    aws guardduty --region us-east-1 get-coverage-statistics --detector-id 12abc34d567e8fa901bc2d34e56789f0 --statistics-type COUNT_BY_COVERAGE_STATUS --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID", "FilterCondition":{"EqualsValue":"123456789012"}}] }'

Para obtener más información sobre los problemas de cobertura, consulte Resolución de problemas de cobertura en tiempo de ejecución de Amazon ECS-Fargate.

Cambio del estado de la cobertura con las notificaciones de EventBridge

Es posible que el estado de cobertura del clúster de Amazon ECS aparezca como En mal estado. Para mantenerse informado sobre los cambios en el estado de la cobertura, recomendamos supervisar periódicamente su estado y solucionar cualquier problema si esta se encuentra en mal estado. Como alternativa, puede crear una regla de Amazon EventBridge para recibir notificaciones cuando la cobertura cambie de estar en mal estado a buen estado, o viceversa. De forma predeterminada, GuardDuty publica esto en el bus de EventBridge de su cuenta.

Ejemplo de esquema de notificaciones

En una regla de EventBridge, puede usar los ejemplos de eventos y patrones de eventos predefinidos para recibir la notificación de estado de cobertura. Para obtener más información sobre cómo crear una regla de EventBridge, consulte Create rule en la Guía del usuario de Amazon EventBridge.

Además, puede crear un patrón de eventos personalizado mediante el siguiente ejemplo de esquema de notificaciones. Asegúrese de sustituir los valores de su cuenta. Para recibir notificaciones cuando el estado de cobertura del clúster de Amazon ECS cambie de Healthy a Unhealthy, el detail-type debe ser Protección en tiempo de ejecución de GuardDuty en mal estado. Para recibir una notificación cuando el estado de cobertura cambie de Unhealthy aHealthy, sustituya el valor de detail-type por GuardDuty Runtime Protection Healthy.

{ "version": "0", "id": "event ID", "detail-type": "GuardDuty Runtime Protection Unhealthy", "source": "aws.guardduty", "account": "Cuenta de AWS ID", "time": "event timestamp (string)", "region": "Región de AWS", "resources": [ ], "detail": { "schemaVersion": "1.0", "resourceAccountId": "string", "currentStatus": "string", "previousStatus": "string", "resourceDetails": { "resourceType": "ECS", "ecsClusterDetails": { "clusterName":"", "fargateDetails":{ "issues":[], "managementType":"" }, "containerInstanceDetails":{ "coveredContainerInstances":int, "compatibleContainerInstances":int } } }, "issue": "string", "lastUpdatedAt": "timestamp" } }

Resolución de problemas de cobertura en tiempo de ejecución de Amazon ECS-Fargate

Si la cobertura del clúster de Amazon ECS está en mal estado, puede ver el motivo en la columna Problema.

En la siguiente tabla se indican los pasos recomendados para solucionar los problemas relacionados con Fargate (solo Amazon ECS). Para obtener información sobre problemas de cobertura de instancias de Amazon EC2, consulte Resolución de problemas de cobertura en tiempo de ejecución de Amazon EC2 para instancias de Amazon EC2.

Tipo de problema Información adicional Pasos recomendados de solución de problemas

El agente no genera informes

El agente no genera informes para las tareas en TaskDefinition - 'TASK_DEFINITION'

Valide que el punto de conexión de VPC para la tarea del clúster de Amazon ECS esté configurado correctamente. Para obtener más información, consulte Validar la configuración del punto de conexión de VPC.

Si la organización cuenta con una política de control de servicio (SCP), valide que el límite de permisos no restringe el permiso guardduty:SendSecurityTelemetry. Para obtener más información, consulte Validación de la política de control de servicios de la organización en un entorno de varias cuentas.

VPC_ISSUE; for task in TaskDefinition - 'TASK_DEFINITION'

Consulte los detalles del problema de la VPC en la información adicional.

El agente salió

ExitCode: EXIT_CODE para tareas en TaskDefinition - 'TASK_DEFINITION'

Consulte los detalles del problema en la información adicional.

Motivo: REASON para las tareas en TaskDefinition - 'TASK_DEFINITION'

ExitCode: EXIT_CODE con el motivo: 'EXIT_CODE' para las tareas en TaskDefinition - 'TASK_DEFINITION'

El agente salió: Motivo: CannotPullContainerError: se ha vuelto a intentar extraer el manifiesto de imagen…

En este escenario, es posible que GuardDuty no pueda obtener la imagen del contenedor de sidecar. La tarea seguirá ejecutándose, pero GuardDuty no podrá detectar posibles amenazas. Realice los siguientes pasos de solución de problemas uno por uno para comprobar si esto ayuda a resolver el problema de cobertura:

  • Permisos: asegúrese de que su rol de ejecución de tareas tenga los permisos de ECR necesarios que se indican en Requisitos de los permisos.

  • Conectividad de red: verifique que sus tareas de Fargate puedan llegar al ECR a través del acceso público a Internet o de puntos de conexión de VPC configurados correctamente, como se describe en Requisitos de conectividad de red.

  • Configuración del grupo de seguridad: verifique que su grupo de seguridad permite el acceso saliente a la lista de prefijos gestionados de S3 en el puerto 443, como se explica en Configuración del grupo de seguridad.

  • Ejecute el manual de procedimientos de AWSSupport-TroubleshootECSTaskFailedToStart en la región de su clúster para identificar problemas específicos.

  • Consulte los registros de tareas para ver si hay mensajes de error. Para obtener más información sobre cómo hacerlo, consulte Ver registros del agente de contenedores de Amazon ECS en la Guía para desarrolladores de Amazon Elastic Container Service.

    Para obtener información sobre errores comunes y solución de problemas, consulte Solución de problemas de Amazon ECS en la Guía para desarrolladores de Amazon Elastic Container Service.

Estos tres componentes (permisos, conectividad de red y configuración del grupo de seguridad) son independientes, pero todos son necesarios para descargar de manera correcta la imagen del contenedor de GuardDuty de Amazon ECR.

Si el problema persiste, consulte Se producen errores inesperados en mi flujo de trabajo de AWS Step Functions.

Se produjo un error al crear el punto de conexión de VPC

La habilitación del DNS privado requiere que los atributos de VPC enableDnsSupport y enableDnsHostnames estén establecidos en true para vpcId (Servicio: EC2, Código de estado: 400, ID de solicitud: a1b2c3d4-5678-90ab-cdef-EXAMPLE11111).

Asegúrese de que los siguientes atributos de VPC estén establecidos en true - enableDnsSupport y enableDnsHostnames. Para obtener más información, consulte Atributos DNS para la VPC.

Si utiliza la consola de Amazon VPC en https://console.aws.amazon.com/vpc/ para crear la VPC de Amazon, asegúrese de seleccionar Habilitar nombres de host DNS y Habilitar la resolución de DNS. Para obtener más información, consulte Opciones de configuración de la VPC.

Agente no aprovisionado

Invocación no admitida por parte del SERVICE para tareas en TaskDefinition - 'TASK_DEFINITION'

Esta tarea fue invocada por un SERVICE que no se admite.

Arquitectura de CPU no admitida “TYPE” para tareas en TaskDefinition - 'TASK_DEFINITION'

Esta tarea se ejecuta en una arquitectura de CPU no admitida. Para obtener información acerca de las arquitecturas de CPU compatibles, consulte Validación de los requisitos de arquitectura.

TaskExecutionRole falta en TaskDefinition - 'TASK_DEFINITION'

Falta el rol de ejecución de tareas de ECS. Para obtener información sobre cómo proporcionar el rol de ejecución de tareas y los permisos necesarios, consulte Requisitos previos para el acceso a imágenes de contenedores.

Falta la configuración de red “CONFIGURATION_DETAILS” para las tareas en TaskDefinition - 'TASK_DEFINITION'

Los problemas de configuración de red pueden surgir debido a la falta de configuración de la VPC, o a la falta de subredes o subredes vacías.

Compruebe que la configuración de la red es correcta. Para obtener más información, consulte Requisitos previos para el acceso a imágenes de contenedores.

Para obtener más información, consulte Parámetros de definición de tareas de Amazon ECS en la Guía para desarrolladores de Amazon Elastic Container Service.

Las tareas iniciadas cuando los clústeres tenían una etiqueta de exclusión se excluyen dRuntime Monitoring. ID de tarea afectada (s): 'TASK_ID

Al cambiar la etiqueta predefinida de GuardDuty de GuardDutyManaged-true a GuardDutyManaged-false, GuardDuty no recibirá los eventos en tiempo de ejecución para el clúster de Amazon ECS.

Actualice la etiqueta a GuardDutyManaged-true y, a continuación, vuelva a iniciar la tarea.

Los tareas implementadas cuando los clústeres tenían una etiqueta de exclusión se excluyen dRuntime Monitoring. Nombre(s) de los servicios afectados: 'SERVICE_NAME'

Cuando los servicios se implementen con la etiqueta de exclusión GuardDutyManaged-false, GuardDuty no recibirá eventos de tiempo de ejecución para este clúster de Amazon ECS.

Actualice la etiqueta a GuardDutyManaged-true y, a continuación, vuelva a implementar el servicio.

No se incluyen las tareas iniciadas antes de habilitar la configuración automática del agente. ID(s) de tarea afectada: 'TASK_ID'

Si el clúster contiene una tarea que se lanzó antes de habilitar la configuración del agente automatizado para Amazon ECS, GuardDuty no podrá protegerla. Vuelva a lanzar la tarea para que GuardDuty la monitoree.

No se incluyen los servicios implementados antes de habilitar la configuración automática del agente. Nombre(s) de los servicios afectados: 'SERVICE_NAME'

Cuando los servicios se implementen antes de habilitar la configuración automática de agentes para Amazon ECS, GuardDuty no recibirá eventos de tiempo de ejecución para los clústeres de ECS.

El servicio 'SERVICE_NAME' requiere una nueva implementación para corregir o solucionar problemas. Consulte la documentación y los nombres de los servicios afectados: ‘SERVICE_NAME

No se admite un servicio que se inició antes de habilitar Runtime Monitoring.

Puede reiniciar el servicio o actualizarlo con la opción forceNewDeployment según los pasos que se indican en Actualización de un servicio de Amazon ECS mediante la consola en la Guía para desarrolladores de Amazon Elastic Container Service. Como alternativa, también puede seguir los pasos de UpdateService en la Referencia de la API de Amazon Elastic Container Service.

Las tareas iniciadas antes de habilitar Runtime Monitoring requieren un relanzamiento. ID(s) de tarea afectada: 'TASK_ID_1'

Las tareas son inmutables en Amazon ECS. Para evaluar el comportamiento en tiempo de ejecución o una tarea de AWS Fargate en ejecución, asegúrese de que Runtime Monitoring ya está habilitada y, a continuación, reinicie la tarea para que GuardDuty agregue el sidecar de contenedor.

Otros

Problema no identificado, para tareas en TaskDefinition - 'TASK_DEFINITION'

Utilice las siguientes preguntas para identificar la causa raíz del problema:

  • ¿La tarea se inició antes de habilitar la Supervisión en tiempo de ejecución?

    Las tareas son inmutables en Amazon ECS. Para evaluar el comportamiento en tiempo de ejecución de una tarea de Fargate en ejecución, asegúrese de que la Supervisión en tiempo de ejecución ya está habilitada y, a continuación, reinicie la tarea para que GuardDuty agregue el sidecar de contenedor.

  • ¿Esta tarea forma parte de una implementación de servicios que se inició antes de habilitar la Supervisión en tiempo de ejecución?

    En tal caso, puede reiniciar el servicio o actualizarlo con forceNewDeployment. Para ello, siga los pasos indicados en Actualizar un servicio.

    También puede utilizar UpdateService o AWS CLI.

  • ¿La tarea se lanzó después de excluir el clúster de ECS de la Supervisión en tiempo de ejecución?

    Al cambiar la etiqueta predefinida de GuardDuty de GuardDutyManaged-true a GuardDutyManaged-false, GuardDuty no recibirá los eventos en tiempo de ejecución para el clúster de ECS.

  • ¿El servicio contiene una tarea que tiene un formato antiguo de taskArn?

    La Supervisión en tiempo de ejecución de GuardDuty no permite la cobertura para tareas que tienen el formato antiguo de taskArn.

    Para obtener información sobre los nombres de recursos de Amazon (ARN) para los recursos de Amazon ECS, consulte Nombres de recursos de Amazon (ARN) e ID.