fix: bind runtime secret roles to environments

This commit is contained in:
eding 2026-09-13 12:18:12 +02:00
parent 217f03d4be
commit 9f1c05a4d4
3 changed files with 5 additions and 5 deletions

View file

@ -10,7 +10,7 @@ gets one reviewed grant.
| --- | --- | --- | --- |
| `build` | declared `apps/<app>/<secret>` entries | `tekton-pipelines` | Read-only dependency credentials |
| `publish` | declared `apps/<app>/<secret>` entries | `tekton-pipelines` | One app's artifact repository credential |
| `runtime` | declared `apps/<app>/<secret>` entries | `<app>-<environment>` | Service runtime credentials |
| `runtime` | declared `apps/<app>/<secret>` entries | `staging` or `production` | Service runtime credentials |
| shared | `shared/<name>/*` | Granted consumer only | Deliberately shared broker, database, or API credentials |
`build` code is repository-controlled. Anything granted to it is readable by a
@ -118,8 +118,8 @@ spec:
```
The workload references only `orders-api-rabbitmq` in its own namespace. Each
application/environment needs a separate namespace; do not put runtime
secrets in shared `staging` or `production` namespaces.
application gets a dedicated ServiceAccount, SecretStore, and target Secret in
the shared environment namespace; do not use another application's identity.
## Artifact repositories

View file

@ -400,7 +400,7 @@ func ConfigureSecretGrants(kubeconfig, identityPath, bundlePath string, grants [
namespace := "tekton-pipelines"
if grant.Consumer == "runtime" {
name += "-" + grant.Environment
namespace = grant.Application + "-" + grant.Environment
namespace = grant.Environment
}
script.WriteString("cat >/tmp/" + name + ".hcl <<'EOF'\n")
for _, secret := range grant.Secrets {

View file

@ -153,7 +153,7 @@ func TestConfigureSecretGrantsScopesApplicationAndSharedPaths(t *testing.T) {
`secret/data/shared/artifact-cache/*`,
`secret/data/shared/rabbitmq/*`,
`bound_service_account_names=maidn-orders-api-publish`,
`bound_service_account_namespaces=orders-api-production`,
`bound_service_account_namespaces=production`,
} {
if !strings.Contains(script, want) {
t.Fatalf("secret grant script missing %q: %s", want, script)