انتقل إلى المحتوى الرئيسي انتقل إلى الملاحة انتقل إلى التذييل

تخزين الإعدادات

مزامنة إعدادات مشفّرة من جهة الجهاز، بمفتاح مرور، أو كلمة مرور رئيسية، أو رمز استرداد لفك القفل

تخزين الإعدادات

يزامن تخزين الإعدادات إعداد واجهة سطر الأوامر عبر الأجهزة. تُشفَّر الإعدادات على الجهاز بمفتاح تشفير محتوى (CEK) لا يحتفظ به الخادم أبداً. يوضح قسم الأمان بدقة ما الذي يحميه ذلك وما لا يحميه.

طرق فك القفل (فتحات المفاتيح)

هناك مفتاح تشفير محتوى (CEK) واحد لكل مخزن، يُغلَّف بشكل مستقل لكل طريقة فك قفل، على غرار فتحات مفاتيح LUKS. أي فتحة واحدة تفتح المفتاح نفسه، ويمكن إضافة الفتحات أو إزالتها دون إعادة تشفير بياناتك:

الطريقةما هيملاحظات
مفتاح المرورمفتاح مرور WebAuthn مع امتداد PRFالخيار الأقوى؛ مدعوم بالعتاد
كلمة المرور الرئيسيةكلمة مرور تختارها، تُقوَّى باستخدام PBKDF2-SHA256 (600,000 تكرار)تعمل بدون عتاد يدعم PRF؛ وتتيح أيضاً التسجيل بدون واجهة في واجهة سطر الأوامر
رمز الاستردادرمز يُنشأ بالصيغة RC1-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXXيُعرض مرة واحدة فقط عند الإنشاء؛ احفظه في مكان آمن

تغذي كل طريقة المسار نفسه: تُنتج الفتحة سراً يتحد مع سر يحتفظ به الخادم لفك تغليف مفتاح CEK. لا يكفي أي من النصفين بمفرده، ولا يصل سر الفتحة إلى الخادم أبداً. فتحة كلمة المرور الرئيسية هي الأضعف بين الثلاث: يملك الخادم كل ما يلزم لتجربة تخمين كلمة المرور دون اتصال، لذا يجب أن تكون كلمة المرور قوية. لا تعاني فتحتا مفتاح المرور ورمز الاسترداد من هذا الضعف.

تُدار الفتحات من البوابة في صفحة تخزين الإعدادات. المؤسسات التي تريد فك قفل بالعتاد فقط يمكنها تفعيل سياسة طلب مفتاح المرور، التي ترفض أي فتحة غير مفتاح مرور وتُلغيها من المخزن بالكامل.

فك القفل مرتبط بالجهاز: تفك القفل مرة واحدة على جهاز جديد، وبعدها تعمل عمليات واجهة سطر الأوامر اليومية (push/pull) دون الحاجة لمفتاح مرور أو كتابة كلمة مرور.

المتطلبات الأساسية

  • المصادقة الثنائية مفعّلة على حسابك
  • لطريقة مفتاح المرور: مزود مفتاح مرور يدعم PRF، مثل مفتاح أمان FIDO2 (كـ YubiKey)، أو iCloud Keychain، أو Google Password Manager، أو 1Password، أو Dashlane
  • المتصفح: Chrome 133+، أو Edge 133+، أو Firefox 130+، أو Safari 17+

ينطبق شرط PRF على فتحة مفتاح المرور فقط. أما طريقتا كلمة المرور الرئيسية ورمز الاسترداد فتعملان مع أي متصفح مدعوم.

