Este producto no es compatible con el sitio Datadog seleccionado. ().

La configuración de la protección de aplicaciones y API (AAP) para AWS Lambda implica:

  1. Identificar las funciones vulnerables o atacadas que más se beneficiarían con la AAP. Encuéntralas en la pestaña Seguridad de tu Software Catalog.
  2. Configurar la instrumentación de AAP utilizando Datadog CLI, AWS CDK, complemento del Marco Serverless de Datadog o manualmente utilizando las capas de rastreo de Datadog.
  3. Activar señales de seguridad en tu aplicación y observar cómo Datadog muestra la información resultante.

Requisitos previos

  • El rastreo APM serverless está configurado en la función Lambda para enviar trazas (traces) directamente a Datadog. El rastreo de rayos X, por sí mismo, no es suficiente para AAP y requiere que el rastreo de APM esté activado.

Compatibilidad

Nota: La protección frente a amenazas no es compatible a través de la configuración remota. Utiliza los flujos para bloquear direcciones IP en tu WAF.

TipoThreat Detection
Java
.NET
Node
Python
Ruby
PHP
Go

Tipos de activación compatibles

La detección de amenazas admite solicitudes HTTP como entrada de función únicamente, ya que ese canal tiene la mayor probabilidad de que los atacantes exploten una aplicación serverless. Las solicitudes HTTP suelen proceder de servicios AWS como:

  • Equilibrador de carga de aplicaciones (ALB)
  • Pasarela API v1 (API Rest)
  • Pasarela API v2 (API HTTP)
  • URL de la función
Si quieres que agreguemos la compatibilidad para alguna función que aún no es compatible, háznoslo saber. Rellena este breve formulario para enviarnos tu información.

Información adicional sobre la compatibilidad específica de lenguajes

Node.js
Si estás empaquetando con webpack o esbuild, sigue las instrucciones específicas del empaquetador.
Java
Para instrumentar de forma completa tu aplicación serverless con rastreo distribuido, tus funciones Lambda Java deben utilizar los tiempos de ejecución Java 8 Corretto (java8.al2), Java 11 (java11) o Java 17 (java17), con al menos 1024 MB de memoria.
Si utilizas las capas Lambda Datadog dd-trace-java:4 (o anteriores) y Datadog-Extension:24 (o anteriores), sigue las instrucciones de Actualización de la instrumentación para funciones Lambda Java.

Para empezar

El complemento del marco Serverless de Datadog puede utilizarse para configurar y desplegar automáticamente tu lambda con AAP.

Para instalar y configurar el complemento del marco serverless de Datadog:

  1. Instala el complemento del marco serverless de Datadog:

    serverless plugin install --name serverless-plugin-datadog
    
  2. Activa AAP actualizando tu serverless.yml con el parámetro de configuración enableASM:

    custom:
      datadog:
        enableASM: true
    

    En general, tu nuevo archivo serverless.yml debe contener al menos:

    custom:
      datadog:
        apiKeySecretArn: "{Datadog_API_Key_Secret_ARN}" # or apiKey
        enableDDTracing: true
        enableASM: true
    

    Consulta también la lista completa de parámetros de complementos para configurar aún más tus parámetros Lambda.

  3. Vuelve a desplegar la función e invócala. Al cabo de unos minutos, aparece en Vistas AAP.

La CLI de Datadog modifica las configuraciones de la función Lambda existentes para habilitar la instrumentación, sin necesidad de un nuevo despliegue. Es la forma más rápida de empezar a utilizar la monitorización serverless de Datadog.

