Skip to content

Audit en compliance

Elke beleidsbeslissing in Triggerfish wordt vastgelegd met volledige context. Er zijn geen uitzonderingen, geen "foutopsporingsmodus" die logging uitschakelt en geen manier voor het LLM om auditrecords te onderdrukken. Dit biedt een volledig, tamperbestendig record van elke beveiligingsbeslissing die het systeem heeft genomen.

Wat wordt vastgelegd

Auditlogging is een vaste regel — het is altijd actief en kan niet worden uitgeschakeld. Elke handhavingshookuitvoering produceert een auditrecord met:

VeldBeschrijving
timestampWanneer de beslissing is genomen (ISO 8601, UTC)
hook_typeWelke handhavingshook is uitgevoerd (PRE_CONTEXT_INJECTION, PRE_TOOL_CALL, POST_TOOL_RESPONSE, PRE_OUTPUT, SECRET_ACCESS, SESSION_RESET, AGENT_INVOCATION, MCP_TOOL_CALL)
session_idDe sessie waarin de actie plaatsvond
decisionALLOW, BLOCK of REDACT
reasonLeesbare verklaring van de beslissing
inputDe gegevens of actie die de hook heeft geactiveerd
rules_evaluatedWelke beleidsregels zijn gecontroleerd om de beslissing te nemen
taint_beforeSessie-taint-niveau vóór de actie
taint_afterSessie-taint-niveau na de actie (indien gewijzigd)
metadataAanvullende context specifiek voor het hooktype

Voorbeelden van auditrecords

Toegestane uitvoer

json
{
  "timestamp": "2025-01-29T10:23:47Z",
  "hook_type": "PRE_OUTPUT",
  "session_id": "sess_456",
  "decision": "ALLOW",
  "reason": "Classification check passed",
  "input": {
    "target_channel": "telegram",
    "recipient": "owner"
  },
  "rules_evaluated": [
    "no_write_down",
    "channel_classification"
  ],
  "taint_before": "INTERNAL",
  "taint_after": "INTERNAL"
}

Geblokkeerde write-down

json
{
  "timestamp": "2025-01-29T10:24:12Z",
  "hook_type": "PRE_OUTPUT",
  "session_id": "sess_456",
  "decision": "BLOCK",
  "reason": "Session taint (CONFIDENTIAL) exceeds effective classification (PUBLIC)",
  "input": {
    "target_channel": "whatsapp",
    "recipient": "external_user_789",
    "effective_classification": "PUBLIC"
  },
  "rules_evaluated": [
    "no_write_down",
    "channel_classification",
    "recipient_classification"
  ],
  "taint_before": "CONFIDENTIAL",
  "taint_after": "CONFIDENTIAL"
}

Toolaanroep met taint-escalatie

json
{
  "timestamp": "2025-01-29T10:23:45Z",
  "hook_type": "POST_TOOL_RESPONSE",
  "session_id": "sess_456",
  "decision": "ALLOW",
  "reason": "Tool response classified and taint updated",
  "input": {
    "tool_name": "salesforce.query_opportunities",
    "response_classification": "CONFIDENTIAL"
  },
  "rules_evaluated": [
    "tool_response_classification",
    "taint_escalation"
  ],
  "taint_before": "PUBLIC",
  "taint_after": "CONFIDENTIAL",
  "metadata": {
    "lineage_id": "lin_789xyz",
    "records_returned": 3
  }
}

Geblokkeerde agentdelegatie

json
{
  "timestamp": "2025-01-29T10:25:00Z",
  "hook_type": "AGENT_INVOCATION",
  "session_id": "sess_456",
  "decision": "BLOCK",
  "reason": "Agent ceiling (INTERNAL) below session taint (CONFIDENTIAL)",
  "input": {
    "caller_agent_id": "agent_abc",
    "callee_agent_id": "agent_def",
    "callee_ceiling": "INTERNAL",
    "task": "Generate public summary"
  },
  "rules_evaluated": [
    "delegation_ceiling_check",
    "delegation_allowlist",
    "delegation_depth"
  ],
  "taint_before": "CONFIDENTIAL",
  "taint_after": "CONFIDENTIAL"
}

Audittraceringsmogelijkheden

