Activar Application & API Protection para Ruby

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

Puedes monitorizar la seguridad de las aplicaciones Ruby que se ejecutan en Docker, Kubernetes, Amazon ECS y AWS Fargate.

Prerequisites

Activar Application & API Protection

Para empezar

  1. Actualiza tu Gemfile para incluir la biblioteca de Datadog:

    gem 'datadog', '~> 2.0' # Use 'ddtrace' if you're using v1.x
    

    Para comprobar que las versiones del lenguaje y del marco de trabajo de tu servicio son compatibles con las funciones de Application & API Protection, consulta Compatibilidad.

    Para obtener más información sobre la actualización a la v2 desde una versión dd-trace 1.x, consulta la guía de actualización del rastreador Ruby.

  2. Activa Application & API Protection activando el rastreador de APM. Las siguientes opciones describen una configuración rápida que cubre los casos más comunes. Lee la documentación del rastreador de Ruby para obtener más detalles.

    Puedes activar Application & API Protection en tu código:

    Habilita el rastreador de APM añadiendo un inicializador en el código de la aplicación:

    # config/initializers/datadog.rb
    
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # enable the APM tracer but disable trace processing - for security-only use
      c.tracing.instrument :rails
      c.tracing.enabled = false
    
      # enable Application & API Protection
      c.appsec.enabled = true
      c.appsec.instrument :rails
    end
    

    O habilita el rastreador de APM a través de la instrumentación automática actualizando tu Gemfile para instrumentar automáticamente:

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

    Y también activar appsec y desactivar el rastreo:

    # config/initializers/datadog.rb
    
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # the APM tracer is enabled by auto-instrumentation
      c.tracing.enabled = false
    
      # enable Application & API Protection
      c.appsec.enabled = true
      c.appsec.instrument :rails
    end
    

    Habilita el rastreador de APM añadiendo lo siguiente al inicio de la aplicación:

    require 'sinatra'
    require 'datadog'
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # enable the APM tracer but disable trace processing - for security-only use
      c.tracing.instrument :sinatra
      c.tracing.enabled = false
    
      # enable Application & API Protection for Sinatra
      c.appsec.enabled = true
      c.appsec.instrument :sinatra
    end
    

    O habilita el rastreador de APM a través de la instrumentación automática:

    require 'sinatra'
    require 'datadog/auto_instrument'
    
    Datadog.configure do |c|
      # the APM tracer is enabled by auto-instrumentation
      c.tracing.enabled = false
    
      # enable Application & API Protection for Sinatra
      c.appsec.enabled = true
      c.appsec.instrument :sinatra
    end
    

    Habilita el rastreador de APM añadiendo lo siguiente al archivo config.ru:

    require 'datadog'
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # enable the APM tracer but disable trace processing - for security-only use
      c.tracing.instrument :rack
      c.tracing.enabled = false
    
      # enable Application & API Protection for Rack
      c.appsec.enabled = true
      c.appsec.instrument :rack
    end
    
    use Datadog::Tracing::Contrib::Rack::TraceMiddleware
    use Datadog::AppSec::Contrib::Rack::RequestMiddleware
    

    O uno de los siguientes métodos, dependiendo de dónde se ejecute la aplicación:

    Actualiza tu contenedor de configuración para APM añadiendo los siguientes argumentos en tu comando docker run:

    docker run [...] -e DD_APPSEC_ENABLED=true -e DD_APM_TRACING_ENABLED=false [...]
    

    Añade los siguientes valores de variable de entorno a tu archivo de contenedor de Docker:

    ENV DD_APPSEC_ENABLED=true
    ENV DD_APM_TRACING_ENABLED=false
    

    Actualiza el contenedor de tu archivo yaml de configuración para APM y añade las variables de entorno:

    spec:
      template:
        spec:
          containers:
            - name: <CONTAINER_NAME>
              image: <CONTAINER_IMAGE>/<TAG>
              env:
                - name: DD_APPSEC_ENABLED
                  value: "true"
                - name: DD_APM_TRACING_ENABLED
                  value: "false"
    

    Actualiza tu archivo JSON de definición de tareas de ECS, añadiendo esto en la sección de entorno:

    "environment": [
      ...,
      {
        "name": "DD_APPSEC_ENABLED",
        "value": "true"
      },
      {
        "name": "DD_APM_TRACING_ENABLED",
        "value": "false"
      }
    ]
    

    Inicializa Application & API Protection en tu código o establece las variables de entorno en tu invocación de servicio:

    env DD_APPSEC_ENABLED=true DD_APM_TRACING_ENABLED=false rails server
    

    The library collects security data from your application and sends it to the Agent, which sends it to Datadog, where out-of-the-box detection rules flag attacker techniques and potential misconfigurations so you can take steps to remediate.

  3. To see App and API Protection threat detection in action, send known attack patterns to your application. For example, trigger the Security Scanner Detected rule by running a file that contains the following curl script:

    for ((i=1;i<=250;i++)); 
    do
    # Target existing service’s routes
    curl https://your-application-url/existing-route -A dd-test-scanner-log;
    # Target non existing service’s routes
    curl https://your-application-url/non-existing-route -A dd-test-scanner-log;
    done

    Note: The dd-test-scanner-log value is supported in the most recent releases.

    A few minutes after you enable your application and exercise it, threat information appears in the Application Trace and Signals Explorer in Datadog.

Referencias adicionales