capitalize headings
This commit is contained in:
16 files changed
+65
-65
No files matched your search
@@ -10,17 +10,17 @@
|
||||
| **Distribution** | Vault Agent on every consuming host, AppRole auth, renders to local disk |
|
||||
| **Replaces** | A prior plaintext-`.env`-in-git secrets model |
|
||||
|
||||
## Why Vault, and why self-hosted
|
||||
## Why Vault, and Why Self-hosted
|
||||
|
||||
A managed secrets service (a cloud provider's KMS/Secrets Manager) was a real alternative and was rejected for a specific reason: this fleet's PKI needs to issue certificates to purely internal hosts that have no business talking to a cloud API, and the two-zone reverse-proxy model in [`docs/dns-naming.md`](dns-naming.md) depends on an internal CA that's reachable without any external dependency. Vault does both certificate issuance and secret storage under one trust model instead of stitching together a separate CA tool and a separate secrets tool — fewer moving parts, one audit log, one policy language to reason about.
|
||||
|
||||
## What it does
|
||||
## What It Does
|
||||
|
||||
- **Certificate authority** — two PKI mounts: one for public-facing wildcard certs (consumed by the edge in [`docs/firewall-and-network.md`](firewall-and-network.md)), one for internal mTLS certs (consumed by the browser-facing reverse-proxy zone). Both issue short-lived certificates, not long-lived ones — a deliberate choice that shrinks the window a leaked cert is useful for.
|
||||
- **Secret store** — a KV v2 mount holds every migrated application's real secret values, one namespace per host, enforced by policy (below).
|
||||
- **Distribution** — Vault Agent runs on every fleet host, authenticates via AppRole, and renders both certificates and secrets to local disk. No application or service ever talks to Vault directly — this single rule is what makes the rest of the model tractable to reason about.
|
||||
|
||||
## Why it's built this way
|
||||
## Why It's Built This Way
|
||||
|
||||
Before this system existed, every stack's secrets sat in plaintext inside git-tracked `.env` files — readable by anyone with repo access, and permanently baked into git history even after being "fixed." SecureVault replaces that:
|
||||
|
||||
@@ -80,7 +80,7 @@ None of these ever call the Vault API themselves — every one of them goes thro
|
||||
> }
|
||||
> ```
|
||||
|
||||
## What's protected
|
||||
## What's Protected
|
||||
|
||||
| Layer | Protection |
|
||||
|---|---|
|
||||
@@ -94,7 +94,7 @@ This is the real hook script, not a description of it — the full guard logic,
|
||||
|
||||

|
||||
|
||||
## Access model
|
||||
## Access Model
|
||||
|
||||
One policy per host, scoped to exactly what that host needs — no host's credentials can read another host's secrets. Every host-scoped policy follows the same shape: a shared grant for lightweight self-registration, plus a private grant with full read/write access only to that host's own namespace. Onboarding a new host copies this shape rather than reinventing it — and the shared grant does *not* automatically imply the private one, so both get verified before assuming a host is fully provisioned. This same "shared + private" pattern shows up again in [`docs/iac-pipeline.md`](iac-pipeline.md)'s tag-driven Ansible model — a deliberate consistency, not a coincidence.
|
||||
|
||||
|
||||
Reference in new issue
Block a user