መመሪያዎች

የአካባቢ ተለዋዋጮችና ሚስጥሮች ምንድን ናቸው? ቀላል መመሪያ

Environment variable ማለት እንደ DATABASE_URL ወይም STRIPE_SECRET_KEY ያለ ስም ያለው ቅንብር ነው፤ አፕዎ ሲሰራ ወደ ኮዱ ውስጥ ከመጻፍ ይልቅ የሚሰጠው። Secret ደግሞ እሴቱ ግል ሆኖ መቆየት ያለበት environment variable ነው፦ API ቁልፍ፣ የይለፍ ቃል ወይም የፊርማ ቁልፍ። እነዚህን እሴቶች ከኮዱ ውጭ ማስቀመጥ አፑን ሳታርትዑ ለመቀየር፣ ለሙከራና ለእውነተኛ ደንበኞች የተለያዩ እሴቶችን ለመጠቀም እንዲሁም ኮዳችሁን ሲያጋሩ ወይም ሲያትሙ እንዳይፈስ ያደርጋል።

ለAI ግንባታ ለምን ያስፈልጋል

አፓችሁ ከሌላ አገልግሎት ጋር ጠቃሚ ነገር መስራት እንደጀመረ፣ ለምሳሌ ክፍያ መቀበል፣ ኢሜይል መላክ ወይም AI ሞዴል መጥራት፣ ቁልፍ ያስፈልገዋል። AI መገንቢያዎች እነዚህን ቁልፎች ደጋግመው ይጠይቃሉ፤ ቁልፉ በመጨረሻ የሚገኝበት ቦታ አፑ ደህንነቱ የተጠበቀ መሆን አለመሆኑን ይወስናል።

በAI የተገነቡ አፖች ውስጥ ሁለት ነገሮች ብዙ ጊዜ ይሳሳታሉ፦

  • ቁልፉ ወደ ቻቱ ወይም ኮዱ ውስጥ ይለጠፋል። ከዚያ በቻት ታሪኩ፣ በፕሮጀክቱ ፋይሎች እና በማንኛውም ኤክስፖርት ወይም ሪፖዚቶሪ ውስጥ ይቀራል። ያየው ሁሉ የመለያችሁን አገልግሎት መጠቀም ይችላል።
  • ቁልፉ በብራውዘር ውስጥ ጥቅም ላይ ይውላል። Stripe ወይም OpenAI የሚጠራው ኮድ በገጹ ውስጥ የሚሰራ ከሆነ፣ ቁልፉ ለእያንዳንዱ ጎብኚ ይላካል። ሰዎች ይመለከታሉ፤ ራስ-ሰር ስካነሮችም የተጋለጡ ቁልፎችን ያለማቋረጥ ይፈልጋሉ።

Environment variables ምን እንደሆኑ ማወቅ ሁለቱንም ለይታችሁ እንድታውቁ እና መፍትሄውን እንድትጠይቁ ይረዳችኋል።

የዕለት ተዕለት ምሳሌ፦ የሆቴል ካዝና

የአፑ ኮድ እንደ የሆቴል ክፍል ነው። እንግዶች (እንዲሁም ጽዳተኞችና የካርድ ቁልፍ የሰጣችሁት ሁሉ) በውስጡ ያልፋሉ። ፓስፖርታችሁን ጠረጴዛ ላይ አትተዉም።

Environment variables የክፍሉ ካዝና ናቸው። ክፍሉ ካዝና እንዳለ እና ሲፈለግ እንዴት እንደሚከፈት ያውቃል፤ ፓስፖርቱ ግን ተዘርግቶ አይቀርም። ከሙከራ ቅንብራችሁ ወደ እውነተኛ ድረ-ገጻችሁ ስትሄዱ ክፍሉን ሳትቀይሩ በካዝናው ውስጥ ሌላ ፓስፖርት ታስቀምጣላችሁ።

እንዴት ይሰራል

ኮዳችሁ ስም ይጠቅሳል እንጂ እሴቱን አያውቅም። በJavaScript በሰርቨር ላይ ይህ process.env.STRIPE_SECRET_KEY ሆኖ ይታያል። አፑ ሲጀምር፣ የሚሰራበት መድረክ ለዚያ ስም እሴቱን ይሞላል። እሴቱን በመድረኩ ቅንብሮች ውስጥ ቀይራችሁ፣ ዳግም ብታስጀምሩ ወይም እንደገና ብታሰማሩ አፑ አዲሱን ይጠቀማል፤ ኮድ መቀየር አያስፈልግም።

እሴቶቹ ከየት እንደሚመጡ የሚወሰነው አፑ የት እንደሚሰራ ነው፦

የሚሰራበት ቦታእሴቶቹ የሚቀመጡበት
በገንቢ ላፕቶፕ ላይብዙ ጊዜ .env የሚባል የአካባቢ ፋይል፤ በgit ፈጽሞ መጨመር የለበትም
በAI መገንቢያ ቅድመ-እይታየፕሮጀክቱ ሚስጥሮች ወይም ቅንብሮች ፓነል
በሆስቲንግ መድረክ ላይየዚያ መድረክ environment variables ቅንብር
በGitHub Actions ወይም ሌላ አውቶሜሽንየአገልግሎቱ የተመሰጠረ የሚስጥር ማከማቻ

ይፋዊ እና ሚስጥራዊ ተለዋዋጮች

ሁሉም environment variable ሚስጥር አይደለም። በሁለት ቡድን መከፋፈሉ ይረዳል፦

ዓይነትምሳሌዎችብራውዘሩ ማየት ይችላል?
ይፋዊ ቅንብርየድረ-ገጽ ስም፣ ይፋዊ የትንታኔ ID፣ Stripe publishable ቁልፍ፣ የባህሪ መቀያየሪያዎችአዎ፣ ችግር የለውም
ሚስጥሮችStripe secret ቁልፍ፣ OpenAI ወይም Anthropic API ቁልፍ፣ የዳታቤዝ ግንኙነት ሕብረቁምፊ፣ የኢሜይል አቅራቢ ቁልፍ፣ የዌብሁክ ፊርማ ቁልፍበፍጹም አይደለም

የድር ፍሬምወርኮች ይህን ክፍፍል በግልጽ ያሳያሉ። በVite ውስጥ VITE_ የሚል ቅድመ-ቅጥያ ያላቸው ተለዋዋጮች ብቻ ወደ ብራውዘር ኮድ ይገባሉ፤ በNext.js ቅድመ-ቅጥያው NEXT_PUBLIC_ ነው። ይህ የደህንነት ጥበቃ ነው፤ በእነዚህ ቅድመ-ቅጥያዎች የተሰየመ ማንኛውም ነገር ጎብኚ ሁሉ በሚያወርዳቸው ፋይሎች ውስጥ ይገባል፣ ስለዚህ ሚስጥር ቅድመ-ቅጥያ ፈጽሞ መሰጠት የለበትም።

ምሳሌ፦ የAI ማጠቃለያ ቁልፍ

«ይህን ማስታወሻ አጠቃልል» የሚል ቁልፍ ይፈልጋችኋል፤ ቁልፉ AI ሞዴል ይጠራል።

ያልተጠበቀው መንገድ፦ በብራውዘር ውስጥ የሚሰራው የቁልፍ ኮድ የAI አቅራቢውን በቀጥታ ይጠራል፣ ኤፒአይ ቁልፉም በኮዱ ውስጥ ተጽፏል። በቅድመ-እይታ ይሰራል። ነገር ግን ማንኛውም ሰው የብራውዘሩን የገንቢ መሳሪያዎች ከፍቶ ቁልፉን ገልብጦ በመለያችሁ ሂሳብ ሊያስገባ ይችላል።

የተጠበቀው መንገድ፦

  1. ቁልፉን ከAI አቅራቢው ፈጥራችሁ በፕሮጀክት ቅንብሮቻችሁ ውስጥ እንደ OPENAI_API_KEY (ወይም ተመሳሳይ) ሚስጥር አስቀምጡት።
  2. የኋላ-ጫፉ POST /api/summarise የሚል መንገድ ይኖረዋል፤ process.env.OPENAI_API_KEYን ያነባል፣ ተጠቃሚው መግባቱን ያረጋግጣል፣ ከዚያም አቅራቢውን ይጠራል።
  3. ቁልፉ የራሳችሁን መንገድ ይጠራል፣ አቅራቢውን በቀጥታ አይጠራም። ብራውዘሩ ቁልፉን ፈጽሞ አያየውም።
  4. ተመሳሳዩን ሚስጥር በታተመው አፕ ቅንብሮች ላይ ጨምሩ እና እንደገና አሰማሩ፤ ቀጥታው ድረ-ገጽ ደግሞ እንዲኖረው።

ይህ ንድፍ፦ ብራውዘሩ ሰርቨራችሁን ይጠራል፣ ሰርቨሩ ቁልፉን ይዞ አገልግሎቱን ይጠራል፤ ለክፍያ፣ ለኢሜይል፣ ለካርታና ለእያንዳንዱ የሚከፈልበት API ይሠራል። ለAI ጉዳይ ጥልቅ ማብራሪያ በLLM API አጠቃቀም መመሪያ ውስጥ ይገኛል።

ቁልፍ ቃላት

  • .env ፋይል፦ በአካባቢ ልማት የሚያገለግል NAME=value መስመሮች ያሉት የጽሑፍ ፋይል። እንዳይጣመር በ.gitignore ውስጥ ይዘርዝሩት።
  • .env.example፦ ስሞቹን ያለ እውነተኛ እሴቶች የያዘ ቅጂ፤ ሌሎች ምን ማስቀመጥ እንዳለባቸው እንዲያውቁ ይጣመራል።
  • Rotate (መቀየር)፦ ሚስጥርን በአዲስ መተካትና ያለውን መሰረዝ።
  • Scope / ፈቃዶች፦ ብዙ አቅራቢዎች ለተወሰኑ ነገሮች ብቻ የሚሰሩ ቁልፎችን እንዲፈጥሩ ይፈቅዳሉ። ኢሜይል ብቻ መላክ የሚችል ቁልፍ ሁሉን ማድረግ ከሚችል ያነሰ አደገኛ ነው።
  • Test vs live ቁልፎች፦ እንደ Stripe ያሉ አቅራቢዎች ለሙከራና ለእውነተኛ ገንዘብ የተለያዩ ቁልፎች ይሰጣሉ። እስክትጀምሩ ድረስ የሙከራ ቁልፎችን ተጠቀሙ።
  • Signing secret፦ መልዕክት፣ ለምሳሌ ዌብሁክ፣ በእውነት ከላኪው መምጣቱን ለማረጋገጥ የሚያገለግል ሚስጥር።

የተለመዱ ስህተቶችና ግንዛቤዎች

  • «ማከማቻዬ ግል ስለሆነ ቁልፎቹ በውስጡ ችግር የላቸውም።» ግል ማከማቻዎችም ይጋራሉ፣ ይቀዳሉ፣ ወደ ላፕቶፖች ይወርዳሉ። ቁልፎች እዚያ መሆን የለባቸውም። ፕሮጀክት ከGitHub ጋር ካገናኛችሁ .env ፋይል እንዳልተካተተ አረጋግጡ።
  • «ሰርዤዋለሁ፣ ስለዚህ ጠፍቷል።» Git ታሪክ ይይዛል፣ የቻት መልዕክቶችም ይቀመጣሉ። ቁልፉ ከወጣ ቀይሩት።
  • ሚስጥር በይፋዊ ቅድመ-ቅጥያ ማስጀመር። VITE_OPENAI_KEY ቁልፋችሁን በብራውዘር ጥቅል ውስጥ ያስቀምጠዋል።
  • እንደገና ማሰማራት መርሳት። በቅንብሮች ውስጥ ተለዋዋጭን መቀየር ብዙ ጊዜ የሚተገበረው አፑ ዳግም ሲጀምር ወይም እንደገና ሲታተም ብቻ ነው።
  • ለሁሉም አንድ ቁልፍ። ለሙከራና ለእውነተኛ፣ እንዲሁም ለእያንዳንዱ አፕ የተለየ ቁልፍ ማድረግ አንዱን ሌላውን ሳያፈርስ መሰረዝ ያስችላል።
  • የወጪ ገደብ አለመኖር። ለሚከፈልባቸው APIs በአቅራቢው ዳሽቦርድ በጀት ወይም ገደብ አስቀምጡ፤ ቁልፉ ቢወጣ ለመከላከል።

ከAI መገንቢያችሁ ምን ብላችሁ ጠይቁ

  • «ስትሪፕ ሚስጥር ቁልፉን STRIPE_SECRET_KEY ከተባለ environment variable አንብብ። በሰርቨር ላይ ብቻ ተጠቀምበት።»
  • «ምንም ሚስጥር በclient-side ኮድ ውስጥ እንዳይጠቀም እና VITE_ ወይም NEXT_PUBLIC_ ቅድመ-ቅጥያ እንዳይሰጠው አረጋግጥ።»
  • «አፑ የሚፈልጋቸውን ተለዋዋጮች ሁሉ ያለ እሴቶች የሚዘረዝር .env.example ፍጠር፣ እና .env በgit እንዳይጨመር አድርግ።»
  • «የተገነባውን frontend ፋይሎች ኤፒአይ ቁልፍ የሚመስል ማንኛውንም ጽሑፍ ፈትሽ።»

