Enterprise Edge
Local Vault
Local Vault ist eine outbound-only Customer Edge Component für Connector Secret Storage, Source Attestation Signing, Offline Spooling, Event Relay und optionalen Customer-side Witness Betrieb. Es ist nicht HashiCorp Vault.
Responsibilities
- Connector Credentials lokal encrypten.
- Source Attestations vor Relay signieren.
- Events während Network Outages spoolen.
- Spooled Events in Reihenfolge mit Idempotency replayen.
- Als Customer-side Witness operieren, wenn Tenant Policy es aktiviert.
Installieren und ausführen
Installieren Sie Local Vault auf dem kundenseitig kontrollierten Edge Host. Runtime-Koordinaten können aus Flags oder Environment Variables kommen, aber Signing Keys, Spool Encryption Keys und Connector Credentials müssen aus dem lokalen Deployment Secret Manager kommen. Speichern Sie sie nicht in Shell History, Frontend-Konfiguration oder Attesto-Docs.
pipx install attesto-local-vault
export ATTESTO_LOCAL_VAULT_SPOOL_DB=/var/lib/attesto/local-vault.sqlite3
export ATTESTO_LOCAL_VAULT_INSTALLATION_ID="$ATTESTO_LOCAL_VAULT_INSTALLATION_ID"
export ATTESTO_LOCAL_VAULT_RELAY_URL="https://verify.attesto.eu/v2/local-vault/installations/$ATTESTO_LOCAL_VAULT_INSTALLATION_ID/events"
export ATTESTO_LOCAL_VAULT_KEY_ID="$ATTESTO_LOCAL_VAULT_KEY_ID"
attesto-local-vault drain-loop
Health Check
Führen Sie attesto-local-vault doctor nach dem Bootstrap
und während Operator Troubleshooting aus. Der Doctor prüft Config, lokale
Secrets, secrets.env-Berechtigungen, encrypted Spool
Readback, Relay URL HTTPS Regeln, Backend Erreichbarkeit, Server
Clock Skew, ungültige Server Date Header und
Dead-letter Depth. Failures liefern einen non-zero Exit Code.
Warnings halten den Spool nutzbar, müssen aber vom Operator geprüft
werden.
attesto-local-vault doctor
Enrollment
Ein tenant owner oder admin erzeugt ein kurzlebiges enrollment token mit
POST /v2/tenant/local-vault/enrollment-tokens. Der Edge
Host tauscht dieses Token über POST /v2/local-vault/enroll
gegen installation metadata und das Credential für outbound relay.
Enrollment tokens sind single-use; Attesto speichert nach Erstellung
nur ihren Hash.
Delivery Acknowledgement
Local Vault markiert ein Element nur dann als delivered, wenn Attesto ein 2xx JSON Receipt mit passendem localVaultAck.envelopeHash, Stream Binding und canonical event id zurückgibt. Ein Proxy 2xx, malformed body, mismatched receipt oder revoked installation bleibt eine fehlgeschlagene Delivery und unterliegt Retry oder Dead-letter Policy.
Outbound Relay Flow
- Die Customer Source erstellt ein Attestation Event.
- Local Vault signiert und speichert das Event im encrypted Spool.
- Local Vault relayt das Event an
POST /v2/local-vault/installations/{installation_id}/eventsaufhttps://verify.attesto.eu. - Attesto gibt das Proofstream Receipt zurück.
- Local Vault zeichnet Receipt State auf und behält Retry Metadata, bis Delivery complete ist.
{
"source_ref": "local-source-2026-0001",
"event_type": "source.attestation",
"payload_hash": "sha256-hex",
"local_signature": {
"alg": "Ed25519",
"kid": "local-vault-key-epoch",
"signature": "hex-encoded-signature"
}
}
Encrypted Spool
Der Spool bewahrt Events während Network Outages. Replay ist geordnet und idempotent: dieselbe Source Reference und derselbe Body können retried werden, aber changed Content für dieselbe Source Reference wird abgelehnt.
| State | Bedeutung |
|---|---|
queued | Lokal gespeichert und wartet auf Relay. |
relaying | Outbound Request läuft. |
receipted | Attesto gab ein Proofstream Receipt zurück. |
conflict | Source Reference wurde mit anderem canonical Content replayed. |
Security Model
- Für Relay Mode ist keine inbound Internet Route erforderlich.
- Connector Credentials bleiben an der Customer Edge encrypted.
- Relay Endpoints lehnen Replay Conflicts und tampered Envelopes ab.
- Revocation fails closed: eine revoked Installation kann keine accepted Events weiter relayen.
Customer Witness Mode
Wenn aktiviert, kann Local Vault monotonic Checkpoints für seine Tenant Streams signieren. Eine 2-of-3 Policy kann Attesto-operated, customer-operated und Assurance Witness Statements kombinieren, sodass kein einzelner Service als einzige Source of History behandelt wird.
Im Witness Mode signiert Local Vault Checkpoint Statements nur, wenn sie den last accepted Checkpoint für den Tenant Stream erweitern. Ein Conflict erzeugt Fork Visibility auf Kundenseite.
Witness checkpoint statements werden an
POST /v2/local-vault/installations/{installation_id}/witness/checkpoints
gesendet und nur akzeptiert, wenn die installation enabled, auf den
Tenant scoped und für den Stream monotonic ist.
Witness Command
Nutzen Sie den Operator Command, um ein monotonic checkpoint statement zu signieren oder fork evidence für einen conflicting checkpoint zurückzugeben. Der Command gibt nur öffentliches Receipt/Fork-Material aus; er druckt niemals den private signing key.
attesto-local-vault --witness-db /var/lib/attesto/local-vault-witness.sqlite3 \
witness-checkpoint \
--tenant-id ten_... \
--stream-id str_... \
--checkpoint-id chk_... \
--checkpoint-seq-no 42 \
--checkpoint-hash "$CHECKPOINT_HASH" \
--previous-checkpoint-hash "$PREVIOUS_CHECKPOINT_HASH"
Offline und Online Modes
- Online relay: Events werden schnell signed, spooled, relayed und receipted.
- Temporary offline relay: Events bleiben encrypted im local spool, bis outbound network zurückkehrt.
- Witness online: Checkpoint Statements werden gemäß Policy verifiziert und signiert.
- Witness unavailable: Quorum kann verzögert werden; Receipts bleiben unabhängig von Witness Availability.
