7.2 KiB
Credential Escrow Evidence Owner Request
狀態時間:2026-06-13 13:10 Asia/Taipei 範圍:DR credential escrow evidence marker 補齊 原則:只收非敏感 evidence-id;禁止收集、張貼、提交或保存任何密碼、token、金鑰、recovery code、secret value、hash、prefix/suffix 或 partial token。
1. 目前判定
| 項目 | 狀態 | 完成度 | 說明 |
|---|---|---|---|
| 備份核心 | GREEN | 100% | 2026-06-26 07:18 readback:110 13/13 fresh failed=0、188 2/2 fresh failed=0、offsite / rclone fresh、latest-only verifier 與 full cold-start 目前皆為綠燈。 |
| Escrow script / offsite readiness | READY | 100% | SCRIPT_MISSING_COUNT=0、OFFSITE_CONFIGURED=1、RCLONE_CONFIGURED=1、READINESS_REQUIRE_CONFIGURED_BLOCKED=0。 |
| Credential escrow owner request package | READY_TO_DISPATCH | 80% | 本文件定義 owner 需要提供的非敏感 evidence-id、禁止內容、dry-run 與驗收流程。 |
| Credential escrow marker | BLOCKED_WAITING_OWNER_EVIDENCE | 0% | 五個 marker 仍未寫入;不得用 placeholder 或 secret 補齊。 |
| DR scorecard closeout | BLOCKED | 90% | 服務可用性已綠;DR 完成仍等 ESCROW_MISSING_COUNT=0。 |
這不是服務 outage。這是 DR 復原治理 gate:必須證明關鍵復原憑證可由指定 owner 在災難時取回,但證明本身不能洩漏憑證。
2. Live Evidence
2026-06-26 07:18 在 110 只讀檢查:
每日備份心跳核心正常但 DR 未完成
110備份=13/13 fresh failed=0
188備份=2/2 fresh failed=0
integrity_stale=0
offsite_configured=1
offsite_fresh=1
rclone_gdrive_configured=1
rclone_gdrive_fresh=1
escrow_missing=5
last_backup_all=2026-06-26 02:31:02
core_blockers=0
dr_warnings=5
2026-06-13 13:10 在 110 只讀檢查仍保留為原始缺口基準:
missing: restic_repository_password
missing: offsite_provider_credentials
missing: break_glass_admin_credentials
missing: dns_registrar_recovery
missing: oauth_ai_provider_recovery
SCRIPT_MISSING_COUNT=0
OFFSITE_CONFIGURED=1
RCLONE_CONFIGURED=1
B2_CONFIGURED=0
READINESS_REQUIRE_CONFIGURED_BLOCKED=0
ESCROW_MISSING_COUNT=5
PARTIAL_MARKER_PRESENT=1
FULL_MARKER_PRESENT=1
SUMMARY PASS=8 WARN=5 BLOCKED=0
B2_CONFIGURED=0 是 legacy B2 未配置;目前 Google Drive / rclone provider 已配置,所以不是本輪 blocker。
3. Owner Request Matrix
| Item | Owner 要確認的復原能力 | 可接受的非敏感 evidence-id | 禁止內容 |
|---|---|---|---|
restic_repository_password |
能在災難時取回 restic repository password。 | Password manager item ID、sealed envelope ID、recovery checklist ID。 | Restic password、recovery code、secret URL、截圖中的密碼。 |
offsite_provider_credentials |
能在災難時取回 Google Drive / rclone 或 offsite provider 憑證。 | Vault item ID、provider credential record ID、offsite access checklist ID。 | OAuth token、refresh token、application key、client secret、cookie。 |
break_glass_admin_credentials |
能在災難時取得 break-glass admin 登入或替代復原路徑。 | Break-glass credential record ID、sealed envelope ID、emergency access checklist ID。 | Admin password、SSH private key、OTP seed、recovery code。 |
dns_registrar_recovery |
能在災難時恢復 DNS registrar / domain control。 | Registrar recovery checklist ID、vault item ID、domain recovery record ID。 | Registrar password、recovery code、unredacted registrar session。 |
oauth_ai_provider_recovery |
能在災難時恢復 AI provider / OAuth provider 管理權。 | Provider recovery checklist ID、vault item ID、provider account recovery record ID。 | API key、token、client secret、OAuth refresh token。 |
Evidence-id 必須是「外部系統中可查核的記錄代號」,例如 password manager item ID、sealed envelope 編號、內部 recovery checklist 編號。它不能是憑證本身,也不能足以推導出憑證。
4. 禁止提交的資料
以下內容不得出現在 repo、聊天、issue、PR、LOGBOOK、snapshot、terminal output 貼文或 marker note:
- 密碼、token、API key、private key、SSH key、cookie、session。
- OAuth client secret、refresh token、authorization header。
- OTP seed、recovery code、backup code。
- PostgreSQL / Redis / Sentry / provider connection URL 中含帳密的字串。
- secret hash、prefix、suffix、partial token、可逆遮罩值。
- 未遮罩截圖、未遮罩 password manager 畫面。
- placeholder,例如
EVIDENCE_ID_FOR_*、VAULT-ITEM-ID、TODO、TBD。
5. Safe Execution Flow
以下命令只能在 owner 已於 repo / chat 外部確認復原資料存在後執行。<NON_SECRET_EVIDENCE_ID> 必須換成真實但非敏感的外部記錄代號。
# 1. 讀取目前 marker 狀態;此步不暴露 secret。
/backup/scripts/mark-credential-escrow-verified.sh --status
# 2. 先 dry-run 驗證 evidence-id 格式與 item 合法性;此步不寫入 marker。
/backup/scripts/mark-credential-escrow-verified.sh \
--item <item> \
--evidence-id <NON_SECRET_EVIDENCE_ID> \
--dry-run
# 3. dry-run OK 且 owner 明確批准後,才寫入 marker。
/backup/scripts/mark-credential-escrow-verified.sh \
--item <item> \
--evidence-id <NON_SECRET_EVIDENCE_ID> \
--note <SHORT_NON_SECRET_NOTE>
# 4. 寫入後重新產生 escrow / backup / cold-start 證據。
/backup/scripts/offsite-escrow-evidence-report.sh --no-color
/backup/scripts/backup-status.sh --no-notify --no-refresh
/home/wooo/scripts/full-stack-cold-start-check.sh --monitor-read-only --no-color --watch --interval 1 --max-attempts 1
若 dry-run 拒絕 placeholder、過短值、疑似 secret 或不合法 item,必須停止,回到 owner 重新提供非敏感 evidence-id。
6. 驗收條件
| Gate | 必須看到 |
|---|---|
| Escrow marker | 五個 item 都不再顯示 missing。 |
| Escrow report | ESCROW_MISSING_COUNT=0。 |
| Prometheus textfile | awoooi_backup_dr_credential_escrow_missing_count 0。 |
| Backup status | escrow_missing=0,且 core_blockers=0 維持不變。 |
| Alertmanager | BackupCredentialEscrowEvidenceMissing 不再 firing。 |
| Cold-start | WARN=0 BLOCKED=0 維持 green。 |
只有以上全部成立,才可以把 DR scorecard 從 BLOCKED 改為 COMPLETE。
7. 工作推進百分比
| Lane | 目前完成度 | 下一步 |
|---|---|---|
| Owner request package | 80% | 指定 owner role / team,交付本文件與五個 item 清單。 |
| Owner external verification | 0% | Owner 在 password manager、sealed envelope、registrar/provider account 外部完成查核。 |
| Dry-run validation | 0% | 五個 item 都以非敏感 evidence-id 通過 --dry-run。 |
| Marker write | 0% | 五個 marker 寫入成功。 |
| DR closeout verification | 0% | escrow report、backup status、Alertmanager、cold-start 全部重跑且綠燈。 |
8. 目前不可宣稱
- 不可宣稱 DR scorecard complete。
- 不可宣稱 credential escrow 已補齊。
- 不可把備份 / offsite / cold-start green 等同 credential escrow green。
- 不可用 placeholder、測試 ID 或秘密值補 marker。
- 不可消音
BackupCredentialEscrowEvidenceMissing,它目前是正確紅燈。