الإعداد

  1. انتقل إلى تخزين الإعدادات في الشريط الجانبي، ثم انقر على إعداد تخزين الإعدادات
  2. تتحقق قائمة المتطلبات من متصفحك والمصادقة الثنائية وحالة الجلسة
  3. اختر طريقة فتح القفل الأولى، ثم انقر على إنشاء مخزن تكوين:
    • مفتاح المرور (Passkey)، إذا كان مزوّدك يدعم PRF: تلمس مفتاح الأمان مرتين، مرة لتسجيله ومرة لاشتقاق مفاتيح التشفير.
    • كلمة المرور الرئيسية، وتعمل مع أي متصفح، بما في ذلك مزوّدو مفاتيح المرور الذين لا يدعمون PRF مثل Bitwarden.
    • اختياريًا رمز استرداد، يُعرض مرة واحدة ويجب حفظه قبل إنشاء المخزن.
  4. اكتمل الإعداد. تحتفظ واجهة سطر الأوامر بسرّ فتح القفل في سلسلة مفاتيح نظام التشغيل.

يمكن إضافة مفتاح مرور لاحقًا من صفحة Config Storage. احتفظ بطريقتين على الأقل لفتح القفل، حتى لا يمنعك من الوصول مصادِقٌ مفقود أو غير مدعوم.

توافق مزودي PRF

المزوددعم PRFالمنصات
YubiKey / مفاتيح أمان FIDO2✅Windows 11، macOS، Linux
iCloud Keychain✅macOS 15+، iOS 18+
Google Password Manager✅Android
1Password✅Android، iOS
Dashlane✅متعدد المنصات
إضافة Bitwarden❌استخدم كلمة المرور الرئيسية بدلًا منه
Windows Hello❌غير مدعوم

التسجيل بدون واجهة في واجهة سطر الأوامر

يمكن لجهاز بلا متصفح (خادم، أو عامل CI، أو خدمة تنفيذ) التسجيل في مخزن قائم باستخدام طريقة كلمة المرور الرئيسية:

rdc config remote enable --master-password

المتطلبات:

  • فتحة كلمة مرور رئيسية مُهيَّأة مسبقاً عبر البوابة (يحتفظ المتصفح بالمفتاح أثناء التهيئة، لذا لا يمكن أن تكون هذه الخطوة نفسها بدون واجهة)
  • رمز وصول API يحمل نطاق config:enroll لمصادقة الطلب

التسجيل عملية قراءة: تجلب واجهة سطر الأوامر معاملات KDF العامة للفتحة والمفتاح المُغلَّف، وتشتق سر كلمة المرور محلياً، وتفك تغليف مفتاح CEK على الجهاز نفسه. يمنح ذلك الجهاز القدرة على فك تشفير الإعدادات ومزامنتها؛ ولا يُعدِّل المخزن.

كيف تصل المفاتيح إلى CLI

rdc config remote enable (وrdc config rotate-cek) يسلّمان سر فك القفل إلى CLI عبر خادم الحساب. لا يتواصل CLI مع المتصفح مباشرة أبداً، لذلك يعمل الأمر بالطريقة نفسها على خادم بلا متصفح، أو في WSL مع متصفح على Windows، أو من الهاتف.

  1. سجّل الدخول في CLI أولاً باستخدام rdc subscription login. يربط الخادم الطلب بذلك الحساب.
  2. ينشئ CLI طلباً قصير العمر ويطبع رابطاً ورمز اقتران مثل 7KQ2-M9XD-P4RT. يضع الرابط كل ما يحمله بعد علامة #، وهو الجزء الذي لا ترسله المتصفحات إلى أي خادم.
  3. افتح الرابط في أي متصفح مسجَّل الدخول بالحساب نفسه. يُرفض الطلب القادم من حساب آخر.
  4. اكتب رمز الاقتران من الطرفية عندما تطلبه الصفحة. يبقى زر فك القفل معطّلاً حتى يتطابق الرمز.
  5. افتح القفل بمفتاح المرور أو بكلمة المرور الرئيسية. يختم المتصفح المفتاح لصالح CLI، ويمرّر الخادم كتلة بيانات لا يستطيع قراءتها.
  6. يفك CLI تشفير الكتلة، ويحفظ السر في سلسلة مفاتيح نظام التشغيل، ثم يبلغ بالنجاح.

