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

Overview

App and API Protection works by leveraging the Datadog Ruby library to monitor and secure your Ruby service. The library integrates seamlessly with your existing application without requiring code changes.

For detailed compatibility information, including supported Ruby versions, frameworks, and deployment environments, see Ruby Compatibility Requirements.

This guide explains how to set up App and API Protection (AAP) for Ruby applications. The setup involves:

  1. Installing the Datadog Agent
  2. Enabling App and API Protection monitoring
  3. Run Your Application
  4. Verifying the setup

Requisitos previos

  • Entorno de AWS Fargate
  • Aplicación Ruby en contenedores con Docker
  • AWS CLI configurado con los permisos adecuados
  • Tu clave de API Datadog
  • Biblioteca de rastreo Ruby de Datadog (consulta requisitos de la versión)

1. Instalación del Datadog Agent

Instala el Datadog Agent en la definición de tu tarea de Fargate:

{
  "containerDefinitions": [
    {
      "name": "datadog-agent",
      "image": "public.ecr.aws/datadog/agent:latest",
      "environment": [
        {
          "name": "DD_API_KEY",
          "value": "<YOUR_API_KEY>"
        },
        {
          "name": "DD_APM_ENABLED",
          "value": "true"
        },
        {
          "name": "DD_APM_NON_LOCAL_TRAFFIC",
          "value": "true"
        }
      ]
    }
  ]
}

2. Activación de la monitorización de App and API Protection

Instala y configura el gem datadog en tu aplicación Ruby.

Añade el gem datadog a tu Gemfile:

gem 'datadog', '~> 2.0'

Configura la biblioteca de Datadog añadiendo un inicializador:

Datadog.configure do |c|
  c.service = 'your_service_name'
  c.env = Rails.env

  c.agent.host = 'your_agent_host'

  c.tracing.enabled = true

  # Tracing instrumentation for Rails has to be explicitly enabled
  c.tracing.instrument :rails

  c.appsec.enabled = true
  c.appsec.api_security.enabled = true

  # Rails instrumentation is required for App and API Protection
  c.appsec.instrument :rails
end

Añade el gem datadog a tu Gemfile y requiere la instrumentación automática:

gem 'datadog', '~> 2.0', require: 'datadog/auto_instrument'

Actualiza la definición de la tarea para incluir la configuración de App y API Protection:

{
  "containerDefinitions": [
    {
      "name": "your-app",
      "image": "your-app-image",
      "environment": [
        {
          "name": "DD_APPSEC_ENABLED",
          "value": "true"
        },
        {
          "name": "DD_API_SECURITY_ENABLED",
          "value": "true"
        },
        {
          "name": "DD_SERVICE",
          "value": "<YOUR_SERVICE_NAME>"
        },
        {
          "name": "DD_ENV",
          "value": "<YOUR_ENVIRONMENT>"
        }
      ],
      "command": [
        "bin/rails",
        "server"
      ]
    }
  ]
}

Para desactivar el rastreo de APM mientras se mantiene activada App and API Protection, debes establecer la configuración de rastreo de APM en false (falso).

Añade el gem datadog a tu Gemfile:

gem 'datadog', '~> 2.0'

Configura la biblioteca de Datadog añadiendo un inicializador:

Datadog.configure do |c|
  c.service = 'your_service_name'
  c.env = Rails.env

  c.agent.host = 'your_agent_host'

  # Disable APM Tracing
  c.tracing.enabled = false

  # Tracing instrumentation for Rails has to be explicitly enabled
  c.tracing.instrument :rails

  c.appsec.enabled = true
  c.appsec.api_security.enabled = true

  # Rails instrumentation is required for App and API Protection
  c.appsec.instrument :rails
end

Añade el gem datadog a tu Gemfile y requiere la instrumentación automática:

gem 'datadog', '~> 2.0', require: 'datadog/auto_instrument'

Actualiza la definición de la tarea para incluir la configuración de App and API Protection con el rastreo de APM desactivado:

{
  "containerDefinitions": [
    {
      "name": "your-app",
      "image": "your-app-image",
      "environment": [
        {
          "name": "DD_APPSEC_ENABLED",
          "value": "true"
        },
        {
          "name": "DD_API_SECURITY_ENABLED",
          "value": "true"
        },
        {
          "name": "DD_APM_TRACING_ENABLED",
          "value": "false"
        },
        {
          "name": "DD_SERVICE",
          "value": "<YOUR_SERVICE_NAME>"
        },
        {
          "name": "DD_ENV",
          "value": "<YOUR_ENVIRONMENT>"
        }
      ],
      "command": [
        "bin/rails",
        "server"
      ]
    }
  ]
}

3. Ejecuta tu aplicación

Despliega tu tarea de Fargate con la configuración actualizada:

aws ecs register-task-definition --cli-input-json file://task-definition.json
aws ecs run-task --cluster your-cluster --task-definition your-task-definition

4. Verificar la configuración

Para comprobar que App and API Protection funciona correctamente:

  1. Envía tráfico a tu aplicación.
  2. Comprueba el Inventario de servicio de App and API Protection en Datadog.
  3. Busca tu servicio y comprueba que App and API Protection está activada en la columna Coverage (Cobertura).

Solucionar problemas

Si tienes problemas al configurar App and API Protection para tu aplicación Ruby, consulta la Guía de solución de problemas de App and API Protection en Ruby.

Referencias adicionales