أسهل طريقة لتشغيل وكيل ذكي في السحابة هي أن تضع له مفتاح وصول في متغيّر بيئة وتتركه يعمل. وهي أيضاً أسرع طريقة لتسريب بيانات الإنتاج: مفتاح طويل العمر داخل بيئة يقرأ فيها نموذج لغوي ملفات وسجلات ومخرجات أدوات، كثير منها غير موثوق. منشور حديث من شركة Formal، ناقشه مطوّرون على Hacker News، يعرض بديلاً أقل خطراً: أن يحصل الوكيل على هوية قصيرة العمر عبر OIDC بدل أن يحمل سراً دائماً.

المشكلة: وكيل بسرّ دائم

وكلاء السحابة والإنتاج: لماذا تتفوق هوية OIDC على المفاتيح الدائمة؟ — برمجة وتطوير

حين يحمل الوكيل مفتاحاً ثابتاً لقاعدة بيانات أو واجهة سحابية، تتضاعف نقاط الضعف:

  • المفتاح قد يظهر في سجلات التشغيل أو في ناتج أداة، ثم يصل إلى النموذج أو إلى مخرجاته.
  • حقن أوامر خفي في صفحة أو ملف قد يدفع الوكيل إلى إرسال المفتاح إلى جهة خارجية.
  • لا يمكن عادةً معرفة من الذي استخدم المفتاح فعلاً: الوكيل، أم المطوّر الذي شغّله، أم طرف آخر سرقه.
  • التدوير يدوي، فيبقى المفتاح صالحاً أسابيع بعد أن يتسرّب.

ما هو OIDC باختصار؟

OpenID Connect بروتوكول هوية يسمح لمنصة التشغيل بإصدار رمز موقّع قصير العمر يثبت من يكون الحمل البرمجي (workload) ومن أين جاء. تقدّم هذا الرمز إلى الخدمة المستهدفة، وتتحقق هي من التوقيع ومن شروط الثقة التي ضبطتها مسبقاً، ثم تمنحك صلاحية مؤقتة. لا يوجد سرّ مخزّن، ولا شيء يستحق السرقة بعد دقائق.

هذا النمط معروف في GitHub Actions: بعد إعداد الثقة مع مزوّد سحابي يدعم OIDC، يطلب مسار العمل رمز وصول قصير العمر مباشرة من المزوّد دون تخزين مفاتيح.

كيف طبّقته Formal على وكلاء السحابة؟

بحسب المنشور، تعامل Formal وكلاء البرمجة السحابية مثل Cursor وDevin بوصفهم مُصدِري هوية OIDC بدل إدارة بيانات اعتماد دائمة لهم. وتعمل الفكرة على هذا الشكل:

  1. يُصدر الوكيل (أو منصته) رمزاً يثبت هويته.
  2. وسيط يسمى Connector يتحقق من الرمز ويحقن بيانات الاعتماد المؤقتة في الطلب، فلا يراها الوكيل نفسه.
  3. تُسجَّل العملية مع هوية الحمل البرمجي والمطوّر البشري الذي شغّل المهمة، فيكتمل سجل التدقيق.
  4. تدعم الطريقة أيضاً هويات SPIFFE عبر رموز JWT-SVID من SPIRE، وتعاملها كأي رمز OIDC آخر.

الفرق الجوهري: الوكيل يملك هوية يمكن سحبها، لا سراً يمكن نسخه.

مقارنة سريعة

الجانب مفتاح ثابت هوية OIDC
مدة الصلاحية أسابيع أو بلا حد دقائق
أثر التسريب كبير ومستمر محدود وينتهي سريعاً
سجل التدقيق غامض مرتبط بالوكيل والمطوّر
التدوير يدوي تلقائي
تعقيد الإعداد منخفض أعلى في البداية

أخطاء شائعة عند التطبيق

حذّرت أدلة أمنية، منها دليل لشركة Augment Code، من أن الخطر ينتقل أحياناً من المفتاح إلى سياسة الثقة نفسها:

  • شرط sub واسع: عبارة مثل repo:my-org/* تسمح لأي فرع أو مشغّل بتولّي دور الإنتاج.
  • غياب فحص sub أصلاً: قد يسمح لمستودعات خارجية بتولّي الدور.
  • صلاحيات أوسع من اللازم: هوية قصيرة العمر بصلاحية مدير النظام تظل خطيرة.
  • غياب سجل التدقيق: من دون ربط الطلب بمطوّر محدد تفقد نصف الفائدة.

قائمة تحقق قبل منح الوكيل وصولاً للإنتاج

  • ابدأ بصلاحية قراءة فقط على نسخة أو عرض محدد، لا على قاعدة الإنتاج كلها.
  • اربط الدور بمستودع وفرع ومهمة محددة، لا بنمط عام.
  • اجعل مدة الرمز أقصر ما تسمح به المهمة.
  • سجّل كل استعلام مع هوية الوكيل والمطوّر.
  • اختبر سيناريو حقن أوامر: ماذا يستطيع الوكيل أن يفعل إن انحرف؟

أسئلة شائعة

هل يلغي OIDC الحاجة إلى حماية الوكيل من حقن الأوامر؟

لا. يقلل ما يمكن للمهاجم سرقته واستخدامه لاحقاً، لكن الوكيل قد يستخدم صلاحيته المؤقتة في الوقت الحالي لفعل ضار. لذلك يلزم الجمع بين الهوية المؤقتة والصلاحيات الدنيا.

هل أحتاج منتج Formal تحديداً؟

لا. الفكرة تقنية عامة يوفرها معظم مزوّدي السحابة ومنصات CI. المنشور يعرض تطبيقاً محدداً لها.

ما أول خطوة عملية؟

استبدل مفتاحاً واحداً ثابتاً يستخدمه وكيل لديك بدور OIDC محدود النطاق، وقِس الفرق في سجلات التدقيق قبل تعميم الأمر.

الخلاصة

الأسرار الدائمة داخل بيئات الوكلاء دَين أمني يتراكم. الانتقال إلى هويات OIDC قصيرة العمر، مع شروط ثقة ضيقة وصلاحيات دنيا وسجل تدقيق، يجعل الوصول إلى الإنتاج قابلاً للإدارة. ابدأ بوكيل واحد وصلاحية قراءة، ثم وسّع تدريجياً.

المصادر: Formal، نقاش Hacker News، توثيق GitHub حول OIDC، Augment Code