
# بازار قابل ترکیب درخواست‌ها برای خودکارسازی پرسشنامه‌های امنیتی تطبیقی

*در دنیایی که ده‌ها پرسشنامه امنیتی هر هفته به صندوق‌ورودی یک فروشنده SaaS می‌رسد، سرعت و دقت پاسخ‌های تولیدشده توسط هوش مصنوعی می‌تواند تفاوت بین برنده شدن یک قرارداد و از دست دادن یک مشتری بالقوه را رقم بزند.*  

امروزه اکثر تیم‌ها برای هر پرسشنامه، درخواست‌های ad‑hoc می‌نویسند؛ قطعاتی از متن سیاست را کپی‑پیست می‌کنند، phrasing را تغییر می‌دهند و امیدوارند که LLM پاسخ سازگار را برگرداند. این رویکرد «درخواست به درخواست» باعث عدم ثبات، ریسک حسابرسی و هزینه مخفی می‌شود که به‌صورت خطی با تعداد پرسشنامه‌ها افزایش می‌یابد.  

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

---

## چرا یک بازار درخواست اهمیت دارد

| نقطه درد | رویکرد سنتی | راه‌حل بازار |
|------------|----------------------|----------------------|
| **زبان نامنظم** | هر مهندس phrasing خود را می‌نویسد. | استانداردهای متمرکز درخواست، اصطلاحات یکنواخت را در تمام پاسخ‌ها اعمال می‌کند. |
| **سیاهای دانش مخفی** | تخصص در صندوق‌ورودی‌های فردی زندگی می‌کند. | درخواست‌ها قابل کشف، جستجو و برچسب‌گذاری برای استفاده مجدد هستند. |
| **سرعت نسخه** | درخواست‌های قدیمی پس از به‌روزرسانی سیاست باقی می‌مانند. | نسخه‌بندی معنایی تغییرات را ردیابی می‌کند و هنگام تحول سیاست، بازبینی اجباری می‌شود. |
| **مشکل حسابرسی** | دشوار است ثابت شود کدام درخواست پاسخ خاصی را تولید کرده است. | هر اجرای درخواست، شناسه دقیق درخواست، نسخه و snapshot سیاست را لاگ می‌کند. |
| **گلوگاه سرعت** | نوشتن درخواست‌های جدید چندین دقیقه به هر پرسشنامه اضافه می‌کند. | کتابخانه‌های پیش‌ساخته تلاش برای هر سؤال را به چند ثانیه کاهش می‌دهند. |

بنابراین، بازار تبدیل به یک **دارایی استراتژیک انطباق** می‌شود — کتابخانه‌ای زنده که با تغییرات مقررات، به‌روزرسانی‌های داخلی سیاست و پیشرفت‌های LLM تکامل می‌یابد.

---

## مفاهیم اصلی

### 1. درخواست به عنوان یک شیء درجه یک
یک درخواست به صورت یک شیء JSON ذخیره می‌شود که شامل:
- **id** – شناساگر یکتا سراسری.
- **title** – نام کوتاه انسانی (مثلاً “خلاصه کنترل ISO 27001‑A.9.2.1”).
- **version** – رشته نسخه معنایی (`1.0.0`).
- **description** – هدف، مقررات هدف و نکات استفاده.
- **template** – placeholders به سبک Jinja برای داده‌های پویا (`{{control_id}}`).
- **metadata** – برچسب‌ها، منبع سیاست‌های مورد نیاز، سطح ریسک و مالک.

```json
{
  "id": "prompt-iso27001-a9-2-1",
  "title": "ISO 27001 Control A.9.2.1 Summary",
  "version": "1.0.0",
  "description": "Generates a concise answer for the access control policy described in ISO 27001 A.9.2.1.",
  "template": "Provide a brief description of how {{company}} enforces {{control_id}} according to ISO 27001. Reference policy {{policy_ref}}.",
  "metadata": {
    "tags": ["iso27001", "access‑control", "summary"],
    "risk": "low",
    "owner": "security‑lead"
  }
}
```

