Introducción a la protección de aplicaciones y API para Go
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
Instale Orchestrion:
$ go install github.com/DataDog/orchestrion@latest
Registre Orchestrion como un módulo de Go en el directorio de su proyecto:
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.
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.
- 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
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.
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:
- 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í.
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.
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:
- 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
Documentación, enlaces y artículos útiles adicionales: