Environment Variable နှင့် Secret များဆိုတာ ဘာလဲ? ရိုးရှင်းသော လမ်းညွှန်
Environment variable ဆိုသည်မှာ DATABASE_URL သို့မဟုတ် STRIPE_SECRET_KEY ကဲ့သို့ အမည်ပေးထားသော ဆက်တင်တစ်ခု ဖြစ်ပြီး app run သည့်အခါ ကုဒ်ထဲတွင် ရေးထားမည့်အစား app ထံ ပေးပို့ခြင်း ဖြစ်သည်။ Secret ဆိုသည်မှာ တန်ဖိုးကို လျှို့ဝှက်ထားရမည့် environment variable ဖြစ်သည်။ ဥပမာ API key၊ password သို့မဟုတ် signing key တို့ ဖြစ်သည်။ ဤတန်ဖိုးများကို ကုဒ်အပြင်ဘက်တွင် ထားခြင်းဖြင့် app ကို ပြင်စရာမလိုဘဲ ပြောင်းလဲနိုင်သည်။ စမ်းသပ်ရန်နှင့် အစစ်အမှန် ဖောက်သည်များအတွက် မတူညီသော တန်ဖိုးများ သုံးနိုင်သည်။ ကုဒ်ကို မျှဝေခြင်း သို့မဟုတ် publish လုပ်သည့်အခါ ယိုဖိတ်ခြင်းမှလည်း ကာကွယ်ပေးသည်။
AI ဖြင့် တည်ဆောက်သည့်အခါ ဘာကြောင့် အရေးကြီးသလဲ
သင့် app သည် အခြား ဝန်ဆောင်မှုတစ်ခုနှင့် အသုံးဝင်သော အလုပ်တစ်ခု လုပ်သည်နှင့်တစ်ပြိုင်နက် (ငွေပေးချေမှု လက်ခံခြင်း၊ email ပို့ခြင်း၊ AI model ခေါ်ခြင်း) key တစ်ခု လိုအပ်လာပါသည်။ AI app builder များက ဤ key များကို မကြာခဏ တောင်းဆိုကြပြီး key ရောက်ရှိသွားသည့်နေရာက သင့် app ဘေးကင်းမှု ရှိမရှိ ဆုံးဖြတ်ပေးသည်။
AI ဖြင့် တည်ဆောက်ထားသော app များတွင် အဖြစ်များသည့် အမှားနှစ်ခု ရှိသည်–
- Key ကို chat သို့မဟုတ် ကုဒ်ထဲသို့ ကူးထည့်ခြင်း။ ထိုအခါ key သည် chat history၊ project file များနှင့် export သို့မဟုတ် repository အားလုံးတွင် ရှိနေမည်။ ၎င်းကို မြင်သူတိုင်းသည် သင့်အကောင့်ကို သုံးနိုင်သည်။
- Key ကို browser ထဲတွင် သုံးခြင်း။ Stripe သို့မဟုတ် OpenAI ကို ခေါ်သည့် ကုဒ်သည် page ထဲတွင် run ပါက key ကို ဝယ်သူတိုင်းထံ ပို့ရောက်ပါသည်။ လူများက ကြည့်ကြပြီး အလိုအလျောက် scanner များသည်လည်း ထွက်ပေါ်နေသော key များကို အမြဲ ရှာဖွေနေကြသည်။
Environment variable ကို နားလည်ခြင်းဖြင့် ဤအခက်အခဲနှစ်ခုကို သိရှိပြီး ပြင်ဆင်ရန် တောင်းဆိုနိုင်မည် ဖြစ်သည်။
နေ့စဉ်ဘဝမှ နှိုင်းယှဉ်ချက်– ဟိုတယ်ရဲ့ လုံခြုံရေးသေတ္တာ
သင့် app ၏ ကုဒ်သည် ဟိုတယ်အခန်းနှင့် ဆင်တူသည်။ ဧည့်သည်များ (နှင့် သန့်ရှင်းရေးသမားများ၊ key card ပေးထားသူ မည်သူမဆို) သည် ၎င်းအတွင်းသို့ ဝင်ကြသည်။ သင့် ပတ်စ်ပို့ ကို စားပွဲပေါ်တွင် ထားမည် မဟုတ်ပါ။
Environment variable များသည် အခန်းထဲရှိ လုံခြုံရေးသေတ္တာ ဖြစ်သည်။ အခန်းက သေတ္တာရှိမှန်းနှင့် လိုအပ်သောအခါ ဖွင့်နည်းကို သိသော်လည်း ပတ်စ်ပို့ ကို ဘယ်နေရာမှာမှ ချထားခြင်း မရှိပါ။ သင်က အခန်းတစ်ခုမှ တစ်ခုသို့ ပြောင်းသည့်အခါ (ဥပမာ စမ်းသပ် setup မှ live site သို့) အခန်းကို ပြန်လည်မပြင်ဘဲ ထိုအခန်း၏ သေတ္တာထဲတွင် မတူသော ပတ်စ်ပို့ ကို ထည့်ရုံသာ လုပ်ပါသည်။
အလုပ်လုပ်ပုံ
သင့်ကုဒ်သည် တန်ဖိုးကို တိုက်ရိုက် မရေးဘဲ အမည်ကို ရည်ညွှန်းသည်။ Server ပေါ်ရှိ JavaScript တွင် ၎င်းသည် process.env.STRIPE_SECRET_KEY ပုံစံ ဖြစ်သည်။ App စတင်သည့်အခါ ၎င်းကို run နေသော platform က ထိုအမည်အတွက် တန်ဖိုးကို ထည့်ပေးသည်။ Platform ၏ ဆက်တင်တွင် တန်ဖိုးကို ပြောင်းပြီး restart သို့မဟုတ် redeploy လုပ်လိုက်သည့်အခါ app သည် တန်ဖိုးအသစ်ကို သုံးမည်ဖြစ်ပြီး ကုဒ်ပြောင်းစရာ မလိုပါ။
တန်ဖိုးများသည် app run နေသည့်နေရာပေါ်တွင် မူတည်သည်–
| Run နေသည့်နေရာ | တန်ဖိုးများ သိမ်းထားသည့်နေရာ |
|---|---|
| Developer ၏ laptop | .env ဟု ခေါ်သော local file။ git တွင် ဘယ်တော့မှ commit မလုပ်ရ |
| AI builder ၏ preview | Project ၏ secrets သို့မဟုတ် settings panel |
| Hosting platform | ထို platform ၏ environment variables ဆက်တင် |
| GitHub Actions သို့မဟုတ် အခြား automation | ထို service ၏ ကုဒ်ဝှက်ထားသော secrets store |
Public နှင့် secret variable များ
Environment variable အားလုံး secret မဟုတ်ပါ။ နှစ်မျိုး ခွဲခြားကြည့်ရန် အထောက်အကူ ဖြစ်သည်–
| အမျိုးအစား | ဥပမာများ | Browser က မြင်နိုင်လား? |
|---|---|---|
| Public configuration | ဆိုက်အမည်၊ public analytics ID၊ Stripe publishable key၊ feature switch များ | မြင်နိုင်သည်၊ ပြဿနာမရှိပါ |
| Secret များ | Stripe secret key၊ OpenAI သို့မဟုတ် Anthropic API key၊ database connection string၊ email provider key၊ webhook signing secret | ဘယ်တော့မှ မမြင်ရ |
Web framework များက ဤခွဲခြားမှုကို ရှင်းရှင်းလင်းလင်း ပြုလုပ်ထားသည်။ Vite တွင် VITE_ ဖြင့် စသော အမည်ရှိ variable များသာ browser ကုဒ်ထဲ ထည့်သွင်းသည်။ Next.js တွင် prefix မှာ NEXT_PUBLIC_ ဖြစ်သည်။ ၎င်းသည် လုံခြုံရေးဆိုင်ရာ အင်္ဂါရပ် ဖြစ်သည်။ ဤ prefix များပါသည့် အရာတိုင်းသည် ဝယ်သူတိုင်း ဒေါင်းလုဒ်ဆွဲသော ဖိုင်များထဲ ရောက်သွားသောကြောင့် secret တစ်ခုကို ဘယ်တော့မှ ဤ prefix မပေးရပါ။
ဥပမာ– AI summary ခလုတ်
"ဤမှတ်စုကို အကျဉ်းချုပ်ပေးပါ" ခလုတ်တစ်ခုကို AI model ခေါ်စေချင်သည် ဆိုပါစို့။
မလုံခြုံသော နည်းလမ်း– ခလုတ်၏ကုဒ်သည် browser ထဲတွင် run ပြီး AI provider ကို API key ကို ကုဒ်ထဲ ရေးထားကာ တိုက်ရိုက် ခေါ်သည်။ Preview ထဲတွင် အလုပ်လုပ်သည်။ သို့သော် မည်သူမဆို browser ၏ developer tools ကို ဖွင့်ပြီး key ကို ကူးယူကာ သင့်အကောင့်ဖြင့် ငွေကုန်အောင် သုံးနိုင်သည်။
လုံခြုံသော နည်းလမ်း–
- AI provider ဆီတွင် key ကို ဖန်တီးပြီး သင့် project settings ထဲတွင်
OPENAI_API_KEY(သို့မဟုတ် ဆင်တူသော အမည်) ဖြင့် secret အဖြစ် သိမ်းပါ။ - Backend တွင်
POST /api/summariseroute ထည့်ပါ။ ၎င်းသည်process.env.OPENAI_API_KEYကို ဖတ်ပြီး user ဝင်ထားကြောင်း စစ်ကာ provider ကို ခေါ်သည်။ - ခလုတ်သည် provider ကို မခေါ်ဘဲ သင့် route ကို ခေါ်သည်။ Browser သည် key ကို ဘယ်တော့မှ မမြင်ရပါ။
- Live app အတွက်လည်း ထို secret ကို published app ၏ settings တွင် ထည့်ပြီး redeploy လုပ်ပါ။ ထိုအခါ live site တွင်လည်း ရှိနေမည်။
ဤပုံစံ– browser က သင့် server ကို ခေါ်ပြီး server က key ကို ကိုင်ထားကာ ဝန်ဆောင်မှုကို ခေါ်သည်– ငွေပေးချေမှု၊ email၊ မြေပုံနှင့် အခြား ငွေကုန်ကျသော API အားလုံးအတွက် သုံးနိုင်သည်။ AI အကြောင်းကို ပိုနက်နက်နဲနဲ သိလိုပါက LLM API များကို သုံးနည်း လမ်းညွှန်ကို ကြည့်ပါ။
အဓိက ဝေါဟာရများ
.envfile: Local development တွင် သုံးသောNAME=valueစာကြောင်းများ ပါသည့် စာသားဖိုင်။ Commit မဖြစ်စေရန်.gitignoreတွင် ထည့်ပါ။.env.example: အမည်များသာ ပါပြီး တန်ဖိုးအစစ် မပါသော မိတ္တူ။ အခြားသူများ မည်သည့် variable များ သတ်မှတ်ရမည်ကို သိစေရန် commit လုပ်ထားသည်။- Rotate: Secret တစ်ခုကို အသစ်ဖြင့် အစားထိုးပြီး အဟောင်းကို ပယ်ဖျက်ခြင်း။
- Scope / permissions: Provider အများအပြားက တစ်စုံတစ်ရာကိုသာ လုပ်ဆောင်နိုင်သော key များ ဖန်တီးခွင့် ပေးသည်။ Email ပို့နိုင်သော key တစ်ခုသည် အရာရာလုပ်နိုင်သော key ထက် အန္တရာယ်နည်းသည်။
- Test vs live key များ: Stripe ကဲ့သို့ provider များက စမ်းသပ်ရန်နှင့် ငွေအစစ်အတွက် key ကို သီးခြား ပေးသည်။ မထွက်ခင် test key များကိုသာ သုံးပါ။
- Signing secret: webhook ကဲ့သို့ message တစ်ခု တကယ် ပေးပို့သူထံမှ ရောက်လာကြောင်း စစ်ဆေးရန် သုံးသော secret။
အဖြစ်များသော အမှားများနှင့် အထင်မှားချက်များ
- "Repository က private ဖြစ်တာကြောင့် ထဲမှာ key ရှိရင် ပြဿနာမရှိဘူး။" Private repository များကိုလည်း မျှဝေခြင်း၊ fork လုပ်ခြင်း၊ export လုပ်ခြင်းနှင့် laptop များသို့ clone လုပ်ခြင်း ဖြစ်နိုင်သည်။ Key များသည် ထိုနေရာတွင် မရှိသင့်ပါ။ Project ကို GitHub သို့ ချိတ်ဆက်ပါက
.envဖိုင် မပါဝင်ကြောင်း စစ်ဆေးပါ။ - "ဖျက်လိုက်ပြီဆိုတော့ ပျောက်သွားပြီ။" Git သည် history ကို သိမ်းထားပြီး chat log များက message များကို သိမ်းထားသည်။ Key တစ်ခု ယိုဖိတ်ခဲ့ဖူးလျှင် rotate လုပ်ပါ။
- Secret တစ်ခုတွင် public prefix သုံးခြင်း။
VITE_OPENAI_KEYက သင့် key ကို browser bundle ထဲ ထည့်လိုက်သည်။ - Redeploy လုပ်ရန် မေ့ခြင်း။ Settings တွင် variable ပြောင်းသည့်အခါ app restart သို့မဟုတ် ပြန် publish လုပ်ပြီးမှသာ အကျိုးသက်ရောက်လေ့ရှိသည်။
- Key တစ်ခုတည်းကို အရာရာအတွက် သုံးခြင်း။ Test နှင့် live၊ app တစ်ခုချင်းစီအတွက် သီးခြား key များ ထားခြင်းဖြင့် တစ်ခုကို အခြားတစ်ခု မထိခိုက်ဘဲ ပယ်ဖျက်နိုင်သည်။
- သုံးစွဲမှု ကန့်သတ်ချက် မရှိခြင်း။ ငွေကုန်ကျသော API များအတွက် key ယိုဖိတ်ခဲ့လျှင်ကာကွယ်ရန် provider ၏ dashboard တွင် budget သို့မဟုတ် limit သတ်မှတ်ပါ။
AI builder ကို ဘာတောင်းဆိုရမလဲ
- "Stripe secret key ကို
STRIPE_SECRET_KEYဟု အမည်ပေးထားသော environment variable မှ ဖတ်ပါ။ Server ပေါ်တွင်သာ သုံးပါ။" - "Secret တစ်ခုကိုမျှ client-side ကုဒ်တွင် မသုံးစေနဲ့၊
VITE_/NEXT_PUBLIC_prefix မပေးစေနဲ့။" - "App လိုအပ်သော variable အားလုံးကို တန်ဖိုးမပါဘဲ ဖော်ပြသော
.env.exampleဖန်တီးပါ။.envကို git-ignore လုပ်ပါ။" - "Built frontend ဖိုင်များတွင် API key ဟုထင်ရသော string များ ရှိမရှိ စစ်ဆေးပါ။"
လွှတ်ချမီ လုပ်သင့်သော စစ်ဆေးမှုများအကြောင်း AI ဖြင့် တည်ဆောက်ထားသော app များအတွက် လုံခြုံရေး checklist တွင် secret များနှင့် အခြား စစ်ဆေးချက်များကို ဖော်ပြထားသည်။
Mythex တွင် secret များ
Mythex တွင် secret များသည် project environment variable များ ဖြစ်ပြီး preview sandbox နှင့် သင်ထုတ်ပြန်ထားသော app နှစ်ခုစလုံးထံ ထည့်ပေးသည်။ project settings → Secrets အောက်တွင် သို့မဟုတ် chat တွင် /secrets ဖြင့် ထည့်နိုင်သည်။ Agent က key လိုအပ်သောအခါ chat တွင် secrets card ပြသပြီး တန်ဖိုးကို message transcript ထဲ မရောက်အောင် form field ထဲသို့ ထည့်စေသည်။ Live app အတွက် secret ပြောင်းပါက deploy က ယူသွားစေရန် ပြန် publish လုပ်ပါ။ Project export များတွင် secret များ ပါဝင်သည်မဟုတ်ပါ။ Import လုပ်သော .env ဖိုင်များကိုလည်း ဖယ်ရှားထားပြီး settings တွင် ပြန်ထည့်ရမည် ဖြစ်သည်။ Docs ရှိ environment variables နှင့် secrets နှင့် chat ထဲရှိ secrets ကို ကြည့်ပါ။
မေးခွန်းများ
Environment variable ဆိုတာ ဘာလဲ?
Environment variable ဆိုသည်မှာ STRIPE_SECRET_KEY သို့မဟုတ် DATABASE_URL ကဲ့သို့ အမည်ပေးထားသော ဆက်တင်တစ်ခု ဖြစ်သည်။ ကုဒ်ထဲတွင် တိုက်ရိုက်မရေးဘဲ program run သည့်အချိန်တွင် ပေးပို့ပါသည်။ ထို့ကြောင့် ကုဒ်တူတူကိုပင် development နှင့် production တွင် မတူသော တန်ဖိုးများ သုံးနိုင်သည်။
Environment variable နှင့် secret ကြား ကွာခြားချက် ဘာလဲ?
Secret ဆိုသည်မှာ တန်ဖိုးကို လျှို့ဝှက်ထားရမည့် environment variable ဖြစ်သည်။ ဥပမာ API key၊ database password သို့မဟုတ် webhook signing secret တို့ ဖြစ်သည်။ ဆိုက်အမည် သို့မဟုတ် feature switch ကဲ့သို့ အခြား environment variable များကို လူသိရှင်ကြားထားနိုင်သည်။
API key များကို frontend ထဲတွင် ထည့်ခြင်း လုံခြုံပါသလား?
မလုံခြုံပါ။ Frontend ကုဒ်ထဲရှိ အရာအားလုံးကို ဝယ်သူတိုင်း၏ browser သို့ ဒေါင်းလုဒ်ဆွဲယူပြီး ဖတ်နိုင်သည်။ Secret key များကို server ပေါ်တွင်သာ သုံးရမည်ဖြစ်ပြီး browser က သင့် server ကို ခေါ်ရမည်။ ထို့နောက် server က provider ကို ခေါ်ပါသည်။
API key ယိုဖိတ်ခဲ့ရင် ဘာလုပ်ရမလဲ?
Provider ဆီတွင် ချက်ချင်း ပယ်ဖျက် (revoke) သို့မဟုတ် အသစ်ပြောင်း (rotate) လိုက်ပါ။ အသစ်တစ်ခု ဖန်တီးပြီး သင့် app သိမ်းထားသော secret နေရာတိုင်းတွင် အစားထိုးကာ redeploy လုပ်ပါ။ ကုဒ် သို့မဟုတ် chat history ထဲမှ key ကို ဖျက်ရုံနှင့် မလုံလောက်ပါ။ မိတ္တူများ ရှိနေနိုင်သောကြောင့် ဖြစ်သည်။