تنتهي صلاحية الطلب بعد 10 دقائق. اضغط Ctrl+C في CLI لإلغائه: يطلب CLI من الخادم إسقاط الرابط فيتوقف عن العمل فوراً، وتطلب الصفحة إعادة تشغيل الأمر. إذا لم يصل هذا الطلب، يبقى الرابط صالحاً حتى تنتهي صلاحية الطلب. إذا فُتح الرابط بعد انتهاء صلاحيته، أو بعد أن أسقطت إعادة توجيه تسجيل الدخول الجزء الذي يلي #، فأعد تشغيل الأمر.

يُشتق رمز الاقتران من المفتاح الموجود داخل الرابط. إذا استبدل أحدهم الرابط برابط من عنده، فلن يطابق الرمز الظاهر في طرفيتك ما تتوقعه الصفحة، ولن يُفرج عن أي شيء.

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

التفعيل والقراءة بلا اتصال

يربط أمر rdc config remote enable الإعداد النشط بالمخزن. عندما يكون المخزن فارغاً، يقوم التفعيل بـتعبئته من إعدادك المحلي الحالي: تُدفع الموارد المحلية كأول إصدار للمخزن، ثم تُسحب مرة أخرى لإثبات صحة الدورة الكاملة. عندما يحتوي المخزن على محتوى بالفعل، فإن التفعيل يوفّق معه بدلاً من الكتابة فوقه (يتوقف عند تباين حقيقي ما لم تمرر --force).

بعد التفعيل، يحتفظ الإعداد بـذاكرة تخزين مؤقت للقراءة كاملة، مشفّرة أثناء التخزين بنفس آلية أي إعداد محلي، بحيث يبقى المخزن قابلاً للاستخدام عندما يتعذر الوصول إلى خادم الحساب:

  • تعمل القراءات دون اتصال. يُقدَّم المحتوى المخزَّن مؤقتاً مع تحذير بعدم الحداثة على stderr، موسوماً بإصدار وطابع زمني للتخزين المؤقت (cachedVersion / cachedAt).
  • تتطلب الكتابة الخادم وتفشل بأمان. لا توجد قائمة انتظار كتابة دون اتصال: أي كتابة لا يمكنها الوصول إلى الخادم تفشل مع ذكر اسم الخادم. إذا نجح أمر كتابة، فإن التغيير موجود على الخادم.
  • تُحل التعديلات المتزامنة من جهازين عبر السحب-إعادة التطبيق-إعادة الدفع (pull-replay-repush): يقبل الخادم الدفع فقط فوق الإصدار الذي يستبدله، وتُعاد محاولة الدفع الخاسر فوق النسخة الحديثة، بحيث لا يُستبدَل تعديل متزامن في مكان آخر.
  • الإعداد المحلي (الذي لا يحتوي على كتلة remote) لا يتأثر بأي من ذلك ويعمل بالكامل دون اتصال.

ما الذي تتم مزامنته

تتم مزامنة كل شيء في الإعداد، بما في ذلك معرّف الشبكة الخاص بكل مستودع، باستثناء هذه الحقول المحلية على الجهاز: schemaVersion، وversion، وremote، وencryption، وrenetPath، وcredentials.masterPasswordVerifier، وحقلَي تسجيل الدخول account.accountServer وaccount.e2ePublicKey. تسجيل الدخول والخروج يتم لكل جهاز على حدة.

الإصدارات والاستعادة

يحتفظ الخادم بآخر 50 إصداراً لكل إعداد.

rdc config remote versions
rdc config remote restore <version>

تنشر الاستعادة المحتوى القديم كإصدار جديد فوق الإصدار الحالي؛ ولا تُرجع رقم الإصدار إلى الوراء أبداً. يحصل كل جهاز على المحتوى المستعاد عند عملية السحب (pull) التالية، وتُسجَّل الاستعادة في سجل التدقيق.

تدوير المفتاح

يؤدي تدوير مفتاح CEK الخاص بالمخزن إلى إعادة تغليفه تحت جيل جديد:

  • تُبطَل رموز الاسترداد دائماً عند التدوير، لذا أنشئ رمزاً جديداً واحفظه بعد ذلك
  • تبقى فتحة كلمة المرور الرئيسية صالحة فقط إذا أُعيد إدخال كلمة المرور أثناء معالج التدوير
  • تُبلَّغ أي فتحة متروكة عند جيل أقدم بأنها قديمة بدلاً من أن تفشل بخطأ فك تشفير غامض
  • تُلغى رموز الإعداد الخاصة بالأعضاء الآخرين، ويُطلب من أي جهاز لا يزال يحمل المفتاح القديم إعادة التفعيل باستخدام rdc config remote enable

