Attesto

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

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

  1. Die Customer Source erstellt ein Attestation Event.
  2. Local Vault signiert und speichert das Event im encrypted Spool.
  3. Local Vault relayt das Event an POST /v2/local-vault/installations/{installation_id}/events auf https://verify.attesto.eu.
  4. Attesto gibt das Proofstream Receipt zurück.
  5. 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.

StateBedeutung
queuedLokal gespeichert und wartet auf Relay.
relayingOutbound Request läuft.
receiptedAttesto gab ein Proofstream Receipt zurück.
conflictSource Reference wurde mit anderem canonical Content replayed.

Security Model

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