Skip to content
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

VAULT-21474 Run oidcPeriodicFunc for each namespace id store #29312

Merged
merged 7 commits into from
Jan 31, 2025

Conversation

bosouza
Copy link
Contributor

@bosouza bosouza commented Jan 7, 2025

Description

This PR makes the identity store rotate only the OIDC keys for its own namespace. This allows the enterprise version, which supports namespaces, to scale to a larger number of namespaces without hitting timeouts on this oidcPeriodicFunc by dividing the work between multiple executions. For CE this shouldn't change anything.

ent PR: vault-enterprise#7164
Jira: VAULT-21474

TODO only if you're a HashiCorp employee

  • Backport Labels: If this fix needs to be backported, use the appropriate backport/ label that matches the desired release branch. Note that in the CE repo, the latest release branch will look like backport/x.x.x, but older release branches will be backport/ent/x.x.x+ent.
    • LTS: If this fixes a critical security vulnerability or severity 1 bug, it will also need to be backported to the current LTS versions of Vault. To ensure this, use all available enterprise labels.
  • ENT Breakage: If this PR either 1) removes a public function OR 2) changes the signature
    of a public function, even if that change is in a CE file, double check that
    applying the patch for this PR to the ENT repo and running tests doesn't
    break any tests. Sometimes ENT only tests rely on public functions in CE
    files.
  • Jira: If this change has an associated Jira, it's referenced either
    in the PR description, commit message, or branch name.
  • RFC: If this change has an associated RFC, please link it in the description.
  • ENT PR: If this change has an associated ENT PR, please link it in the
    description. Also, make sure the changelog is in this PR, not in your ENT PR.

not sure why I decided to ignore the NoNamespace error before
or not log the unexpected error, that doesn't make sense.
@bosouza bosouza added this to the 1.19.0-rc milestone Jan 7, 2025
@github-actions github-actions bot added the hashicorp-contributed-pr If the PR is HashiCorp (i.e. not-community) contributed label Jan 7, 2025
Copy link

github-actions bot commented Jan 7, 2025

CI Results:
All Go tests succeeded! ✅

@bosouza bosouza marked this pull request as ready for review January 8, 2025 21:46
@bosouza bosouza requested review from a team as code owners January 8, 2025 21:46
Copy link

github-actions bot commented Jan 8, 2025

Build Results:
All builds succeeded! ✅

Copy link
Contributor

@miagilepner miagilepner left a comment

Choose a reason for hiding this comment

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

Code itself looks great!

@@ -0,0 +1,3 @@
```release-note:bug
identity/oidc: Run OIDC key rotations for each namespace individually.
Copy link
Contributor

Choose a reason for hiding this comment

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

Can we also add a change release note to say that the cache control header returned from OIDC queries will only be for the queried namespace?

Copy link
Contributor

Choose a reason for hiding this comment

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

It might be good to connect with @austingebauer and @fairclothjm, since I know they've done worth with OIDC before, to try to see whether this change in behavior is problematic

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think I was planning on adding a separate changelog on the ent PR but that doesn't make much sense... yeah I'll update this entry with more details regarding what this means for enterprise

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@miagilepner John took a look at the enterprise PR here. He also asked me to run a quick smoke test for upgrade which I did and didn't see anything weird

@bosouza bosouza requested a review from miagilepner January 28, 2025 21:02
miagilepner
miagilepner previously approved these changes Jan 31, 2025
Copy link
Contributor

@miagilepner miagilepner left a comment

Choose a reason for hiding this comment

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

LGTM, thank you!

this was already in the ENT PR, I had already checked that the file didn't exist on CE before but somehow I missed it.
@bosouza
Copy link
Contributor Author

bosouza commented Jan 31, 2025

in merging these changes I want to avoid the normal path of 1) merge CE PR, 2) wait for changes to be merged into ENT then 3) merge the ENT PR because during the period between 1) and 3) the ENT repo would build successfully but yield a binary with a bug where OIDC keys are not rotated for any namespaces except for the root one.

So instead of the normal path I'll follow this other guide instead and merge both CE and ENT PRs at the same time.

I've ran the following command to ensure compatibility between the PRs: diff <(gh pr diff https://github.com/hashicorp/vault-enterprise/pull/7164) <(gh pr diff https://github.com/hashicorp/vault/pull/29312). It shows that the only differences between the 2 PRs are changelog/29312.txt (only exists in the CE PR), identity_store_oidc_ent_test.go, vault/logical_namespace_identity_ent.go (both only exist in ENT). I'll go ahead and merge both CE and ENT PRs at the same time.

@bosouza bosouza added backport/1.18.x backport/ent/1.17.x+ent Changes are backported to 1.17.x+ent labels Jan 31, 2025
Copy link
Collaborator

@digivava digivava left a comment

Choose a reason for hiding this comment

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

reapproved after docs change

@bosouza bosouza merged commit d127c4d into main Jan 31, 2025
101 of 103 checks passed
@bosouza bosouza deleted the bosouza/VAULT-21474-namespace-oidc-rotation branch January 31, 2025 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport/ent/1.17.x+ent Changes are backported to 1.17.x+ent backport/1.18.x hashicorp-contributed-pr If the PR is HashiCorp (i.e. not-community) contributed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants