إدارة الأسرار
يدعم OpenClaw مراجع SecretRef الإضافية بحيث لا يلزم تخزين بيانات الاعتماد المدعومة كنص صريح داخل الإعدادات. لا يزال النص الصريح يعمل. ومراجع SecretRef اختيارية لكل اعتماد على حدة.الأهداف ونموذج وقت التشغيل
يتم حل الأسرار إلى لقطة وقت تشغيل داخل الذاكرة.- يتم الحل بشكل متحمّس أثناء التفعيل، وليس كسلوك كسول في مسارات الطلبات.
- يفشل بدء التشغيل سريعًا عندما يتعذر حل SecretRef نشط فعليًا.
- تستخدم إعادة التحميل التبديل الذري: نجاح كامل، أو الاحتفاظ بآخر لقطة سليمة معروفة.
- تؤدي مخالفات سياسة SecretRef (على سبيل المثال ملفات تعريف مصادقة في وضع OAuth مع إدخال SecretRef) إلى فشل التفعيل قبل تبديل وقت التشغيل.
- تقرأ طلبات وقت التشغيل من اللقطة النشطة داخل الذاكرة فقط.
- بعد أول تفعيل/تحميل ناجح للإعدادات، تستمر مسارات شيفرة وقت التشغيل في القراءة من تلك اللقطة النشطة داخل الذاكرة حتى تؤدي إعادة تحميل ناجحة إلى استبدالها.
- تقرأ مسارات التسليم الصادر أيضًا من تلك اللقطة النشطة (على سبيل المثال تسليم الرد/السلسلة في Discord وإرسالات الإجراءات في Telegram)؛ ولا تعيد حل SecretRefs عند كل إرسال.
تصفية الأسطح النشطة
يتم التحقق من SecretRefs فقط على الأسطح النشطة فعليًا.- الأسطح المفعلة: تمنع المراجع غير المحلولة بدء التشغيل/إعادة التحميل.
- الأسطح غير النشطة: لا تمنع المراجع غير المحلولة بدء التشغيل/إعادة التحميل.
- تصدر المراجع غير النشطة تشخيصات غير قاتلة بالرمز
SECRETS_REF_IGNORED_INACTIVE_SURFACE.
- إدخالات القنوات/الحسابات المعطلة.
- بيانات اعتماد القناة العليا التي لا يرثها أي حساب مفعّل.
- أسطح الأدوات/الميزات المعطلة.
- مفاتيح مزوّدي البحث على الويب الخاصة بكل مزوّد غير المحددة بواسطة
tools.web.search.provider. في الوضع التلقائي (عندما لا يكون المزوّد مضبوطًا)، تتم استشارة المفاتيح حسب الأولوية لاكتشاف المزوّد تلقائيًا حتى يتم حل أحدها. وبعد الاختيار، تُعامل مفاتيح المزوّدين غير المختارين على أنها غير نشطة حتى يتم اختيارها. - مواد مصادقة SSH الخاصة بـ sandbox (
agents.defaults.sandbox.ssh.identityData، وcertificateData، وknownHostsData، بالإضافة إلى التجاوزات لكل وكيل) تكون نشطة فقط عندما تكون خلفية sandbox الفعالة هيsshللوكيل الافتراضي أو لوكيل مفعّل. - تكون مراجع SecretRef الخاصة بـ
gateway.remote.token/gateway.remote.passwordنشطة إذا تحقق أحد ما يلي:gateway.mode=remote- تم إعداد
gateway.remote.url - قيمة
gateway.tailscale.modeهيserveأوfunnel - في الوضع المحلي من دون تلك الأسطح البعيدة:
- يكون
gateway.remote.tokenنشطًا عندما يمكن أن تفوز مصادقة الرمز ولا يكون هناك رمز مضبوط في env/auth. - يكون
gateway.remote.passwordنشطًا فقط عندما يمكن أن تفوز مصادقة كلمة المرور ولا تكون هناك كلمة مرور مضبوطة في env/auth.
- يكون
- يكون SecretRef الخاص بـ
gateway.auth.tokenغير نشط في حل مصادقة بدء التشغيل عندما يكونOPENCLAW_GATEWAY_TOKENمضبوطًا، لأن إدخال رمز env يفوز لذلك وقت التشغيل.
تشخيصات سطح مصادقة Gateway
عند إعداد SecretRef علىgateway.auth.token أو gateway.auth.password أو
gateway.remote.token أو gateway.remote.password، تسجل عملية بدء تشغيل/إعادة تحميل gateway
حالة السطح صراحةً:
active: يكون SecretRef جزءًا من سطح المصادقة الفعّال ويجب أن يُحل.inactive: يتم تجاهل SecretRef لهذا وقت التشغيل لأن سطح مصادقة آخر يفوز، أو لأن المصادقة البعيدة معطلة/غير نشطة.
SECRETS_GATEWAY_AUTH_SURFACE وتتضمن السبب المستخدم بواسطة
سياسة السطح النشط، حتى تتمكن من معرفة سبب اعتبار بيانات الاعتماد نشطة أو غير نشطة.
الفحص المسبق لمرجع onboarding
عندما يعمل onboarding في الوضع التفاعلي وتختار تخزين SecretRef، يشغّل OpenClaw تحققًا مسبقًا قبل الحفظ:- مراجع env: يتحقق من اسم متغير البيئة ويؤكد أن قيمة غير فارغة مرئية أثناء الإعداد.
- مراجع المزوّد (
fileأوexec): يتحقق من اختيار المزوّد، ويحلid، ويتحقق من نوع القيمة المحلولة. - مسار إعادة استخدام البدء السريع: عندما يكون
gateway.auth.tokenبالفعل SecretRef، يقوم onboarding بحلّه قبل التهيئة الأولية للفحص/لوحة المعلومات (بالنسبة إلى مراجعenvوfileوexec) باستخدام بوابة الفشل السريع نفسها.
عقد SecretRef
استخدم شكل كائن واحد في كل مكان:source: "env"
- يجب أن يطابق
providerالنمط^[a-z][a-z0-9_-]{0,63}$ - يجب أن يطابق
idالنمط^[A-Z][A-Z0-9_]{0,127}$
source: "file"
- يجب أن يطابق
providerالنمط^[a-z][a-z0-9_-]{0,63}$ - يجب أن يكون
idمؤشر JSON مطلقًا (/...) - هروب RFC6901 داخل المقاطع:
~=>~0، و/=>~1
source: "exec"
- يجب أن يطابق
providerالنمط^[a-z][a-z0-9_-]{0,63}$ - يجب أن يطابق
idالنمط^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - يجب ألا يحتوي
idعلى.أو..كمقاطع مسار مفصولة بشرطة مائلة (على سبيل المثال يتم رفضa/../b)
إعدادات المزوّد
عرّف المزوّدين تحتsecrets.providers:
مزوّد Env
- قائمة السماح عبر
allowlistاختيارية. - تؤدي قيم env المفقودة/الفارغة إلى فشل الحل.
مزوّد File
- يقرأ الملف المحلي من
path. - يتوقع
mode: "json"حمولة كائن JSON ويحلidكمؤشر. - يتوقع
mode: "singleValue"أن يكون معرّف المرجع"value"ويعيد محتويات الملف. - يجب أن يجتاز المسار فحوصات الملكية/الأذونات.
- ملاحظة Windows ذات الفشل المغلق: إذا لم يكن التحقق من ACL متاحًا لمسار ما، يفشل الحل. وبالنسبة إلى المسارات الموثوقة فقط، اضبط
allowInsecurePath: trueعلى ذلك المزوّد لتجاوز فحوصات أمان المسار.
مزوّد Exec
- يشغّل المسار المطلق للملف التنفيذي المضبوط، من دون shell.
- افتراضيًا، يجب أن يشير
commandإلى ملف عادي (وليس رابطًا رمزيًا). - اضبط
allowSymlinkCommand: trueللسماح بمسارات أوامر الروابط الرمزية (على سبيل المثال shims الخاصة بـ Homebrew). ويتحقق OpenClaw من المسار الهدف بعد الحل. - اجمع
allowSymlinkCommandمعtrustedDirsلمسارات مديري الحزم (على سبيل المثال["/opt/homebrew"]). - يدعم timeout، وtimeout لعدم وجود مخرجات، وحدود بايتات المخرجات، وقائمة سماح للبيئة، والأدلة الموثوقة.
- ملاحظة Windows ذات الفشل المغلق: إذا لم يكن التحقق من ACL متاحًا لمسار الأمر، يفشل الحل. وبالنسبة إلى المسارات الموثوقة فقط، اضبط
allowInsecurePath: trueعلى ذلك المزوّد لتجاوز فحوصات أمان المسار.
stdin):
stdout):
أمثلة تكامل Exec
CLI الخاص بـ 1Password
CLI الخاص بـ HashiCorp Vault
sops
متغيرات بيئة خادم MCP
تدعم متغيرات بيئة خادم MCP المضبوطة عبرplugins.entries.acpx.config.mcpServers نوع SecretInput. وهذا يبقي مفاتيح API والرموز خارج الإعدادات النصية الصريحة:
${MCP_SERVER_API_KEY} وكائنات SecretRef أثناء تفعيل gateway قبل إنشاء عملية خادم MCP. وكما هو الحال مع أسطح SecretRef الأخرى، لا تمنع المراجع غير المحلولة التفعيل إلا عندما يكون plugin acpx نشطًا فعليًا.
مواد مصادقة SSH الخاصة بـ Sandbox
تدعم الخلفية الأساسيةssh لـ sandbox أيضًا مراجع SecretRef لمواد مصادقة SSH:
- يحل OpenClaw هذه المراجع أثناء تفعيل sandbox، وليس كسلوك كسول أثناء كل استدعاء SSH.
- تُكتب القيم المحلولة إلى ملفات مؤقتة ذات أذونات مقيدة وتُستخدم في إعدادات SSH المُولّدة.
- إذا لم تكن الخلفية الفعالة لـ sandbox هي
ssh، تبقى هذه المراجع غير نشطة ولا تمنع بدء التشغيل.
سطح بيانات الاعتماد المدعوم
تُسرد بيانات الاعتماد المدعومة وغير المدعومة المعيارية في: يتم استبعاد بيانات الاعتماد التي تُنشأ في وقت التشغيل أو تدور، ومواد تحديث OAuth، عمدًا من حل SecretRef للقراءة فقط.السلوك المطلوب والأولوية
- الحقل من دون مرجع: لا تغيير.
- الحقل مع مرجع: مطلوب على الأسطح النشطة أثناء التفعيل.
- إذا وُجد كل من النص الصريح والمرجع، تكون الأولوية للمرجع في مسارات الأولوية المدعومة.
- إن قيمة التنقيح
__OPENCLAW_REDACTED__محجوزة للتنقيح/الاستعادة الداخلية للإعدادات ويتم رفضها كبيانات إعدادات حرفية مُقدّمة.
SECRETS_REF_OVERRIDES_PLAINTEXT(تحذير وقت التشغيل)REF_SHADOWED(نتيجة تدقيق عندما تكون بيانات اعتمادauth-profiles.jsonلها الأولوية على مراجعopenclaw.json)
- تكون الأولوية لـ
serviceAccountRefعلىserviceAccountالنصي الصريح. - يتم تجاهل القيمة النصية الصريحة عندما يكون المرجع المجاور مضبوطًا.
محفزات التفعيل
يعمل تفعيل الأسرار عند:- بدء التشغيل (فحص مسبق ثم تفعيل نهائي)
- مسار التطبيق المباشر لإعادة تحميل الإعدادات
- مسار التحقق من إعادة التشغيل عند إعادة تحميل الإعدادات
- إعادة التحميل اليدوية عبر
secrets.reload - الفحص المسبق لاستدعاءات RPC لكتابة إعدادات Gateway (
config.set/config.apply/config.patch) لإمكانية حل SecretRef للأسطح النشطة داخل حمولة الإعدادات المُقدمة قبل حفظ التعديلات
- النجاح يبدّل اللقطة بشكل ذري.
- فشل بدء التشغيل يوقف بدء تشغيل gateway.
- فشل إعادة التحميل في وقت التشغيل يُبقي آخر لقطة سليمة معروفة.
- فشل الفحص المسبق لاستدعاء كتابة RPC يرفض الإعدادات المُقدمة ويُبقي كلًا من إعدادات القرص واللقطة النشطة في وقت التشغيل دون تغيير.
- توفير رمز قناة صريح لكل استدعاء لأداة/مساعد صادر لا يؤدي إلى تشغيل تفعيل SecretRef؛ وتظل نقاط التفعيل محصورة في بدء التشغيل، وإعادة التحميل، و
secrets.reloadالصريح.
إشارات التدهور والتعافي
عندما يفشل التفعيل أثناء إعادة التحميل بعد حالة سليمة، يدخل OpenClaw في حالة أسرار متدهورة. حدث نظام لمرة واحدة ورموز السجل:SECRETS_RELOADER_DEGRADEDSECRETS_RELOADER_RECOVERED
- التدهور: يحتفظ وقت التشغيل بآخر لقطة سليمة معروفة.
- التعافي: يصدر مرة واحدة بعد التفعيل الناجح التالي.
- الإخفاقات المتكررة أثناء التدهور الحالي تسجل تحذيرات لكنها لا تزعج بالأحداث.
- الفشل السريع عند بدء التشغيل لا يصدر أحداث تدهور لأن وقت التشغيل لم يصبح نشطًا أصلًا.
الحل في مسارات الأوامر
يمكن لمسارات الأوامر الاشتراك في حل SecretRef المدعوم عبر RPC للقطات gateway. هناك سلوكان عامان:- مسارات أوامر صارمة (على سبيل المثال مسارات الذاكرة البعيدة في
openclaw memoryوopenclaw qr --remoteعندما تحتاج إلى مراجع أسرار بعيدة مشتركة) تقرأ من اللقطة النشطة وتفشل سريعًا عندما لا يكون SecretRef المطلوب متاحًا. - مسارات أوامر للقراءة فقط (على سبيل المثال
openclaw statusوopenclaw status --allوopenclaw channels statusوopenclaw channels resolveوopenclaw security auditوتدفقات doctor/config repair للقراءة فقط) تفضّل أيضًا اللقطة النشطة، لكنها تتدهور بدلًا من الإجهاض عندما لا يكون SecretRef المستهدف متاحًا في مسار ذلك الأمر.
- عندما يكون gateway قيد التشغيل، تقرأ هذه الأوامر من اللقطة النشطة أولًا.
- إذا كان حل gateway غير مكتمل أو كان gateway غير متاح، فإنها تحاول تراجعًا محليًا مستهدفًا لسطح الأمر المحدد.
- إذا ظل SecretRef المستهدف غير متاح، يستمر الأمر بمخرجات قراءة فقط متدهورة مع تشخيصات صريحة مثل “configured but unavailable in this command path”.
- هذا السلوك المتدهور محلي للأمر فقط. وهو لا يضعف مسارات بدء التشغيل، أو إعادة التحميل، أو الإرسال/المصادقة في وقت التشغيل.
- تتم معالجة تحديث اللقطة بعد تدوير الأسرار في الخلفية بواسطة
openclaw secrets reload. - طريقة RPC في gateway المستخدمة بواسطة مسارات الأوامر هذه:
secrets.resolve.
سير عمل التدقيق وconfigure
تدفق المشغّل الافتراضي:secrets audit
تتضمن النتائج:
- القيم النصية الصريحة المخزنة (
openclaw.jsonوauth-profiles.jsonو.envوagents/*/agent/models.jsonالمُولّد) - بقايا ترويسات المزوّد الحساسة النصية الصريحة في إدخالات
models.jsonالمُولّدة - المراجع غير المحلولة
- تظليل الأولوية (
auth-profiles.jsonالذي يأخذ الأولوية على مراجعopenclaw.json) - البقايا القديمة (
auth.jsonوتذكيرات OAuth)
- افتراضيًا، يتخطى التدقيق فحوصات إمكانية حل SecretRef من نوع exec لتجنب الآثار الجانبية للأوامر.
- استخدم
openclaw secrets audit --allow-execلتنفيذ مزوّدي exec أثناء التدقيق.
- يعتمد اكتشاف ترويسات المزوّد الحساسة على استدلال بالأسماء (أسماء ترويسات المصادقة/الاعتماد الشائعة وأجزاء مثل
authorizationوx-api-keyوtokenوsecretوpasswordوcredential).
secrets configure
مساعد تفاعلي يقوم بما يلي:
- يضبط
secrets.providersأولًا (env/file/exec، إضافة/تعديل/إزالة) - يتيح لك تحديد الحقول المدعومة الحاملة للأسرار في
openclaw.jsonبالإضافة إلىauth-profiles.jsonلنطاق وكيل واحد - يمكنه إنشاء تعيين جديد في
auth-profiles.jsonمباشرة داخل منتقي الهدف - يلتقط تفاصيل SecretRef (
sourceوproviderوid) - يشغّل الحل المسبق preflight
- يمكنه التطبيق فورًا
- يتخطى preflight فحوصات SecretRef من نوع exec ما لم يتم ضبط
--allow-exec. - إذا قمت بالتطبيق مباشرة من
configure --applyوكانت الخطة تتضمن مراجع/مزوّدي exec، فأبقِ--allow-execمضبوطًا لخطوة التطبيق أيضًا.
openclaw secrets configure --providers-onlyopenclaw secrets configure --skip-provider-setupopenclaw secrets configure --agent <id>
configure:
- تنظيف بيانات الاعتماد الثابتة المطابقة من
auth-profiles.jsonللمزوّدين المستهدفين - تنظيف إدخالات
api_keyالثابتة القديمة منauth.json - تنظيف أسطر الأسرار المعروفة المطابقة من
<config-dir>/.env
secrets apply
طبّق خطة محفوظة:
- يتخطى dry-run فحوصات exec ما لم يتم ضبط
--allow-exec. - يرفض وضع الكتابة الخطط التي تحتوي على مراجع/مزوّدي exec ما لم يتم ضبط
--allow-exec.
سياسة الأمان أحادية الاتجاه
يتعمد OpenClaw عدم كتابة نسخ احتياطية للاسترجاع تحتوي على قيم تاريخية نصية صريحة للأسرار. نموذج الأمان:- يجب أن ينجح preflight قبل وضع الكتابة
- يتم التحقق من تفعيل وقت التشغيل قبل الالتزام
- يقوم apply بتحديث الملفات باستخدام استبدال ذري للملفات واستعادة بأفضل جهد عند الفشل
ملاحظات توافق المصادقة القديمة
بالنسبة إلى بيانات الاعتماد الثابتة، لم يعد وقت التشغيل يعتمد على تخزين المصادقة القديم النصي الصريح.- مصدر بيانات الاعتماد في وقت التشغيل هو اللقطة المحلولة داخل الذاكرة.
- يتم تنظيف إدخالات
api_keyالثابتة القديمة عند اكتشافها. - يظل سلوك التوافق المتعلق بـ OAuth منفصلًا.
ملاحظة واجهة الويب
من الأسهل إعداد بعض union الخاصة بـ SecretInput في وضع المحرر الخام مقارنة بوضع النموذج.المستندات ذات الصلة
- أوامر CLI: secrets
- تفاصيل عقد الخطة: عقد خطة تطبيق الأسرار
- سطح بيانات الاعتماد: سطح بيانات اعتماد SecretRef
- إعداد المصادقة: المصادقة
- الوضع الأمني: الأمان
- أولوية البيئة: متغيرات البيئة