Audittraceringsstroom: voorwaartse tracering, achterwaartse tracering en classificatieverantwoording voeden compliance-export

Auditrecords kunnen op vier manieren worden bevraagd, elk voor een andere compliance- en forensische behoefte.

Voorwaartse tracering

Vraag: "Wat is er gebeurd met gegevens van Salesforce-record opp_00123ABC?"

Een voorwaartse tracering volgt een gegevenselement van zijn oorsprongspunt door elke transformatie, sessie en uitvoer. Het beantwoordt: waar zijn deze gegevens naartoe gegaan, wie heeft ze gezien en zijn ze ooit buiten de organisatie verzonden?

Oorsprong: salesforce.query_opportunities
  --> lineage_id: lin_789xyz
  --> classificatie: CONFIDENTIAL
  --> sessie: sess_456

Transformaties:
  --> Geëxtraheerde velden: naam, bedrag, fase
  --> LLM heeft 3 records samengevat in pijplijnoverzicht

Uitvoeren:
  --> Verzonden naar eigenaar via Telegram (TOEGESTAAN)
  --> Geblokkeerd van WhatsApp extern contact (GEBLOKKEERD)

Achterwaartse tracering

Vraag: "Welke bronnen hebben bijgedragen aan het bericht verzonden om 10:24 UTC?"

Een achterwaartse tracering begint bij een uitvoer en loopt terug door de lineageketen om elke gegevensbron te identificeren die de uitvoer heeft beïnvloed. Dit is essentieel voor het begrijpen of geclassificeerde gegevens zijn opgenomen in een antwoord.

Uitvoer: Bericht verzonden naar Telegram om 10:24:00Z
  --> sessie: sess_456
  --> lineagebronnen:
      --> lin_789xyz: Salesforce-kans (CONFIDENTIAL)
      --> lin_790xyz: Salesforce-kans (CONFIDENTIAL)
      --> lin_791xyz: Salesforce-kans (CONFIDENTIAL)
      --> lin_792xyz: Weer-API (PUBLIC)

Classificatieverantwoording

Vraag: "Waarom zijn deze gegevens gemarkeerd als CONFIDENTIAL?"

Classificatieverantwoording traceert terug naar de regel of het beleid dat het classificatieniveau heeft toegewezen:

Gegevens: Pijplijnsamenvatting (lin_789xyz)
Classificatie: CONFIDENTIAL
Reden: source_system_default
  --> Standaardclassificatie Salesforce-integratie: CONFIDENTIAL
  --> Geconfigureerd door: admin_001 op 2025-01-10T08:00:00Z
  --> Beleidsregel: "Alle Salesforce-gegevens geclassificeerd als CONFIDENTIAL"

Compliance-export

Voor juridisch, regelgevend of intern onderzoek kan Triggerfish de volledige bewakingsketen exporteren voor elk gegevenselement of tijdsbereik:

Exportverzoek:
  --> Tijdsbereik: 2025-01-29T00:00:00Z tot 2025-01-29T23:59:59Z
  --> Bereik: Alle sessies voor user_456
  --> Formaat: JSON

Export bevat:
  --> Alle auditrecords in het tijdsbereik
  --> Alle lineagerecords waarnaar wordt verwezen door auditrecords
  --> Alle sessiestaatovergangen
  --> Alle beleidsbeslissingen (ALLOW, BLOCK, REDACT)
  --> Alle taint-wijzigingen
  --> Alle delegatiekettenrecords

Compliance-exports zijn gestructureerde JSON-bestanden die kunnen worden opgenomen door SIEM-systemen, compliance-dashboards of juridische reviewtools. Het exportformaat is stabiel en versiebeheerd. :::

Gegevenslineage

Auditlogging werkt samen met het gegevenslineagesysteem van Triggerfish. Elk gegevenselement dat door Triggerfish wordt verwerkt, draagt provenancemetadata:

