المُطلِق المنتجات Bitnami التوثيقimaxe CLI المدوّنة اتصل بنا
imaxe secrets أسرار v1.0.0

أسرار محلية، آمنة افتراضيًا

تولّد أسرار النسخة (كلمات المرور وعبارات المرور والمفاتيح) وتقرأها وتدوّرها باستخدام مولّد CSPRNG وبأذونات 0600. خامل التكرار في صور AMI المتسلسلة: generate ينشئ السر فقط إن لم يكن موجودًا، وget يعطي مخرجات نظيفة قابلة للتمرير عبر pipe.

$ imaxe secrets generate mariadb --len 32 --format password
الإصدار
v1.0.0
الأوامر الفرعية
4
Config
/etc/imaxe/secrets.yml
يتطلب root
نعم
الأذونات
0600

ماذا تفعل هذه الوحدة #

تحتاج كل خدمة تقريبًا في نسختك إلى سر: كلمة مرور قاعدة البيانات، وعبارة المرور لأداة تحقق من السلامة، ومفتاح API… حفظها يدويًا —أو الأسوأ، تركها على القيم الافتراضية— هو واحد من أكثر الأسباب شيوعًا لتعرّض جهاز للاختراق.

تتكفّل وحدة secrets بدورة الحياة هذه محليًا: تولّد كل سر بمولّد آمن تشفيريًا (CSPRNG)، وتحفظه بأذونات 0600 (يستطيع root وحده قراءته)، وتعيده بمخرجات نظيفة جاهزة للسَّلسلة في pipe، وتدوّره عند الحاجة. يُنظَّم كل شيء حسب المجالات (مثل mariadb أو tripwire)، ويمكن أن يحتوي كل مجال على عدة حقول.

آمن افتراضيًا في صور AMI المتسلسلة

generate خامل التكرار: إن كان سر مجال ما موجودًا بالفعل فإنه لا يمسّه. وهكذا يمكن للصورة نفسها أن تنشئ أسرارها عند أول إقلاع لكل نسخة دون أن يتشارك جهازان كلمة المرور نفسها. لا تُسجَّل القيم أبدًا ولا تُعرَض في list.

دليل سريعمهام خطوة بخطوة

المهام الشائعة #

اختر ما تريد فعله. تأتي كل وصفة بالأمر مكتوبًا مسبقًا — كل ما عليك هو تغيير المجال إلى مجالك والضغط على نسخ.

1

توليد سر لخدمة

ينشئ كلمة مرور قوية لمجال، فقط إن لم تكن موجودة بعد.

اتصل عبر SSH بخادمك باستخدام المستخدم ubuntu.

ولّد سر المجال mariadb. بما أنه خامل التكرار، يمكنك تشغيله كما تشاء دون خوف من الكتابة فوقه:

الطرفية
$ sudo imaxe secrets generate mariadb

هل تحتاج إلى عبارة مرور طويلة لأداة أخرى وفي حقل محدد؟ اضبط --format و--len و--field:

الطرفية
$ sudo imaxe secrets generate tripwire --field local.passphrase --format passphrase --len 40
يُحفَظ السر بأذونات 0600. إن كان موجودًا من قبل فلم يتغير — وينتهي الأمر بنجاح على أي حال.
2

قراءة سر لاستخدامه

احصل على القيمة الخام، جاهزة للسَّلسلة في أمر آخر.

get يطبع القيمة فقط، دون زخارف ولا أسطر زائدة، حتى تتمكن من تمريرها إلى عملية أخرى عبر pipe:

الطرفية
$ sudo imaxe secrets get mariadb

هل السر في حقل محدد من المجال؟ حدّده بـ --field:

الطرفية
$ sudo imaxe secrets get tripwire --field local.passphrase
المخرجات نظيفة: يمكنك كتابة PASS="$(sudo imaxe secrets get mariadb)" واستخدامها مباشرة في سكربتك.
3

تدوير سر

يستبدل القيمة بأخرى جديدة ويضع علامة على المجال بأنه مُدوَّر.

ولّد قيمة جديدة للمجال. على خلاف generate، فإن rotate يستبدل السر الموجود بالفعل:

الطرفية
$ sudo imaxe secrets rotate mariadb
يُوضَع على المجال علامة بأنه مُدوَّر (سترى التاريخ في list). تذكّر أن تحدّث الخدمة التي تستخدم ذلك السر بالقيمة الجديدة من get.
4

عرض المجالات الموجودة

استعلم عن البيانات الوصفية دون كشف أي قيمة.

اسرد المجالات مع بياناتها الوصفية (متى أُنشئت ومتى دُوّرت). لا يعرض السر نفسه أبدًا:

الطرفية
$ sudo imaxe secrets list

هل تحتاجه لسكربت أو لفحص آلي؟ اطلب المخرجات بصيغة JSON:

