Skip to content

fix(security): Get rid of getSecretKey#5738

Merged
Skarlso merged 2 commits intoexternal-secrets:mainfrom
evrardjp:remove-getSecretKey
Dec 17, 2025
Merged

fix(security): Get rid of getSecretKey#5738
Skarlso merged 2 commits intoexternal-secrets:mainfrom
evrardjp:remove-getSecretKey

Conversation

@evrardjp
Copy link
Copy Markdown
Contributor

@evrardjp evrardjp commented Dec 17, 2025

There is no need of getSecretKey while we have templating that allows us to fetch the secrets according to our kubernetes secretStores

This follows all our current practices, instead of trying to do logic in templating.

Problem Statement

Presence of insecure function

Related Issue

Fixes #5690

Proposed Changes

Getting rid of unnecessary function

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

There is no need of getSecretKey while we have templating that
allows us to fetch the secrets according to our kubernetes secretStores

This follows all our current practices, instead of trying to do
logic in templating.

Signed-off-by: Jean-Philippe Evrard <open-source@a.spamming.party>
@github-actions github-actions bot added the kind/documentation Categorizes issue or PR as related to documentation. label Dec 17, 2025
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Dec 17, 2025

Walkthrough

The changes remove the getSecretKey template function due to security concerns—it allowed cross-namespace secret access via templates, bypassing RBAC. Documentation and examples are updated to show RSA decryption using private keys referenced within the same ExternalSecret instead.

Changes

Cohort / File(s) Summary
Template function removal
runtime/template/v2/kubernetes.go
Deleted getSecretKey function and associated error constants (errCreatingConfig, errCreatingClientset, errFetchingSecret, errKeyNotFound). Function provided Kubernetes secret retrieval capability directly from templates.
Function map update
runtime/template/v2/template.go
Removed getSecretKey from the template function map (tplFuncs); rsaDecrypt function remains registered.
Documentation updates
docs/guides/templating.md
Updated "RSA Decryption Data From Provider" section to remove getSecretKey dependency. Clarified that private keys can be sourced from another reference within the same ExternalSecret. Added examples, "Useful variations," and "Error notes" sections.
Example manifest update
docs/snippets/rsadecrypt-template-v2-external-secret.yaml
Replaced template-based secret retrieval with direct RSA decryption using a private key field from the data section. Introduced secretKey: privatekey entry to fetch the private key via Kubernetes provider instead of getSecretKey.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

  • Verify no other code paths depend on the removed getSecretKey function across the codebase
  • Confirm template function map registration is the only place where getSecretKey was exposed
  • Validate documentation examples accurately reflect the new RSA decryption approach

Poem

🐰 The secret door we've sealed away,
No shortcuts through RBAC's way,
RSA now decrypts with care,
Keys stay close, no cross-namespace affair!

Pre-merge checks and finishing touches

✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR successfully removes the getSecretKey function as required by issue #5690, eliminating the insecure cross-namespace secret access pattern without proper RBAC or store configuration.
Out of Scope Changes check ✅ Passed All changes are directly in scope: removing getSecretKey from template functions, deleting the kubernetes.go helper file, and updating documentation to reflect the removal.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title 'fix(security): Get rid of getSecretKey' directly and clearly describes the main change: removal of the getSecretKey function for security reasons, which aligns with the primary objective of the PR.
Description check ✅ Passed The PR description addresses the problem (insecure getSecretKey function), references the related issue (#5690), explains the proposed changes (removal), and completes the checklist. However, the title format is not explicitly stated in the PR description itself.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

@evrardjp evrardjp changed the title fix(security)!: Get rid of getSecretKey fix!: Get rid of getSecretKey Dec 17, 2025
@Skarlso Skarlso changed the title fix!: Get rid of getSecretKey fix(security): Get rid of getSecretKey Dec 17, 2025
@github-actions github-actions bot added area/security Issues / Pull Requests related to security kind/bug Categorizes issue or PR as related to a bug. labels Dec 17, 2025
@Skarlso Skarlso moved this to In Review in External Secrets Dec 17, 2025
@evrardjp evrardjp added the breaking-change This pull request introduces a breaking change label Dec 17, 2025
Copy link
Copy Markdown
Member

@gusfcarvalho gusfcarvalho left a comment

Choose a reason for hiding this comment

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

LGTM

@sonarqubecloud
Copy link
Copy Markdown

@Skarlso Skarlso merged commit 17d3e22 into external-secrets:main Dec 17, 2025
25 checks passed
@github-project-automation github-project-automation bot moved this from In Review to Done in External Secrets Dec 17, 2025
@evrardjp evrardjp deleted the remove-getSecretKey branch December 17, 2025 13:53
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Dec 20, 2025
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [external-secrets](https://github.com/external-secrets/external-secrets) | minor | `1.1.1` -> `1.2.0` |

---

### Release Notes

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

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

[Compare Source](external-secrets/external-secrets@v1.1.1...v1.2.0)

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

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

#### What's Changed

##### General

- chore: bump 1.1.1 by [@&#8203;gusfcarvalho](https://github.com/gusfcarvalho) in [#&#8203;5687](external-secrets/external-secrets#5687)
- chore: fix the argocd e2e test case by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5688](external-secrets/external-secrets#5688)
- feat(provider): add Barbican provider support by [@&#8203;rkferreira](https://github.com/rkferreira) in [#&#8203;5398](external-secrets/external-secrets#5398)
- docs(secretserver): promote secretserver provider to beta by [@&#8203;DelineaSahilWankhede](https://github.com/DelineaSahilWankhede) in [#&#8203;5668](external-secrets/external-secrets#5668)
- feat(controller): add flag to enable/disable secretstore reconcile by [@&#8203;Ilhan-Personal](https://github.com/Ilhan-Personal) in [#&#8203;5653](external-secrets/external-secrets#5653)
- fix(aws-secrets-manager): Apply filtering based on both name and tags if provided by [@&#8203;iypetrov](https://github.com/iypetrov) in [#&#8203;5685](external-secrets/external-secrets#5685)
- fix(gcpsm): SecretExists should check for regional secrets when store location is specified by [@&#8203;tokiwong](https://github.com/tokiwong) in [#&#8203;5708](external-secrets/external-secrets#5708)
- feat: introduce store deprecation by [@&#8203;gusfcarvalho](https://github.com/gusfcarvalho) in [#&#8203;5711](external-secrets/external-secrets#5711)
- feat(charts): add global values for common deployment configurations by [@&#8203;Gabryel8818](https://github.com/Gabryel8818) in [#&#8203;5652](external-secrets/external-secrets#5652)
- feat: add Doppler OIDC-based authentication by [@&#8203;mikesellitto](https://github.com/mikesellitto) in [#&#8203;5475](external-secrets/external-secrets#5475)
- fix: make custom configuration available regardless of environment by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5713](external-secrets/external-secrets#5713)
- chore(chart): update bitwarden dependency to v0.5.2 by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5719](external-secrets/external-secrets#5719)
- docs(templating): update rbac for generic targets by [@&#8203;lostick](https://github.com/lostick) in [#&#8203;5736](external-secrets/external-secrets#5736)
- fix(testing): Breaking changes should not break ci by [@&#8203;evrardjp](https://github.com/evrardjp) in [#&#8203;5739](external-secrets/external-secrets#5739)
- fix(security): Get rid of getSecretKey by [@&#8203;evrardjp](https://github.com/evrardjp) in [#&#8203;5738](external-secrets/external-secrets#5738)
- fix(aws): parse resource policies into canonical JSON (sorted) before comparing by [@&#8203;cmoscofian](https://github.com/cmoscofian) in [#&#8203;5622](external-secrets/external-secrets#5622)
- docs: Fix example in GCP documentation by [@&#8203;headcr4sh](https://github.com/headcr4sh) in [#&#8203;5745](external-secrets/external-secrets#5745)
- chore(secretserver): update dependencies to accept new DelineaXPM/tss-sdk-go by [@&#8203;DelineaSahilWankhede](https://github.com/DelineaSahilWankhede) in [#&#8203;5742](external-secrets/external-secrets#5742)
- fix(gcpsm): Improve SecretExists method in GCP secret manager provider by [@&#8203;tosih](https://github.com/tosih) in [#&#8203;5610](external-secrets/external-secrets#5610)
- chore(docs): add clarification to helm values being disabled by [@&#8203;Skarlso](https://github.com/Skarlso) in [#&#8203;5746](external-secrets/external-secrets#5746)
- fix(release): apply [`64dc681`](external-secrets/external-secrets@64dc681) to release by [@&#8203;jakobmoellerdev](https://github.com/jakobmoellerdev) in [#&#8203;5749](external-secrets/external-secrets#5749)
- docs(release): 1.2 stability-support.md by [@&#8203;jakobmoellerdev](https://github.com/jakobmoellerdev) in [#&#8203;5750](external-secrets/external-secrets#5750)

##### Dependencies

- chore(deps): bump golang from 1.25.4 to 1.25.5 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5693](external-secrets/external-secrets#5693)
- chore(deps): bump golang from 1.25.4-bookworm to 1.25.5-bookworm in /e2e by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5702](external-secrets/external-secrets#5702)
- chore(deps): bump ubi9/ubi from `dcd8128` to `75937d9` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5655](external-secrets/external-secrets#5655)
- chore(deps): bump peter-evans/slash-command-dispatch from 5.0.0 to 5.0.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5695](external-secrets/external-secrets#5695)
- chore(deps): bump github/codeql-action from 4.31.5 to 4.31.7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5696](external-secrets/external-secrets#5696)
- chore(deps): bump actions/stale from 10.1.0 to 10.1.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5697](external-secrets/external-secrets#5697)
- chore(deps): bump actions/create-github-app-token from 2.2.0 to 2.2.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5700](external-secrets/external-secrets#5700)
- chore(deps): bump step-security/harden-runner from 2.13.2 to 2.13.3 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5698](external-secrets/external-secrets#5698)
- chore(deps): bump actions/checkout from 6.0.0 to 6.0.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5699](external-secrets/external-secrets#5699)
- chore(deps): bump platformdirs from 4.5.0 to 4.5.1 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5705](external-secrets/external-secrets#5705)
- chore(deps): bump distroless/static from `87bce11` to `4b2a093` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5692](external-secrets/external-secrets#5692)
- chore(deps): bump alpine from 3.22 to 3.23 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5703](external-secrets/external-secrets#5703)
- chore(deps): bump urllib3 from 2.5.0 to 2.6.0 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5704](external-secrets/external-secrets#5704)
- chore(deps): bump pymdown-extensions from 10.17.2 to 10.18 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5706](external-secrets/external-secrets#5706)
- chore(deps): bump alpine from 3.22.2 to 3.23.0 in /e2e by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5701](external-secrets/external-secrets#5701)
- chore(deps): bump golang from `2611181` to `2611181` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5721](external-secrets/external-secrets#5721)
- chore(deps): bump codecov/codecov-action from 5.5.1 to 5.5.2 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5725](external-secrets/external-secrets#5725)
- chore(deps): bump urllib3 from 2.6.0 to 2.6.2 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5730](external-secrets/external-secrets#5730)
- chore(deps): bump github/codeql-action from 4.31.7 to 4.31.8 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5726](external-secrets/external-secrets#5726)
- chore(deps): bump anchore/sbom-action from 0.20.10 to 0.20.11 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5724](external-secrets/external-secrets#5724)
- chore(deps): bump tornado from 6.5.2 to 6.5.3 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5732](external-secrets/external-secrets#5732)
- chore(deps): bump ubi9/ubi from `75937d9` to `d4feb57` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5722](external-secrets/external-secrets#5722)
- chore(deps): bump golang from `5117d68` to `09f53de` in /e2e by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5729](external-secrets/external-secrets#5729)
- chore(deps): bump alpine from `4b7ce07` to `51183f2` by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5694](external-secrets/external-secrets#5694)
- chore(deps): bump hashicorp/setup-terraform from [`712b439`](external-secrets/external-secrets@712b439) to [`071811a`](external-secrets/external-secrets@071811a) by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5727](external-secrets/external-secrets#5727)
- chore(deps): bump pymdown-extensions from 10.18 to 10.19.1 in /hack/api-docs by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5731](external-secrets/external-secrets#5731)
- chore(deps): bump step-security/harden-runner from 2.13.3 to 2.14.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5728](external-secrets/external-secrets#5728)
- chore(deps): bump actions/cache from 4.3.0 to 5.0.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5723](external-secrets/external-secrets#5723)

#### New Contributors

- [@&#8203;iypetrov](https://github.com/iypetrov) made their first contribution in [#&#8203;5685](external-secrets/external-secrets#5685)
- [@&#8203;tokiwong](https://github.com/tokiwong) made their first contribution in [#&#8203;5708](external-secrets/external-secrets#5708)
- [@&#8203;Gabryel8818](https://github.com/Gabryel8818) made their first contribution in [#&#8203;5652](external-secrets/external-secrets#5652)
- [@&#8203;mikesellitto](https://github.com/mikesellitto) made their first contribution in [#&#8203;5475](external-secrets/external-secrets#5475)
- [@&#8203;lostick](https://github.com/lostick) made their first contribution in [#&#8203;5736](external-secrets/external-secrets#5736)
- [@&#8203;cmoscofian](https://github.com/cmoscofian) made their first contribution in [#&#8203;5622](external-secrets/external-secrets#5622)
- [@&#8203;headcr4sh](https://github.com/headcr4sh) made their first contribution in [#&#8203;5745](external-secrets/external-secrets#5745)
- [@&#8203;tosih](https://github.com/tosih) made their first contribution in [#&#8203;5610](external-secrets/external-secrets#5610)

**Full Changelog**: <external-secrets/external-secrets@v1.1.1...v1.2.0>

</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 is behind base branch, 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi4zOS4xIiwidXBkYXRlZEluVmVyIjoiNDIuMzkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiY2hhcnQiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/2737
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
siddhibhor-56 pushed a commit to siddhibhor-56/external-secrets-openshift that referenced this pull request Feb 24, 2026
Co-authored-by: Gergely Brautigam <skarlso777@gmail.com>
siddhibhor-56 pushed a commit to siddhibhor-56/external-secrets-openshift that referenced this pull request Feb 25, 2026
Co-authored-by: Gergely Brautigam <skarlso777@gmail.com>
siddhibhor-56 pushed a commit to siddhibhor-56/external-secrets-openshift that referenced this pull request Feb 25, 2026
Co-authored-by: Gergely Brautigam <skarlso777@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/security Issues / Pull Requests related to security breaking-change This pull request introduces a breaking change kind/bug Categorizes issue or PR as related to a bug. kind/documentation Categorizes issue or PR as related to documentation. size/s

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

getSecretKey template function shouldn't exist

3 participants