Skip to content

Update FIPS ingest docs for native Go FIPS 140-3 - #7818

Open
macdewee wants to merge 3 commits into
mainfrom
drosiek-fips-ingest-native
Open

Update FIPS ingest docs for native Go FIPS 140-3#7818
macdewee wants to merge 3 commits into
mainfrom
drosiek-fips-ingest-native

Conversation

@macdewee

@macdewee macdewee commented Aug 6, 2026

Copy link
Copy Markdown

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:

  • Framing updated from "FIPS 140-2 compliant" to "FIPS 140-3 capable" throughout; CMVP certificate reference added.
  • New section: Elastic Agent in OpenTelemetry mode (EDOT) — removes the "OTel mode not yet supported" statement and documents actual limitations: Azure PKCS#12 cert auth, Kafka SCRAM, MongoDB/MySQL/SQL Server receivers not supported, Kerberos for beat receivers, API key auth extension, and GPG upgrade verification.
  • Elastic Integrations list scoped explicitly to Fleet-managed integrations with cross-reference to the EDOT section, resolving the apparent contradiction between the two sections for Azure.
  • TLS section updated to FIPS 140-3, minimum RSA key length added, Kerberos section scoped to avoid ambiguity with EDOT.
  • Process language cleaned up throughout ("not yet supported", "currently not supported", "not supported for now").

Pre-publish checklist:

  • Confirm reason Elastic Defend appears in the incompatible integrations list
  • Confirm APM Server section is complete (single limitation: Secrets Keystore)

Generative AI disclosure

  1. Did you use a generative AI (GenAI) tool to assist in creating this contribution?
  • Yes

Tool(s) and model(s) used: Claude Sonnet 4.6 (Claude Code)

- 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>
@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Elastic Docs AI PR menu

Check the box to run an AI review for this pull request.

  • Review docs changes (docs-review). Status: not started.

Powered by GitHub Agentic Workflows and docs-actions. For more information, reach out to the docs team.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

🔍 Preview links for changed docs

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

✅ 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>
@macdewee
macdewee marked this pull request as ready for review August 6, 2026 11:14
@macdewee
macdewee requested a review from a team as a code owner August 6, 2026 11:14
@macdewee
macdewee requested a review from ebeahan August 6, 2026 11:26

@shainaraskas shainaraskas left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@shainaraskas
shainaraskas requested a review from a team August 6, 2026 17:04
Comment on lines 2 to 3
applies_to:
deployment: ga

@shainaraskas shainaraskas Aug 6, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

spare key here - we need to delete these lines

applies_to:
  deployment: ga

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Continuing this comment, FIPS-compliant means something different as well.

* `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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you can link the docs that readers should refer to, that'd improve the UX here.

Suggested change
* 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.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here about linking directly to the relevant docs instead of using directional language. (Only if possible ofc)

### General output and input limitations (Kerberos protocol) [ingest-inputoutput-limitations]

The Kerberos protocol is not supported for any output or input, which also impacts the available `sasl.mechanism` for the Kafka output where only `PLAIN` is supported.
The Kerberos protocol is not supported for outputs and inputs in Filebeat, Metricbeat, APM Server, and Fleet Server configurations. This also restricts the available `sasl.mechanism` for the Kafka output, where only `PLAIN` is supported.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The Kerberos protocol is not supported for outputs and inputs in Filebeat, Metricbeat, APM Server, and Fleet Server configurations. This also restricts the available `sasl.mechanism` for the Kafka output, where only `PLAIN` is supported.
The Kerberos protocol is not supported for outputs and inputs in {{filebeat}}, {{metricbeat}}, {{apm-server}}, and {{fleet-server}} configurations. This also restricts the available `sasl.mechanism` for the Kafka output, where only `PLAIN` is supported.

* The [MySQL](beats://reference/metricbeat/metricbeat-module-mysql.md), [PostgreSQL](beats://reference/metricbeat/metricbeat-module-postgresql.md), [MSSQL](beats://reference/metricbeat/metricbeat-module-mssql.md) and [SQL](beats://reference/metricbeat/metricbeat-module-sql.md) modules are not supported.
* The [Oracle module](beats://reference/metricbeat/metricbeat-module-oracle.md) is not supported.

### Elastic Agent and Fleet Server [ingest-limitations-agent]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Elastic Agent and Fleet Server [ingest-limitations-agent]
### {{agent}} and {{fleet-server}} [ingest-limitations-agent]

* Some Elastic Integrations are not FIPS compatible, as they depend on functionality that is not supported for FIPS configuration. In general, when using {{agent}} and {{fleet-server}}, the same restrictions listed previously for {{metricbeat}} and {{filebeat}} modules, inputs, and processors apply.
* Agent upgrade artifact verification uses GPG signature checking, which is outside Go's certified FIPS module boundary.

### Elastic Agent in OpenTelemetry mode (EDOT) [ingest-limitations-edot]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Elastic Agent in OpenTelemetry mode (EDOT) [ingest-limitations-edot]
### {{agent}} in OpenTelemetry mode (EDOT) [ingest-limitations-edot]

### Elastic Integrations that are not FIPS compatible [ingest-limitations-integrations]

These Elastic Integrations have components that are **not** FIPS compatible, and **cannot** be used in FIPS environments, even if combined with other ingest tools that offer FIPS mode.
The following Elastic Integrations (Fleet-managed) use cryptographic implementations outside Go's certified FIPS module boundary for core functionality and **cannot** be used in FIPS environments. For EDOT-specific limitations, see [Elastic Agent in OpenTelemetry mode (EDOT)](#ingest-limitations-edot).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The following Elastic Integrations (Fleet-managed) use cryptographic implementations outside Go's certified FIPS module boundary for core functionality and **cannot** be used in FIPS environments. For EDOT-specific limitations, see [Elastic Agent in OpenTelemetry mode (EDOT)](#ingest-limitations-edot).
The following Elastic Integrations (Fleet-managed) use cryptographic implementations outside Go's certified FIPS module boundary for core functionality and **cannot** be used in FIPS environments. For EDOT-specific limitations, refer to [Elastic Agent in OpenTelemetry mode (EDOT)](#ingest-limitations-edot).

* **MongoDB receiver**: Not supported in FIPS mode.
* **MySQL receiver**: Not supported in FIPS mode.
* **Microsoft SQL Server receiver**: Not supported in FIPS mode.
* **Kerberos authentication for beat receivers**: Kerberos/GSSAPI authentication for beat receivers (Filebeat receiver, Metricbeat receiver) is not supported.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* **Kerberos authentication for beat receivers**: Kerberos/GSSAPI authentication for beat receivers (Filebeat receiver, Metricbeat receiver) is not supported.
* **Kerberos authentication for beat receivers**: Kerberos/GSSAPI authentication for beat receivers ({{filebeat}} receiver, {{metricbeat}} receiver) is not supported.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants