Connectors
Connectors produkcyjne
Connectors commitują external source evidence do Proofstream bez ujawniania tenant sessions. Każdy connector ma prawdziwe authentication, replay handling, diagnostics i revoke behavior.
Connector model
Connector to adapter source-to-evidence. Obserwuje coś w realnym source system, weryfikuje, że source może mówić, normalizuje observation i zapisuje Proofstream event ze stabilną source reference. Connectors należy wybierać, gdy evidence powstaje poza kodem aplikacji albo gdy source system musi zachować własną tożsamość w evidence trail.
- Uwierzytelnij source delivery albo provider API.
- Znormalizuj source reference i event type.
- Odrzuć replay conflicts dla tej samej source reference.
- Zapisz event do skonfigurowanego streamu.
- Zwróć albo zapisz Attesto receipt.
- Pokaż diagnostics bez wycieku provider secrets lub raw private payloads.
| Rodzina connector | Tenant management route | Ingress route | Uwagi |
|---|---|---|---|
| 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 | Tworzenie może ujawnić connector secret tylko raz. Przechowuj go wyłącznie server-side. |
| 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 są walidowane przed zapisem znormalizowanej repository evidence. |
| 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 | Używa tenant session do commit metadata i integrity evidence; object bytes pozostają w source store. |
Każdy connector event musi zachować source system id, source object id, source event type, source timestamp z timezone albo offset UTC, connector received time, idempotency/source reference oraz normalized payload commitment. Jeśli provider nie może dostarczyć source timestamp timezone-aware, connector musi odrzucić walidację zamiast wymyślać timestamp.
Signed webhook connector
Użyj signed webhook connector, gdy external source może wykonać POST
signed JSON body do Attesto. Source reference jest idempotency key
wewnątrz streamu.
Dashboard tworzy i revoke connector records przez /v2/tenant/connectors/signed-webhooks; source system wysyła events wyłącznie do public 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
GitHub connector weryfikuje X-Hub-Signature-256 na raw
provider body i commituje znormalizowane repository-change metadata do
skonfigurowanego 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
GitLab connector weryfikuje skonfigurowany signing token na raw provider delivery. Istniejące installations mogą zachować legacy token mode do czasu rotacji.
{
"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
Użyj object commitments, gdy evidence już znajduje się w AWS S3,
Cloudflare R2 albo S3-compatible store. Attesto wykonuje realny
HeadObject call, wystawia receipt dla object identity i
integrity metadata oraz nie proxy 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 powinny zawierać tylko metadata bezpieczne do zapisania jako evidence. Object content pozostaje w customer object store.
Marketplace distribution
Zweryfikowane first-party connector manifests są dostępne przez
https://marketplace.attesto.eu. Publiczni visitors mogą
przeglądać katalog. Pobranie manifest, uzyskanie entitlement albo
utworzenie installation wymaga Attesto tenant session. Marketplace i
connector kits używają tych samych manifest validation rules
attesto.connector.v2.
Pierwsze darmowe Attesto first-party listings to Signed Webhook Evidence, GitHub Repository Evidence, GitLab Repository Evidence oraz S3/R2 Object Commitment. Każdy listing wiąże wynik marketplace validation z connector-assurance canary guarantee, dzięki czemu Evidence Score i Verified badges są reprodukowalną release evidence, a nie etykietami marketingowymi.
Connector diagnostics
Tenant-visible diagnostics pokazują, czy connector jest enabled, recently used, failing auth, failing replay checks albo revoked. Nie ujawniają connector credentials, raw provider payloads ani private object content.
| Status | Znaczenie |
|---|---|
healthy | Najnowsza signed delivery albo source check zakończyła się sukcesem. |
auth_failed | Provider lub HMAC signature nie przeszła weryfikacji. |
replay_conflict | Ta sama source reference została odtworzona z inną treścią. |
revoked | Ingress jest disabled i powinien fail closed. |
Safety boundaries
- Connector endpoints odrzucają replay conflicts.
- Revoked connectors zwracają not found na ingress.
- Outbound URLs muszą być HTTPS i publicly routable.
- S3-compatible connector credentials powinny być read-only i ograniczone do wymaganego bucket prefix.
- Nie umieszczaj raw object content, private material ani customer secrets w connector metadata.