الطرفية
$ sudo imaxe secrets list --json
ترى بنظرة واحدة أي أسرار تديرها النسخة وأيها يُفضَّل تدويره، دون تسريب أي قيمة إلى الشاشة ولا إلى السجلّ.
انتبه إلى أين تنتهي القيمة

لا يستطيع قراءة السر إلا root ما دام موجودًا على القرص. لكن بمجرد قراءته بـ get ينتقل إلى طرفيتك وإلى الصدفة لديك: تجنّب تركه في السجلّ التاريخي (history)، أو في متغيرات بيئة مُصدَّرة بلا داعٍ، أو في السجلّات. فضّل الاستبدالات النقطية للأوامر مثل "$(sudo imaxe secrets get mariadb)".

مرجع CLIالأوامر والرايات والملفات

صيغة الاستخدام #

الاستخدام
imaxe secrets <subcomando> [<dominio>] [--field CLAVE] [flags]

تتطلب جميع الأوامر الفرعية امتيازات root (استخدم sudo) لأنها تقرأ وتكتب ملفات 0600 تحت /etc/imaxe/. أضف --json إلى list للحصول على مخرجات قابلة للقراءة آليًا، مناسبة لكتابة السكربتات. تذكّر: get يُصدر القيمة خامًا، دون تزيين، جاهزة لـ pipe.

الأوامر الفرعية #

الأمر الفرعيماذا يفعلالرايات المعنية
generateينشئ سر مجال إن لم يكن موجودًا (خامل التكرار، CSPRNG). دون مجال، يولّد أسرار generate_on_first_boot.--len, --format, --field
getيعيد قيمة سر بمخرجات نظيفة، مناسبة لـ pipe.--field
rotateيولّد سرًا جديدًا ويضع علامة على المجال بأنه مُدوَّر.--field
listيسرد المجالات وبياناتها الوصفية (أُنشئ، دُوّر). لا يعرض القيم أبدًا.--json

الوسائط والرايات #

الرايةالنوعالافتراضيالوصف
<dominio>stringمجال السر (مثل mariadb، tripwire). إلزامي في get وrotate. في generate، الفارغ = مجالات generate_on_first_boot.
--fieldstringvalueحقل داخل المجال. يتيح حفظ عدة أسرار لكل مجال (مثل local.passphrase).
--lenint32في generate: طول السر بالأحرف.
--formatenumpasswordفي generate: صيغة القيمة — password أو passphrase أو hex.
--jsonboolfalseفي list، يُصدر البيانات الوصفية كـ JSON مُهيكل في stdout.

الملفات والمسارات #

المسارالمحتوى
/etc/imaxe/secrets.ymlإعدادات الوحدة: القيم الافتراضية (length، format)، والمجالات وقائمة generate_on_first_boot. يُحفَظ بأذونات 0600.

مثال على secrets.yml:

/etc/imaxe/secrets.yml
defaults:
  length: 32
  format: password
domains: {}
generate_on_first_boot:
  - mariadb
  - tripwire

بهذه الإعدادات، فإن sudo imaxe secrets generate دون مجال عند أول إقلاع ينشئ أسرار mariadb وtripwire بالطول والصيغة الافتراضيين.

رموز الخروج والسجلّات #

يعيد كل تشغيل رمزًا يمكنك التحقق منه بـ echo $? — مفيد للسَّلسلة في السكربتات:

0OKاكتملت العملية (يشمل الحالة الخاملة التكرار دون تغييرات).
1ERRخطأ عام غير مصنَّف. راجع الأذونات وملف الإعدادات.
2USAGEوسائط غير صالحة أو ناقصة (مثل get دون مجال).
3NOTFOUNDالمجال أو الحقل المطلوب غير موجود.

استخدام نموذجي في سكربت، مستفيدًا من المخرجات النظيفة لـ get:

الطرفية
$ sudo imaxe secrets generate mariadb \
  && sudo imaxe secrets get mariadb | some-tool --stdin-password \
  || echo "falló con código $?"

حل المشكلات #

العَرَضالسبب المحتملالحل
يظهر NOTFOUND (الرمز 3)المجال أو --field لم يُولَّد بعد.أنشئه أولًا بـ secrets generate <dominio> (وبنفس --field).
يظهر USAGE (الرمز 2)تشغيل get أو rotate دون تحديد المجال.مرّر المجال كوسيط؛ فهو إلزامي في هذه الأوامر الفرعية.
generate لا يغيّر القيمةالسر موجود من قبل: generate خامل التكرار بالتصميم.إن أردت قيمة جديدة، استخدم secrets rotate <dominio>.
Permission denied عند القراءةالملف 0600 وقد شغّلته دون امتيازات.نفّذ الأمر بـ sudo؛ فقط root يصل إلى السر.

هل واجهتك مشكلة مع وحدة الأسرار؟

راسلنا مرفقًا مخرجات «imaxe <module> status --json» وسنرد عليك بسرعة.

التواصل مع الدعم