Skip to content

docs(designs): add AWS lab account and Keycloak designs#12

Merged
jmgilman merged 2 commits intomasterfrom
session-022/aws-lab-account-design
Apr 20, 2026
Merged

docs(designs): add AWS lab account and Keycloak designs#12
jmgilman merged 2 commits intomasterfrom
session-022/aws-lab-account-design

Conversation

@jmgilman
Copy link
Copy Markdown
Contributor

Summary

Adds two paired design documents that capture the lab's off-lab trust anchor strategy:

  • AWS Lab Account (docs/docs/designs/aws-lab-account.md) — dedicated AWS Organization (management + lab member accounts) in us-west-2 as the durable trust anchor. IAM Identity Center with a local identity store, a single-AZ VPC at 172.16.0.0/16, a Tailscale subnet router authenticated via workload identity federation, a Route 53 private zone for glab.lol mirrored to an in-lab CoreDNS zonefile, and a secrets bootstrap chain (KMS as SOPS recipient + GitHub App key in SSM) where every machine identity terminates at a single IAM role.

  • Keycloak (docs/docs/designs/keycloak.md) — Keycloak + colocated Postgres via Docker Compose on a dedicated t4g.small, served at id.glab.lol. Single lab realm federating GitHub OIDC only. keycloak-config-cli reconciles declarative state from git; runtime state backs up nightly to S3 with Synology pull. Disaster recovery is rebuild-first. Includes a per-service break-glass matrix so identity outages do not cascade.

Both docs are deliberately architecture-shaped — contracts and rationale, not specific IAM JSON, Tailscale ACLs, OpenTofu module layout, monitoring, or per-client Keycloak configuration.

Also updates docs/docs/designs/index.md to list both documents.

Test plan

  • Docusaurus build succeeds against both new docs and the updated index (no broken links, frontmatter valid).
  • aws-lab-account.md internal link to ./keycloak.md resolves.
  • keycloak.md internal link to ./aws-lab-account.md resolves.
  • docs/docs/designs/index.md renders both new entries in order.

🤖 Generated with Claude Code

jmgilman and others added 2 commits April 20, 2026 13:38
Proposes a dedicated AWS Organization (management + lab member accounts)
in us-west-2 as the lab's durable off-lab trust anchor. Covers account
layout, IAM Identity Center with a local identity store and WebAuthn MFA,
a single public-subnet VPC at 172.16.0.0/16 with a Tailscale subnet router
using workload identity federation, a Route 53 private zone for glab.lol
mirrored to an in-lab CoreDNS zonefile for cold-start and outage
resilience, and a secrets bootstrap chain (KMS as a SOPS recipient plus a
GitHub App key in SSM) that terminates every instance-side identity at a
single IAM role.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Proposes Keycloak as the lab's central identity provider, deployed via
Docker Compose on a dedicated t4g.small in the lab AWS account, colocated
with Postgres, served at id.glab.lol. A single lab realm federates GitHub
as its only OIDC upstream. Declarative configuration is reconciled from
git via keycloak-config-cli; runtime state is backed up nightly to S3
with a rolling retention window and pulled locally to the Synology NAS.
Disaster recovery is rebuild-first, with a documented same-hostname
restore fallback. Includes a per-service break-glass matrix (Talos API,
Argo CD admin, Vault recovery keys, local Identity Center user, etc.) so
identity outages do not cascade into service outages. Also updates the
designs index to list both the AWS Lab Account and Keycloak documents.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jmgilman jmgilman merged commit 9c71c5f into master Apr 20, 2026
1 check passed
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