Skip to content

بازرسی و انطباق

هر تصمیم سیاست در Triggerfish با زمینه کامل ثبت می‌شود. هیچ استثنایی وجود ندارد، هیچ «حالت اشکال‌زدایی» که ثبت را غیرفعال کند وجود ندارد، و هیچ راهی برای LLM برای سرکوب رکوردهای بازرسی وجود ندارد. این یک رکورد کامل و مقاوم در برابر دستکاری از هر تصمیم امنیتی که سیستم اتخاذ کرده فراهم می‌کند.

چه چیزی ثبت می‌شود

ثبت بازرسی یک قانون ثابت است — همیشه فعال است و قابل غیرفعال‌سازی نیست. هر اجرای Hook اجرایی یک رکورد بازرسی شامل موارد زیر تولید می‌کند:

فیلدتوضیحات
timestampزمان اتخاذ تصمیم (ISO 8601، UTC)
hook_typeکدام Hook اجرایی اجرا شد (PRE_CONTEXT_INJECTION، PRE_TOOL_CALL، POST_TOOL_RESPONSE، PRE_OUTPUT، SECRET_ACCESS، SESSION_RESET، AGENT_INVOCATION، MCP_TOOL_CALL)
session_idنشستی که اقدام در آن رخ داد
decisionALLOW، BLOCK یا REDACT
reasonتوضیح قابل‌فهم تصمیم
inputداده یا اقدامی که Hook را فعال کرد
rules_evaluatedکدام قوانین سیاست برای رسیدن به تصمیم بررسی شدند
taint_beforeسطح Taint نشست قبل از اقدام
taint_afterسطح Taint نشست بعد از اقدام (در صورت تغییر)
metadataزمینه اضافی مختص نوع Hook

نمونه‌های رکورد بازرسی

خروجی مجاز

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

نوشتن به پایین مسدودشده

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

فراخوانی ابزار با افزایش Taint

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
  }
}

تفویض عامل مسدودشده

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

قابلیت‌های ردیابی بازرسی

جریان ردیابی بازرسی: ردیابی رو به جلو، ردیابی رو به عقب و توجیه طبقه‌بندی به صادرات انطباق می‌رسند

رکوردهای بازرسی به چهار روش قابل جستجو هستند که هر یک نیاز انطباقی و بررسی قانونی متفاوتی را برآورده می‌کند.

ردیابی رو به جلو

پرسش: «چه اتفاقی برای داده‌های رکورد Salesforce opp_00123ABC افتاد؟»

ردیابی رو به جلو یک عنصر داده را از نقطه مبدأ از طریق هر تبدیل، نشست و خروجی دنبال می‌کند. پاسخ می‌دهد: این داده کجا رفت، چه کسی آن را دید و آیا خارج از سازمان فرستاده شد؟

مبدأ: salesforce.query_opportunities
  --> lineage_id: lin_789xyz
  --> طبقه‌بندی: CONFIDENTIAL
  --> نشست: sess_456

تبدیل‌ها:
  --> فیلدهای استخراج‌شده: name, amount, stage
  --> LLM ۳ رکورد را در نمای کلی پایپ‌لاین خلاصه کرد

خروجی‌ها:
  --> ارسال به مالک از طریق Telegram (مجاز)
  --> مسدود از مخاطب خارجی واتس‌اپ (مسدود شد)

ردیابی رو به عقب

پرسش: «چه منابعی در پیام ارسال‌شده در ساعت ۱۰:۲۴ UTC نقش داشتند؟»

ردیابی رو به عقب از یک خروجی شروع می‌کند و از زنجیره نسب به عقب حرکت می‌کند تا هر منبع داده‌ای که بر خروجی تأثیر گذاشته شناسایی شود. این برای درک اینکه آیا داده‌های طبقه‌بندی‌شده در پاسخ گنجانده شده‌اند ضروری است.

خروجی: پیام ارسال‌شده به Telegram در ۱۰:۲۴:۰۰Z
  --> نشست: sess_456
  --> منابع نسب:
      --> lin_789xyz: فرصت Salesforce (CONFIDENTIAL)
      --> lin_790xyz: فرصت Salesforce (CONFIDENTIAL)
      --> lin_791xyz: فرصت Salesforce (CONFIDENTIAL)
      --> lin_792xyz: API آب‌وهوا (PUBLIC)

توجیه طبقه‌بندی

پرسش: «چرا این داده CONFIDENTIAL علامت‌گذاری شده؟»

توجیه طبقه‌بندی به قانون یا سیاستی که سطح طبقه‌بندی را تعیین کرده بازمی‌گردد:

داده: خلاصه پایپ‌لاین (lin_789xyz)
طبقه‌بندی: CONFIDENTIAL
دلیل: source_system_default
  --> طبقه‌بندی پیش‌فرض یکپارچه‌سازی Salesforce: CONFIDENTIAL
  --> پیکربندی‌شده توسط: admin_001 در ۲۰۲۵-۰۱-۱۰T08:00:00Z
  --> قانون سیاست: «تمام داده‌های Salesforce با طبقه‌بندی CONFIDENTIAL»

صادرات انطباق

برای بررسی حقوقی، نظارتی یا داخلی، Triggerfish می‌تواند کل زنجیره نگهبانی را برای هر عنصر داده یا بازه زمانی صادر کند:

