Guía de configuración de AWS Fargate para la seguridad de Datadog

Esta guía te indicará los pasos de la configuración de Cloud Security Management (CSM), Application Security Management (ASM) y Cloud SIEM en AWS Fargate.

Tabla de flujo que muestra cómo CSM, ASM y Cloud SIEM se configuran en AWS Fargate

Cobertura completa del stack para AWS Fargate

Seguridad de Datadog proporciona múltiples capas de visibilidad para AWS Fargate. Utiliza los productos en combinación con otros para obtener una cobertura completa del stack, como se muestra en las tablas siguientes:

Activos de Fargate

ActivosObservabilidadCorrección de vulnerabilidades y errores de configuraciónDetección de amenazas y respuesta
Aplicación de FargateApplication Performance MonitoringApplication Security ManagementApplication Security Management
Infraestructura de FargateMonitorización de infraestructuraAún no compatibleCSM Threats

Recursos relacionados con Fargate

ActivosObservabilidadCorrección de vulnerabilidades y errores de configuraciónDetección de amenazas y respuesta
Roles y políticas de AWS IAMGestión de logsCloud Security ManagementCloud SIEM
Bases de datos de AWSGestión de logsCloud Security ManagementCloud SIEM
Buckets de AWS S3Gestión de logsCloud Security ManagementCloud SIEM

Cloud Security Management

Requisitos previos

  • La integración de Datadog AWS está instalada y configurada para tus cuentas de AWS
  • Acceso a AWS Management Console
  • Cargas de trabajo de AWS Fargate ECS o EKS
Para obtener información adicional sobre el rendimiento y fiabilidad, Datadog recomienda habilitar la monitorización de infraestructura con Cloud Security Management.

Imágenes

  • cws-instrumentation-init: public.ecr.aws/datadog/cws-instrumentation:latest
  • datadog-agent: public.ecr.aws/datadog/agent:latest

Instalación

Consola de AWS

  1. Inicia sesión en AWS Management Console.
  2. Navega hasta la sección de ECS.
  3. En el menú de la izquierda, selecciona Task Definitions (Definiciones de tarea) y, a continuación, selecciona Create new Task Definition with JSON (Crear nueva definición de tarea con JSON). Como alternativa, selecciona una definición de tarea de Fargate existente.
  4. Para crear una nueva definición de tarea, utiliza la definición JSON o el método de AWS CLI.
  5. Haz clic en Create (Crear) para crear la definición de la tarea.

AWS CLI

  1. Descarga datadog-agent-cws-ecs-fargate.json.

datadog-agent-cws-ecs-fargate.json