Si estás configurando el rastreo inicial para tus funciones, sigue los siguientes pasos:

  1. Instala el cliente CLI de Datadog:

    npm install -g @datadog/datadog-ci
    
  2. Si recién estás empezando con la monitorización serverless de Datadog, ejecuta la CLI de Datadog en modo interactivo para guiar tu primera instalación y ejecutar un inicio rápido. En este caso puedes ignorar los pasos restantes. Para instalar permanentemente Datadog para tus aplicaciones de producción, omite este paso y sigue los pasos restantes para ejecutar el comando CLI de Datadog en tus pipelines CI/CD después de tu despliegue normal.

    datadog-ci lambda instrument -i --appsec
    
  3. Configuración de las credenciales AWS:

    La CLI de Datadog requiere acceso al servicio AWS Lambda y depende del SDK JavaScript AWS para resolver las credenciales. Asegúrate de que tus credenciales AWS están configuradas utilizando el mismo método que utilizarías al invocar la CLI de AWS.

  4. Configura el sitio Datadog:

    export DATADOG_SITE="<DATADOG_SITE>"
    

    Sustituye <DATADOG_SITE> por (asegúrate de seleccionar el sitio **Datadog ** correcto en la parte derecha de esta página).

  5. Configura la clave de API de Datadog:

    Por motivos de seguridad, Datadog recomienda guardar la clave de API de Datadog en AWS Secrets Manager. La clave debe almacenarse como cadena de texto sin formato (no como blob JSON). Asegúrate de que tus funciones Lambda tienen el permiso IAM secretsmanager:GetSecretValue necesario.

    export DATADOG_API_KEY_SECRET_ARN="<DATADOG_API_KEY_SECRET_ARN>"
    

    Para realizar tests, también puedes configurar la clave de API de Datadog utilizando texto sin formato:

    export DATADOG_API_KEY="<DATADOG_API_KEY>"
    
  6. Instrumenta tus funciones Lambda:

    Para instrumentar tus funciones Lambda, ejecuta el siguiente comando.

    datadog-ci lambda instrument --appsec -f <functionname> -f <another_functionname> -r <aws_region> -v 113 -e 84
    

    Para rellenar los parámetros:

    • Reemplaza <functionname> y <another_functionname> por los nombres de tu función de Lambda.
    • También puedes utilizar expresiones regulares (regex) de funciones para instrumentar automáticamente varias funciones cuyos nombres coincidan con la expresión regular dada.
    • Sustituye <aws_region> por el nombre de la región AWS.

    Nota: Primero, instrumenta tus funciones Lambda en un entorno de desarrollo o de staging. Si el resultado de la instrumentación no es satisfactorio, ejecuta uninstrument con los mismos argumentos para revertir los cambios.

    Puedes encontrar parámetros adicionales en la documentación de la CLI.

El Constructo CDK Datadog instala automáticamente Datadog en tus funciones utilizando capas Lambda y configura tus funciones para enviar métricas, trazas y logs a Datadog a través de la extensión Lambda de Datadog.

  1. Instala la biblioteca del constructo CDK Datadog:

    # For AWS CDK v1
    pip install datadog-cdk-constructs
    
    # For AWS CDK v2
    pip install datadog-cdk-constructs-v2
    
  2. Instrumentación de tus funciones Lambda

    # For AWS CDK v1
    from datadog_cdk_constructs import Datadog
    # NOT SUPPORTED IN V1
    
    # For AWS CDK v2
    from datadog_cdk_constructs_v2 import Datadog
    
    datadog = Datadog(self, "Datadog",
        python_layer_version=113,
        extension_layer_version=84,
        site="<DATADOG_SITE>",
        api_key_secret_arn="<DATADOG_API_KEY_SECRET_ARN>", // or api_key
        enable_asm=True,
      )
    datadog.add_lambda_functions([<LAMBDA_FUNCTIONS>])
    

    Para rellenar los parámetros:

    • Sustituye <DATADOG_SITE> por (asegúrate de haber seleccionado el SITIO correcto del lado derecho).
    • Sustituye <DATADOG_API_KEY_SECRET_ARN> por el ARN del secreto AWS donde se almacena de forma segura tu clave de API de Datadog. La clave debe almacenarse como una cadena de texto sin formato (no como un blob JSON). Se requiere el permiso secretsmanager:GetSecretValue. Para realizar tests rápidos, puedes utilizar apiKey y configurar la clave de API de Datadog utilizando texto sin formato.

    Para obtener más información y parámetros adicionales, consulta la documentación del CDK de Datadog.

  1. Instala el rastreador Datadog:
    • Python
      # Use this format for x86-based Lambda deployed in AWS commercial regions
         arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:113
      
         # Use this format for arm64-based Lambda deployed in AWS commercial regions
         arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>-ARM:113
      
         # Use this format for x86-based Lambda deployed in AWS GovCloud regions
         arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:113
      
         # Use this format for arm64-based Lambda deployed in AWS GovCloud regions
         arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>-ARM:72
         ```
      

Sustituye <AWS_REGION> por una región AWS válida, como us-east-1. Las opciones de RUNTIME disponibles son Python37, Python38 y Python39.

  • Node
    # Use this format for AWS commercial regions
      arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:127
    
      # Use this format for AWS GovCloud regions
      arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:127
      ```
    