በAI የተገነቡ አፖች የደህንነት ዝርዝር ውስጥ ከሌሎች የማስጀመሪያ ፍተሻዎች ጋር ሚስጥሮችም ተካተዋል።

በMythex ያሉ ሚስጥሮች

በMythex ሚስጥሮች የፕሮጀክት environment variables ሲሆኑ ወደ ቅድመ-እይታ ሳጥኑም ወደ ታተመው አፕም ይገባሉ። በproject settings → Secrets ወይም በቻት ውስጥ /secrets በመጠቀም ትጨምሯቸዋላችሁ። ወኪሉ ቁልፍ ሲፈልግ በቻት ውስጥ የሚስጥር ካርድ ያሳያል፤ እሴቱም ወደ መልዕክቱ ታሪክ ሳይሆን ወደ ቅጽ መስክ ይገባል። ለቀጥታ አፕ ሚስጥር ከቀየራችሁ፣ ማሰማራቱ እንዲይዘው እንደገና ያትሙ። የፕሮጀክት ኤክስፖርቶች ሚስጥሮችን አያካትቱም፤ የገቡ .env ፋይሎች ይጸዳሉ፣ ስለዚህ በቅንብሮች ውስጥ እንደገና ጨምሩዋቸው። ዝርዝሩ በሰነዶቹ environment variables and secrets እና secrets in chat ውስጥ ይገኛል።

ጥያቄዎች

Environment variable ምንድን ነው?

Environment variable ፕሮግራም ሲሰራ ወደ ኮዱ ውስጥ ከመጻፍ ይልቅ የሚሰጠው ስም ያለው ቅንብር ነው፤ ለምሳሌ STRIPE_SECRET_KEY ወይም DATABASE_URL። ተመሳሳዩ ኮድ በልማትና በእውነተኛ አገልግሎት ላይ የተለያዩ እሴቶችን መጠቀም ይችላል።

በ environment variable እና በsecret መካከል ያለው ልዩነት ምንድን ነው?

Secret እሴቱ ግል ሆኖ መቆየት ያለበት environment variable ነው፤ ለምሳሌ API ቁልፍ፣ የዳታቤዝ የይለፍ ቃል ወይም የዌብሁክ ፊርማ ቁልፍ። ሌሎች environment variables፣ ለምሳሌ የድረ-ገጹ ስም ወይም የባህሪ መቀያየሪያ፣ ይፋዊ ሊሆኑ ይችላሉ።

API ቁልፎችን በfrontend ኮዴ ውስጥ ማስቀመጥ ደህንነቱ የተጠበቀ ነው?

አይደለም። በfrontend ኮድ ውስጥ ያለ ማንኛውም ነገር ወደ እያንዳንዱ ጎብኚ ብራውዘር ይወርዳል፤ ማንም ሊያነበው ይችላል። ሚስጥራዊ ቁልፎች መጠቀም ያለባቸው በሰርቨር ላይ ብቻ ነው፤ ብራውዘሩ ሰርቨራችሁን መጥራት፣ ሰርቨሩም አቅራቢውን መጥራት አለበት።

የAPI ቁልፌ ቢወጣ ምን ላድርግ?

ወዲያውኑ በአቅራቢው ዘንድ ሰርዙት ወይም ቀይሩት፣ አዲስ ቁልፍ ፍጠሩ፣ አፑ ሚስጥሮቹን የሚያስቀምጥበትን ቦታ አዘምኑ፣ እና እንደገና ማሰማራት። ቁልፉን ከኮዳችሁ ወይም ከቻት ታሪካችሁ ላይ መሰረዝ ብቻውን በቂ አይደለም፤ ቅጂዎቹ ቀድሞ ሊኖሩ ይችላሉ።

Mythex · Pricing · በAI ማንኛውንም ነገር ይገንቡ · የድር ጣቢያ እና የመተግበሪያ ቴምፕሌቶች · Mythex ከሌሎች ጋር ሲነጻጸር · የAI መተግበሪያ ግንባታ የቃላት መዝገበ-ቃላት · ነፃ የAI መተግበሪያ መገንቢያ መሳሪያዎች · English

English العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)