ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Secret ကို code ထဲ hardcode လုပ်ပြီး GitHub public repo ထဲ commit လုပ်မိရင် bot တွေက scan လုပ်ပြီး minute ပိုင်းအတွင်း steal သွားနိုင်ပါတယ် — public repo scanning bot တွေက အမြဲ run နေပါတယ်။ Environment variable (.env file, git ignore ထဲ ထည့်ထား) ဒါမှမဟုတ် secret manager service (AWS Secrets Manager, HashiCorp Vault) ကို သုံးရင် secret ကို code repository ကနေ ခွဲထားနိုင်ပါတယ်။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
.env file ကို .gitignore ထဲ ထည့်ထားရင် accidental commit ကို ကာကွယ်နိုင်ပါတယ်, ဒါပေမယ့် တစ်ခါတစ်လေ user တွေက .gitignore setup မလုပ်ခင် commit လုပ်မိလို့ history ထဲ secret ကျန်ခဲ့တတ်ပါတယ် — ဒီလိုဖြစ်ရင် secret ကို ချက်ချင်း rotate (အသစ်ပြောင်း) ရပါမယ်, git history ကနေ ဖျက်ရုံနဲ့ မလုံလောက်ပါဘူး (public repo ဆိုရင် cache/fork ထဲ ဆက်ကျန်နိုင်လို့)။
အတူတူ ကြည့်မယ်
# .gitignore
.env
# .env (never committed)
DATABASE_PASSWORD=xxxx
API_KEY=sk-xxxx
# code (reads from environment, not hardcoded)
const apiKey = process.env.API_KEY;Secret ကို environment variable ဖြင့် code ကနေ ခွဲထားတဲ့ pattern ကို ရှင်းပြနိုင်မည်။၅ မိနစ် စမ်းကြည့်
ကိုယ့် project (ရှိရင်) ရဲ့ .gitignore ထဲမှာ .env ပါ/မပါ စစ်ကြည့်ပါ။ မပါရင် ချက်ချင်းထည့်ပါ။
သတိလေးတစ်ချက်
Secret တစ်ခု public repo ထဲ တစ်ချက်တောင် commit ဖြစ်ခဲ့ရင် 'ဖျက်လိုက်ပြီ' လို့ မယူဆပါနှင့် — ချက်ချင်း rotate (key အသစ်ထုတ်, အဟောင်း revoke) ပါ, secret ကို leaked-ဟု သတ်မှတ်ပါ။