Sustituye <AWS_REGION> por una región AWS válida como us-east-1. Las opciones de RUNTIME (Tiempo de ejecución) disponibles son Node18-x, Node20-x, Node22-x.

  • Java: Configura las capas para tu función Lambda utilizando el ARN en uno de los siguientes formatos, dependiendo de dónde se despliega tu Lambda. Sustituye <AWS_REGION> por una región AWS válida, como us-east-1:
    # In AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:464622532012:layer:dd-trace-java:24
    # In AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-java:24
    
  • Go: El rastreador Go no depende de una capa y es un módulo Go normal. Puedes actualizar a su última versión con:
    go get -u github.com/DataDog/datadog-lambda-go
    
  • .NET: Configura las capas para tu función Lambda utilizando el ARN en uno de los siguientes formatos, en función de dónde se despliega tu Lambda. Sustituye <AWS_REGION> por una región AWS válida, como us-east-1:
    # x86-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:464622532012:layer:dd-trace-dotnet:20
    # arm64-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:464622532012:layer:dd-trace-dotnet-ARM:20
    # x86-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet:20
    # arm64-based Lambda  in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet-ARM:20
    
  1. Instala la extensión Lambda de Datadog configurando las capas para tu función Lambda, utilizando el ARN en uno de los siguientes formatos. Sustituye <AWS_REGION> por una región AWS válida como us-east-1:
    # x86-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension:84
    # arm64-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-ARM:84
    # x86-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:84
    # arm64-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:84
    

  1. Instala el rastreador Datadog:
    • Python
      # Use this format for x86-based Lambda deployed in AWS commercial regions
         arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:113
      
         # Use this format for arm64-based Lambda deployed in AWS commercial regions
         arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>-ARM:113
      
         # Use this format for x86-based Lambda deployed in AWS GovCloud regions
         arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:113
      
         # Use this format for arm64-based Lambda deployed in AWS GovCloud regions
         arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>-ARM:113
         ```
      

Sustituye <AWS_REGION> por una región AWS válida como us-east-1. Las opciones de RUNTIME disponibles son Python38, Python39, Python310, Python311, Python312, Python313. .

  • Node
    # Use this format for AWS commercial regions
      arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:127
    
      # Use this format for AWS GovCloud regions
      arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:127
      ```
    

