Connectors
Production Connectors
Connectors committen externe Source Evidence in Proofstream, ohne Tenant Sessions offenzulegen. Jeder Connector hat echte Authentication, Replay Handling, Diagnostics und Revoke Behavior.
Connector Model
Ein Connector ist ein Source-to-evidence Adapter. Er beobachtet etwas in einem echten Source System, validiert, dass die Source sprechen darf, normalisiert die Observation und schreibt ein Proofstream Event mit stabiler Source Reference. Connectors sind sinnvoll, wenn Evidence außerhalb Ihres Anwendungscodes entsteht oder wenn ein Source System seine eigene Identität im Evidence Trail behalten muss.
- Source Delivery oder Provider API authentifizieren.
- Source Reference und Event Type normalisieren.
- Replay Conflicts für dieselbe Source Reference ablehnen.
- Event in den konfigurierten Stream schreiben.
- Attesto Receipt zurückgeben oder speichern.
- Diagnostics anzeigen, ohne Provider Secrets oder Raw Private Payloads zu leaken.
| Connectorfamilie | Tenant management route | Ingress route | Hinweise |
|---|---|---|---|
| Signed webhook | GET/POST /v2/tenant/connectors/signed-webhooks, DELETE /v2/tenant/connectors/signed-webhooks/{connector_id} | POST /v2/connectors/signed-webhooks/{connector_id}/events | Creation kann das connector secret einmal anzeigen. Nur server-side speichern. |
| GitHub/GitLab repository webhook | GET/POST /v2/tenant/connectors/repository-webhooks, DELETE /v2/tenant/connectors/repository-webhooks/{connector_id} | POST /v2/connectors/repository-webhooks/{connector_id}/events | Provider delivery signatures werden validiert, bevor normalisierte Repository Evidence geschrieben wird. |
| S3/R2 object commitment | GET/POST /v2/tenant/connectors/s3-objects, DELETE /v2/tenant/connectors/s3-objects/{connector_id} | POST /v2/tenant/connectors/s3-objects/{connector_id}/commit | Nutzt tenant session, um Objektmetadaten und Integrity Evidence zu committen; object bytes bleiben im Source Store. |
Jedes connector event muss source system id, source object id, source event type, source timestamp mit Zeitzone oder UTC-Offset, connector received time, idempotency/source reference und normalized payload commitment bewahren. Wenn ein Provider keinen timezone-aware source timestamp liefern kann, muss die Connector-Validierung fehlschlagen, statt einen Zeitstempel zu erfinden.
Signed Webhook Connector
Verwenden Sie den Signed Webhook Connector, wenn eine externe Source
einen signed JSON Body an Attesto POSTen kann. Die Source Reference ist
der Idempotency Key innerhalb des Streams.
Das Dashboard erstellt und revoked connector records über /v2/tenant/connectors/signed-webhooks; das Quellsystem sendet events nur an den öffentlichen connector ingress endpoint.
POST /v2/connectors/signed-webhooks/{connectorId}/events
Content-Type: application/json
X-Attesto-Connector-Timestamp: <unix-seconds>
X-Attesto-Connector-Signature: <hex-hmac-sha256>
{
"source_ref": "source-system-2026-0001",
"event_type": "source.observation",
"occurred_at": "2026-06-07T12:00:00Z",
"payload": {
"control": "policy-check",
"result": "passed",
"policy_id": "policy-2026-01"
}
}
GitHub Repository Connector
Der GitHub Connector validiert X-Hub-Signature-256 über
den Raw Provider Body und committet normalisierte Repository-change
Metadata in den konfigurierten Proofstream.
{
"provider": "github",
"event": "push",
"repository": "owner/repository",
"ref": "refs/heads/main",
"before": "sha-before",
"after": "sha-after",
"delivery_id": "provider-delivery-id"
}
GitLab Repository Connector
Der GitLab Connector validiert das konfigurierte Signing Token über die Raw Provider Delivery. Bestehende Installations können ihren Legacy Token Mode bis zur Rotation behalten.
{
"provider": "gitlab",
"event": "push",
"project_path": "group/project",
"ref": "refs/heads/main",
"before": "sha-before",
"after": "sha-after",
"delivery_id": "provider-delivery-id"
}
S3/R2 Object Commitment Connector
Verwenden Sie Object Commitments, wenn Evidence bereits in AWS S3,
Cloudflare R2 oder einem S3-compatible Store liegt. Attesto führt
einen echten HeadObject Call aus, receiptiert Object
Identity und Integrity Metadata und proxyt keinen Object Content.
POST /v2/tenant/connectors/s3-objects/{connectorId}/commit
Content-Type: application/json
{
"key": "evidence/input.json",
"versionId": "$OBJECT_VERSION_ID",
"metadata": {
"source": "case-file"
}
}
Object Commitments sollten nur Metadata enthalten, die sicher als Evidence gespeichert werden kann. Object Content bleibt im Customer Object Store.
Marketplace Distribution
Validierte First-party Connector Manifests sind über
https://marketplace.attesto.eu verfügbar. Öffentliche
Besucher können den Katalog durchsuchen. Manifest Download,
Entitlement Erwerb oder Installation Creation erfordern eine Attesto
Tenant Session. Marketplace und Connector Kits verwenden dieselben
attesto.connector.v2 Manifest Validation Rules.
Die ersten kostenlosen Attesto First-party Listings sind Signed Webhook Evidence, GitHub Repository Evidence, GitLab Repository Evidence und S3/R2 Object Commitment. Jedes Listing bindet sein Marketplace Validation Result an eine Connector-assurance Canary Guarantee, sodass Evidence Score und Verified Badges reproduzierbare Release Evidence sind und keine Marketinglabels.
Connector Diagnostics
Tenant-visible Diagnostics zeigen, ob ein Connector enabled, kürzlich genutzt, failing auth, failing replay checks oder revoked ist. Sie zeigen keine Connector Credentials, Raw Provider Payloads oder Private Object Content.
| Status | Bedeutung |
|---|---|
healthy | Recent signed delivery oder source check succeeded. |
auth_failed | Provider- oder HMAC-Signature konnte nicht verifiziert werden. |
replay_conflict | Dieselbe Source Reference wurde mit anderem Content erneut gesendet. |
revoked | Ingress ist disabled und sollte fail closed sein. |
Safety Boundaries
- Connector Endpoints lehnen Replay Conflicts ab.
- Revoked Connectors geben bei Ingress not found zurück.
- Outbound URLs müssen HTTPS und publicly routable sein.
- S3-compatible Connector Credentials sollten read-only und auf den erforderlichen Bucket Prefix beschränkt sein.
- Keine Raw Object Content, Private Material oder Customer Secrets in Connector Metadata ablegen.
