فصل ۰۶ · اعتماد و تاب‌آوری

امنیت، یک کلید API نیست

هویت، مجوز، طبقه‌بندی داده، مرز egress، ثبت رویداد، محدودیت هزینه، backup، rollback و پاسخ رخداد باید به یک زنجیرهٔ قابل آزمون تبدیل شوند.

RBAC توکنی PILOTHeaders/Rate limit PILOTOIDC/mTLS ROADMAP

هویت و اختیار

وضعیت فعلی: principal token

توکن‌های server-side و role/capability matrix مسیرهای حفاظت‌شده را fail-closed می‌کنند. این MVP کانال را می‌شناسد، نه همیشه کاربر نهایی upstream را.

هدف سازمانی: OIDC + mTLS

OIDC هویت انسان/سرویس و claimها را می‌آورد؛ mTLS اتصال backendهای دو سازمان را متقابلاً احراز می‌کند. هر دو هنوز پذیرش نشده‌اند.

اصلپیاده‌سازی مورد انتظار
Least privilegeکلید/claim جدا برای شرکت، استان، کارشناس و مدیریت
Object-level authorizationکاربر غیرمدیر فقط run ساخته‌شده یا تخصیص‌یافته به خود را می‌بیند؛ شناسهٔ بیگانه و ناموجود هر دو 404 می‌دهند
Server-owned policyworkflow، classification و scope از client پذیرفته نشوند
Rotationsecret قابل تعویض بدون commit و بدون نمایش مجدد
Attributiontrace و audit به subject واقعی متصل شود
Fail closedنبود auth یا policy معتبر، دسترسی عمومی ایجاد نکند

چرا فقط «داشتن توکن» کافی نیست؟

توکن نشان می‌دهد درخواست‌کننده چه کسی است؛ مجوز شیء تعیین می‌کند کدام پرونده را می‌تواند ببیند. مسیرهای جزئیات، رکورد، خروجی، رویداد، نظر، مداخله و audit همگی پیش از خواندن داده، مالک/مسئول جاری یا مدیر بودن را کنترل می‌کنند.

مرزهای اعتماد

مرورگر کاربربدون provider secret
Backend سازمانend-user identity و مجوز
Assist APIscope، schema و policy
Engine/Gatewaydata class و ابزار مجاز
Provider مصوبفقط در صورت egress مجاز

چرا کلید provider در سامانهٔ شرکت قرار نمی‌گیرد؟

چون با آن کلید می‌توان خارج از policy سازمان درخواست فرستاد و هزینه ساخت. سامانهٔ GS1 ایران فقط credential محدود Assist را از backend خود استفاده می‌کند؛ provider secret در مرز GS1AI باقی می‌ماند.

کنترل خروج داده و هزینه

رلهٔ مصوب

تماس cloud تنها از مسیر مصوب و allowlist provider انجام می‌شود. درخواست local-only حق fallback به cloud ندارد.

خاموشی پیش‌فرض

flagهای Assist AI/RAG در تولید فعلی خاموش‌اند. وجود credential candidate فعال‌سازی محسوب نمی‌شود.

سقف ۴۰۰ درخواست

گارد تجمعی برای candidate، generation، embedding و retry را پیش از egress می‌شمارد؛ در runtime فعلی AI خاموش است.

OFF

حقیقت فعلی

پیشنهاد cloud و RAG تولیدی فعال نیستند؛ بنابراین health configuration نباید به‌عنوان inference موفق یا مصرف واقعی تعبیر شود.

Audit، redaction و tamper evidence

چه چیزی ثبت شود؟

actor/channel، workflow، trace، action، before/after، reason، نسخهٔ engine/rule و نتیجهٔ policy.

چه چیزی ثبت نشود؟

provider secret، token، raw prompt محرمانه، PII غیرضروری یا session export.

Hash chain چه می‌دهد؟

دستکاری را قابل کشف می‌کند؛ جای database، backup، دسترسی و امضای سازمانی را نمی‌گیرد.

انتشار امن و قابل بازگشت

  1. Build و manifestartifact دقیق، hash فایل‌ها و source commit مشخص باشد.
  2. Backup-firstAPI، engine، web و config در محدودهٔ مجاز snapshot شوند.
  3. Atomic activationدایرکتوری‌های stage شده جایگزین شوند؛ تغییر نیمه‌کاره وارد سرویس نشود.
  4. Origin/public gateshealth، engine، UI، CSP، MIME و رفتار authenticated لازم آزمون شوند.
  5. Neighbor safetyسرویس legacy و میزبان مشترک باید همان هویت و سلامت را حفظ کنند.
  6. Checkpoint/rollbackتنها receipt تکمیل‌شده مبنای ادعای release باشد.

پاسخ رخداد

رخداداقدام فوریevidence لازم
افشای secretrotate/revoke، توقف مسیر و بررسی دامنهزمان، شناسه credential و استفاده بدون چاپ مقدار
افزایش خطا یا driftfreeze promotion، کاهش scope یا rollbackdataset/cohort، نسخه و traceهای redacted
هزینه غیرعادیdisable provider، budget gate و بررسی retrycount/usage/request IDs بدون محتوا
شکست integrityقرنطینه artifact و بازیابی از snapshot معتبرhash، manifest و chain verification
قطع سرویسdeterministic fallback یا human pathSLI، timeline و postmortem