Skip to content

Commit 9d4b409

Browse files
AWS Lambda FIPS
1 parent 104abca commit 9d4b409

File tree

9 files changed

+177
-2
lines changed

9 files changed

+177
-2
lines changed

content/en/serverless/aws_lambda/configuration.md

+35-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ First, [install][1] Datadog Serverless Monitoring to begin collecting metrics, t
3333
- [Collect Profiling data](#collect-profiling-data)
3434
- [Send telemetry over PrivateLink or proxy](#send-telemetry-over-privatelink-or-proxy)
3535
- [Send telemetry to multiple Datadog organizations](#send-telemetry-to-multiple-datadog-organizations)
36+
- [Enable FIPS compliance](#enable-fips-compliance)
3637
- [Propagate trace context over AWS resources](#propagate-trace-context-over-aws-resources)
3738
- [Merge X-Ray and Datadog traces](#merge-x-ray-and-datadog-traces)
3839
- [Enable AWS Lambda code signing](#enable-aws-lambda-code-signing)
@@ -350,9 +351,9 @@ To see what libraries and frameworks are automatically instrumented by the Datad
350351

351352
To manage the [APM traced invocation sampling rate][17] for serverless functions, set the `DD_TRACE_SAMPLING_RULES` environment variable on the function to a value between 0.000 (no tracing of Lambda function invocations) and 1.000 (trace all Lambda function invocations).
352353

353-
**Notes**:
354+
**Notes**:
354355
- The use of `DD_TRACE_SAMPLE_RATE` is deprecated. Use `DD_TRACE_SAMPLING_RULES` instead. For instance, if you already set `DD_TRACE_SAMPLE_RATE` to `0.1`, set `DD_TRACE_SAMPLING_RULES` to `[{"sample_rate":0.1}]` instead.
355-
- Overall traffic metrics such as `trace.<OPERATION_NAME>.hits` are calculated based on sampled invocations *only* in Lambda.
356+
- Overall traffic metrics such as `trace.<OPERATION_NAME>.hits` are calculated based on sampled invocations *only* in Lambda.
356357

357358
For high throughput services, there's usually no need for you to collect every single request as trace data is very repetitive—an important enough problem should always show symptoms in multiple traces. [Ingestion controls][18] help you to have the visibility that you need to troubleshoot problems while remaining within budget.
358359

@@ -576,6 +577,38 @@ The Datadog Extension supports decrypting [AWS KMS][41] values automatically for
576577

577578
For more advanced usage, see the [Dual Shipping guide][32].
578579

580+
## Enable FIPS compliance
581+
582+
<div class="alert alert-info">For a complete overview of FIPS compliance for AWS Lambda functions, refer to the dedicated <a href="/serverless/aws_lambda/fips-compliance">AWS Lambda FIPS Compliance</a> page.</div>
583+
584+
To enable FIPS compliance for AWS Lambda functions, follow these steps:
585+
586+
1. Use a FIPS-compliant extension layer by referencing the appropriate ARN:
587+
588+
```sh
589+
# Use this format for x86-based Lambda deployed in AWS GovCloud regions
590+
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-FIPS:{{< latest-lambda-layer-version layer="extension" >}}
591+
592+
# Use this format for arm64-based Lambda deployed in AWS GovCloud regions
593+
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM-FIPS:{{< latest-lambda-layer-version layer="extension" >}}
594+
595+
# Use this format for x86-based Lambda deployed in AWS commercial regions
596+
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-FIPS:{{< latest-lambda-layer-version layer="extension" >}}
597+
598+
# Use this format for arm64-based Lambda deployed in AWS commercial regions
599+
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-ARM-FIPS:{{< latest-lambda-layer-version layer="extension" >}}
600+
```
601+
602+
2. For Lambda functions using Python, JavaScript, or Go, set the environment variable `DD_LAMBDA_FIPS_MODE` to `true`. This environment variable:
603+
- Disables direct metric submission
604+
- Uses AWS FIPS endpoints for API key lookups
605+
- Is enabled by default in GovCloud environments
606+
607+
3. For Lambda functions using Ruby, .NET, or Java, no additional environment variable configuration is needed, as these runtimes do not make direct API calls.
608+
609+
4. Configure your Lambda function to use the US1-FED Datadog site:
610+
- Set the `DD_SITE` to `ddog-gov.com` (required for FIPS compliance)
611+
579612
## Propagate trace context over AWS resources
580613

581614
Datadog automatically injects the trace context into outgoing AWS SDK requests and extracts the trace context from the Lambda event. This enables Datadog to trace a request or transaction over distributed services. See [Serverless Trace Propagation][33].
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
---
2+
title: AWS Lambda FIPS Compliance
3+
further_reading:
4+
- link: '/serverless/aws_lambda/installation/'
5+
tag: 'Documentation'
6+
text: 'Install Serverless Monitoring for AWS Lambda'
7+
- link: '/serverless/aws_lambda/configuration/'
8+
tag: 'Documentation'
9+
text: 'Configure Serverless Monitoring for AWS Lambda'
10+
algolia:
11+
rank: 80
12+
tags: ["fips", "compliance", "fedramp", "govcloud", "aws lambda"]
13+
---
14+
15+
{{< site-region region="us,us3,us5,eu,ap1" >}}
16+
<div class="alert alert-warning">The FIPS-compliant Datadog Lambda extension is available all AWS regions but should only be used for sending data to the US1-FED region.</div>
17+
{{< /site-region >}}
18+
19+
Datadog provides FIPS-compliant monitoring for AWS Lambda functions through the use of FIPS-certified cryptographic modules and specially designed Lambda extension layers.
20+
21+
## FIPS-Compliant Components
22+
23+
Datadog's FIPS compliance for AWS Lambda is implemented through two main components:
24+
25+
1. **FIPS-Compliant Lambda Extension**:
26+
- The "compatibility" version of the extension is a Go binary built using the [BoringCrypto FIPS-certified module](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4407).
27+
- The "optimized" version of the extension is a Rust binary built with the [AWS-LC FIPS-certified cryptographic module](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4816).
28+
29+
2. **Runtime Libraries Support**:
30+
- The Python and JavaScript Datadog Lambda Layers, and the Go Datadog Lambda Library offer FIPS-compliant operation controlled by the `DD_LAMBDA_FIPS_MODE` environment variable.
31+
- When FIPS mode is enabled, the runtime libraries use AWS FIPS endpoints for Datadog API key retrieval and disable direct metric submission to Datadog.
32+
33+
## FIPS Extension Layers
34+
35+
Datadog provides separate Lambda extension layers for FIPS compliance in both x86 and ARM architectures:
36+
37+
{{< tabs >}}
38+
{{% tab "AWS GovCloud Regions" %}}
39+
40+
```
41+
# For x86-based Lambda deployed in AWS GovCloud regions
42+
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-FIPS:{{< latest-lambda-layer-version layer="extension" >}}
43+
44+
# For arm64-based Lambda deployed in AWS GovCloud regions
45+
arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension-ARM-FIPS:{{< latest-lambda-layer-version layer="extension" >}}
46+
```
47+
48+
Replace `<AWS_REGION>` with a valid AWS GovCloud region such as `us-gov-west-1`.
49+
50+
{{% /tab %}}
51+
{{% tab "AWS Commercial Regions" %}}
52+
53+
```
54+
# For x86-based Lambda deployed in AWS commercial regions
55+
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-FIPS:{{< latest-lambda-layer-version layer="extension" >}}
56+
57+
# For arm64-based Lambda deployed in AWS commercial regions
58+
arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension-ARM-FIPS:{{< latest-lambda-layer-version layer="extension" >}}
59+
```
60+
61+
Replace `<AWS_REGION>` with a valid AWS region such as `us-east-1`.
62+
63+
{{% /tab %}}
64+
{{< /tabs >}}
65+
66+
## Runtime Support
67+
68+
### Python, JavaScript, and Go
69+
70+
For Python, JavaScript, and Go Lambda functions, FIPS compliance is controlled using the `DD_LAMBDA_FIPS_MODE` environment variable:
71+
72+
- In GovCloud environments, `DD_LAMBDA_FIPS_MODE` defaults to `true`.
73+
- In commercial regions, `DD_LAMBDA_FIPS_MODE` defaults to `false`.
74+
75+
When FIPS mode is enabled:
76+
77+
- AWS FIPS endpoints are used for Datadog API key lookups in AWS secure datastores.
78+
- Direct metric submission to the Datadog API is disabled, requiring the FIPS-compliant extension or forwarder for metric submission.
79+
80+
### Ruby, .NET, and Java
81+
82+
Ruby, .NET, and Java runtime libraries do not require the `DD_LAMBDA_FIPS_MODE` environment variable as these runtimes do not:
83+
84+
- Contact AWS APIs directly
85+
- Send metrics directly to Datadog
86+
87+
## Installation and Configuration
88+
89+
To use FIPS-compliant monitoring for your AWS Lambda functions:
90+
91+
1. **Select the FIPS-compliant extension layer**:
92+
- Use the appropriate FIPS extension layer ARN for your architecture (x86 or ARM) and region (commercial or GovCloud)
93+
94+
2. **Configure environment variables**:
95+
- For GovCloud environments, `DD_LAMBDA_FIPS_MODE` is enabled by default
96+
- For commercial regions, set `DD_LAMBDA_FIPS_MODE=true` to enable FIPS mode
97+
- Set `DD_SITE` to `ddog-gov.com` to send data to the US1-FED site
98+
99+
3. **Follow the standard installation instructions**:
100+
- Refer to the [installation guides][1] for language-specific configurations
101+
- Use the FIPS extension layer ARNs instead of the standard extension layers
102+
103+
For detailed installation instructions specific to your language runtime and deployment method, see the [installation documentation][1].
104+
105+
## Limitations and Considerations
106+
107+
- **US1-FED Region**: The FIPS-compliant Lambda components should only be used for sending telemetry to the US1-FED region (`ddog-gov.com`).
108+
109+
- **Customer Responsibility**: You, the Datadog customer, are responsible for:
110+
- The security posture of your own Lambda function code
111+
- Ensuring all other code you may be running in your Lambda execution environment maintains FIPS compliance as required
112+
113+
- **FIPS Compliance Scope**: FIPS compliance only applies to communication between the Datadog Lambda components and Datadog's intake API endpoints. Other forms of communication originating from or terminating at your Lambda functions are not made FIPS-compliant by this solution.
114+
115+
- **Version Requirements**: Use the latest versions of the Datadog Lambda extension and libraries to ensure full functionality and up-to-date security.
116+
117+
## Further Reading
118+
119+
- [Agent FIPS Compliance][2] - Note: these guidelines apply to Agent deployments only and not to serverless environments.
120+
- [AWS Lambda Security Overview][3] - AWS's documentation on Lambda security and compliance.
121+
122+
123+
[1]: /serverless/aws_lambda/installation/
124+
[2]: /agent/configuration/fips-compliance/
125+
[3]: https://docs.aws.amazon.com/whitepapers/latest/security-overview-aws-lambda/lambda-and-compliance.html

content/en/serverless/aws_lambda/installation/_index.md

+5
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ For the detailed installation instructions, select the Lambda runtime below:
3030

3131
{{< partial name="serverless/getting-started-languages.html" >}}
3232

33+
## FIPS Compliance Support
34+
35+
Datadog provides FIPS-compliant monitoring for AWS Lambda functions through dedicated FIPS-compliant Lambda extension layers and runtime-specific configurations. If you need to maintain FIPS compliance while monitoring your Lambda functions, see the [AWS Lambda FIPS Compliance][4] documentation page for details.
36+
3337
## Advanced Configurations
3438

3539
After you're done with installation and you've set up telemetry collection, you can use [advanced configurations][3] to:
@@ -47,3 +51,4 @@ After you're done with installation and you've set up telemetry collection, you
4751
[1]: https://app.datadoghq.com/signup/
4852
[2]: https://app.datadoghq.com/signup/agent#lambda
4953
[3]: /serverless/configuration/
54+
[4]: /serverless/aws_lambda/fips-compliance/

content/en/serverless/aws_lambda/installation/dotnet.md

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ further_reading:
1818

1919
<div class="alert alert-info">Version 67+ of the Datadog Lambda Extension uses an optimized version of the extension. <a href="#minimize-cold-start-duration">Read more</a>.</div>
2020

21+
<div class="alert alert-info">For FIPS compliance, use the Datadog FIPS-compliant extension layer, but note that the .NET runtime layer does not require additional configuration. See <a href="/serverless/aws_lambda/fips-compliance">AWS Lambda FIPS Compliance</a> for more details.</div>
22+
2123
## Installation
2224

2325
<div class="alert alert-info">A sample application is <a href="https://github.com/DataDog/serverless-sample-app/tree/main/src/order-service">available on GitHub</a> with instructions on how to deploy with multiple runtimes and infrastructure as code tools.</div>

content/en/serverless/aws_lambda/installation/go.md

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ aliases:
2121

2222
<div class="alert alert-info">Version 67+ of the Datadog Lambda Extension uses an optimized version of the extension. <a href="#minimize-cold-start-duration">Read more</a>.</div>
2323

24+
<div class="alert alert-info">Datadog provides FIPS-compliant monitoring for AWS Lambda functions. For GovCloud environments, the <code>DD_LAMBDA_FIPS_MODE</code> environment variable is enabled by default. When FIPS mode is enabled, AWS FIPS endpoints are used for Datadog API key lookups, and direct metric submission is disabled. See <a href="/serverless/aws_lambda/fips-compliance">AWS Lambda FIPS Compliance</a> for more details.</div>
25+
2426
## Installation
2527

2628
<div class="alert alert-info">A sample application is <a href="https://github.com/DataDog/serverless-sample-app/tree/main/src/product-management-service">available on GitHub</a> with instructions on how to deploy with multiple runtimes and infrastructure as code tools.</div>

content/en/serverless/aws_lambda/installation/java.md

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ aliases:
1717

1818
<div class="alert alert-info">Version 67+ of the Datadog Lambda Extension uses an optimized version of the extension. <a href="#minimize-cold-start-duration">Read more</a>.</div>
1919

20+
<div class="alert alert-info">For FIPS compliance, use the Datadog FIPS-compliant extension layer, but note that the Java runtime layer does not require additional configuration. See <a href="/serverless/aws_lambda/fips-compliance">AWS Lambda FIPS Compliance</a> for more details.</div>
21+
2022
To fully instrument your serverless application with distributed tracing, your Java Lambda functions must be using the Java 8 Corretto (`java8.al2`), Java 11 (`java11`), Java 17 (`java17`), or Java 21 (`java21`) runtimes with at least 1024 MB of memory.
2123

2224
If your Lambda functions are deployed in a VPC without access to the public internet, you can send data either [using AWS PrivateLink][6] for the `datadoghq.com` [Datadog site][7], or [using a proxy][8] for all other sites.

content/en/serverless/aws_lambda/installation/nodejs.md

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ aliases:
2727

2828
<div class="alert alert-info">Version 67+ of the Datadog Lambda Extension uses an optimized version of the extension. <a href="#minimize-cold-start-duration">Read more</a>.</div>
2929

30+
<div class="alert alert-info">Datadog provides FIPS-compliant monitoring for AWS Lambda functions. For GovCloud environments, the <code>DD_LAMBDA_FIPS_MODE</code> environment variable is enabled by default. When FIPS mode is enabled, AWS FIPS endpoints are used for Datadog API key lookups, and direct metric submission is disabled. See <a href="/serverless/aws_lambda/fips-compliance">AWS Lambda FIPS Compliance</a> for more details.</div>
31+
3032
## Installation
3133

3234
<div class="alert alert-info">A sample application is <a href="https://github.com/DataDog/serverless-sample-app/tree/main/src/loyalty-point-service">available on GitHub</a> with instructions on how to deploy with multiple runtimes and infrastructure as code tools.</div>

content/en/serverless/aws_lambda/installation/python.md

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ algolia:
2424

2525
<div class="alert alert-info">Version 67+ of the Datadog Lambda Extension uses an optimized version of the extension. <a href="#minimize-cold-start-duration">Read more</a>.</div>
2626

27+
<div class="alert alert-info">Datadog provides FIPS-compliant monitoring for AWS Lambda functions. For GovCloud environments, the <code>DD_LAMBDA_FIPS_MODE</code> environment variable is enabled by default. When FIPS mode is enabled, AWS FIPS endpoints are used for Datadog API key lookups, and direct metric submission is disabled. See <a href="/serverless/aws_lambda/fips-compliance">AWS Lambda FIPS Compliance</a> for more details.</div>
28+
2729
## Installation
2830

2931
Datadog offers many different ways to enable instrumentation for your serverless applications. Choose a method below that best suits your needs. Datadog generally recommends using the Datadog CLI. You *must* follow the instructions for "Container Image" if your application is deployed as a container image.

content/en/serverless/aws_lambda/installation/ruby.md

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ aliases:
2424

2525
<div class="alert alert-info">Version 67+ of the Datadog Lambda Extension uses an optimized version of the extension. <a href="#minimize-cold-start-duration">Read more</a>.</div>
2626

27+
<div class="alert alert-info">For FIPS compliance, use the Datadog FIPS-compliant extension layer, but note that the Ruby runtime layer does not require additional configuration. See <a href="/serverless/aws_lambda/fips-compliance">AWS Lambda FIPS Compliance</a> for more details.</div>
28+
2729
## Installation
2830

2931
Datadog offers many different ways to enable instrumentation for your serverless applications. Choose a method below that best suits your needs. Datadog generally recommends using the Datadog CLI. You *must* follow the instructions for "Container Image" if your application is deployed as a container image.

0 commit comments

Comments
 (0)