Attesto

Connectors

Connectors de production

Les connectors inscrivent l'external source evidence dans Proofstream sans exposer les tenant sessions. Chaque connector possède une vraie authentication, replay handling, diagnostics et revoke behavior.

Modèle connector

Un connector est un adaptateur source-to-evidence. Il observe quelque chose dans un vrai source system, valide que la source est autorisée à parler, normalise l'observation et écrit un event Proofstream avec une source reference stable. Les connectors sont à choisir lorsque l'evidence provient de l'extérieur de votre code applicatif ou quand un source system doit conserver sa propre identité dans l'evidence trail.

  1. Authentifier la source delivery ou l'API provider.
  2. Normaliser la source reference et l'event type.
  3. Rejeter les replay conflicts pour la même source reference.
  4. Écrire l'event dans le stream configuré.
  5. Retourner ou stocker l'Attesto receipt.
  6. Exposer des diagnostics sans divulguer provider secrets ni raw private payloads.
Famille connectorTenant management routeIngress routeNotes
Signed webhookGET/POST /v2/tenant/connectors/signed-webhooks, DELETE /v2/tenant/connectors/signed-webhooks/{connector_id}POST /v2/connectors/signed-webhooks/{connector_id}/eventsLa création peut révéler le connector secret une seule fois. Stockez-le uniquement côté serveur.
GitHub/GitLab repository webhookGET/POST /v2/tenant/connectors/repository-webhooks, DELETE /v2/tenant/connectors/repository-webhooks/{connector_id}POST /v2/connectors/repository-webhooks/{connector_id}/eventsLes provider delivery signatures sont validées avant l'écriture de repository evidence normalisée.
S3/R2 object commitmentGET/POST /v2/tenant/connectors/s3-objects, DELETE /v2/tenant/connectors/s3-objects/{connector_id}POST /v2/tenant/connectors/s3-objects/{connector_id}/commitUtilise la tenant session pour commit metadata et integrity evidence; les object bytes restent dans le source store.

Chaque connector event doit conserver source system id, source object id, source event type, source timestamp avec timezone ou offset UTC, connector received time, idempotency/source reference et normalized payload commitment. Si un provider ne peut pas produire de source timestamp timezone-aware, la validation du connector doit échouer au lieu d'en inventer un.

Signed webhook connector

Utilisez le signed webhook connector lorsqu'une source externe peut POST un signed JSON body vers Attesto. La source reference est l'idempotency key dans le stream. Le dashboard crée et révoque les connector records via /v2/tenant/connectors/signed-webhooks; le système source envoie les events uniquement vers le 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

Le connector GitHub valide X-Hub-Signature-256 sur le raw provider body et commit des repository-change metadata normalisées dans le Proofstream configuré.

{
  "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

Le connector GitLab valide le signing token configuré sur la raw provider delivery. Les installations existantes peuvent conserver leur legacy token mode jusqu'à rotation.

{
  "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

Utilisez les object commitments lorsque l'evidence existe déjà dans AWS S3, Cloudflare R2 ou un store S3-compatible. Attesto effectue un vrai appel HeadObject, receipt l'object identity et les integrity metadata, et ne proxifie pas le contenu de l'objet.

POST /v2/tenant/connectors/s3-objects/{connectorId}/commit
Content-Type: application/json

{
  "key": "evidence/input.json",
  "versionId": "$OBJECT_VERSION_ID",
  "metadata": {
    "source": "case-file"
  }
}

Les object commitments ne doivent inclure que des metadata sûres à stocker comme evidence. Le contenu de l'objet reste dans le customer object store.

Distribution marketplace

Les manifests de connectors first-party validés sont disponibles via https://marketplace.attesto.eu. Les visiteurs publics peuvent parcourir le catalogue. Télécharger un manifest, acquérir une entitlement ou créer une installation exige une Attesto tenant session. La marketplace et les connector kits utilisent les mêmes règles de validation de manifest attesto.connector.v2.

Les premiers listings Attesto first-party gratuits sont Signed Webhook Evidence, GitHub Repository Evidence, GitLab Repository Evidence et S3/R2 Object Commitment. Chaque listing lie son résultat de validation marketplace à une garantie de canary connector-assurance, afin que l'Evidence Score et les badges Verified soient une release evidence reproductible et non des labels marketing.

Connector diagnostics

Les diagnostics visibles par le tenant montrent si un connector est enabled, récemment utilisé, failing auth, failing replay checks ou revoked. Ils ne révèlent pas les connector credentials, raw provider payloads ni private object content.

StatusSignification
healthyUne récente signed delivery ou source check a réussi.
auth_failedLa signature provider ou HMAC n'a pas été vérifiée.
replay_conflictLa même source reference a été rejouée avec un contenu différent.
revokedIngress est disabled et doit fail closed.

Safety boundaries