Activación de la protección de aplicaciones y API para AWS Lambda
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:
- 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.
- 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.
- 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.
Tipo | Threat 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
- 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:
Instala el complemento del marco serverless de Datadog:
serverless plugin install --name serverless-plugin-datadog
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.
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:
Instala el cliente CLI de Datadog:
npm install -g @datadog/datadog-ci
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
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.
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).
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>"
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.
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
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.
- 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
- 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
- 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
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
- 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
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
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
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
.
Vuelve a desplegar la función e invócala. Al cabo de unos minutos, aparece en Vistas AAP.
Referencias adicionales
Más enlaces, artículos y documentación útiles: