Zum Hauptinhalt
Intelliger
Unternehmensagenten

AI Agent Architecture für auditierbare MCP-Transaktionen

Eine KI-Agent-Architektur, die das MCP-Tool in überprüfbare Transaktionen verwandelt, die Identität, Mandate, verbindliche Anforderungen, Genehmigungen und unterschriebene Quittungen verwenden.

AI Agent Architecture für auditierbare MCP-Transaktionen
Intelliger•
14 Minuten Lesezeit

Eine auditierbare KI-Agent-Architektur muss aus einem Tool-Aufruf mehr als eine Softwareanweisung machen. Eine Unternehmenstransaktion ist ein Anspruch auf Verantwortung: Ein bekannter Agent, der für eine verantwortliche Organisation handelt, übte im Rahmen einer bestimmten Richtlinie delegierte Befugnisse aus und verursachte ein beobachtetes Ergebnis.

Die Unterscheidung erscheint, wenn etwas schief geht. rotate_database_credentialDrei Monate später fragt ein Auditor, wer die Rotation autorisiert hat, welche Datenbank im Umfang war, ob ein Änderungsticket geöffnet war und welche Richtlinienversion die Ausführung erlaubte. Eine Trace mit Werkzeugargumenten und Modellnachrichten beantwortet diese Fragen nicht zuverlässig.

Wir werden eine Credential-Rotation durch eine Transaktionsarchitektur verfolgen. Die Operation ist bewusst konsequent, aber vertraut. Der gleiche Ablauf funktioniert für Zahlungen, Rückerstattungen, Beschaffungsaufträge und regulierte Datenfreigabe.

Definieren Sie die AI-Agent-Transaktion, bevor Sie das Modell verbinden

Das Tool akzeptiert:

{
  "name": "rotate_database_credential",
  "arguments": {
    "database": "payments-ledger-prod",
    "principal": "reconciliation-worker",
    "change_ticket": "CHG-2026-1842"
  }
}

Bevor Sie es einem Agenten aussetzen, notieren Sie die Transaktionsinvarianten:

  • Datenbank und Auftraggeber müssen registrierte Ressourcen sein;
  • das Umsteigeticket muss für das Wartungsfenster geöffnet und genehmigt sein;
  • Der Agent braucht explizit credential.rotate Befugnis;
  • die Rotation der Produktion erfordert eine gesonderte menschliche Genehmigung;
  • Der Agent darf das generierte Geheimnis niemals sehen;
  • die alten und neuen Glaubensstaaten brauchen Abstimmung;
  • Jede Entscheidung muss an die genauen Argumente gebunden sein.

Diese Liste konvertiert ein vages Ziel, "Lassen Sie den Agenten Anmeldeinformationen rotieren", in Bedingungen, die Software durchsetzen kann.

Schritt 1: Lösen Sie den Agenten und die verantwortliche Organisation

Die Laufzeit authentifiziert sich mit einem nachweisgebundenen Token, einem mTLS-Zertifikat, einer Workload-Identität oder einer signierten Anforderung.

Lassen Sie den Anrufer seinen Mandanten nicht durch Angabe eines nicht verifizierten Headers auswählen. Mieter, Schauspieler und Rollen müssen von einer verifizierten Identität stammen. Die Signaturschlüssel des Emittenten müssen von den Laufzeitschlüsseln getrennt sein.

Das Identitätsergebnis sollte genügend Informationen für spätere Richtlinien und Beweise enthalten:

type VerifiedIdentity = {
  agentId: string
  organisationId: string
  runtimeKeyId: string
  issuerId: string
  assuranceLevel: string
  status: "active" | "suspended" | "revoked"
}

Die Authentifizierung schlägt fehl, wenn der Nachweis ungültig ist, die Emittentenkette nicht an einem akzeptierten Vertrauensanker endet, der Schlüssel außerhalb seiner Gültigkeitsdauer liegt oder ein aktueller Statusdatensatz den Agenten, Schlüssel oder Emittenten widerruft.

Schritt 2: Delegierte Befugnis lösen

Der Agent legt ein kurzlebiges Mandat für die Änderung vor, das Gegenstand, Handlung, Ressourcen, Zweck, Gültigkeitsdauer, Übertragungsregeln und Beweisschlüssel binden sollte.

{
  "id": "mandate:db-rotation:1842",
  "subject": "agent:sre:remediation-4",
  "issuer": "org:acme:platform-operations",
  "purpose": "execute_approved_change_CHG-2026-1842",
  "actions": ["credential.rotate"],
  "resources": [
    "database:payments-ledger-prod",
    "principal:reconciliation-worker"
  ],
  "constraints": {
    "change_ticket": "CHG-2026-1842",
    "max_uses": 1,
    "requires_approval": true,
    "max_delegation_depth": 0
  },
  "not_before": "2026-08-10T22:00:00Z",
  "expires_at": "2026-08-10T22:30:00Z"
}

