docs(secrets): build Infisical metadata inventory and migration map #735
Labels
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/platform#735
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Całe bezpieczeństwo systemu opiera się na InfiSkal-u, więc trzeba robić audyty regularnie, aby sprawdzić, czy wszystko z InfiSkal-em działa prawidłowo.
Nie czytam wszystkiego dokładnie, aby mieć pewność, że wszystko jest zrobione.
Potrzebny będzie pewnie jakiś admin read, który będzie w jakiś sposób dostępny raz na jakiś czas.
Teraz to trzeba zrobić po raz pierwszy, ale będzie też konieczność, aby przeprowadzać to regularnie.
Codex added a containment receipt PR for the 2026-06-04 secret exposure incident: #737
Status recorded there: containment_complete_with_deferred_exceptions, not full all-clear.
Retained exceptions remain: FORGEJO_API_TOKEN and FORGEJO_ADMIN_PAT_TEMP. Final all-clear still depends on full Infisical/runtime metadata comparison and this audit issue being closed with evidence.
Codex finalization run after PR #737 merge.
Evidence gathered
Platform release root on RS2000:
/opt/pdurlej-platform/currentto53c881523dd9398cf3752afa51eb27cf3f871799lifecycle=parked,status=OK,container_state=paused,smoke=OKOpenClaw/VPS1000:
OPENCLAW_GATEWAY_TAILSCALE_MODE=offruntime.envandmatrix.envtailscale serve failedcount 0Secret recovery metadata-only verifier:
platform_secret_recovery_report.v1runtime_secret_missing_from_infisical: 53declared_but_not_seen_in_runtime: 12infisical_runtime_length_mismatch: 2Patchwarden readiness:
patchwarden_bot_identity.v1identity_okClosure decision
Do not close this audit yet. Immediate containment is documented in PR #737, but the full metadata comparison still shows drift. This issue remains the ledger for cleaning or classifying those findings.
No secret values, token prefixes/suffixes, hashes, fingerprints, DSNs, env dumps, or value lengths are included in this comment.
audyt infiscalto docs(secrets): build Infisical metadata inventory and migration mapRole: executor
Intent: synthesize
Needs owner: no
Dopisuję kontekst z przerwanego wątku Codex, żeby to issue było trwałym miejscem pamięci dla pierwszego porządnego audytu Infisicala.
Cel
Zbudować bezpieczny, powtarzalny audyt Infisicala dla platformy: mapa ścieżek, nazw sekretów, klas sekretów, machine identities, ról i dodatkowych privilege, bez czytania lub publikowania wartości sekretów. To ma zmniejszyć chaos poznawczy agentów: zamiast zgadywać, gdzie jest PAT, SSH key, provider token albo app config, agent ma sprawdzić mapę i wiedzieć, jak używać Infisicala bez proszenia Piotra o ręczne tłumaczenie.
Dlaczego to istnieje
Infisical jest kanonicznym backendem sekretów dla RS2000 i VPS1000. Po M01/M04 okazało się, że brak jawnej mapy sekretów powoduje błądzenie agentów, powtarzanie pytań o tokeny, fałszywe założenia o scope’ach i niepotrzebną frustrację operatora. Ten audyt ma być odpowiednikiem indeksu/mapy, nie migracją i nie rotacją.
Koncept podejścia
Pierwszy przebieg ma być metadata-only:
pat,ssh-key,provider-key,api-token,db-password,app-config,break-glass,legacy,unknown,high|medium|low,unknownzostajeunknown, bez zgadywania wartości.Twardo poza zakresem pierwszego przebiegu:
secretValue,Docelowy output
Proponowany kształt z poprzedniego wątku:
platformctl secrets infisical inventory --metadata-only --format json|markdownstate/infisical/reports/latest-inventory.jsonstate/infisical/reports/latest-inventory.mddocs/infisical/key-map.mddocs/infisical/target-structure.mddocs/infisical/migration-candidates.mdRaport JSON/Markdown powinien mieć co najmniej:
complete: true|false,needs-move,Docelowa struktura Infisical
Zachować istniejące dobre rodziny:
/home-platform/providers/home-platform/forgejo_accounts/home-platform/infra/home-platform/apps/<app>/home-platform/agent_access/<type>/<domain>/<actor-or-purpose>/home-platform/safe-session/home-platform/backups/home-platform/matrix_accounts/home-platform/deprecated/<yyyy-mm-dd>/<source>Root-level sekrety pod
/home-platformtraktować jakoneeds-move, ale nie przenosić automatycznie.Dual-path migration prep, nie migracja
Audyt może przygotować kandydatów migracji, ale nie może ich wykonać. Dla każdego kandydata powinien powstać rekord:
source_path/key,target_path/key,copy_allowed: false,Kopiowanie wartości do nowych ścieżek powinno być osobnym krokiem z frazą typu:
Stare ścieżki pozostają aktywne do czasu smoke consumerów i osobnego cleanup gate. Sama obecność frazy w repo nie jest zgodą operacyjną; tooling musi wiązać zgodę z live kontekstem operatora i konkretnymi kandydatami.
Wnioski z Oracle review z poprzedniego wątku
Oracle ocenił pierwotną implementację jako NO-GO as-is dla merge, ale z dobrym kierunkiem. Wskazane poprawki, które powinny wejść do finalnej wersji:
includeImports=false,recursive=false,includePersonalOverrides=false,expandSecretReferences=false,viewSecretValue=false,secretPathzwracany przez API; jeśli różni się od żądanej ścieżki, drop/warning,complete=false, nie generować kandydatów migracji i kończyć kodem8/unknown state,targetPathPresentitargetExistsdla kandydatów migracji,Ważna decyzja o modelach / review
Nie wysyłać prywatnych diffów ani plików repo do cloudowego DeepSeek V4/Ollama cloud. Jeśli potrzebny drugi model:
Acceptance criteria
platformctl secrets infisical inventoryalbo równoważny skrypt.secretValue, bearerów, PAT-like 40-hex, private key markerów ani DSN z hasłami.secretPathmismatch i partial inventory.docs/infisical/key-map.mdopisuje aktualną mapę i datę refreshu.docs/infisical/target-structure.mdopisuje docelową strukturę.docs/infisical/migration-candidates.mdopisuje kandydatów bez wykonywania migracji.Suggested labels / routing
To issue powinno być traktowane jako security-sensitive i procesowe:
class/security-sensitiverisk/processrisk/exposureTrace
docs/infisical/key-map.md,docs/forgejo-agent-operations.md,docs/agents/agent-sos.mdNext: przyszły agent powinien najpierw sprawdzić, czy obecne
docs/infisical/key-map.mdjest wystarczająco aktualne, a potem rozbić to issue na atomic task albo wdrożyć minimalny read-only inventory command.Iskra judgment
pdurlej/platform#issue#735judge/p1,judge/operator-needediskraviaopenclawRationale: This is P1 operator-needed security inventory work because Infisical is a core trust dependency and needs a safe recurring metadata audit path.
Caveat: Audit metadata only unless explicitly gated; do not expose secret values, raw env, token material, or broaden admin access beyond the approved read scope.
Structured openclaw.judge.v0 payload