Орчны хувьсагч ба нууц гэж юу вэ? Энгийн гарын авлага
Орчны хувьсагч (environment variable) гэдэг нь DATABASE_URL эсвэл STRIPE_SECRET_KEY гэх мэт нэртэй тохиргоо бөгөөд апп ажиллах үед түүнд өгөгдөнө, кодонд шууд бичигдэхгүй. Нууц (secret) бол утга нь нууц хэвээр байх ёстой орчны хувьсагч юм: API түлхүүр, нууц үг, гарын үсгийн түлхүүр. Эдгээр утгыг кодоосоо гадуур хадгалснаар аппыг засахгүйгээр өөрчлөх, туршилт болон бодит хэрэглэгчдэд өөр утга ашиглах, кодоо хуваалцах эсвэл нийтлэхэд нууц мэдээлэл задрахаас сэргийлэх боломжтой.
AI-аар апп бүтээхдээ яагаад чухал вэ
Апп тань өөр үйлчилгээтэй холбогдож ажиллах үед (төлбөр авах, имэйл илгээх, AI загвар дуудах) түлхүүр хэрэгтэй болдог. AI апп бүтээгчид эдгээр түлхүүрийг байнга асуудаг бөгөөд түлхүүр хаана очдог нь аппын аюулгүй байдлыг тодорхойлдог.
Хамгийн түгээмэл хоёр алдаа:
- Түлхүүрийг чат эсвэл кодонд буулгах. Тэгвэл түлхүүр чатын түүх, төслийн файл, экспорт, репозиторт үлддэг. Үүнийг харсан хэн ч таны дансыг ашиглаж чадна.
- Түлхүүрийг хөтөч дээр ашиглах. Stripe эсвэл OpenAI-д хандах код хуудсан дээр ажиллавал түлхүүр зочин бүрт илгээгдэнэ. Хүмүүс үүнийг шалгадаг, автомат сканнерууд ил гарсан түлхүүрийг байнга хайдаг.
Орчны хувьсагчийг ойлгосноор эдгээр асуудлыг таньж, засвар хийхийг хүсэх боломжтой.
Өдөр тутмын зүйрлэл: зочид буудлын сейф
Аппын код бол өрөө шиг. Зочид (мөн цэвэрлэгч, түлхүүр карт өгсөн хэн ч) өрөөгөөр дамжин явдаг. Паспортоо ширээн дээр орхидоггүй шиг.
Орчны хувьсагч бол өрөөний сейф. Өрөөнд сейф байгааг, шаардлагатай үед хэрхэн нээхээ өрөө мэддэг боловч паспорт нь хаа сайгүй тавигдаагүй. Хэрэв та туршилтын тохиргооноосоо бодит сайт руу шилжих юм бол тэр өрөөний сейфэнд өөр паспорт тавихад л хангалттай, өрөөгөө дахин засах шаардлагагүй.
Яаж ажилладаг вэ
Таны код нэрэд хандана, утгад биш. Серверийн JavaScript-д энэ нь process.env.STRIPE_SECRET_KEY гэж харагдана. Апп эхлэхэд ажиллаж буй платформ тэр нэрт утгыг оруулна. Платформын тохиргоонд утгыг солиод, дахин эхлүүлэх эсвэл дахин нийтлэхэд апп шинэ утгыг ашиглана, кодыг өөрчлөх шаардлагагүй.
Утгууд хаанаас ирэх нь аппыг хаана ажиллуулж байгаагаас хамаарна:
| Хаана ажилладаг | Утгыг хаана хадгалдаг вэ |
|---|---|
| Хөгжүүлэгчийн зөөврийн компьютер | Ихэвчлэн .env нэртэй локал файл; git-д оруулж болохгүй |
| AI бүтээгчийн урьдчилан харалт | Төслийн нууц эсвэл тохиргооны самбар |
| Хостинг платформ | Тухайн платформын орчны хувьсагчийн тохиргоо |
| GitHub Actions эсвэл бусад автоматжуулалт | Үйлчилгээний шифрлэгдсэн нууцын сан |
Нийтийн ба нууц хувьсагч
Орчны хувьсагч бүр нууц биш. Хоёр бүлэгт хувааж болно:
| Төрөл | Жишээ | Хөтөч харах уу? |
|---|---|---|
| Нийтийн тохиргоо | Сайтын нэр, нийтийн аналитикийн ID, Stripe-ийн publishable түлхүүр, онцлогийн асаалт | Тийм, энэ зүгээр |
| Нууц | Stripe-ийн secret түлхүүр, OpenAI эсвэл Anthropic API түлхүүр, мэдээллийн сангийн холболтын мөр, имэйл үйлчилгээний түлхүүр, webhook-ийн гарын үсгийн нууц | Хэзээ ч үгүй |
Вэб фреймворкууд энэ хуваалтыг тодорхой заадаг. Vite-д зөвхөн VITE_-аар эхэлсэн нэртэй хувьсагч хөтчийн кодонд орно; Next.js-д угтвар нь NEXT_PUBLIC_. Энэ бол аюулгүй байдлын зарчим: эдгээр угтвартай бүх зүйл зочин бүрийн татдаг файлд орно, тиймээс нууцад ийм угтвар өгч болохгүй.
Бодит жишээ: AI хураангуйлах товч
Та AI загвар дуудах "Энэ тэмдэглэлийг хураангуйл" товч хийхийг хүсэж байна гэж бодъё.
Аюултай хувилбар: товчлуурын код хөтөч дээр ажиллаж, түлхүүрийг кодонд бичсэнээр AI үйлчилгээ үзүүлэгчийг шууд дуудна. Урьдчилан харалтанд ажиллана. Гэвч хэн ч хөгжүүлэгчийн хэрэгслийг нээж, түлхүүрийг хуулж аваад таны дансны зардлыг өсгөж болно.
Аюулгүй хувилбар:
- Та AI үйлчилгээ үзүүлэгч дээр түлхүүрээ үүсгээд төслийнхөө тохиргоонд
OPENAI_API_KEY(эсвэл ижил) нэртэй нууц болгон хадгална. - Бэкэнд дээр
POST /api/summariseмаршрут нэмнэ. Энэ маршрутprocess.env.OPENAI_API_KEY-г уншиж, хэрэглэгч нэвтэрсэн эсэхийг шалгаад үйлчилгээ үзүүлэгчийг дуудна. - Товч нь үйлчилгээ үзүүлэгч рүү биш, таны маршрут руу хандана. Хөтөч түлхүүрийг хэзээ ч харахгүй.
- Ижил нууцыг нийтлэгдсэн аппын тохиргоонд нэмж, дахин нийтэлнэ. Ингэснээр бодит сайт ч мөн адил түлхүүртэй болно.
Энэ загвар (хөтөч таны сервертэй холбогдож, сервер нь нууцыг хадгалан үйлчилгээг дуудах) төлбөр, имэйл, газрын зураг болон бусад төлбөртэй бүх API-д хамаарна. LLM API ашиглах гарын авлага нь AI-ийн тохиолдлыг илүү гүнзгий тайлбарлана.
Гол нэр томьёо
.envфайл: локал хөгжүүлэлтэд ашигладагNAME=valueмөрүүдээс бүрдэх текст файл. Git-д орохгүйн тулд.gitignore-д бичнэ..env.example: жинхэнэ утгагүй, зөвхөн нэрүүдтэй хуулбар. Бусад хүмүүст ямар хувьсагч тохируулах ёстойг харуулахын тулд git-д оруулдаг.- Rotate (шинэчлэх): нууцыг шинээр солиж, хуучныг хүчингүй болгох.
- Scope / эрх: олон үйлчилгээ зөвхөн тодорхой үйлдэл хийх түлхүүр үүсгэх боломж олгодог. Зөвхөн имэйл илгээх түлхүүр бүх зүйлийг хийж чадах түлхүүрээс аюулгүй.
- Туршилтын ба бодит түлхүүр: Stripe зэрэг үйлчилгээ туршилт болон бодит мөнгөнд тусдаа түлхүүр өгдөг. Нээгдэх хүртэл туршилтын түлхүүр ашигла.
- Signing secret (гарын үсгийн нууц): webhook-ийн мессеж үнэхээр илгээгчээс ирсэн эсэхийг шалгахад ашигладаг нууц.
Түгээмэл алдаа, буруу ойлголт
- "Репозиторо минь хувийн тул түүнд түлхүүр байж болно." Хувийн репозитор ч хуваалцагддаг, fork хийгддэг, экспортлогддог, зөөврийн компьютерт татагддаг. Түлхүүр тэнд харьяалагдахгүй. Төслөө GitHub-д холбовол
.envфайл орсон эсэхийг шалгана уу. - "Устгасан, тэгэхээр алга." Git түүхээ хадгалдаг, чатын бичлэг ч хадгалдаг. Түлхүүр ил гарч байсан бол шинэчил.
- Нууцад нийтийн угтвар нэмэх.
VITE_OPENAI_KEYнь таны түлхүүрийг хөтчийн багцад оруулна. - Дахин нийтлэхээ мартах. Тохиргоонд хувьсагчаа өөрчлөхөд ихэвчлэн апп дахин эхлэх эсвэл дахин нийтлэгдсэний дараа л хүчинтэй болдог.
- Бүх зүйлд нэг түлхүүр. Туршилт болон бодит, мөн апп бүрд тусдаа түлхүүртэй байвал нэгийг нь хүчингүй болгоход бусад нь эвдрэхгүй.
- Зардлын хязгаар байхгүй. Төлбөртэй API-д түлхүүр задарсан тохиолдолд үйлчилгээ үзүүлэгчийн хяналтын самбарт төсөв эсвэл хязгаар тавь.
AI бүтээгчээсээ юу гуйх вэ
- "Stripe-ийн нууц түлхүүрийг
STRIPE_SECRET_KEYнэртэй орчны хувьсагчаас уншаад зөвхөн серверт ашигла." - "Нууцыг клиент талын кодонд ашиглахгүй,
VITE_/NEXT_PUBLIC_угтвар өгөхгүй байхыг шалга." - "Аппд хэрэгтэй бүх хувьсагчийг утгагүйгээр жагсаасан
.env.exampleүүсгэ,.env-ийг git-ээс хасаарай." - "Frontend-ийн бүтсэн файлуудыг API түлхүүр шиг харагдах мөрүүдийн хувьд шалга."
Нийтлэхээсээ өмнө шалгах AI-аар бүтсэн аппын аюулгүй байдлын хяналтын жагсаалт нь нууцыг бусад шалгалтын хамт авч үздэг.
Mythex дээрх нууцууд
Mythex дээр нууцууд нь урьдчилан харах орчин болон нийтлэгдсэн аппд хоёуланд нь орох төслийн орчны хувьсагч юм. Тэдгээрийг төслийн тохиргоо → Secrets хэсэгт, эсвэл чатад /secrets командаар нэмнэ. Агент түлхүүр хэрэгтэй бол чатад нууцын карт харуулж, утгыг чатын түүхэнд биш маягтын талбарт оруулна. Бодит аппын нууцыг өөрчилсөн бол дахин нийтэлж, нийтлэлт шинэ утгыг авдаг болгоно. Төслийн экспортод нууцууд орохгүй, импортлосон .env файлуудаас нууц устгагддаг тул тохиргоонд дахин нэмнэ. Дэлгэрэнгүйг орчны хувьсагч ба нууц болон чатын нууцууд баримтаас үзнэ үү.
Асуултууд
Орчны хувьсагч гэж юу вэ?
Орчны хувьсагч гэдэг нь STRIPE_SECRET_KEY эсвэл DATABASE_URL гэх мэт нэртэй тохиргоо бөгөөд программ ажиллах үед өгөгдөнө, кодонд шууд бичигдэхгүй. Ингэснээр нэг код хөгжүүлэлтийн болон бодит орчинд өөр утгатай ажиллах боломжтой.
Орчны хувьсагч ба нууцын ялгаа юу вэ?
Нууц бол утга нь нууц хэвээр байх ёстой орчны хувьсагч юм, жишээлбэл API түлхүүр, мэдээллийн сангийн нууц үг эсвэл webhook-ийн гарын үсгийн түлхүүр. Сайтын нэр эсвэл онцлогийн асаалт зэрэг бусад орчны хувьсагч нийтэд харагдсан ч болно.
API түлхүүрээ frontend-дээ оруулж болох уу?
Болохгүй. Frontend кодыг зочин бүрийн хөтөч рүү татдаг тул хэн ч уншиж болно. Нууц түлхүүрийг зөвхөн серверт ашиглах ёстой; хөтөч таны сервертэй холбогдож, сервер нь үйлчилгээ үзүүлэгч рүү холбогдоно.
API түлхүүр минь задрах юм бол юу хийх вэ?
Тэр даруй үйлчилгээ үзүүлэгч дээр нь хүчингүй болгож эсвэл шинэчилж, шинэ түлхүүр үүсгээд апп-ынхаа нууц хадгалдаг газарт шинэчлээд дахин нийтэлнэ. Түлхүүрийг кодоос эсвэл чатын түүхээс устгах нь хангалтгүй, учир нь хуулбар нь аль хэдийн үлдсэн байж болно.