Sustituye <AWS_REGION> por una región AWS válida como us-east-1. Las opciones de RUNTIME (Tiempo de ejecución) disponibles son Node18-x, Node20-x, Node22-x.

  • Java: Configura las capas para tu función Lambda utilizando el ARN en uno de los siguientes formatos, dependiendo de dónde se despliega tu Lambda. Sustituye <AWS_REGION> por una región AWS válida, como us-east-1:
    # In AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:417141415827:layer:dd-trace-java:24
    # In AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-java:24
    
  • Go: El rastreador Go no depende de una capa y es un módulo Go normal. Puedes actualizar a su última versión con:
    go get -u github.com/DataDog/datadog-lambda-go
    
  • .NET: Configura las capas para tu función Lambda utilizando el ARN en uno de los siguientes formatos, en función de dónde se despliega tu Lambda. Sustituye <AWS_REGION> por una región AWS válida, como us-east-1:
    # x86-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:417141415827:layer:dd-trace-dotnet:20
    # arm64-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:417141415827:layer:dd-trace-dotnet-ARM:20
    # x86-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet:20
    # arm64-based Lambda  in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet-ARM:20
    
  1. Instala la extensión Lambda de Datadog configurando las capas para tu función Lambda, utilizando el ARN en uno de los siguientes formatos. Sustituye <AWS_REGION> por una región AWS válida como us-east-1:

    # x86-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:417141415827:layer:Datadog-Extension:84
    # arm64-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:417141415827:layer:Datadog-Extension-ARM:84
    # x86-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:84
    # arm64-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:84
    

  1. Instala el rastreador Datadog:
    • Python
      # Use this format for x86-based Lambda deployed in AWS commercial regions
         arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:113
      
         # Use this format for arm64-based Lambda deployed in AWS commercial regions
         arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>-ARM:113
      
         # Use this format for x86-based Lambda deployed in AWS GovCloud regions
         arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:113
      
         # Use this format for arm64-based Lambda deployed in AWS GovCloud regions
         arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>-ARM:113
         ```
      

Sustituye <AWS_REGION> por una región AWS válida como us-east-1. Las opciones de RUNTIME disponibles son Python38, Python39, Python310, Python311, Python312, Python313. .

  • Node
    # Use this format for AWS commercial regions
      arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:127
    
      # Use this format for AWS GovCloud regions
      arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:127
      ```
    

Sustituye <AWS_REGION> por una región AWS válida como us-east-1. Las opciones de RUNTIME (Tiempo de ejecución) disponibles son Node18-x, Node20-x, Node22-x.

  • Java: Configura las capas para tu función Lambda utilizando el ARN en uno de los siguientes formatos, dependiendo de dónde se despliega tu Lambda. Sustituye <AWS_REGION> por una región AWS válida, como us-east-1:
    # In AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:412381753143:layer:dd-trace-java:24
    # In AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-java:24
    
  • Go: El rastreador Go no depende de una capa y es un módulo Go normal. Puedes actualizar a su última versión con:
    go get -u github.com/DataDog/datadog-lambda-go
    
  • .NET: Configura las capas para tu función Lambda utilizando el ARN en uno de los siguientes formatos, en función de dónde se despliega tu Lambda. Sustituye <AWS_REGION> por una región AWS válida, como us-east-1:
    # x86-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:412381753143:layer:dd-trace-dotnet:20
    # arm64-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:412381753143:layer:dd-trace-dotnet-ARM:20
    # x86-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet:20
    # arm64-based Lambda  in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:dd-trace-dotnet-ARM:20
    
  1. Instala la extensión Lambda de Datadog configurando las capas para tu función Lambda, utilizando el ARN en uno de los siguientes formatos. Sustituye <AWS_REGION> por una región AWS válida como us-east-1:

    # x86-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:412381753143:layer:Datadog-Extension:84
    # arm64-based Lambda in AWS commercial regions
    arn:aws:lambda:<AWS_REGION>:412381753143:layer:Datadog-Extension-ARM:84
    # x86-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:84
    # arm64-based Lambda in AWS GovCloud regions
    arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM:84
    

  1. Activa AAP añadiendo las siguientes variables de entorno en tu despliegue de funciones:

    environment:
      AWS_LAMBDA_EXEC_WRAPPER: /opt/datadog_wrapper
      DD_SERVERLESS_APPSEC_ENABLED: true
    
  2. Sólo para funciones Node y Python, comprueba que el gestor de la función está configurado correctamente:

    • **Node: Configura el gestor de tu función como /opt/nodejs/node_modules/datadog-lambda-js/handler.handler.
      • Además, configura la variable de entorno DD_LAMBDA_HANDLER en tu gestor original. Por ejemplo, myfunc.handler.
    • **Python: Configura el gestor de tu función como datadog_lambda.handler.handler.
      • Además, configura la variable de entorno DD_LAMBDA_HANDLER en tu gestor original. Por ejemplo, myfunc.handler.
  3. Vuelve a desplegar la función e invócala. Al cabo de unos minutos, aparece en Vistas AAP.

Referencias adicionales