json
{
  "lineage_id": "lin_789xyz",
  "content_hash": "sha256:a1b2c3d4...",
  "origin": {
    "source_type": "integration",
    "source_name": "salesforce",
    "record_id": "opp_00123ABC",
    "record_type": "Opportunity",
    "accessed_at": "2025-01-29T10:23:45Z",
    "accessed_by": "user_456",
    "access_method": "plugin_query"
  },
  "classification": {
    "level": "CONFIDENTIAL",
    "reason": "source_system_default",
    "assigned_at": "2025-01-29T10:23:45Z",
    "can_be_downgraded": false
  },
  "transformations": [
    {
      "type": "extraction",
      "description": "Selected fields: name, amount, stage",
      "timestamp": "2025-01-29T10:23:46Z",
      "agent_id": "agent_123"
    },
    {
      "type": "summarization",
      "description": "LLM summarized 3 records into pipeline overview",
      "timestamp": "2025-01-29T10:23:47Z",
      "input_lineage_ids": ["lin_789xyz", "lin_790xyz", "lin_791xyz"],
      "agent_id": "agent_123"
    }
  ],
  "current_location": {
    "session_id": "sess_456",
    "context_position": "assistant_response_3"
  }
}

Lineagerecords worden aangemaakt bij POST_TOOL_RESPONSE (wanneer gegevens het systeem binnenkomen) en bijgewerkt naarmate gegevens worden getransformeerd. Geaggregeerde gegevens erven max(invoerclassificaties) — als een invoer CONFIDENTIAL is, is de uitvoer minimaal CONFIDENTIAL.

GebeurtenisLineageactie
Gegevens gelezen van integratieLineagerecord aanmaken met oorsprong
Gegevens getransformeerd door LLMTransformatie toevoegen, invoerlineages koppelen
Gegevens geaggregeerd uit meerdere bronnenLineage samenvoegen, classificatie = max(invoeren)
Gegevens verzonden naar kanaalBestemming vastleggen, classificatie verifiëren
Sessie geresetLineagerecords archiveren, uit context wissen

Opslag en bewaring

Auditlogs worden bewaard via de StorageProvider-abstractie onder de audit:-naamruimte. Lineagerecords worden opgeslagen onder de lineage:-naamruimte.

GegevenstypeNaamruimteStandaardretentie
Auditlogsaudit:1 jaar
Lineagerecordslineage:90 dagen
Sessiestatussessions:30 dagen
Taint-geschiedenistaint:Overeenkomt met sessieretentie

BEVEILIGING Retentieperioden zijn configureerbaar, maar auditlogs zijn standaard ingesteld op 1 jaar om aan compliancevereisten te voldoen (SOC 2, GDPR, HIPAA). Het verminderen van de retentieperiode onder de regelgevingsvereiste van uw organisatie is de verantwoordelijkheid van de beheerder. :::

Opslagbackends

NiveauBackendDetails
PersoonlijkSQLiteWAL-modus database op ~/.triggerfish/data/triggerfish.db. Auditrecords worden opgeslagen als gestructureerde JSON in dezelfde database als alle andere Triggerfish-status.
EnterprisePluggableEnterprise-backends (Postgres, S3, enz.) kunnen worden gebruikt via de StorageProvider-interface. Dit maakt integratie mogelijk met bestaande logaggregatie-infrastructuur.

Onveranderlijkheid en integriteit

Auditrecords zijn alleen-toevoegen. Eenmaal geschreven kunnen ze niet worden gewijzigd of verwijderd door een component van het systeem — inclusief het LLM, de agent of plugins. Verwijdering vindt alleen plaats via het verlopen van het retentiebeleid.

Elk auditrecord bevat een inhoudshasj die kan worden gebruikt om integriteit te verifiëren. Als records worden geëxporteerd voor compliancebeoordeling, kunnen de hasjes worden gevalideerd aan de hand van de opgeslagen records om manipulatie te detecteren.

Enterprise-compliancefuncties

Enterprise-implementaties kunnen auditlogging uitbreiden met:

FunctieBeschrijving
Legal holdRetentiegebaseerde verwijdering opschorten voor opgegeven gebruikers, sessies of tijdsbereiken
SIEM-integratieAuditgebeurtenissen in realtime streamen naar Splunk, Datadog of andere SIEM-systemen
Compliance-dashboardsVisueel overzicht van beleidsbeslissingen, geblokkeerde acties en taint-patronen
Geplande exportsAutomatische periodieke exports voor regelgevingsbeoordeling
WaarschuwingsregelsMeldingen activeren wanneer specifieke auditpatronen optreden (bijv. herhaalde geblokkeerde write-downs)

Gerelateerde pagina's