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

  1. Installez Orchestrion :

    $ go install github.com/DataDog/orchestrion@latest
    
  2. Enregistrez Orchestrion en tant que module Go dans le répertoire de votre projet :

    $ orchestrion pin
    
  3. 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.

  4. 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é.

  1. 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

Ajoutez la valeur de variable d’environnement suivante à votre ligne de commande Docker :

$ docker run -e DD_APPSEC_ENABLED=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.

Ajoutez la valeur de variable d’environnement suivante au Dockerfile de votre conteneur d’application :

ENV DD_APPSEC_ENABLED=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 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 :

  1. 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.
  1. 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.

  2. 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é :

  1. 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