Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().

Vous pouvez activer la protection des applications et des API pour le proxy Envoy. L’intégration Datadog Envoy prend en charge la détection et le blocage des menaces.

Prérequis

Activation de la détection des menaces

Démarrer

L’intégration Envoy de protection des applications et des API utilise le filtre de traitement externe Envoy.

  1. Déployez un nouveau conteneur avec l’image Docker du processeur externe Datadog. L’image est disponible sur le registre GitHub de Datadog.

    Ce service est un serveur gRPC avec lequel Envoy communique pour faire analyser les requêtes et les réponses par la protection des applications et des API.

    Le processeur externe Datadog expose certains paramètres :

    Variable d’environnementValeur par défautDescription
    DD_SERVICE_EXTENSION_HOST0.0.0.0Adresse d’écoute du serveur gRPC.
    DD_SERVICE_EXTENSION_PORT443Port du serveur gRPC.
    DD_SERVICE_EXTENSION_HEALTHCHECK_PORT80Port du serveur HTTP pour les checks de santé.
    DD_APPSEC_BODY_PARSING_SIZE_LIMIT0Taille maximale des corps à traiter en octets. S’il est défini sur 0, les corps ne sont pas traités. La valeur recommandée est 10000000 (10 Mo). (Pour activer complètement le traitement du corps, l’option allow_mode_override doit également être définie dans la configuration du filtre de traitement externe)
    DD_SERVICE_EXTENSION_OBSERVABILITY_MODEfalseActiver l’analyse asynchrone. Cela désactive également les capacités de blocage. (Pour activer complètement le mode d’observabilité, cette option doit également être définie dans la configuration du filtre de traitement externe)
    DD_SERVICEserviceextensionsNom du service affiché dans l’interface utilisateur Datadog.

    Configurez le Datadog Agent pour recevoir les traces du processeur externe en utilisant les variables d’environnement suivantes :

    Variable d’environnementValeur par défautDescription
    DD_AGENT_HOSTlocalhostNom de host ou adresse IP de votre Datadog Agent.
    DD_TRACE_AGENT_PORT8126Port du Datadog Agent pour la collecte des traces.
  2. Mettez à jour votre configuration Envoy pour ajouter le filtre de traitement externe à votre liste http_filters, et définissez le cluster gRPC correspondant dans votre section clusters. Exemple :

Section des filtres HTTP

http_filters:
  # This filter should be the first filter in the filter chain
  - name: envoy.filters.http.ext_proc
    typed_config:
      "@type": type.googleapis.com/envoy.extensions.filters.http.ext_proc.v3.ExternalProcessor
      grpc_service:
        envoy_grpc:
          cluster_name: datadog_aap_ext_proc_cluster

        ## Mandatory: Correctly show the service as an Envoy proxy in the UI.
        initial_metadata:
          - key: x-datadog-envoy-integration
            value: '1'

        ## A timeout configuration for the grpc connection exist but is not useful in our case.
        ## This timeout is for all the request lifetime. A timeout on the route is preferred.
        #timeout: 0s

      ## Optional: Enable fail open mode. Default is false.
      ## Normally, if the external processor fails or times out, the filter fails and Envoy
      ## returns a 5xx error to the downstream client. Setting this to true allows requests
      ## to continue without error if a failure occurs.
      failure_mode_allow: true # It won't cause 5xx error if an error occurs.

      ## Mandatory: Only enable the request and response header modes.
      ## If you want to enable body processing, please see the section below.
      processing_mode:
        request_header_mode: SEND
        response_header_mode: SEND

      ## Optional for headers analysis only but **mandatory** for body processing.
      ## The external processor can dynamically override the processing mode as needed instructing
      ## Envoy to forward request and response bodies to the external processor. Body processing is
      ## enabled when DD_APPSEC_BODY_PARSING_SIZE_LIMIT is set on the external processor container.
      allow_mode_override: true

      ## Optional: Set a timeout by processing message. Default is 200ms.
      ## There is a maxium of 2 messages per requests with headers only and 4 messages maximum
      ## with body processing enabled.
      ## Note: This timeout also includes the data communication between Envoy and the external processor.
      ## Optional: When the body processing is enabled, the timeout should be adjusted to accommodate
      ## the additional possible processing time. Larger payloads will require a longer timeout. 
      #message_timeout: 200ms

      ## Optional: Enable asynchronous mode analysis. Default is false.
      ## This mode will disable all blocking capabilities. The external processor should also be
      ## configured with the DD_SERVICE_EXTENSION_OBSERVABILITY_MODE environment variable.
      ## Beware, there is no flow control implemented in Envoy
      ## (cf https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_proc/v3/ext_proc.proto#envoy-v3-api-field-extensions-filters-http-ext-proc-v3-externalprocessor-observability-mode)
      #observability_mode: true
      ## Optional: When in asynchronous mode, the message_timeout is not used. This deferred
      ## timeout starts when the http request is finished, to let the External Processor
      ## process all processing messages. Default is 5s.
      #deferred_close_timeout: 5s

  # ... other filters

Section des clusters

clusters:
    # ... other clusters
    - name: datadog_aap_ext_proc_cluster
      type: STRICT_DNS
      lb_policy: ROUND_ROBIN
      http2_protocol_options: {}
      transport_socket:
        name: envoy.transport_sockets.tls
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
          sni: "localhost"
      load_assignment:
        cluster_name: datadog_aap_ext_proc_cluster
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: 12.0.0.1 # Replace with the host address of the Datadog External Processor docker image (configured in the next step)
                      port_value: 443

Remarque : Veuillez lire attentivement l’exemple de configuration fourni et l’adapter à votre infrastructure et à votre environnement. Vous trouverez d’autres options de configuration disponibles dans la documentation du processeur externe Envoy.

  1. Validation.

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

  2. 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 send known attack patterns to it, threat information appears in the Application Signals Explorer and vulnerability information appears in the Vulnerabilities explorer.

Intégration de Datadog Go Tracer et d’Envoy

Le processeur externe est construit sur le Datadog Go Tracer et hérite de toutes les variables d’environnement du Datadog Go Tracer. Consultez Configuration du SDK Go et Configuration de la bibliothèque de protection des applications et des API.

Remarque : Comme le Datadog External Processor est construit sur le Datadog Go Tracer, il suit généralement le même processus de publication que ce dernier, et ses images Docker sont marquées avec la version correspondante du tracer (par exemple, v2.2.2). Dans certains cas, des versions préliminaires peuvent être publiées entre les versions officielles du Datadog Go Tracer, et ces images sont marquées avec un suffixe tel que -docker.1.

Limitations

L’intégration Envoy présente les limitations suivantes :

  • L’inspection des corps de requête et de réponse est prise en charge lors de l’utilisation de l’image du Datadog External Processor version v2.2.2 ou ultérieure.

Pour plus de détails sur les compatibilités de l’intégration Envoy, consultez la page de compatibilité de l’intégration Envoy.

Pour aller plus loin