Files
OpenBAO/scripts/personal-get.sh
Lutz Finsterle 21929fa899 Add personal-backup playground (KV + transit) and AppRole demo
Two isolated personal-credential backup options to evaluate, both excluded
from the admin policy (root-only break-glass):
- Scenario A: personal/ KV v2 (versioned) + personal-{put,get,list}.sh
- Scenario B: transit-personal/ key personal-backup + secret-{encrypt,decrypt}.sh

Plus an AppRole example of how a system should consume a secret:
- demo-app role/policy (read-only secret/demo-app/*), short-lived tokens
- scripts/app-get-secret.sh: login (role_id+secret_id) -> token -> read

All tokens/credentials live under ~/.config/openbao (outside the repo).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 20:28:32 +02:00

19 lines
826 B
Bash
Executable File

#!/usr/bin/env bash
# Scenario A: read a personal credential back.
# personal-get.sh <name> # show all fields
# personal-get.sh <name> password # print one field (for piping)
set -euo pipefail
ADDR="${BAO_ADDR:-http://127.0.0.1:8200}"
TOKF="$HOME/.config/openbao/personal-kv.token"
name="${1:?usage: personal-get.sh <name> [field]}"; field="${2:-}"
[ -r "$TOKF" ] || { echo "no token at $TOKF" >&2; exit 1; }
resp="$(curl -sS -H "X-Vault-Token: $(cat "$TOKF")" "$ADDR/v1/personal/data/$name")"
if printf '%s' "$resp" | jq -e '.errors and (.errors|length>0)' >/dev/null 2>&1; then
echo "not found or no access: $name" >&2; exit 1; fi
if [ -n "$field" ]; then
printf '%s' "$resp" | jq -r ".data.data.$field // empty"
else
printf '%s' "$resp" | jq -r '.data.data | to_entries[] | "\(.key): \(.value)"'
fi