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

App and API Protection se encuentra en versión preliminar en el sitio de Datadog Government US1-FED.

Requisito previo

Comience

  1. Instale Orchestrion:

    $ go install github.com/DataDog/orchestrion@latest
    
  2. Registre Orchestrion como un módulo de Go en el directorio de su proyecto:

    $ orchestrion pin
    
  3. Datadog proporciona una serie de paquetes conectables que ofrecen soporte nativo para instrumentar una serie de bibliotecas y marcos de trabajo de Go. Puede encontrar una lista de estos paquetes en Requisitos de compatibilidad. Importe estos paquetes en su aplicación y siga las instrucciones de configuración que aparecen junto a cada integración.

  4. Recompile su programa con Orchestrion usando la compilación appsec:

    $ orchestrion go build -tags=appsec my-program
    

    Para obtener más opciones sobre cómo usar Orchestrion, consulte Uso de Orchestrion.

Nota: Si está compilando sin CGO en Linux, consulte Compilación de aplicaciones Go con CGO deshabilitado.

  1. Vuelva a desplegar su servicio Go y habilite la Protección de aplicaciones y API configurando la variable de entorno DD_APPSEC_ENABLED en true:
$ env DD_APPSEC_ENABLED=true ./my-program

Agregue el siguiente valor de variable de entorno a su línea de comandos de Docker:

$ docker run -e DD_APPSEC_ENABLED=true [...]

Para obtener más información sobre cómo crear una imagen de Docker adecuada, consulte Creación de un Dockerfile para la Protección de aplicaciones y API para Go.

Agregue el siguiente valor de variable de entorno al Dockerfile del contenedor de su aplicación:

ENV DD_APPSEC_ENABLED=true

Para obtener más información sobre cómo crear una imagen de Docker adecuada, consulte Creación de un Dockerfile para la Protección de aplicaciones y API para Go.

Actualice el archivo de configuración de despliegue de su aplicación para APM y agregue la siguiente variable de entorno:

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

Para obtener más información sobre cómo crear una imagen de Docker adecuada, consulte Creación de un Dockerfile para la Protección de aplicaciones y API para Go.

Actualice el archivo JSON de definición de tarea de ECS de su aplicación usando esta sección de entorno:

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

Para obtener más información sobre cómo crear una imagen de Docker adecuada, consulte Creación de un Dockerfile para la Protección de aplicaciones y API para Go.

Verifique su configuración

Para verificar que la Protección de aplicaciones y API esté funcionando correctamente:

Para ver la detección de amenazas de la Protección de aplicaciones y API en acción, envíe patrones de ataque conocidos a su aplicación. Por ejemplo, active la regla Security Scanner Detected ejecutando un archivo que contenga el siguiente script de curl:

for ((i=1;i<=250;i++));
do
  # Target existing service’s routes
  curl https://your-application-url/existing-route -A Arachni/v1.0;
  # Target non existing service’s routes
  curl https://your-application-url/non-existing-route -A Arachni/v1.0;
done

Unos minutos después de habilitar su aplicación y probarla, la información sobre amenazas aparece en el Application Trace and Signals Explorer en Datadog.

Compilación sin CGO

Si está compilando su aplicación Go sin CGO, aún puede habilitar App and API Protection siguiendo estos pasos:

  1. Agregue la etiqueta de compilación appsec al compilar su aplicación:
    $ CGO_ENABLED=0 orchestrion go build -tags appsec my-program
    
Deshabilitar CGO generalmente garantiza un binario vinculado estáticamente. Este no será el caso aquí.
  1. Instale libc.so.6, libpthread.so.0 y libdl.so.2 en su sistema, ya que estas bibliotecas son requeridas por el WAF de Datadog: Esta instalación se puede realizar instalando el paquete glibc en su sistema con su administrador de paquetes. Consulte Creación de un Dockerfile para la protección de aplicaciones y API de Go.

  2. Vuelva a desplegar su servicio Go con la variable de entorno DD_APPSEC_ENABLED=true configurada, como se describió anteriormente.

Compilación con Bazel

Si está utilizando Bazel y rules_go para compilar su aplicación Go, Orchestrion no es compatible con Bazel. En su lugar, puede utilizar el Datadog Go SDK para instrumentar su aplicación manualmente.

App and API Protection depende de purego para admitir sus enlaces de C++ al WAF de Datadog, lo cual requiere atención especial dentro del repositories.bzl generado por Gazelle. Bajo la regla go_repository para com_github_ebitengine_purego, Agregue el atributo build_directives con la directiva gazelle:build_tags cgo. Por ejemplo:

    go_repository(
        name = "com_github_ebitengine_purego",
        build_directives = [
            "gazelle:build_tags cgo",
        ]
        build_file_proto_mode = "disable",
        importpath = "github.com/ebitengine/purego",
        sum = "<your-checksum>",
        version = "v0.8.3",
    )

Uso de App and API Protection sin traza de APM

Si desea utilizar App and API Protection sin la funcionalidad de traza de APM, puede desplegar con la traza deshabilitada:

  1. Configure su SDK con la variable de entorno DD_APM_TRACING_ENABLED=false además de la variable de entorno DD_APPSEC_ENABLED=true. Esta configuración reduce la cantidad de datos de APM enviados a Datadog al mínimo requerido por los productos de App and API Protection.

Para obtener más detalles, consulte Standalone App and API Protection.

Lecturas adicionales