Mise en route de la protection des applications et des API pour Go
Ce produit n'est pas pris en charge par le
site Datadog que vous avez sélectionné. (
).
App and API Protection est en préversion sur le site Datadog Government US1-FED.
Prérequis
Démarrez
Installez Orchestrion :
$ go install github.com/DataDog/orchestrion@latest
Enregistrez Orchestrion en tant que module Go dans le répertoire de votre projet :
Datadog fournit une série de packages enfichables qui offrent une prise en charge native pour l’instrumentation d’une série de bibliothèques et de frameworks Go. Une liste de ces packages est disponible dans Exigences de compatibilité. Importez ces packages dans votre application et suivez les instructions de configuration indiquées pour chaque intégration.
Recompilez votre programme avec Orchestrion en utilisant la build appsec :
$ orchestrion go build -tags=appsec my-program
Pour plus d’options sur l’utilisation d’Orchestrion, consultez Orchestrion usage.
Remarque : si vous compilez sans CGO sur Linux, consultez Compiler des applications Go avec CGO désactivé.
- Redéployez votre service Go et activez [App and API Protection] en définissant la variable d’environnement
DD_APPSEC_ENABLED sur true :
$ env DD_APPSEC_ENABLED=true ./my-program
Mettez à jour le fichier de configuration de déploiement de votre application pour l’APM et ajoutez la variable d’environnement suivante :
spec:
template:
spec:
containers:
- name: <CONTAINER_NAME>
image: <CONTAINER_IMAGE>/<TAG>
env:
- name: DD_APPSEC_ENABLED
value: "true"
Pour plus d’informations sur la façon de créer une image Docker adaptée, voir Creating a Dockerfile for App and API Protection for Go.
Mettez à jour le fichier JSON de définition de tâche ECS de votre application en utilisant cette section d’environnement :
"environment": [
...,
{
"name": "DD_APPSEC_ENABLED",
"value": "true"
}
]
Pour plus d’informations sur la façon de créer une image Docker adaptée, voir Creating a Dockerfile for App and API Protection for Go.
Vérifiez votre configuration
Pour vérifier qu’App and API Protection fonctionne correctement :
Pour voir la détection des menaces d’App and API Protection en action, envoyez des modèles d’attaque connus à votre application. Par exemple, déclenchez la règle Security Scanner Detected en exécutant un fichier contenant le script curl suivant :
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
Quelques minutes après avoir activé votre application et l’avoir utilisée, des informations sur les menaces apparaissent dans l’Application Trace and Signals Explorer de Datadog.
Construction sans CGO
Si vous compilez votre application Go sans CGO, vous pouvez toujours activer App and API Protection en suivant ces étapes :
- Ajoutez le tag de compilation
appsec lors de la compilation de votre application :$ CGO_ENABLED=0 orchestrion go build -tags appsec my-program
La désactivation de CGO garantit généralement un binaire lié statiquement. Ce ne sera pas le cas ici.
Installez libc.so.6, libpthread.so.0 et libdl.so.2 sur votre système, car ces bibliothèques sont requises par le WAF Datadog :
Cette installation peut être effectuée en installant le paquet glibc sur votre système avec votre gestionnaire de paquets. Voir Creating a Dockerfile for App and API Protection for Go.
Redéployez votre service Go avec la variable d’environnement DD_APPSEC_ENABLED=true définie, comme décrit ci-dessus.
Construction avec Bazel
Si vous utilisez Bazel et rules_go pour construire votre application Go, Orchestrion n’est pas compatible avec Bazel.
Au lieu de cela, vous pouvez utiliser le Datadog Go SDK pour instrumenter votre application manuellement.
App and API Protection s’appuie sur purego pour prendre en charge ses liaisons C++ vers le WAF de Datadog, ce qui nécessite une attention particulière au sein du repositories.bzl généré par Gazelle. Sous la règle go_repository pour com_github_ebitengine_purego,
vous devez ajouter l’attribut build_directives avec la directive gazelle:build_tags cgo. Exemple :
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",
)
Utilisation de [App and API Protection] sans traçage APM
Si vous souhaitez utiliser [App and API Protection] sans la fonctionnalité de traçage APM, vous pouvez déployer avec le traçage désactivé :
- Configurez votre SDK avec la variable d’environnement
DD_APM_TRACING_ENABLED=false en plus de la variable d’environnement DD_APPSEC_ENABLED=true. Cette configuration réduit la quantité de données APM envoyées à Datadog au minimum requis par les produits App and API Protection.
Pour plus de détails, consultez Standalone App and API Protection.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: