Skip to content

Conversation

@minmzzhang
Copy link
Collaborator

@minmzzhang minmzzhang commented Jan 23, 2026

Reorganize Vault secrets into segmented paths for least-privilege access:

Secret Path Structure:

  • apps// - Application-specific secrets (e.g., apps/qtodo/)
  • hub/infra// - Infrastructure secrets (e.g., hub/infra/keycloak/)
  • global/ - Shared secrets (unchanged)
  • hub/ - Hub-level secrets (unchanged)

Policy Naming Convention:

  • K8s auth policies: -k8s-secret (for ClusterSecretStore/ExternalSecrets)
  • JWT auth policies: -jwt-secret (for SPIFFE workload identity)

Changes:

  • Update vaultPrefixes in values-secret.yaml.template for new paths
  • Update ExternalSecret references in chart values.yaml files
  • Add JWT policies to values-hub.yaml for SPIFFE workload authentication
  • Pass JWT policies to vault-config-jwt ansible task via vault-utils.sh

This enables application-level secret isolation where each app only has access to its own secrets, following zero-trust principles.

Depends on: rhvp/rhvp.cluster_utils PR for auto-creating K8s auth policies

Secrets Structure

secret/data/
├── global/                           # VP Framework Default
│   └── config-demo/                  # Demo/test secrets
│       └── secret
│
├── apps/                             # Application Secrets (fine-grained isolation)
│   └── qtodo/                        # QTodo Application
│       ├── qtodo-db/                 # Database credentials
│       │   ├── admin-password
│       │   └── db-password
│       ├── qtodo-oidc-client/        # OIDC client secret
│       │   └── client-secret
│       └── qtodo-truststore/         # Truststore password
│           └── truststore-password
│
└── hub/                              # Hub Infrastructure Secrets
    └── infra/
        ├── keycloak/                 # Keycloak Infrastructure
        │   └── keycloak/
        │       ├── admin-password
        │       └── db-password
        │
        ├── rhtpa/                    # RHTPA Infrastructure
        │   ├── rhtpa-db/
        │   │   └── db-password
        │   └── rhtpa-oidc-cli/
        │       └── client-secret
        │
        ├── users/                    # User Credentials (managed by Keycloak)
        │   └── keycloak-users/
        │       ├── qtodo-admin-password
        │       ├── qtodo-user1-password
        │       ├── rhtas-user-password
        │       └── rhtpa-user-password
        │
        └── quay/                     # Quay Registry
            └── quay-users/
                ├── quay-admin-password
                └── quay-user-password

@minmzzhang minmzzhang force-pushed the secrets-reorganization-pr branch from 6e906c0 to 908984c Compare January 26, 2026 21:54
Reorganize Vault secrets into segmented paths for least-privilege access:

Secret Path Structure:
- apps/<app-name>/ - Application-specific secrets (e.g., apps/qtodo/)
- hub/infra/<component>/ - Infrastructure secrets (e.g., hub/infra/keycloak/)
- global/ - Shared secrets (unchanged)
- hub/ - Hub-level secrets (unchanged)

Policy Naming Convention:
- K8s auth policies: <path>-k8s-secret (for ClusterSecretStore/ExternalSecrets)
- JWT auth policies: <path>-jwt-secret (for SPIFFE workload identity)

Changes:
- Update vaultPrefixes in values-secret.yaml.template for new paths
- Update ExternalSecret references in chart values.yaml files
- Add JWT policies to values-hub.yaml for SPIFFE workload authentication
- Pass JWT policies to vault-config-jwt ansible task via vault-utils.sh

This enables application-level secret isolation where each app only has
access to its own secrets, following zero-trust principles.

Depends on: rhvp/rhvp.cluster_utils PR for auto-creating K8s auth policies

Signed-off-by: Min Zhang <minzhang@redhat.com>
@minmzzhang minmzzhang force-pushed the secrets-reorganization-pr branch from 908984c to 8eee878 Compare January 26, 2026 21:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant