Environment Variables અને Secrets શું છે? સરળ માર્ગદર્શિકા
Environment variable એ એક નામ આપેલી સેટિંગ છે — જેમ કે DATABASE_URL અથવા STRIPE_SECRET_KEY — જે તમારી એપ ચાલે ત્યારે તેને આપવામાં આવે છે, તેના કોડમાં લખવાને બદલે. Secret એ એવી environment variable છે જેની કિંમત ખાનગી રહેવી જોઈએ: એક API key, એક password, એક signing key. આ કિંમતોને કોડની બહાર રાખવાથી તમે એપમાં ફેરફાર કર્યા વગર તેને બદલી શકો છો, ટેસ્ટિંગ અને વાસ્તવિક ગ્રાહકો માટે જુદી જુદી કિંમતો વાપરી શકો છો, અને કોડ શેર કે પ્રકાશિત કરતી વખતે તેમને લીક થતાં અટકાવી શકો છો.
AI સાથે બનાવતી વખતે તે શા માટે મહત્વનું છે
જે ક્ષણે તમારી એપ બીજી સેવા સાથે કંઈક ઉપયોગી કરે — પેમેન્ટ લે, ઈમેલ મોકલે, AI મોડેલને કૉલ કરે — તેને key જોઈએ. AI એપ બિલ્ડર નિયમિતપણે આ keys માંગે છે, અને key ક્યાં પહોંચે છે તેના પરથી નક્કી થાય છે કે તમારી એપ સુરક્ષિત છે કે નહીં.
AI વડે બનેલી એપમાં બે બાબતો સામાન્યપણે ખોટી થાય છે:
- Key ચેટ અથવા કોડમાં પેસ્ટ થાય છે. પછી તે ચેટ ઇતિહાસ, પ્રોજેક્ટ ફાઇલો અને કોઈપણ export કે repository માં રહે છે. જે કોઈ તેમને જુએ તે તમારા એકાઉન્ટનો ઉપયોગ કરી શકે છે.
- Key બ્રાઉઝરમાં વપરાય છે. જો Stripe અથવા OpenAI ને કૉલ કરતો કોડ પેજમાં ચાલે, તો key દરેક મુલાકાતીને મોકલાય છે. લોકો ખરેખર જુએ છે — અને સ્વચાલિત scanners સતત ખુલ્લી keys શોધે છે.
Environment variables સમજવાથી તમે બંને શોધી શકો છો, અને તેના ઉકેલ માટે પૂછી શકો છો.
રોજિંદો ઉદાહરણ: હોટેલની તિજોરી
તમારી એપનો કોડ હોટેલના રૂમ જેવો છે. મહેમાનો (અને સફાઈ કામદારો, અને જેને તમે key card આપો તે કોઈપણ) તેમાંથી પસાર થાય છે. તમે તમારો પાસપોર્ટ ટેબલ પર મૂકીને નહીં જાઓ.
Environment variables રૂમની અંદરની તિજોરી જેવી છે. રૂમને ખબર છે કે તિજોરી છે અને જરૂર પડે ત્યારે તે કેવી રીતે ખોલવી, પણ પાસપોર્ટ આસપાસ પડ્યો નથી. અને જો તમે એક રૂમમાંથી બીજા રૂમમાં જાઓ — તમારા ટેસ્ટ સેટઅપથી તમારી લાઇવ સાઇટ પર — તો તમે તે રૂમની તિજોરીમાં જુદો પાસપોર્ટ મૂકો છો, રૂમને ફરીથી સજાવ્યા વગર.
તે કેવી રીતે કામ કરે છે
તમારો કોડ કિંમતને નહીં, એક નામને સંદર્ભિત કરે છે. સર્વર પરના JavaScript માં તે process.env.STRIPE_SECRET_KEY જેવું દેખાય છે. એપ શરૂ થાય ત્યારે, જે platform પર તે ચાલે છે તે એ નામની કિંમત ભરે છે. Platform ની સેટિંગ્સમાં કિંમત બદલો, restart કરો અથવા ફરીથી deploy કરો, અને એપ નવી કિંમત વાપરે છે — કોડમાં કોઈ ફેરફાર વગર.
કિંમતો ક્યાંથી આવે છે તે એપ ક્યાં ચાલે છે તેના પર આધાર રાખે છે:
| ક્યાં ચાલે છે | કિંમતો ક્યાં રાખવામાં આવે છે |
|---|---|
| Developer ના laptop પર | સામાન્ય રીતે .env નામની સ્થાનિક ફાઇલ, જે ક્યારેય git માં commit ન થવી જોઈએ |
| AI બિલ્ડરના preview માં | પ્રોજેક્ટનું secrets અથવા settings panel |
| Hosting platform પર | તે platform ની environment variables સેટિંગ્સ |
| GitHub Actions અથવા બીજા automation માં | સેવાનો પોતાનો encrypted secrets store |
જાહેર વિરુદ્ધ secret variables
દરેક environment variable secret હોતી નથી. તેમને બે જૂથમાં વહેંચવું મદદરૂપ છે:
| પ્રકાર | ઉદાહરણો | બ્રાઉઝર તેને જોઈ શકે? |
|---|---|---|
| જાહેર configuration | સાઇટનું નામ, જાહેર analytics ID, Stripe publishable key, feature switches | હા, તે ઠીક છે |
| Secrets | Stripe secret key, OpenAI અથવા Anthropic API key, database connection string, email provider key, webhook signing secret | ક્યારેય નહીં |
Web frameworks આ વિભાજનને સ્પષ્ટ બનાવે છે. Vite માં, ફક્ત VITE_ થી શરૂ થતા નામવાળા variables બ્રાઉઝર કોડમાં સમાવેશ પામે છે; Next.js માં prefix NEXT_PUBLIC_ છે. આ એક સુરક્ષા લક્ષણ છે: તે prefixes વાળી કોઈપણ વસ્તુ દરેક મુલાકાતી ડાઉનલોડ કરે તે ફાઇલોમાં જાય છે, એટલે secret ને ક્યારેય આ prefix ન આપવો જોઈએ.
એક કામ કરેલું ઉદાહરણ: AI summary બટન
તમે એક "આ નોંધનો સારાંશ બનાવો" બટન ઇચ્છો છો જે AI મોડેલને કૉલ કરે.
અસુરક્ષિત રીત: બટનનો કોડ, બ્રાઉઝરમાં ચાલતો, API key તેમાં લખેલી રાખીને સીધો AI પ્રદાતાને કૉલ કરે છે. તે preview માં કામ કરે છે. પરંતુ તેનો અર્થ એ પણ છે કે કોઈપણ વ્યક્તિ બ્રાઉઝરના developer tools ખોલીને key કૉપી કરી શકે અને તમારા એકાઉન્ટ પર બિલ વધારી શકે.
સુરક્ષિત રીત:
- તમે પ્રદાતા પર key બનાવો છો અને તમારી પ્રોજેક્ટ સેટિંગ્સમાં
OPENAI_API_KEY(અથવા તેના જેવા) નામના secret તરીકે સાચવો છો. - Backend પર એક route છે,
POST /api/summarise, જેprocess.env.OPENAI_API_KEYવાંચે છે, ચકાસે છે કે વપરાશકર્તા લૉગ ઇન છે, અને પ્રદાતાને કૉલ કરે છે. - બટન પ્રદાતાને નહીં, તમારા route ને કૉલ કરે છે. બ્રાઉઝર ક્યારેય key જોતું નથી.
- તમે પ્રકાશિત એપની સેટિંગ્સમાં પણ એ જ secret ઉમેરો છો અને ફરીથી deploy કરો છો, જેથી લાઇવ સાઇટ પર પણ તે હોય.
તે પેટર્ન — બ્રાઉઝર તમારા સર્વરને કૉલ કરે, સર્વર key રાખે અને સેવાને કૉલ કરે — પેમેન્ટ, ઈમેલ, નકશા અને દરેક બીજી પેઇડ API પર લાગુ પડે છે. LLM APIs વાપરવાની માર્ગદર્શિકા AI કેસને વધુ ઊંડાણથી આવરી લે છે.
મુખ્ય શબ્દો
.envફાઇલ: સ્થાનિક development માં વપરાતીNAME=valueલીટીઓની ટેક્સ્ટ ફાઇલ. તેને commit ન થાય તે માટે.gitignoreમાં ઉમેરો..env.example: નામો હોય પણ વાસ્તવિક કિંમતો ન હોય તેવી નકલ, જે commit કરવામાં આવે છે જેથી બીજાઓ જાણે કે કઈ variables સેટ કરવી.- Rotate: secret ને નવા સાથે બદલવું અને જૂનું રદ કરવું.
- Scope / permissions: ઘણા પ્રદાતાઓ તમને એવી keys બનાવવા દે છે જે ફક્ત અમુક કામ કરી શકે. માત્ર ઈમેલ મોકલી શકે એવી key, બધું કરી શકે એવી key કરતાં ઓછી જોખમી છે.
- Test vs live keys: Stripe જેવા પ્રદાતાઓ ટેસ્ટિંગ અને વાસ્તવિક પૈસા માટે અલગ keys આપે છે. લોન્ચ સુધી test keys વાપરો.
- Signing secret: એક secret જે તપાસે છે કે સંદેશ, જેમ કે webhook, ખરેખર મોકલનારા તરફથી આવ્યો છે.
સામાન્ય ભૂલો અને ગેરસમજણો
- "મારી repository private છે, એટલે તેમાં keys હોય તો વાંધો નથી." Private repositories શેર, fork, export અને laptop પર clone થાય છે. Keys ત્યાં હોવી જોઈએ નહીં. જો તમે પ્રોજેક્ટને GitHub સાથે જોડો, તો ખાતરી કરો કે કોઈ
.envફાઇલ સામેલ ન હોય. - "મેં તેને કાઢી નાખ્યું, એટલે તે ગયું." Git ઇતિહાસ રાખે છે, અને ચેટ લૉગ સંદેશા રાખે છે. જો key ક્યારેય ખુલ્લી થઈ હોય, તો તેને rotate કરો.
- Secret પર જાહેર prefix વાપરવો.
VITE_OPENAI_KEYતમારી key ને બ્રાઉઝર bundle માં મૂકે છે. - ફરીથી deploy કરવાનું ભૂલવું. સેટિંગ્સમાં variable બદલવાથી સામાન્ય રીતે એપ restart કે ફરી પ્રકાશિત થયા પછી જ અસર થાય છે.
- બધા માટે એક key. Test અને live માટે, તેમજ દરેક એપ માટે અલગ keys, બીજાને તોડ્યા વગર એક રદ કરવાનું શક્ય બનાવે છે.
- કોઈ ખર્ચ મર્યાદા નહીં. પેઇડ APIs માટે, key લીક થાય તો પ્રદાતાના dashboard માં બજેટ અથવા મર્યાદા સેટ કરો.
તમારા AI બિલ્ડરને શું માંગવું
- "
STRIPE_SECRET_KEYનામના environment variable માંથી Stripe secret key વાંચો. તેનો ઉપયોગ ફક્ત સર્વર પર કરો." - "ખાતરી કરો કે કોઈ secret client-side કોડમાં વપરાતી નથી અથવા તેને
VITE_/NEXT_PUBLIC_prefix આપવામાં આવ્યો નથી." - "એપને જરૂરી દરેક variable ની યાદી ધરાવતી
.env.exampleબનાવો, કિંમતો વગર, અને ખાતરી કરો કે.envgit-ignored છે." - "બનાવેલી frontend ફાઇલોમાં API key જેવી લાગતી કોઈ પણ સ્ટ્રિંગ તપાસો."
અમારી AI વડે બનેલી એપ માટેની સુરક્ષા ચેકલિસ્ટ લૉન્ચ પહેલાં ચલાવવા જેવી બીજી તપાસો સાથે secrets પણ આવરી લે છે.
Mythex પર secrets
Mythex પર, secrets એ પ્રોજેક્ટ environment variables છે જે preview sandbox અને તમારી પ્રકાશિત એપ બંનેમાં ઇન્જેક્ટ થાય છે. તમે તેમને project settings → Secrets હેઠળ, અથવા ચેટમાં /secrets વડે ઉમેરો છો, અને જ્યારે એજન્ટને key જોઈએ ત્યારે તે ચેટમાં secrets કાર્ડ બતાવે છે, જેથી કિંમત સંદેશના ઇતિહાસમાં નહીં, પણ ફોર્મ ફીલ્ડમાં જાય. જો તમે લાઇવ એપ માટે secret બદલો, તો deploy તેને લે તે માટે ફરીથી publish કરો. પ્રોજેક્ટ exports માં secrets બહાર રહે છે, અને આયાત કરાયેલી .env ફાઇલોમાંથી તે દૂર કરવામાં આવે છે, જેથી તમે તેમને settings માં ફરી ઉમેરો. દસ્તાવેજોમાં environment variables અને secrets અને ચેટમાં secrets જુઓ.
પ્રશ્નો
Environment variable એટલે શું?
Environment variable એ એક નામ આપેલી સેટિંગ છે, જેમ કે STRIPE_SECRET_KEY અથવા DATABASE_URL, જે પ્રોગ્રામ ચાલે ત્યારે તેને આપવામાં આવે છે, તેના કોડમાં લખવાને બદલે. એ જ કોડ development અને production માં અલગ અલગ મૂલ્યો વાપરી શકે છે.
Environment variable અને secret વચ્ચે શો તફાવત છે?
Secret એ એવી environment variable છે જેની કિંમત ખાનગી રહેવી જોઈએ, જેમ કે API key, database password અથવા webhook signing secret. બીજી environment variables, જેમ કે સાઇટનું નામ અથવા feature switch, જાહેર હોઈ શકે છે.
શું મારા frontend માં API keys મૂકવી સુરક્ષિત છે?
ના. Frontend કોડમાં જે કંઈ છે તે દરેક મુલાકાતીના બ્રાઉઝરમાં ડાઉનલોડ થાય છે અને વાંચી શકાય છે. Secret keys ફક્ત સર્વર પર વાપરવી જોઈએ, અને બ્રાઉઝરે તમારા સર્વરને કૉલ કરવો જોઈએ, જે પછી પ્રદાતાને કૉલ કરે.
જો મારી API key લીક થાય તો શું કરવું?
પ્રદાતા પર તરત જ તેને રદ કરો અથવા બદલો, નવી બનાવો, જ્યાં તમારી એપ secrets સાચવે છે ત્યાં અપડેટ કરો, અને ફરીથી deploy કરો. કોડ કે ચેટ ઇતિહાસમાંથી key કાઢી નાખવી પૂરતું નથી, કારણ કે તેની નકલો પહેલેથી હોઈ શકે છે.