Wenn dieses Mandat ein Kind ist, überprüfen Sie die gesamte Elternkette und beweisen Sie, dass kein Kind umfassendere Handlungen, Ressourcen, Zeit oder Nutzung erlangt hat.

Schritt 3: Normalisieren des Aufrufs in einen Transaktionsumschlag

Das Gateway wandelt MCP-spezifische Eingaben in einen protokollneutralen Transaktionsdatensatz um. Stabile Aktions- und Ressourcenbezeichner sind wichtiger als der Anzeigename, den das Modell sah.

Bei dem folgenden Objekt handelt es sich um protokollneutrale Pseudodaten, nicht um eine drahtkompatible OATI-Transaktionshülle.

{
  "id": "tx:db-rotation:01J5Q1",
  "agent_id": "agent:sre:remediation-4",
  "organisation_id": "org:acme",
  "mandate_id": "mandate:db-rotation:1842",
  "action": "credential.rotate",
  "resource": "database:payments-ledger-prod",
  "purpose": "execute_approved_change_CHG-2026-1842",
  "destination": "vault-broker:prod-eu",
  "protocol": "mcp",
  "request_digest": "sha256:4a7c...",
  "issued_at": "2026-08-10T22:07:14Z",
  "nonce": "01J5Q1E6A0P3",
  "proof_audience": "mcp://operations-gateway.acme.example",
  "operation_idempotency_key": "credential-rotation:payments-ledger-prod:CHG-2026-1842"
}

Berechnen request_digest Über kanonische sicherheitsrelevante Eingaben, einschließlich aller drei Tool-Argumente, signieren Sie den Umschlag oder binden Sie ihn in den Laufzeitnachweis. Vergewissern Sie sich an jeder Transformationsgrenze, dass der Digest immer noch die auszuführende Operation beschreibt.

Der Umschlag erstellt ein gemeinsames Vokabular für MCP-, HTTP-, gRPC- und Warteschlangenarbeiter und verhindert, dass Geschäftsrichtlinien von rahmenspezifischen Nachrichtenformen abhängen.

Schritt 4: Wiedergabe von Ansprüchen und Nutzungszustand

Überprüfen Sie die Zeit, die Zielgruppe und die empfangene Anforderung, bevor Sie den Zustand verbrauchen.

await store.transaction(async tx => {
  await tx.replay.claim(envelope.id, envelope.nonce)
})

Der Anspruch muss ein Duplikat über Gateway-Replikate ablehnen. Eine prozesslokale Karte funktioniert nicht in einer skalierten Bereitstellung. Definieren Sie die Aufbewahrung lange genug, um das Proof-Lifetime- und Business-Retry-Fenster abzudecken.

Reservieren Sie keine Verbrauchsberechtigung oder markieren Sie die Geschäftsmaßnahme noch nicht erfolgreich. allow Das Hauptbuch benötigt eine Transaktionszustandsmaschine, die authorized, approval_pending, reserved, submitted, succeeded, failed, unknown Abgelaufene oder aufgegebene Genehmigungen erfordern deterministische Freigaberegeln.

Schritt 5: Richtlinie deterministisch bewerten

Die politische Entscheidung beruht auf einer verifizierten Identität, einem wirksamen Mandat, einer kanonischen Transaktion und aktuellen Geschäftsdaten.

permit (
  principal,
  action == Action::"credential.rotate",
  resource
)
when {
  principal.organisation == resource.owner &&
  context.mandate.purpose == context.change.ticketPurpose &&
  context.change.status == "approved" &&
  context.change.windowOpen == true &&
  context.mandate.maxUses == 1
};

Eine Produktionsrichtlinie erfordert auch Genehmigungsanforderungen, Umweltklassifizierung, Aufgabentrennung, Notfallbedingungen und Outputkontrollen. Speichern Sie den zusammengestellten Policy Digest und die Fakten, die für die Entscheidung verwendet wurden. Nur den Quelldateinamen aufzuzeichnen reicht nicht aus, weil sich diese Datei ändern kann.

Die Entscheidung könnte durch die folgende protokollneutrale Projektion dargestellt werden: Es handelt sich nicht um das normative OATI-Entscheidungsschema.

{
  "id": "decision:db-rotation:01J5Q1",
  "transaction_id": "tx:db-rotation:01J5Q1",
  "result": "approval_required",
  "reason": "production_credential_rotation",
  "policy_digest": "sha256:91be...",
  "required_approver_role": "production-change-approver"
}

Schritt 6: Binden Sie die Genehmigung an die genaue Transaktion