{
    "family": "<YOUR_TASK_NAME>",
    "cpu": "256",
    "memory": "512",
    "networkMode": "awsvpc",
    "pidMode": "task",
    "requiresCompatibilities": [
        "FARGATE"
    ],
    "containerDefinitions": [
        {
            "name": "cws-instrumentation-init",
            "image": "public.ecr.aws/datadog/cws-instrumentation:latest",
            "essential": false,
            "user": "0",
            "command": [
                "/cws-instrumentation",
                "setup",
                "--cws-volume-mount",
                "/cws-instrumentation-volume"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "cws-instrumentation-volume",
                    "containerPath": "/cws-instrumentation-volume",
                    "readOnly": false
                }
            ]
        },
        {
            "name": "datadog-agent",
            "image": "public.ecr.aws/datadog/agent:latest",
            "essential": true,
            "environment": [
                {
                    "name": "DD_API_KEY",
                    "value": "<DD_API_KEY>"
                },
                {
                    "name": "DD_SITE",
                    "value": "datadoghq.com"
                },
                {
                    "name": "ECS_FARGATE",
                    "value": "true"
                },
                {
                    "name": "DD_RUNTIME_SECURITY_CONFIG_ENABLED",
                    "value": "true"
                },
                {
                    "name": "DD_RUNTIME_SECURITY_CONFIG_EBPFLESS_ENABLED",
                    "value": "true"
                }
            ],
            "healthCheck": {
                "command": [
                    "CMD-SHELL",
                    "/probe.sh"
                ],
                "interval": 30,
                "timeout": 5,
                "retries": 2,
                "startPeriod": 60
            }
        },
        {
            "name": "<YOUR_APP_NAME>",
            "image": "<YOUR_APP_IMAGE>",
            "entryPoint": [
                "/cws-instrumentation-volume/cws-instrumentation",
                "trace",
                "--",
                "<ENTRYPOINT>"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "cws-instrumentation-volume",
                    "containerPath": "/cws-instrumentation-volume",
                    "readOnly": true
                }
            ],
            "linuxParameters": {
                "capabilities": {
                    "add": [
                        "SYS_PTRACE"
                    ]
                }
            },
            "dependsOn": [
                {
                    "containerName": "datadog-agent",
                    "condition": "HEALTHY"
                },
                {
                    "containerName": "cws-instrumentation-init",
                    "condition": "SUCCESS"
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "cws-instrumentation-volume"
        }
    ]
}
  1. Actualiza los siguientes elementos en el archivo JSON:

    • TASK_NAME
    • DD_API_KEY
    • DD_SITE
    • YOUR_APP_NAME
    • YOUR_APP_IMAGE
    • ENTRYPOINT

    Puedes utilizar el siguiente comando para encontrar el punto de entrada de tu carga de trabajo:

    docker inspect <YOUR_APP_IMAGE> -f '{{json .Config.Entrypoint}}'
    

    o

    docker inspect <YOUR_APP_IMAGE> -f '{{json .Config.Cmd}}'
    

    Nota: La variable de entorno ECS_FARGATE ya está configurada en “true”.

  2. Añade tus otros contenedores de aplicaciones a la definición de la tarea. Para obtener más información sobre la recopilación de métricas de integración, consulta Configuración de integración para ECS Fargate.

  3. Ejecuta el siguiente comando para registrar la definición de la tarea de ECS:

aws ecs register-task-definition --cli-input-json file://<PATH_TO_FILE>/datadog-agent-ecs-fargate.json

Para recopilar datos de tus pods de AWS Fargate, debes ejecutar el Agent como auxiliar de tu pod de aplicación y configurar reglas de control de acceso basado en roles (RBAC).

Si el Agent se ejecuta como auxiliar, solo puede comunicarse con contenedores del mismo pod. Ejecuta un Agent para cada pod que desees monitorizar.

Configurar reglas de RBAC

Utiliza las siguientes instrucciones de despliegue de RBAC en el Agent antes de desplegar el Agent como auxiliar.

Despliegue del Agent como auxiliar

El siguiente manifiesto representa la mínima configuración requerida para desplegar tu aplicación con el Datadog Agent como auxiliar con CSM Threats habilitado:

apiVersion: apps/v1
kind: Deployment
metadata:
 name: "<APPLICATION_NAME>"
 namespace: default
