أسرار ومتغيرات البيئة
كيفية تمرير مفتاح Stripe أو أي إعداد إلى وظيفة دون كتابته في الكود، وما الذي تحميه المنصة فعليًا.
1. قم بتعيين متغير
كل متغير ينتمي إلى وظيفة واحدة. يحتاج إعداد المتغيرات إلى مفتاح service_role.
PUT /env يستبدل مجموعة المتغيرات بأكملها بالقائمة التي ترسلها. aura secrets set وunset قم بقراءة القيم الحالية، وقم بتغيير المفاتيح التي تسميها واكتب النتيجة مرة أخرى.
يؤدي نشر التعليمات البرمجية الجديدة باستخدام aura functions deploy إلى ترك المتغيرات دون تغيير.
2. اقرأها في الدالة
تتم قراءة المتغيرات عند كل استدعاء: ينطبق التغيير على الاستدعاء التالي.
3. المتغيرات التي تضيفها المنصة
| متغير | القيمة |
|---|---|
AURABASE_PROJECT_ID | معرف المشروع تعيين دائما. |
AURABASE_FUNCTION_NAME | اسم الوظيفة. تعيين دائما. |
AURABASE_URL | عنوان URL الخاص بالمنصة، عندما يحدده مشغل المنصة. |
AURABASE_ANON_KEY | مفتاح النظام الأساسي، عندما يحدده المشغل. |
لا يمكنك تجاوز هذه الأسماء. بيئة المضيف غير مرئية لوظيفتك: في التشغيل الحقيقي، تم إرجاع Deno.env.get('PATH') undefined.
لاستدعاء مشروعك الخاص من إحدى الوظائف، قم بتخزين مفتاح service_role باعتباره سر تلك الوظيفة وأرسله في رأس apikey لطلب HTTP. لا تقم أبدًا بإعادة توجيه مفتاح المستخدم، ولا تضع أبدًا مفتاح service_role في المتصفح.
4. ما هو مشفر
| المسار | مشفرة في بقية |
|---|---|
PUT /v1/functions/{name}/env | نعم، إذا كانت تحتوي الخدمة على مفتاح تشفير تم تكوينه (FN_ENV_ENCRYPTION_KEY, AES-256-GCM). وبدون ذلك، يتم تخزين القيم كما تم إرسالها وتسجل الخدمة تحذيرًا عند البداية. |
aura secrets set / unset | لا: تكتب واجهة سطر الأوامر (CLI) من خلال PATCH، الذي يخزن القيم كما تم إرسالها. |
env_vars في طلب النشر | لا، نفس السبب. |
في اختبارنا المحلي، تم إرجاع القيمة المكتوبة بواسطة PUT /env دون تغيير بواسطة تعريف الوظيفة، لأنه لم يتم تكوين أي مفتاح.
يعتمد تشفير الأسرار على عملية النشر، ولا يمكن تشفيرها إلا من خلال المسار PUT /env. يقوم مسار CLI بتخزينها كما هو محدد. حتى تستخدم واجهة سطر الأوامر PUT /env، استخدم استدعاء HTTP أعلاه للحصول على أسرار الإنتاج.
قراءة الأسرار مرة أخرى مقيدة أيضًا. يقوم GET /v1/functions/{name}/env بإرجاع القيم التي تم فك تشفيرها، ويتطلب، مثل GET /v1/functions/{name}، مفتاح service_role. يستقبل المفتاح العام 403.
5. القواعد الواجب اتباعها
- لا تقم مطلقًا بتشفير سر في
index.ts. يتم تخزين الكود المصدري للوظيفة في مشروعك وإعادته إلى أي متصلservice_role. - لا تسجل سرًا أبدًا. ينتهي الأمر بإخراج
console.logفي سجلات وقت التشغيل. - استخدم متغيرًا واحدًا لكل وظيفة، مع أضيق مفتاح يعمل (مفتاح مقيد من مزود الخدمة الخاص بك، وليس المفتاح الرئيسي).
- قم بتدوير المفتاح عن طريق تعيين القيمة الجديدة وإعادة نشر أي شيء: تستخدمه المكالمة التالية.