2.5 KiB
2.5 KiB
DECISION-20260323-compose-secrets-via-env
Context
- Task/request: harden the target-state stack example so credentials are not stored directly in
temp/cloud.yml. - Impacted files/contracts:
temp/cloud.yml, deployment/operations practice for target-state infrastructure examples. - Why a decision is required now: the repository contained inline credentials in a tracked compose file, which conflicts with the intended security posture and creates avoidable secret-leak risk.
Options
- Keep credentials inline in the compose file
- Benefits: simplest to run as a standalone example.
- Risks: secrets leak into git history, reviews, copies, and local machines; encourages unsafe operational practice.
- Rollout notes: none, but the risk remains permanent once committed.
- Move credentials to server-side environment variables and keep only placeholders in compose
- Benefits: aligns the manifest with a safer deployment pattern; keeps tracked config portable across environments; supports secret rotation without editing the compose file.
- Risks: operators must manage
.envor equivalent secret injection correctly. - Rollout notes: provide an example env file and document that the real
.envstays on the server and out of version control.
Decision
- Selected option: Option 2.
- Decision owner: repository owner confirmed during task discussion.
- Date: 2026-03-23.
- Rationale: the target architecture should model the right operational pattern. Inline secrets in repository-tracked compose files are not acceptable for EVOLV's intended OT/IT deployment posture.
Consequences
- Compatibility impact: low; operators now need to supply environment variables when deploying
temp/cloud.yml. - Safety/security impact: improved secret hygiene and lower credential exposure risk.
- Data/operations impact: deployment requires an accompanying
.envon the server or explicit--env-fileusage.
Implementation Notes
- Required code/doc updates: replace inline secrets in
temp/cloud.yml; addtemp/cloud.env.example; keep the real.envuntracked on the server. - Validation evidence required: inspect compose file for
${...}placeholders and verify no real credentials remain in tracked files touched by this change.
Rollback / Migration
- Rollback strategy: reintroduce inline values, though this is not recommended.
- Migration/deprecation plan: create a server-local
.envfromtemp/cloud.env.example, fill in real values, and run compose from that environment.