Die Transaktionsgenehmigung in diesem Beispiel für Credential-Rotation ist die Zielarchitektur. Der eingesetzte OATI-Kontrollebenen-Slice beweist die unabhängige Genehmigung für Ausgabepakete und nicht einen abgeschlossenen Geschäftstransaktionsgenehmigungsdienst.

Ein Genehmigungsbildschirm sollte die Datenbank, den Auftraggeber, das Ticket, den anfordernden Agenten, den Zweck, das Zeitfenster und das Policy-Ergebnis anzeigen.

Wenn sich ein geschütztes Feld nach der Genehmigung ändert, gilt die Genehmigung nicht mehr. Berechnen Sie den Digest und fordern Sie eine neue Entscheidung. Dies blockiert einen Substitutionsangriff, bei dem ein Agent die Genehmigung für die Staging erhält und dann das Ziel in die Produktion wechselt.

Der von OATI implementierte vertikale Kontrollebenen-Slice verwendet eine unabhängige Bündel-Fingerabdruck-Genehmigung, so dass ein ausstellender Auftraggeber sein eigenes Produktionsbündel nicht genehmigen kann.

Schritt 7: Broker eine temporäre Ausführung Fähigkeit

Nach Autorisierung und Genehmigung bittet das Gateway Vault, einen Cloud-STS oder einen anderen Anmelder um eine aufgabenspezifische Fähigkeit.

Das Modell erhält kein Geheimnis. Das Gateway injiziert die Fähigkeit in den Aufruf des bestehenden Rotationsdienstes:

const capability = await broker.issue({
  subject: envelope.agent_id,
  action: envelope.action,
  resource: envelope.resource,
  audience: "https://vault-broker.acme.example",
  expiresInSeconds: 60
})

await mandateUsage.reserve(mandate.id, envelope.id, 1)

const result = await rotationService.rotate({
  database: call.database,
  principal: call.principal,
  idempotencyKey: envelope.operation_idempotency_key,
  authorization: capability
})

Der Dienst gibt einen Verweis auf die neue Berechtigungsversion und das Rotationsereignis zurück, nicht den geheimen Wert.

Schritt 8: Abgleichen, was passiert ist

Netzwerke scheitern an unangenehmen Punkten. Der Dienst kann die Rotation abschließen, während das Gateway die Zeit ausschaltet, bevor es die Antwort erhält.

Wenn das Ergebnis mehrdeutig ist, den Statusendpunkt des Anbieters abfragen oder mit seinem Ereignisstrom abgleichen. unknown bis es Beweise für Erfolg oder Misserfolg gibt.

Diese Unterscheidung ist im Audit wichtig. Eine Entscheidung, eine Operation zuzulassen, beweist nicht die Ausführung. 200 Beobachtet von einem Proxy kann nicht beweisen, dass sich der dauerhafte Zustand geändert hat.

Schritt 9: Ausstellen einer unterschriebenen Quittung

Dies ist eine illustrative Beweisprojektion, nicht das normative OATI-Empfangsschema; das Beweisobjekt wird zur Lesbarkeit weggelassen:

{
  "id": "receipt:db-rotation:01J5Q1",
  "transaction_id": "tx:db-rotation:01J5Q1",
  "agent_id": "agent:sre:remediation-4",
  "organisation_id": "org:acme",
  "mandate_id": "mandate:db-rotation:1842",
  "decision": "allow",
  "outcome": "succeeded",
  "request_digest": "sha256:4a7c...",
  "policy_digest": "sha256:91be...",
  "approval_id": "approval:change:1842-7",
  "external_reference": "vault:event:rot-76391",
  "occurred_at": "2026-08-10T22:07:23Z",
  "issuer": "issuer:acme:operations"
}

Der unterzeichnete Nachweis sollte die Verifizierungsmethode, die Erstellungszeit, die Zielgruppe, die Nonce und das Ablaufdatum entsprechend dem gewählten Profil tragen.

Ein unabhängiger Prüfer kann das Schema validieren, den Emittenten und den Schlüssel auflösen, die kanonische Nutzlast neu erstellen, die Signatur verifizieren, Vertrauen und Widerruf überprüfen und dann die Quittungsreferenzen der erwarteten Transaktion und des Mandats bestätigen.

Die Quittung ist ein starker Beweis für die Aufzeichnungen des Emittenten. Es ist keine Wahrheitsmaschine. Es kann nicht beweisen, dass das Änderungsticket eine solide geschäftliche Rechtfertigung enthielt oder dass ein externer Anbieter ehrlich berichtet hat.

Fehlerfälle, die es wert sind, zuerst entworfen zu werden

Der Trust Resolver ist down. Wesentliche Aktionen sollten nicht abgeschlossen werden, es sei denn, eine Police erlaubt ausreichend neue signierte lokale Aufzeichnungen.

Der Replay Store ist nicht verfügbar. Führen Sie keine einmalige Operation aus, wenn die Eindeutigkeit nicht durchgesetzt werden kann.

Die Genehmigung erfolgt nach Ablauf des Mandats. Neubewertung der gesamten Transaktion. Eine Genehmigung kann die abgelaufene Autorität nicht wiederbeleben.

Die Richtlinie ändert sich, während die Genehmigung aussteht. Binden Sie die Genehmigung an den Policy Digest und legen Sie dann fest, ob eine Aktualisierung der Policy anhängige Arbeiten ungültig macht.

Die Ausführung ist erfolgreich und die Empfangsspeicherung ist fehlgeschlagen. Markieren Sie den Evidenzpfad als operative Ausnahme; sagen Sie den nachgeschalteten Systemen nicht, dass das Fehlen einer dauerhaften Quittung bedeutet, dass die Aktion nicht stattgefunden hat.

Der Agent versucht mit einer neuen Transaktions-ID. Die Idempotenz auf Business-Ebene muss auch die Zieloperation und das Änderungsticket enthalten.

Die Antwort enthält ein Geheimnis. Filter nach Schema und Datenklassifizierung: Aufzeichnen, dass die Filterung stattgefunden hat, ohne das Geheimnis in die zentrale Telemetrie zu legen.

Ein Elternmandat wird mid-flow widerrufen. Überprüfung an der endgültigen Ausführungsgrenze für Operationen, bei denen die Genehmigungsverzögerung wesentlich ist.

Eine Implementierungs-Checkliste

  • Definieren Sie Transaktionsinvarianten, bevor Sie das MCP-Tool veröffentlichen.
  • Ableiten von Mandant, Agent und Rollen aus verifizierter Laufzeitidentität.
  • Beheben Sie Emittentenketten, Schlüssel, Status und Widerruf.
  • Benötigen Sie ein kurzlebiges, aufgabenspezifisches Mandat.
  • Normalisieren Sie den Aufruf in einen protokollneutralen Umschlag.
  • Canonicalize und verdauen jedes geschützte Argument.
  • Überprüfen Sie Publikum, Zeit, Nonce und Beweisbindung.
  • Reklamation Replay und Mandat Nutzung atomar.
  • Führen Sie deterministische Richtlinie und speichern Sie seinen Digest.
  • Binden Sie die menschliche Zustimmung an den genauen Transaktionsverdau.
  • Erlangen Sie Ausführungsberechtigungen erst nach Autorisierung.
  • Bewahren Sie Anmeldeinformationen und sensible Ausgaben außerhalb des Modellkontexts auf.
  • Übergeben Sie einen stabilen Idempotenzschlüssel an den externen Anbieter.
  • Abgleichen Sie mehrdeutige und verzögerte Ergebnisse.
  • Unterschreiben Sie eine Quittung, die die Entscheidung vom beobachteten Ergebnis trennt.
  • Testen Sie Ausfälle und Teilausfälle, nicht nur verweigerte Eingaben.

Verwandte technische Anleitungen

Was OATI implementiert und was bleibt

OATI Ein öffentliches Entwickler-Vorschau-Framework implementiert die Kernobjekte, die in diesem Fluss verwendet werden: Passport, Mandate, Transaction Envelope, Decision and Receipt. Das TypeScript-Referenz-SDK enthält Middleware und Adapter. Python und Go implementieren den tragbaren Kern. Alle drei führen 73-Konformitätsfälle durch, die Schemavalidität, kanonisches JSON, Signaturen, Vertrauen, Wiederholung, Delegation, Commerce und RWA-Profilregeln abdecken, sowie Entdeckungsbindung.

Der eingesetzte vertikale Abschnitt umfasst private Registrierung, Ausstellung, Genehmigung, Veröffentlichung, öffentliche Suche, Widerruf nach Ziel- und Schlüssellebenszyklus. Mehrere Zielkomponenten sind nicht vollständig. Der Richtlinien-Compiler und dauerhafte Beweis- und Streithelfer bleiben Gerüste. Der Hub ist in erster Linie eine Anwendungsschale und die Durchsetzung des Kunden-Gateways ist eine Referenzintegration und keine vollständig betriebene kommerzielle Flotte. Eine unabhängige Sicherheitsüberprüfung steht noch aus.

Diese Grenzen sind wichtig, weil eine Audit-Architektur nicht nur auf Diagrammen verkauft werden kann. Erstellen Sie den Transaktionsrekord gleichzeitig mit dem Tool. Testen Sie dann, ob ein Verifizierer, der die Modellkonversation nie gesehen hat, rekonstruieren kann, wer unter welcher Autorität, gegen welche Anforderung, mit welcher Richtlinie und was beobachtet wird Ergebnis.