-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to get Vector to use the FIPS AWS endpoints #18382
Comments
This uses the default provider for FIPS which checks environment variables and configuration files for this setting. Part of: #18382 Signed-off-by: Jesse Szwedko <jesse.szwedko@datadoghq.com>
Thanks for reporting this @alex-rowe ! I was able to confirm it. I opened #18390 to have Vector honor the FIPS configuration for service access (AWS Kinesis Streams in your case). I actually can't figure out how to have the SDK use the FIPS endpoints for fetching credentials via STS though. I opened a discussion upstream to get thoughts: awslabs/aws-sdk-rust#880 . This might be a missing feature from the Rust SDK. |
Thanks @jszwedko for taking a look at this. In the Rust SDK, for the https://github.com/awslabs/aws-sdk-rust/blob/main/sdk/sts/src/config/endpoint/internals.rs#L19 And from here to use regional endpoints for STS and FIPS if enabled and the region supports is https://github.com/awslabs/aws-sdk-rust/blob/main/sdk/sts/src/config/endpoint/internals.rs#L315 And here for the STS builder config https://github.com/awslabs/aws-sdk-rust/blob/main/sdk/sts/src/config.rs#L604 Is the issue that the main AWS SDK setting for |
Hi @alex-rowe ! Thanks for taking a look. In this case, we aren't accessing the STS service directly and so aren't building an STS SDK config. Instead it is accessed through the I'm not seeing a way to have that provider use the FIPS endpoints. The Rust SDK maintainers have historically been pretty responsive so I'm hoping they chime in on the GitHub Discussion I opened soon. |
It looks like this was indeed a bug in the Rust SDK. They opened awslabs/aws-sdk-rust#882 to track it. |
@jszwedko we've worked with AWS to get the patch resolved in the Rust SDK and it's in the Once that release comes out, what is the process/timeline for it to be included in Vector? |
It's available now https://github.com/awslabs/aws-sdk-rust/releases/tag/release-2023-11-02
Would it be best to create a new issue to track the SDK update, or would that be included in this to make it fully use the FIPS endpoints? |
@jszwedko I can see the next version of Vector was released and it's on I also saw this comment on a previous dependabot pr #17510 (comment) and that referenced SDK issue is also now closed.
|
Hey! Yes, we plan to try to update the AWS SDK by the end of this year now that the upstream issue we had forked to address has been fixed. This means it probably won't make it into the next release, but probably v0.36.0 in January unless we run into many issues upgrading (we anticipate some non-trivial efforts to be involved to manage breaking changes in the SDK). We'd also be happy to see a PR for this if someone wants to take a crack at this sooner. |
Immediately upon trying to do this myself (using |
I don't believe However, it looks like, with |
Note that Vector statically compiles in OpenSSL so linking with a local OpenSSL installation, including the FIPS module, currently requires building Vector yourself. #16535 is tracking having a generally available "FIPS Compliant" build. |
For our use case, we don't need the crypto in Vector to be running on FIPS validated modules, only able to talk to FIPS endpoints like the |
Separately, if it's going to be difficult to move to I see there is an |
I gave the AWS smithy migration guide a second read and noticed that it speaks of a custom connector Here's the example repository Maybe we can do something like this... |
This would be easy if we could override the endpoint using environment variables provided by AWS such as Could adding https://docs.rs/aws-config/latest/aws_config/endpoint/index.html to the Similar to how |
Unfortunately, it looks like the awslabs/aws-sdk-rust#921 and They were both part of the same |
Cross posting this PR #19312 which is also doing the AWS crate updates to the new GA release of the SDK it looks like |
A note for the community
Problem
The AWS Rust SDK can the ability to use the AWS FIPS service endpoints if you supply a config file with
use_fips_endpoint=true
or an environment variable ofAWS_USE_FIPS_ENDPOINT=true
. For example: https://github.com/awslabs/aws-sdk-rust/blob/main/sdk/aws-config/src/default_provider/use_fips.rs#L26By providing these options to Vector either through the
AWS_CONFIG_FILE
environment variable, directly in a config file, systemd unit file overrides and via running it on the command line, I can't get Vector to read this file and use these options.Our use case is for the AWS Kinesis Stream sink using an Assumed Role. The calls to AWS STS to assume the role, and the calls to Kinesis must use the FIPS endpoints as shown here https://aws.amazon.com/compliance/fips/
Configuration
Version
vector 0.32.1 (x86_64-unknown-linux-gnu 9965884 2023-08-21 14:52:38.330227446)
Debug Output
Example Data
CloudTrail event logs for the AssumeRole event, showing connection to the non-FIPS endpoint
Additional Context
This isn't related to making all the encryption in Vector FIPS compliant, like in this PR #18261 but only for using the FIPS endpoints as provided by the AWS SDK.
References
No response
The text was updated successfully, but these errors were encountered: