You can monitor the security of your Python apps running in Docker, Kubernetes, Amazon ECS, and AWS Fargate.
Prerequisites
Enabling threat detection
Get started
Update your Datadog Python library package to at least version 1.2.2. Run the following:
pip install --upgrade ddtrace
To check that your service’s language and framework versions are supported for AAP capabilities, see Compatibility.
Enable AAP when starting the Python application.
DD_APPSEC_ENABLED=true ddtrace-run python app.py
You can also use one of the following methods, depending on where your application runs:
Update your configuration container for APM by adding the following argument in your docker run
command:
docker run [...] -e DD_APPSEC_ENABLED=true [...]
Add the following environment variable value to your container Dockerfile:
ENV DD_APPSEC_ENABLED=true
Update your configuration YAML file container for APM and add the DD_APPSEC_ENABLED
environment variable:
spec:
template:
spec:
containers:
- name: <CONTAINER_NAME>
image: <CONTAINER_IMAGE>/<TAG>
env:
- name: DD_APPSEC_ENABLED
value: "true"
Update your ECS task definition JSON file by adding the following in the environment section:
"environment": [
...,
{
"name": "DD_APPSEC_ENABLED",
"value": "true"
}
]
Initialize AAP in your code or set the DD_APPSEC_ENABLED
environment variable to true
in your service invocation:
DD_APPSEC_ENABLED=true ddtrace-run python app.py
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.
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.
Using AAP without APM tracing
If you want to use Application & API Protection without APM tracing functionality, you can deploy with tracing disabled:
- Configure your tracing library with the
DD_APM_TRACING_ENABLED=false
environment variable in addition to the DD_APPSEC_ENABLED=true
environment variable. - This configuration will reduce the amount of APM data sent to Datadog to the minimum required by App and API Protection products.
For more details, see [Standalone App and API Protection][standalone_billing_guide].
[standalone_billing_guide]: /security/application_security/guide/standalone_application_security/
Further Reading
Additional helpful documentation, links, and articles: