Skip to content

fix: onepasswordsdk shared tenant by altering the provider in the client cache#5921

Merged
Skarlso merged 1 commit intoexternal-secrets:mainfrom
Skarlso:fix-onepasswordsdk-shared-tenant
Feb 3, 2026
Merged

fix: onepasswordsdk shared tenant by altering the provider in the client cache#5921
Skarlso merged 1 commit intoexternal-secrets:mainfrom
Skarlso:fix-onepasswordsdk-shared-tenant

Conversation

@Skarlso
Copy link
Copy Markdown
Contributor

@Skarlso Skarlso commented Feb 2, 2026

Problem Statement

What is the problem you're trying to solve?

Related Issue

Fixes #5920.

Proposed Changes

How do you like to solve the issue and why?

Format

Please ensure that your PR follows the following format for the title:

feat(scope): add new feature
fix(scope): fix bug
docs(scope): update documentation
chore(scope): update build tool or dependencies
ref(scope): refactor code
clean(scope): provider cleanup
test(scope): add tests
perf(scope): improve performance
desig(scope): improve design

Where scope is optionally one of:

  • charts
  • release
  • testing
  • security
  • templating

Checklist

  • I have read the contribution guidelines
  • All commits are signed with git commit --signoff
  • My changes have reasonable test coverage
  • All tests pass with make test
  • I ensured my PR is ready for review with make reviewable

Summary

This PR fixes an issue where 1Password SDK Provider instances could share vault/tenant state across SecretStore requests, causing secrets from one vault to appear in another namespace.

Root cause

NewClient() mutated the receiver (p *Provider) (vault ID, prefix, cache), so reused Provider instances could mix vault-specific state.

Fix

NewClient() now allocates a new Provider instance populated with a new 1Password client, the request-specific vault prefix/ID, and a dedicated cache when configured, and returns that new instance instead of mutating and returning the receiver.

Changes

  • providers/v1/onepasswordsdk/provider.go: NewClient() creates and returns a new Provider rather than mutating the receiver (net +8/-6).

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Feb 2, 2026

Walkthrough

Refactors Provider initialization to allocate and return a new Provider instance (same client and vaultPrefix) instead of mutating the receiver. The new instance has its cache initialized and vault ID fetched via GetVault, and that new instance is returned.

Changes

Cohort / File(s) Summary
Provider Initialization Refactoring
providers/v1/onepasswordsdk/provider.go
Replaced in-place mutation of the receiver with creation of a new local Provider instance. New instance is initialized with the same client and vaultPrefix, cache is set on the new instance, vault ID is fetched via GetVault and assigned, and the new instance is returned instead of the mutated receiver. (+8/-6 lines)
🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR modifies provider initialization to create a new provider instance instead of mutating the receiver, which addresses vault isolation concerns in shared tenant scenarios [#5920].
Out of Scope Changes check ✅ Passed All changes are focused on fixing vault isolation by altering provider caching behavior in the onepasswordsdk provider, directly addressing the issue scope.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

…ent cache

Signed-off-by: Gergely Brautigam <182850+Skarlso@users.noreply.github.com>
@Skarlso Skarlso force-pushed the fix-onepasswordsdk-shared-tenant branch from d973993 to a614469 Compare February 3, 2026 05:39
@github-actions github-actions bot added kind/bug Categorizes issue or PR as related to a bug. size/s labels Feb 3, 2026
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Feb 3, 2026

@Skarlso Skarlso merged commit a2ec422 into external-secrets:main Feb 3, 2026
33 checks passed
@Skarlso Skarlso deleted the fix-onepasswordsdk-shared-tenant branch February 3, 2026 07:43
nutmos pushed a commit to nutmos/external-secrets that referenced this pull request Feb 11, 2026
…ent cache (external-secrets#5921)

Signed-off-by: Nattapong Ekudomsuk <nuttapong_mos@hotmail.com>
nutmos pushed a commit to nutmos/external-secrets that referenced this pull request Feb 18, 2026
…ent cache (external-secrets#5921)

Signed-off-by: Nattapong Ekudomsuk <nuttapong_mos@hotmail.com>
radermacher-iits pushed a commit to kubara-io/kubara that referenced this pull request Feb 19, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [external-secrets](https://github.com/external-secrets/external-secrets) | minor | `1.2.1` → `1.3.2` |

---

### Release Notes

<details>
<summary>external-secrets/external-secrets (external-secrets)</summary>

### [`v1.3.2`](https://github.com/external-secrets/external-secrets/releases/tag/v1.3.2)

[Compare Source](external-secrets/external-secrets@v1.3.1...v1.3.2)

Image: `ghcr.io/external-secrets/external-secrets:v1.3.2`
Image: `ghcr.io/external-secrets/external-secrets:v1.3.2-ubi`
Image: `ghcr.io/external-secrets/external-secrets:v1.3.2-ubi-boringssl`

<!-- Release notes generated using configuration in .github/release.yml at main -->

#### What's Changed

##### General

- chore: release helm chart for v1.3.1 by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5860](external-secrets/external-secrets#5860)
- chore(chart): Add missing tests for readinessProbe by [@&#8203;jcpunk](https://github.com/jcpunk) in [#&#8203;5769](external-secrets/external-secrets#5769)
- docs: Update FluxCD example by [@&#8203;umizoom](https://github.com/umizoom) in [#&#8203;5862](external-secrets/external-secrets#5862)
- fix(ci): Removed the unused check for Windows in Makefile by [@&#8203;HauptJ](https://github.com/HauptJ) in [#&#8203;5870](external-secrets/external-secrets#5870)
- docs(release): Add actual dates for EOL of 1.x releases in stability and support page by [@&#8203;n4zukker](https://github.com/n4zukker) in [#&#8203;5889](external-secrets/external-secrets#5889)
- docs: Passbolt provider maintenance ownership by [@&#8203;stripthis](https://github.com/stripthis) in [#&#8203;5886](external-secrets/external-secrets#5886)
- chore: Update Passbolt MaintenanceStatus to MaintenanceStatusMaintained by [@&#8203;stripthis](https://github.com/stripthis) in [#&#8203;5887](external-secrets/external-secrets#5887)
- fix(security): sanitize json.Unmarshal errors to prevent secret data … by [@&#8203;moolen](https://github.com/moolen) in [#&#8203;5884](external-secrets/external-secrets#5884)
- fix: webhook initialization order by [@&#8203;gusfcarvalho](https://github.com/gusfcarvalho) in [#&#8203;5901](external-secrets/external-secrets#5901)
- chore: Cleanup flags by [@&#8203;evrardj-roche](https://github.com/evrardj-roche) in [#&#8203;5845](external-secrets/external-secrets#5845)
- fix: onepasswordsdk shared tenant by altering the provider in the client cache by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5921](external-secrets/external-secrets#5921)

##### Dependencies

- chore(deps): bump github/codeql-action from 4.31.10 to 4.31.11 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5873](external-secrets/external-secrets#5873)
- chore(deps): bump pymdown-extensions from 10.20 to 10.20.1 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5877](external-secrets/external-secrets#5877)
- chore(deps): bump markdown from 3.10 to 3.10.1 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5880](external-secrets/external-secrets#5880)
- chore(deps): bump ubi9/ubi from `22e9573` to `1f84f5c` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5871](external-secrets/external-secrets#5871)
- chore(deps): bump actions/setup-python from 6.1.0 to 6.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5872](external-secrets/external-secrets#5872)
- chore(deps): bump hashicorp/setup-terraform from [`93d5a27`](external-secrets/external-secrets@93d5a27) to [`dcc3150`](external-secrets/external-secrets@dcc3150) by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5875](external-secrets/external-secrets#5875)
- chore(deps): bump actions/checkout from 6.0.1 to 6.0.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5876](external-secrets/external-secrets#5876)
- chore(deps): bump step-security/harden-runner from 2.14.0 to 2.14.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5878](external-secrets/external-secrets#5878)
- chore(deps): bump anchore/sbom-action from 0.21.1 to 0.22.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5874](external-secrets/external-secrets#5874)
- chore(deps): bump packaging from 25.0 to 26.0 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5879](external-secrets/external-secrets#5879)
- chore(deps): bump golang from `d9b2e14` to `98e6cff` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5907](external-secrets/external-secrets#5907)
- chore(deps): bump alpine from `865b95f` to `2510918` in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5914](external-secrets/external-secrets#5914)
- chore(deps): bump docker/login-action from 3.6.0 to 3.7.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5909](external-secrets/external-secrets#5909)
- chore(deps): bump actions/cache from 5.0.2 to 5.0.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5912](external-secrets/external-secrets#5912)
- chore(deps): bump actions/attest-build-provenance from 3.1.0 to 3.2.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5910](external-secrets/external-secrets#5910)
- chore(deps): bump hashicorp/setup-terraform from [`dcc3150`](external-secrets/external-secrets@dcc3150) to [`ce70bcf`](external-secrets/external-secrets@ce70bcf) by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5911](external-secrets/external-secrets#5911)
- chore(deps): bump ubi9/ubi from `1f84f5c` to `c8df11b` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5908](external-secrets/external-secrets#5908)
- chore(deps): bump alpine from 3.23.2 to 3.23.3 in /e2e by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5915](external-secrets/external-secrets#5915)
- chore(deps): bump alpine from `865b95f` to `2510918` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5906](external-secrets/external-secrets#5906)
- chore(deps): bump pathspec from 1.0.3 to 1.0.4 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5916](external-secrets/external-secrets#5916)
- chore(deps): bump babel from 2.17.0 to 2.18.0 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5917](external-secrets/external-secrets#5917)
- chore(deps): bump github/codeql-action from 4.31.11 to 4.32.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5913](external-secrets/external-secrets#5913)

#### New Contributors

- [@&#8203;umizoom](https://github.com/umizoom) made their first contribution in [#&#8203;5862](external-secrets/external-secrets#5862)
- [@&#8203;HauptJ](https://github.com/HauptJ) made their first contribution in [#&#8203;5870](external-secrets/external-secrets#5870)
- [@&#8203;n4zukker](https://github.com/n4zukker) made their first contribution in [#&#8203;5889](external-secrets/external-secrets#5889)
- [@&#8203;stripthis](https://github.com/stripthis) made their first contribution in [#&#8203;5886](external-secrets/external-secrets#5886)

**Full Changelog**: <external-secrets/external-secrets@v1.3.1...v1.3.2>

### [`v1.3.1`](https://github.com/external-secrets/external-secrets/releases/tag/v1.3.1)

[Compare Source](external-secrets/external-secrets@v1.2.1...v1.3.1)

Image: `ghcr.io/external-secrets/external-secrets:v1.3.1`
Image: `ghcr.io/external-secrets/external-secrets:v1.3.1-ubi`
Image: `ghcr.io/external-secrets/external-secrets:v1.3.1-ubi-boringssl`

<!-- Release notes generated using configuration in .github/release.yml at main -->

For a Full release please referre to <https://github.com/external-secrets/external-secrets/releases/tag/v1.3.0>. This is a fix build for the docker publish flow.

#### What's Changed

##### General

- fix: ignore the in-toto manifest when promoting the docker build by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5859](external-secrets/external-secrets#5859)

**Full Changelog**: <external-secrets/external-secrets@v1.3.0...v1.3.1>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4yIiwidXBkYXRlZEluVmVyIjoiNDIuOTUuNSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciIsImxhYmVscyI6W119-->

Reviewed-on: https://kubara.git.onstackit.cloud/STACKIT/kubara/pulls/250
dsp0x4 pushed a commit to dsp0x4/external-secrets that referenced this pull request Mar 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/bug Categorizes issue or PR as related to a bug. size/s

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Mixing up values from different 1password vaults

2 participants