پرش به مطلب اصلی

تشخیص Secret

گاردریل secrets_detection مقدارهای محرمانه رایج را در متن پیدا می‌کند. از این نوع وقتی استفاده کنید که نمی‌خواهید توکن، کلید خصوصی، JWT یا کلید دسترسی ناخواسته به مدل برسد یا در پاسخ نهایی دیده شود.

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

هشدار

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

چه زمانی استفاده کنید؟

این گاردریل برای سناریوهای زیر مناسب است:

  • ماسک‌کردن توکن Bearer در ورودی مدل.
  • جلوگیری از نمایش کلید خصوصی در پاسخ مدل.
  • تشخیص JWT یا کلیدهای دسترسی رایج در خروجی.
  • کاهش ریسک نشت مقدار محرمانه در متن‌هایی که از چند سرویس یا کاربر می‌آیند.

برای مقدارهای محرمانه اختصاصی سازمان، مثل قالب کلید داخلی یا شناسه سریال امنیتی، از Regex کنار این گاردریل استفاده کنید.

رفتار اجرایی

این نوع از هر دو «نوع اقدام» پشتیبانی می‌کند:

نوع اقداممقدار APIرفتار
اعتبارسنجیvalidateاگر مقدار محرمانه پیدا شود، نتیجه بررسی ناموفق می‌شود.
اصلاح محتواmutateمقدارهای پیدا‌شده با «متن جایگزین» جایگزین می‌شوند.

در حالت «اصلاح محتوا»، اگر تطابق پیدا شود، وضعیت mutated ثبت می‌شود و متن اصلاح‌شده به مسیر بعدی می‌رود.

الگوهای داخلی

این گاردریل چند قالب رایج را تشخیص می‌دهد:

  • توکن Bearer با طول حداقل ۱۶ کاراکتر.
  • توکن‌های سه‌بخشی شبیه JWT.
  • کلید خصوصی با قالب BEGIN ... PRIVATE KEY.
  • کلیدهای AWS با پیشوند AKIA.
  • کلیدهای شبیه OpenAI با پیشوند sk-.

این فهرست ثابت است. برای افزودن الگوی اختصاصی، یک گاردریل Regex بسازید.

تنظیمات

عنوان UIمقدار APIتوضیح
متن جایگزینredaction_textفقط برای «اصلاح محتوا» استفاده می‌شود. اگر مقدار ندهید، مقدار پیش‌فرض [REDACTED] است.
نکته

برای مسیرهای ورودی، معمولاً mutate تجربه بهتری می‌دهد؛ چون مقدار محرمانه حذف می‌شود و کار اصلی کاربر می‌تواند ادامه پیدا کند. برای خروجی‌هایی که نباید هیچ راز احتمالی نمایش دهند، validate همراه با «عدم عبور و لاگ» سخت‌گیرانه‌تر است.

نمونه تعریف برای ورودی

نمونه زیر مقدارهای محرمانه را پیش از ارسال متن به مدل ماسک می‌کند:

{
"slug": "mask-secrets-input",
"name": "ماسک‌کردن مقدارهای محرمانه ورودی",
"description": "توکن و کلیدهای رایج را پیش از ارسال به مدل ماسک می‌کند.",
"type": "secrets_detection",
"operation": "mutate",
"enforcement": "enforce",
"enabled": true,
"config": {
"redaction_text": "[***]"
}
}

نمونه تعریف برای خروجی

نمونه زیر اگر پاسخ مدل شامل مقدار محرمانه باشد، پاسخ را متوقف می‌کند:

{
"slug": "no-secrets-output",
"name": "جلوگیری از نمایش مقدار محرمانه",
"description": "اگر پاسخ مدل شامل مقدار محرمانه باشد، پاسخ را متوقف می‌کند.",
"type": "secrets_detection",
"operation": "validate",
"enforcement": "enforce",
"enabled": true,
"config": {}
}

نمونه استفاده

برای ورودی مدل:

x-godarai-guardrails: {"llm_input_guardrails":["guardrails/mask-secrets-input"]}

برای پاسخ غیرجریانی مدل:

x-godarai-guardrails: {"llm_output_guardrails":["guardrails/no-secrets-output"]}

بررسی نتیجه

در حالت «اصلاح محتوا»، تطابق موفق با وضعیت mutated ثبت می‌شود. در حالت «اعتبارسنجی»، اگر مقدار محرمانه پیدا شود، وضعیت با توجه به شیوه اعمال flagged یا blocked خواهد بود.

علت پیش‌فرض این گاردریل در زمان اصلاح محتوا Secret redacted است.

گاردریل آماده

گدارAI این گاردریل آماده را دارد:

guardrails/secrets-detection

این گاردریل آماده در حالت «اصلاح محتوا» کار می‌کند و مقدارهای پیدا‌شده را با [REDACTED] جایگزین می‌کند.

محدودیت‌ها

  • این گاردریل همه انواع مقدار محرمانه را نمی‌شناسد.
  • مقدارهایی که عمداً شکسته یا پنهان‌سازی شده‌اند، ممکن است تشخیص داده نشوند.
  • قالب‌های اختصاصی سازمان باید با Regex پوشش داده شوند.
  • اصلاح محتوا لاگ یا ذخیره‌ای را که پیش از اجرای گاردریل انجام شده باشد پاک نمی‌کند.
  • گاردریل خروجی با پاسخ جریانی پشتیبانی نمی‌شود.

گام بعدی