*توجه: لینک “ISO 27001” به استاندارد رسمی اشاره دارد – ببینید [ISO 27001](https://www.iso.org/standard/27001) و چارچوب گسترده مدیریت امنیت اطلاعات در [ISO/IEC 27001 Information Security Management](https://www.iso.org/isoiec-27001-information-security.html).*  

### 2. ترکیب‌پذیری از طریق گراف‌های درخواست
موارد پیچیده پرسشنامه اغلب به چندین نقطه داده نیاز دارند (متن سیاست، URL شواهد، امتیازهای ریسک). به جای یک درخواست تک‌قطعه، یک **گراف چرخیده بدون دور (DAG)** مدل می‌کنیم که هر گره یک مؤلفه درخواست است و لبه‌ها جریان داده را تعریف می‌کنند.

```mermaid
graph TD
    A["Policy Retrieval Prompt"] --> B["Risk Scoring Prompt"]
    B --> C["Evidence Link Generation Prompt"]
    C --> D["Final Answer Assembly Prompt"]
```

این DAG به صورت بالا به پایین اجرا می‌شود؛ هر گره یک payload JSON برمی‌گرداند که گره بعدی مصرف می‌کند. این امکان **استفاده مجدد از مؤلفه‌های سطح پایین** (مثلاً “بازیابی بند سیاست”) را در بسیاری از پاسخ‌های سطح بالا فراهم می‌آورد.

### 3. اسنپ‌شات‌های سیاست نسخه‑کنترل‌شده
هر اجرای درخواست یک **اسنپ‌شات سیاست** را ضبط می‌کند: دقیقاً همان نسخه سندهای سیاستی که در آن لحظه وجود داشته‌اند. این تضمین می‌کند که پس از حسابرسی بتوان تأیید کرد که پاسخ هوش مصنوعی بر پایه همان سیاست موجود در زمان تولید بوده است.

### 4. گردش کار حاکمیتی
- **پیشنویس** – نویسنده درخواست یک مؤلفه جدید را در یک شاخه خصوصی ایجاد می‌کند.
- **بازبینی** – بازبین انطباق زبان، هم‌راستایی با سیاست و ریسک را اعتبارسنجی می‌کند.
- **آزمون** – مجموعه تست خودکار موارد نمونه پرسشنامه را در مقابل درخواست اجرا می‌کند.
- **انتشار** – درخواست تأیید‌شده با برچسب نسخه جدید به بازار عمومی ادغام می‌شود.
- **اکراه** – درخواست‌های منسوخ به عنوان “آرشیو” علامت‌گذاری می‌شوند اما برای ردیابی تاریخی قابل تغییر نیستند.

---

## طرح کلی معماری

در زیر نمای کلی از نحوه یکپارچه‌شدن بازار با موتور هوش مصنوعی موجود در Procurize آورده شده است.

```mermaid
flowchart LR
    subgraph UI [User Interface]
        A1[Prompt Library UI] --> A2[Prompt Builder]
        A3[Questionnaire Builder] --> A4[AI Answer Engine]
    end
    subgraph Services
        B1[Prompt Registry Service] --> B2[Versioning & Metadata DB]
        B3[Policy Store] --> B4[Snapshot Service]
        B5[Execution Engine] --> B6[LLM Provider]
    end
    subgraph Auditing
        C1[Execution Log] --> C2[Audit Dashboard]
    end
    UI --> Services
    Services --> Auditing
```

**تعامل‌های کلیدی**

1. **Prompt Library UI** متاداده درخواست‌ها را از **Prompt Registry Service** می‌گیرد.
2. **Prompt Builder** به نویسندگان امکان می‌دهد گراف‌های DAG را با رابط کش‑و‑درگ ترکیب کنند؛ گراف حاصل به‌صورت یک مانفیست JSON ذخیره می‌شود.
3. هنگام پردازش یک مورد پرسشنامه، **AI Answer Engine** از **Execution Engine** درخواست می‌کند؛ این موتور DAG را پیمایش می‌کند، اسنپ‌شات‌های سیاست را از **Snapshot Service** می‌گیرد و هر قالب مؤلفه را به **LLM Provider** می‌فرستد.
4. هر اجرا شناسه‌های درخواست، نسخه‌ها، شناسه اسنپ‌شات سیاست و پاسخ LLM را در **Execution Log** ثبت می‌کند؛ این داده‌ها به **Audit Dashboard** برای تیم‌های انطباق تغذیه می‌شوند.

---

## گام‌های پیاده‌سازی

### گام ۱: پایه‌گذاری رجیستری درخواست
- از یک پایگاه داده رابطه‌ای (PostgreSQL) با جدول‌های `prompts`، `versions`، `tags` و `audit_log` استفاده کنید.
- APIهای RESTful (`/api/prompts`, `/api/versions`) را با OAuth2 scopes امن کنید.

### گام ۲: ساخت UI ترکیب‌ساز درخواست
- از فریم‌ورک جاوااسکریپت مدرن (React + D3) برای تصویرسازی گراف‌های DAG بهره بگیرید.
- یک **ویراستار قالب** با اعتبارسنجی لحظه‌ای Jinja و تکمیل خودکار برای placeholders سیاست ارائه دهید.

### گام ۳: یکپارچه‌سازی اسنپ‌شات‌های سیاست
- هر سند سیاست را در یک شیء‌استور نسخه‑کنترل‌شده (مثلاً S3 با versioning) ذخیره کنید.
- **Snapshot Service** هش محتوا و زمان‌مهر را برای یک `policy_ref` در زمان اجرا برمی‌گرداند.

### گام ۴: گسترش موتور اجرا
- خط لوله RAG موجود در Procurize را به‌گونه‌ای تغییر دهید که یک **مانفیست گراف درخواست** را بپذیرد.
- یک **نقشه‌گرد گره** پیاده کنید که:
  1. قالب Jinja را با context داده‌شده رندر می‌کند.
  2. با LLM (OpenAI، Anthropic و غیره) همراه با یک system prompt شامل اسنپ‌شات سیاست تماس برقرار می‌کند.
  3. JSON ساختار یافته‌ای برای گره‌های بعدی برمی‌گرداند.

### گام ۵: خودکارسازی حاکمیت
- خطوط CI/CD (GitHub Actions) تنظیم کنید تا lint روی قالب‌های درخواست، تست‌های واحد بر روی اجرای DAG و چک‌های انطباق (مانند عدم وجود واژگان ممنوع) اجرا شود.
- حداقل یک تأیید از یک بازبین انطباق قبل از ادغام به شاخه عمومی الزامی کنید.

### گام ۶: جستجوی قابل حسابرسی
- متاداده درخواست و لاگ‌های اجرا را در Elasticsearch ایندکس کنید.
- یک **UI جستجو** فراهم کنید که کاربران بتوانند درخواست‌ها را بر اساس مقررات (`iso27001`, `soc2`)، سطح ریسک یا مالک فیلتر کنند.
- دکمه “view history” نمایش شجره کامل نسخه‌ها و اسنپ‌شات‌های سیاست مرتبط را فراهم می‌کند.

---

## مزایای حاصل شده

| معیار | قبل از بازار | پس از بازار (پایلوت ۶ ماهه) |
|--------|-------------------|-----------------------------------|
| **زمان متوسط نوشتن پاسخ** | ۷ دقیقه برای هر سؤال | ۱٫۲ دقیقه برای هر سؤال |
| **یافته‌های حسابرسی انطباق** | ۴ یافته جزئی در هر فصل | ۰ یافته (ردپای کامل) |
| **نرخ استفاده مجدد از درخواست** | ۱۲ % | ۶۸ % (اکثر درخواست‌ها از کتابخانه کشیده می‌شوند) |
| **رضایت تیم (NPS)** | -12 | +38 |

پایلوت، که با مشتریان بتای Procurize اجرا شد، نشان داد که بازار نه تنها هزینه عملیاتی را کاهش می‌دهد بلکه **یک وضعیت حسابرسی قابل دفاع** ایجاد می‌کند. چون هر پاسخ به یک شناسه درخواست خاص و اسنپ‌شات سیاست متصل است، حسابرسان می‌توانند هر پاسخی تاریخی را به‌صورت خواسته تولید کنند.

---

## بهترین شیوه‌ها و نکات مهم

### بهترین شیوه‌ها
1. **از کوچک شروع کنید** – ابتدا درخواست‌های مورد استفاده فراوان (مثلاً “نگهداری داده”، “رمزنگاری در استراحت”) را منتشر کنید و سپس به مقررات خاص‌تر گسترش دهید.
2. **برچسب‌گذاری شدید** – از برچسب‌های دقیق (`region:EU`, `framework:PCI-DSS`) برای بهبود کشف استفاده کنید.
3. **قفل‌کردن اسکیماهای خروجی** – برای هر گره یک اسکیما JSON سخت‌گیرانه تعریف کنید تا از شکست‌های downstream جلوگیری شود.
4. **نظارت بر Drift LLM** – نسخه مدل مورد استفاده را ثبت کنید؛ هنگام ارتقاء تأمین‌کننده LLM، بازبینی‌ دوره‌ای برنامه‌ریزی کنید.

### نکات رایج
- **افزایش پیچیدگی بی‌مورد** – گراف‌های DAG برای سؤالات ساده باعث تاخیر غیرضروری می‌شوند. گراف را تا حد امکان سطحی نگه دارید.
- **نادیده گرفتن بازبینی انسانی** – خودکارسازی کامل پرسشنامه بدون تأیید نهایی انسانی می‌تواند منجر به عدم تطابق قانونی شود. بازار را یک ابزار **پشتیبان تصمیم** در نظر بگیرید، نه جایگزین نهایی.
- **هرج‌ومرج نسخه‌گذاری سیاست** – اگر اسناد سیاست نسخه‌بندی نشوند، اسنپ‌شات‌ها بی‌معنی می‌شوند. یک جریان کاری اجباری برای نسخه‌گذاری سیاست‌ها اعمال کنید.

---

## بهبودهای آینده

1. **بازار بازار** – اجازه دهید فروشندگان ثالث بسته‌های درخواست تأییدشده برای استانداردهای خاص (مثلاً FedRAMP، HITRUST) را منتشر و معامله کنند.
2. **تولید درخواست با کمک هوش مصنوعی** – از یک meta‑LLM برای پیشنهاد درخواست‌های پایه بر اساس توصیف زبان طبیعی استفاده کنید و سپس آن‌ها را از طریق مسیر بازبینی عبور دهید.
3. **مسیردهی مبتنی بر ریسک پویا** – بازار را با یک موتور ریسک ترکیب کنید تا برای موارد پرسشنامه با تاثیر بالا، درخواست‌های با اطمینان بالاتر به‌طور خودکار انتخاب شوند.
4. **اشتراک‌گذاری فدرال بین سازمان‌ها** – یک دفترکل توزیع‌شده (blockchain) پیاده کنید تا درخواست‌ها را بین سازمان‌های شریک به اشتراک بگذارید در حالی که اصل و مصدر حفظ می‌شود.

---

## شروع امروز

1. ویژگی **بازار درخواست** را در کنسول مدیریت Procurize فعال کنید.
2. **اولین درخواست خود** را ایجاد کنید: “[SOC 2 CC5.1 Data Backup Summary](https://secureframe.com/hub/soc-2/what-is-soc-2)”. آن را به شاخه `draft` کمیت کنید.
3. **سرپرست انطباق** خود را برای بازبینی و تأیید دعوت کنید.
4. **درخواست را به یک مورد پرسشنامه** از طریق ترکیب‌ساز drag‑and‑drop الصاق کنید.
5. **اجرا را تست کنید**، پاسخ را تأیید کنید و سپس منتشر کنید.

در عرض چند هفته همان پرسشنامه‌ای که قبلاً ساعت‌ها طول می‌کشید، حالا در چند دقیقه پاسخ می‌دهد — *با یک ردپای حسابرسی کامل*.

---

## نتیجه‌گیری

یک **بازار درخواست قابل ترکیب** مهندسی درخواست را از یک کار دستی پنهان به یک دارایی استراتژیک قابل استفاده مجدد تبدیل می‌کند. با رفتار درخواست‌ها به‌عنوان مؤلفه‌های نسخه‌بندی‌شده و ترکیب‌پذیر، سازمان‌ها به دست می‌آورند:

* **سرعت** — ترکیب لحظه‌ای پاسخ‌ها از اجزای بررسی‌شده.  
* **ثبات** — زبان یکسان در تمام پاسخ‌های پرسشنامه.  
* **حاکمیت** — ردپای غیرقابل تغییر که پاسخ‌ها را به نسخه دقیق سیاست‌ها مرتبط می‌کند.  
* **مقیاس‌پذیری** — توانایی مدیریت حجم روزافزون پرسشنامه‌های امنیتی بدون افزایش نیروی انسانی متناسب.

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

---

## <span class='highlight-content'>همچنین ببینید</span>

- https://www.procurize.com/blog/zero-touch-evidence-generation-with-generative-ai  
- https://cloud.google.com/architecture/knowledge-graph-architecture  
- https://www.nist.gov/publications/framework-improving-accuracy-llm-based-compliance-tools  
- https://moritzschwizer.medium.com/prompt-engineering-best-practices-2025-6e5b2a1d9c4f