रहस्य और पर्यावरण चर
स्ट्राइप कुंजी या किसी सेटिंग को कोड में लिखे बिना किसी फ़ंक्शन में कैसे पास किया जाए, और प्लेटफ़ॉर्म वास्तव में क्या सुरक्षा करता है।
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 कुंजी संग्रहीत करें और इसे HTTP अनुरोध के apikey हेडर में भेजें। किसी उपयोगकर्ता की कुंजी को कभी भी अग्रेषित न करें, और ब्राउज़र में कभी भी service_role कुंजी न डालें।
4. एन्क्रिप्टेड क्या है
| पथ | विश्राम के समय एन्क्रिप्ट किया गया |
|---|---|
PUT /v1/functions/{name}/env | हाँ, यदि सेवा में एक एन्क्रिप्शन कुंजी कॉन्फ़िगर की गई है (FN_ENV_ENCRYPTION_KEY, AES-256-GCM)। इसके बिना, मान भेजे गए के रूप में संग्रहीत किए जाते हैं और सेवा प्रारंभ में एक चेतावनी लॉग करती है। |
aura secrets set / unset | नहीं: सीएलआई PATCH के माध्यम से लिखता है, जो भेजे गए मानों को संग्रहीत करता है। |
तैनाती अनुरोध में env_vars | नहीं, वही कारण. |
हमारे स्थानीय परीक्षण में, PUT /env द्वारा लिखा गया मान फ़ंक्शन की परिभाषा द्वारा अपरिवर्तित लौटाया गया था, क्योंकि कोई कुंजी कॉन्फ़िगर नहीं की गई थी।
रहस्य एन्क्रिप्ट किए गए हैं या नहीं यह परिनियोजन पर निर्भर करता है, और केवल PUT /env पथ ही उन्हें एन्क्रिप्ट कर सकता है। सीएलआई पथ उन्हें दिए गए अनुसार संग्रहीत करता है। जब तक सीएलआई PUT /env का उपयोग नहीं करता, तब तक उत्पादन रहस्यों के लिए उपरोक्त HTTP कॉल का उपयोग करें।
रहस्यों को वापस पढ़ना भी प्रतिबंधित है। GET /v1/functions/{name}/env डिक्रिप्टेड मान लौटाता है और, GET /v1/functions/{name} की तरह, service_role कुंजी की आवश्यकता होती है। एक सार्वजनिक कुंजी 403 प्राप्त करती है।
5. पालन करने योग्य नियम
index.tsमें कभी भी किसी रहस्य को हार्ड-कोड न करें। किसी फ़ंक्शन का स्रोत कोड आपके प्रोजेक्ट में संग्रहीत किया जाता है और किसी भीservice_roleकॉलर को लौटा दिया जाता है।- कभी भी कोई रहस्य लॉग न करें.
console.logका आउटपुट रनटाइम के लॉग में समाप्त होता है। - प्रति फ़ंक्शन एक वेरिएबल का उपयोग करें, सबसे संकीर्ण कुंजी के साथ जो काम करती है (आपके प्रदाता से एक प्रतिबंधित कुंजी, मास्टर कुंजी नहीं)।
- नया मान सेट करके और कुछ भी पुनः नियोजित करके कुंजी को घुमाएँ: अगली कॉल इसका उपयोग करती है।