spec:
 replicas: 1
 selector:
   matchLabels:
     app: "<APPLICATION_NAME>"
 template:
   metadata:
     labels:
       app: "<APPLICATION_NAME>"
     name: "<POD_NAME>"
   spec:
     initContainers:
     - name: cws-instrumentation-init
       image: public.ecr.aws/datadog/cws-instrumentation:latest
       command:
         - "/cws-instrumentation"
         - "setup"
         - "--cws-volume-mount"
         - "/cws-instrumentation-volume"
       volumeMounts:
         - name: cws-instrumentation-volume
           mountPath: "/cws-instrumentation-volume"
       securityContext:
         runAsUser: 0
     containers:
     - name: "<YOUR_APP_NAME>"
       image: "<YOUR_APP_IMAGE>"
       command:
         - "/cws-instrumentation-volume/cws-instrumentation"
         - "trace"
         - "--"
         - "<ENTRYPOINT>"
       volumeMounts:
         - name: cws-instrumentation-volume
           mountPath: "/cws-instrumentation-volume"
           readOnly: true
     - name: datadog-agent
       image: public.ecr.aws/datadog/agent:latest
       env:
         - name: DD_API_KEY
           value: "<DD_API_KEY>"
         - name: DD_RUNTIME_SECURITY_CONFIG_ENABLED
           value: "true"
         - name: DD_RUNTIME_SECURITY_CONFIG_EBPFLESS_ENABLED
           value: "true"
         - name: DD_EKS_FARGATE
           value: "true"
         - name: DD_CLUSTER_NAME
           value: "<CLUSTER_NAME>"
         - name: DD_KUBERNETES_KUBELET_NODENAME
           valueFrom:
             fieldRef:
               apiVersion: v1
               fieldPath: spec.nodeName
     volumes:
       - name: cws-instrumentation-volume
     serviceAccountName: datadog-agent
     shareProcessNamespace: true

Comprobar que el Agent envía eventos a CSM

Cuando activas CSM en AWS Fargate ECS o EKS, el Agent envía un log a Datadog para confirmar que el conjunto de reglas predeterminado se ha desplegado correctamente. Para ver el log, navega a la página Logs en Datadog y busca @agent.rule_id:ruleset_loaded.

También puedes verificar que el Agent está enviando eventos a CSM activando manualmente una señal de seguridad para AWS Fargate.

En la definición de la tarea, sustituye el contenedor de “carga de trabajo” por lo siguiente:

            "name": "cws-signal-test",
            "image": "ubuntu:latest",
            "entryPoint": [
                "/cws-instrumentation-volume/cws-instrumentation",
                "trace",
                "--verbose",
                "--",
                "/usr/bin/bash",
                "-c",
                "apt update;apt install -y curl; while true; do curl https://google.com; sleep 5; done"
            ],

Application Security Management

Requisitos previos

  • El Datadog Agent se instala y configura para el sistema operativo de tu aplicación o contenedor, entorno en la nube o virtual
  • Datadog APM está configurado para tu aplicación o servicio
Para obtener información adicional sobre el rendimiento y la fiabilidad, Datadog recomienda habilitar Application Performance Monitoring con Application Security Management.

Instalación

Protección y detección de amenazas

Para obtener instrucciones paso a paso, consulta los siguientes artículos:

Código de seguridad

Para obtener instrucciones paso a paso, consulta los siguientes artículos:

Cloud SIEM

Requisitos previos

Instalación

Para obtener instrucciones paso a paso, consulta la Guía de configuración de AWS para Cloud SIEM.

Habilitar el registro de AWS CloudTrail

Enable AWS CloudTrail logging so that logs are sent to a S3 bucket. If you already have this setup, skip to Send AWS CloudTrail logs to Datadog.

  1. Click Create trail on the CloudTrail dashboard.
  2. Enter a name for your trail.
  3. Create a new S3 bucket or use an existing S3 bucket to store the CloudTrail logs.
  4. Create a new AWS KMS key or use an existing AWS KMS key, then click Next.
  5. Leave the event type with the default management read and write events, or choose additional event types you want to send to Datadog, then click Next.
  6. Review and click Create trail.

Enviar logs de AWS CloudTrail a Datadog

Set up a trigger on your Datadog Forwarder Lambda function to send CloudTrail logs stored in the S3 bucket to Datadog for monitoring.

  1. Go to the Datadog Forwarder Lambda that was created during the AWS integration set up.
  2. Click Add trigger.
  3. Select S3 for the trigger.
  4. Select the S3 bucket you are using to collect AWS CloudTrail logs.
  5. For Event type, select All object create events.
  6. Click Add.
  7. See CloudTrail logs in Datadog’s Log Explorer.

See Log Explorer for more information on how to search and filter, group, and visualize your logs.

Referencias adicionales