إدارة الأعضاء

تخزين الإعدادات محدد لكل مؤسسة. تتم إدارة الأعضاء عبر بوابة الويب:

  • عرض الأعضاء: تخزين الإعدادات ← الأعضاء
  • إضافة عضو: حالياً عبر واجهة سطر الأوامر فقط (واجهة الويب مخططة)
  • إزالة عضو: انقر على زر الإزالة في صفحة الأعضاء (يتطلب المصادقة الثنائية + إعادة المصادقة)

تمنع الحمايات الأمنية إزالة آخر عضو نشط أو إزالة نفسك.

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

الأمان

ما هو محمي. الإعدادات المخزَّنة سرّية في مواجهة اختراق تخزين الخادم وفي مواجهة مشغِّل سلبي. كل كتلة بيانات (blob) مرتبطة بمخزنها، وإعدادها، وفريقها، وإصدارها، لذا لا يستطيع الخادم استبدال كتلة بيانات إعداد بأخرى أو تعديلها دون أن يُكتشف ذلك.

ما هو غير محمي. يمكن لمشغِّل يقدّم شيفرة بوابة خبيثة قراءة المفتاح في المتصفح. كما يمكن لمشغِّل حجب أحدث إصدار عن جهاز لم يره من قبل.

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

ضمانات أخرى:

  • مفتاح مقسم: يتطلب فك التشفير كلاً من سر الفتحة (على الجهاز) وسر الخادم
  • الحذف يتطلب معرفة: إزالة قيمة مثبَّتة من إعداد تتطلب إثبات أن القيمة كانت معروفة، بحيث لا يستطيع طرف بوصول جزئي حذف حقول بصمت
  • رموز متجددة: يُدوِّر كل طلب رمز الإعداد؛ يرتبط الرمز بعنوان IP الخاص باستخدامه الأول وتنتهي صلاحيته بعد 7 أيام
  • الإلغاء: إزالة عضو تحذف فتحات مفاتيحه ورموزه دفعة واحدة؛ ما سبق أن سحبه يبقى على جهازه، وتدوير مفتاح CEK يمنع مفتاحاً احتفظ به من فتح إصدارات لاحقة

استكشاف الأخطاء وإصلاحها

الخطأالسببالحل
PRF not supportedالمصادق يفتقر إلى امتداد PRFاستخدم YubiKey، أو iCloud Keychain، أو 1Password، أو Dashlane، أو أضف فتحة كلمة مرور رئيسية
X25519 not supportedإصدار المتصفح قديم جداًحدّث إلى Chrome 133+، أو Edge 133+، أو Firefox 130+، أو Safari 17+
Already configuredيوجد مخزن لمؤسستك بالفعلقم بزيارة /account/config-storage للإدارة
Config storage not configuredالخادم يفتقر إلى تخزين blobاتصل بمسؤولك لتكوين R2/RustFS
Token expiredلا يوجد نشاط لمدة 7 أيام، أو غيّر الجهاز شبكتهيتجدد تلقائياً عبر تسجيل الدخول؛ إذا لم يكن هناك تسجيل دخول محفوظ، شغّل rdc subscription login أو rdc config remote enable
عاد الإعداد بإصدار أقدمأعاد الخادم نسخة أقدم مما رآه هذا الجهاز من قبللم يتغيّر شيء محلياً؛ أعد المحاولة، وأبلغ إن استمر الأمر
Cannot remove last memberسيؤدي إلى قفل المخزن نهائياًأضف عضواً آخر أولاً
Stale slotالفتحة أقدم من آخر عملية تدوير للمفتاحأعد إضافة الفتحة (يجب إعادة إنشاء رموز الاسترداد بعد كل تدوير)