Update FIPS ingest docs for native Go FIPS 140-3 - #7818
Conversation
- Update framing from FIPS 140-2 (BoringCrypto) to FIPS 140-3 capable with Go's native FIPS module (GOFIPS140=v1.0.0, CMVP cert #5247) - Add EDOT (OpenTelemetry mode) limitations section covering Azure, Kafka, MongoDB, MySQL, SQL Server, Kerberos, API key auth, and GPG upgrade verification - Add sections for Auditbeat, Heartbeat, Packetbeat, and Winlogbeat (single limitation each: Azure/AWS PKCS#12 cert auth not supported) - Remove "OpenTelemetry mode not yet supported" — EDOT is now supported with documented limitations - Scope Fleet-managed integrations list explicitly; cross-reference EDOT - Clean up process language throughout (not yet, currently, for now) - Add TLS minimum key length and scope Kerberos section explicitly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Elastic Docs AI PR menuCheck the box to run an AI review for this pull request.
Powered by GitHub Agentic Workflows and docs-actions. For more information, reach out to the docs team. |
🔍 Preview links for changed docs |
✅ Elastic Docs Style Checker (Vale)No issues found on modified lines! The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale. |
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
shainaraskas
left a comment
There was a problem hiding this comment.
in what stack version do we become fips 140-3 compliant? this doc applies to all 9.x versions of the product, so I think we need to rethink how we're editing it so it serves all of our audiences.
adding ski docs as well because they have more ingest context
There was a problem hiding this comment.
spare key here - we need to delete these lines
applies_to:
deployment: ga
There was a problem hiding this comment.
this needs to be populated (I realize this was before your edits)
| - linking against a FIPS certified cryptographic library | ||
| - using only FIPS approved cryptographic functions | ||
| - ensuring that the configuration of the component is FIPS 140-2 compliant. | ||
| {{agent}}, {{fleet}}, {{filebeat}}, {{metricbeat}}, and {{apm-server}} are FIPS 140-3 capable. They use Go's native FIPS 140-3 module (`GOFIPS140=v1.0.0`, CMVP Certificate [#5247](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/5247)) for cryptographic operations. Specific components and configurations that fall outside the certified boundary are documented in the limitations sections below. |
There was a problem hiding this comment.
It's been a while since I've seen docs about FIPs, so take my suggestions with a grain of salt. From what I recall, FIPs-capable services or applications are slightly different from FIPs-compatible ones:
- FIPS capable: Underlying architecture supports FIPS encryption standards, but the service/app is not federally certified.
- FIPS compatible: Service/app can communicate with FIPS systems but might not be using FIPS encryption.
I've also seen these terms used interchangeably, so this might be a nitpicky observation on my part. Just wanted to raise this in case it really is something that needs to be consistent across these docs.
There was a problem hiding this comment.
I think it is very grey area and I took stricter/safer approach here, but the true is that our fips compliance depends a lot on configuration and set of the components being used. FIPS compatible is safer statement, but I believe FIPS capability can be also defended. The situation is not changing much between the previous and current builds, so I can move the narration more into FIPS capable direction
There was a problem hiding this comment.
I think I misread the intention of your comment/mixed with the other one, and after revisiting my change i think I will go back to previous wording
| ### TLS [ingest-limitations-tls] | ||
|
|
||
| Only FIPS 140-2 compliant TLS protocols, ciphers, and curve types are allowed to be used as listed below. | ||
| Only FIPS 140-3 compliant TLS protocols, ciphers, and curve types are allowed to be used as listed in the following section. |
There was a problem hiding this comment.
Continuing this comment, FIPS-compliant means something different as well.
There was a problem hiding this comment.
I agree, but regarding the protocols, ciphers and curve types, they are well defined in the FIPS and this section is more like summary than claiming anything about our code/config
| * `TLS v1.2`: `ECDHE-RSA-AES-128-GCM-SHA256`, `ECDHE-RSA-AES-256-GCM-SHA384`, `ECDHE-ECDSA-AES-128-GCM-SHA256`, `ECDHE-ECDSA-AES-256-GCM-SHA384` | ||
| * `TLS v1.3`: `TLS-AES-128-GCM-SHA256`, `TLS-AES-256-GCM-SHA384` | ||
| * The supported curve types are `P-256`, `P-384` and `P-521`. | ||
| * The minimum key length is 2048 bits for RSA keys. EC key size is determined by the curve in use; see the supported curve types above. |
There was a problem hiding this comment.
If you can link the docs that readers should refer to, that'd improve the UX here.
| * The minimum key length is 2048 bits for RSA keys. EC key size is determined by the curve in use; see the supported curve types above. | |
| * The minimum key length is 2048 bits for RSA keys. EC key size is determined by the curve in use. Refer to the supported curve types above. |
| Be sure to enforce security in your FIPS environments through other means, such as strict file permissions and access controls on the key file itself, for example. | ||
|
|
||
| These TLS related restrictions apply to all components listed--{{agent}}, {{fleet}}, {{filebeat}}, {{metricbeat}}, and {{apm-server}}. | ||
| These TLS related restrictions apply to all components listed in the preceding section. |
There was a problem hiding this comment.
Same comment here about linking directly to the relevant docs instead of using directional language. (Only if possible ofc)
Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com>
Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com>
Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com>
Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com>
Co-authored-by: Nastasha Solomon <79124755+nastasha-solomon@users.noreply.github.com>
- Fix frontmatter: remove duplicate applies_to key, remove empty navigation_title - Restore FIPS 140-2 intro for cumulative docs; tag FIPS 140-3 content with applies_to stack: ga 9.3+ and note patch versions (9.3.8, 9.4.4, 9.5.0) - Reword intro to "built and configured to use FIPS 140-3 compliant cryptography" (parallel with 140-2 framing) - Restore original default-configurations admonition wording - TLS section: replace directional language with CMVP #5247 link; tag minimum key length bullet for 9.3+; explicit component list in footer - Restore OTel-not-supported bullet scoped to 9.1-9.2; add section-level applies_to and patch version note to EDOT section - Remove version tag from GPG bullet (applies to all FIPS versions) - Restore "even if combined with other ingest tools" clause in integrations intro Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| - using only FIPS approved cryptographic functions | ||
| - ensuring that the configuration of the component is FIPS 140-2 compliant. | ||
|
|
||
| {applies_to}`stack: ga 9.3+` {{agent}}, {{fleet}}, {{filebeat}}, {{metricbeat}}, and {{apm-server}} binaries are built and configured to use FIPS 140-3 compliant cryptography via Go's native FIPS 140-3 module (`GOFIPS140=v1.0.0`, CMVP Certificate [#5247](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/5247)). This applies to patch versions 9.5.0, 9.4.4, and 9.3.8 and later. Specific components and configurations that fall outside the certified boundary are documented in the [Limitations](#ingest-limitations-all) section. |
There was a problem hiding this comment.
@shainaraskas @nastasha-solomon Is it correct usage of {applies_to} if we are referring to 9.5.0+, 9.4.4+, and 9.3.8+ ?
Summary
Updates the FIPS ingest documentation from the previous BoringCrypto/CGo-based FIPS 140-2 implementation to the current native Go FIPS 140-3 module (
GOFIPS140=v1.0.0, CMVP Certificate #5247). The native Go module changes the compliance model from "component excluded entirely from FIPS builds" to "component available with specific configurations not supported."Key changes:
Pre-publish checklist:
Generative AI disclosure
Tool(s) and model(s) used: Claude Sonnet 4.6 (Claude Code)