Files
incredigo/lab/lab-provision-pg.sh
leetcrypt ac0ff8e2af
ci / build-test (push) Has been cancelled
quarantine: scrub tailnet ref, add license, ship lab/ repro kit, refresh README for cohort
- untrack CLAUDE.md (tailnet leak) + stale HANDOFF.md; keep local via .gitignore
- add source-available LICENSE (attribution on fork, royalty on commercial use)
- add lab/ reproduction kit (fake-cred LIVE-VM/mock rotation POCs) + lab/README
- rewrite README to current status (22 drivers, 8 LIVE-VM/14 MOCK-ONLY/0 LIVE-REAL,
  247 tests) and carry the credential-handling safety rules

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-17 22:40:12 -07:00

52 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Provision the incredigo postgres-rotation POC inside the sandbox VM.
# FAKE creds only, isolated gopass store. Idempotent-ish (drops/recreates role+db).
set -euo pipefail
export GNUPGHOME="$HOME/.lab-gnupg"
export GOPASS_HOMEDIR="$HOME/.lab-gopass"
INIT_PW="oldpw$(date +%s | tail -c 4)" # fake starting password
ENTRY="imported/postgres/labapp"
echo "== 1. isolated GNUPGHOME + no-protection GPG key =="
rm -rf "$GNUPGHOME" "$GOPASS_HOMEDIR"
mkdir -p "$GNUPGHOME"; chmod 700 "$GNUPGHOME"
cat > /tmp/keyparams <<EOF
%no-protection
Key-Type: eddsa
Key-Curve: ed25519
Subkey-Type: ecdh
Subkey-Curve: cv25519
Name-Real: incredigo lab
Name-Email: lab@incredigo.invalid
Expire-Date: 0
%commit
EOF
gpg --batch --gen-key /tmp/keyparams >/dev/null 2>&1
rm -f /tmp/keyparams
KEYID=$(gpg --list-keys --with-colons lab@incredigo.invalid | awk -F: '/^pub/{print $5; exit}')
echo " key: $KEYID"
echo "== 2. isolated gopass store =="
gopass init --storage fs "$KEYID" >/dev/null 2>&1 || gopass init "$KEYID" >/dev/null 2>&1
gopass ls >/dev/null 2>&1 || true
echo "== 3. postgres role + db (labapp owns labdb), starting pw=$INIT_PW =="
sudo -u postgres psql -v ON_ERROR_STOP=1 <<SQL >/dev/null
DROP DATABASE IF EXISTS labdb;
DROP ROLE IF EXISTS labapp;
CREATE ROLE labapp LOGIN PASSWORD '$INIT_PW';
CREATE DATABASE labdb OWNER labapp;
SQL
echo "== 4. prove the starting password authenticates over TCP =="
PGPASSWORD="$INIT_PW" psql -X -w -h 127.0.0.1 -p 5432 -U labapp -d labdb -tAc 'SELECT 1;'
echo "== 5. seed the DSN into gopass (no plaintext file on disk) =="
printf 'postgres://labapp:%s@127.0.0.1:5432/labdb' "$INIT_PW" \
| gopass insert --multiline=false -f "$ENTRY" >/dev/null
echo " stored $ENTRY:"
gopass ls --flat | sed 's/^/ /'
echo "DONE. starting pw recorded only in gopass; rotation will replace it."