درخواست صادرات:
  --> بازه زمانی: 2025-01-29T00:00:00Z تا 2025-01-29T23:59:59Z
  --> محدوده: تمام نشست‌های user_456
  --> قالب: JSON

صادرات شامل:
  --> تمام رکوردهای بازرسی در بازه زمانی
  --> تمام رکوردهای نسب ارجاع‌شده توسط رکوردهای بازرسی
  --> تمام انتقال‌های وضعیت نشست
  --> تمام تصمیمات سیاست (ALLOW، BLOCK، REDACT)
  --> تمام تغییرات Taint
  --> تمام رکوردهای زنجیره تفویض

صادرات‌های انطباق فایل‌های JSON ساختاریافته هستند که می‌توانند توسط سیستم‌های SIEM، داشبوردهای انطباق یا ابزارهای بررسی حقوقی مصرف شوند. قالب صادرات پایدار و نسخه‌بندی‌شده است. :::

نسب داده

ثبت بازرسی در ارتباط با سیستم نسب داده Triggerfish کار می‌کند. هر عنصر داده پردازش‌شده توسط Triggerfish متادیتای منشأ حمل می‌کند:

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

رکوردهای نسب در POST_TOOL_RESPONSE (وقتی داده وارد سیستم می‌شود) ایجاد و با تبدیل داده‌ها به‌روز می‌شوند. داده‌های تجمیع‌شده max(طبقه‌بندی‌های ورودی) را به ارث می‌برند — اگر هر ورودی CONFIDENTIAL باشد، خروجی حداقل CONFIDENTIAL است.

رویداداقدام نسب
خواندن داده از یکپارچه‌سازیایجاد رکورد نسب با مبدأ
تبدیل داده توسط LLMافزودن تبدیل، پیوند نسب‌های ورودی
تجمیع داده از منابع متعددادغام نسب، طبقه‌بندی = max(ورودی‌ها)
ارسال داده به کانالثبت مقصد، تأیید طبقه‌بندی
بازنشانی نشستبایگانی رکوردهای نسب، پاک‌سازی از زمینه

ذخیره‌سازی و نگهداری

گزارش‌های بازرسی از طریق تجرید StorageProvider تحت فضای نام audit: پایدار می‌شوند. رکوردهای نسب تحت فضای نام lineage: ذخیره می‌شوند.

نوع دادهفضای نامنگهداری پیش‌فرض
گزارش‌های بازرسیaudit:۱ سال
رکوردهای نسبlineage:۹۰ روز
وضعیت نشستsessions:۳۰ روز
تاریخچه Tainttaint:مطابق نگهداری نشست

امنیت دوره‌های نگهداری قابل پیکربندی هستند، اما گزارش‌های بازرسی به‌صورت پیش‌فرض ۱ سال هستند تا الزامات انطباق (SOC 2، GDPR، HIPAA) را پشتیبانی کنند. کاهش دوره نگهداری به زیر الزام نظارتی سازمان شما مسئولیت مدیر است. :::

بک‌اندهای ذخیره‌سازی

سطحبک‌اندجزئیات
شخصیSQLiteپایگاه‌داده حالت WAL در ~/.triggerfish/data/triggerfish.db. رکوردهای بازرسی به‌عنوان JSON ساختاریافته در همان پایگاه‌داده با سایر وضعیت‌های Triggerfish ذخیره می‌شوند.
سازمانیقابل اتصالبک‌اندهای سازمانی (Postgres، S3 و غیره) می‌توانند از طریق رابط StorageProvider استفاده شوند. این امکان یکپارچه‌سازی با زیرساخت تجمیع گزارش موجود را فراهم می‌کند.

تغییرناپذیری و یکپارچگی

رکوردهای بازرسی فقط افزودنی هستند. پس از نوشتن، توسط هیچ مؤلفه‌ای از سیستم — از جمله LLM، عامل یا Plugin‌ها — قابل تغییر یا حذف نیستند. حذف فقط از طریق انقضای سیاست نگهداری رخ می‌دهد.

هر رکورد بازرسی شامل یک هَش محتوا است که می‌تواند برای تأیید یکپارچگی استفاده شود. اگر رکوردها برای بررسی انطباق صادر شوند، هَش‌ها می‌توانند در برابر رکوردهای ذخیره‌شده اعتبارسنجی شوند تا دستکاری شناسایی شود.

ویژگی‌های انطباق سازمانی

استقرارهای سازمانی می‌توانند ثبت بازرسی را با موارد زیر گسترش دهند:

ویژگیتوضیحات
نگهداری حقوقیتعلیق حذف مبتنی بر نگهداری برای کاربران، نشست‌ها یا بازه‌های زمانی مشخص
یکپارچه‌سازی SIEMپخش رویدادهای بازرسی به Splunk، Datadog یا سایر سیستم‌های SIEM به‌صورت بلادرنگ
داشبوردهای انطباقنمای کلی بصری تصمیمات سیاست، اقدامات مسدودشده و الگوهای Taint
صادرات زمان‌بندی‌شدهصادرات دوره‌ای خودکار برای بررسی نظارتی
قوانین هشدارایجاد اعلان وقتی الگوهای بازرسی خاصی رخ دهند (مثلاً نوشتن‌های به پایین مکرر مسدودشده)

صفحات مرتبط