ErawanEN

ทำให้ใช้งานได้จริง

คีย์และข้อมูลลับ — ตั้งครั้งเดียว อ่านกลับไม่ได้

ทุกแอปสุดท้ายต้องถือบางอย่างที่เผยแพร่ไม่ได้ หน้านี้บอกว่ามันควรอยู่ตรงไหน ทำไมการเขียนไว้ในโค้ดถึงถูกปฏิเสธก่อนใครจะเห็น และอะไรที่แพลตฟอร์มทำให้ไม่ได้

1. ค่าธรรมดา

erawan env set my-app STRIPE_KEY=sk_live_… TIMEZONE=Asia/Bangkok

ตั้งแล้วแอปรีสตาร์ทพร้อมค่าเหล่านั้น ค่าถูกเก็บแบบเข้ารหัส ไม่เคยถูกเขียนลงในคำอธิบายของคอนเทนเนอร์ที่กำลังรัน และคุณดูได้ว่ามีชื่ออะไรอยู่บ้างโดยไม่เห็นค่าข้างใน

erawan env list my-app

เห็นแต่ชื่อ นั่นคือค่าเริ่มต้นและตั้งใจให้เป็นแบบนั้น — รายการที่พิมพ์ค่าออกมาจะเปลี่ยนทุกการแชร์หน้าจอและทุกบันทึกเทอร์มินัลให้กลายเป็นการรั่วไหล

2. ทำไมคีย์ในโค้ดถึงไม่มีวันขึ้นออนไลน์

ก่อนการนำขึ้นออนไลน์จะเริ่ม build อะไร ระบบจะอ่านโค้ดหาข้อมูลลับที่ดูเหมือนของจริง — คีย์ AWS, service account ของ Google, คีย์ Stripe ตัวจริง, private key, รหัสผ่านที่กำหนดค่าไว้ในบรรทัดโค้ด ถ้าเจอ การนำขึ้นออนไลน์จะหยุด

หยุด ไม่ใช่แค่เตือน เพราะนี่คือความผิดพลาดชนิดเดียวที่ราคาไปตกกับคนอื่น — คีย์ที่รั่วถูกคนแปลกหน้าใช้แล้วเรียกเก็บกับบัญชีคุณ และเมื่อมันอยู่ใน repository สาธารณะหรือในไฟล์เว็บที่ build แล้ว มันหายไปแล้ว คำเตือนที่เลื่อนผ่านได้ไม่ใช่การป้องกัน

สองอย่างที่ระบบตั้งใจไม่ทำ: ไม่สแกนไฟล์เอกสารและไฟล์ตัวอย่าง — password="test" ในไฟล์ทดสอบคือสิ่งที่ถูกต้อง และประตูที่ปฏิเสธทุกโปรเจกต์จริงคือประตูที่คนเรียนรู้ที่จะเมิน และค่าที่อ่านแล้วเป็นตัวอย่าง — มีคำว่า your, example, changeme, เป็นชื่อตัวพิมพ์ใหญ่ล้วน หรือเป็น slug พิมพ์เล็กคั่นขีด — จะไม่ถูกนับเป็นข้อมูลลับ

erawan assess .

คำสั่งนี้รันประตูเดียวกันโดยไม่นำขึ้นออนไลน์ เป็นทางเร็วที่สุดที่จะรู้ก่อนส่งโค้ด

3. เมื่อมันต้องอ่านไม่ได้เลย

erawan secrets set my-app STRIPE_SECRET

secret คือค่าที่เขียนได้อย่างเดียว: พิมพ์ผ่านช่องที่ไม่แสดงตัวอักษร เก็บไว้ แล้วไม่มีอะไรคืนค่านั้นออกมาอีก — ไม่ใช่ CLI ไม่ใช่ API ไม่ใช่เอไอของคุณ environment variable ยังดูรายชื่อและเขียนทับได้ ส่วน secret อ่านกลับไม่ได้เลย ทำได้แค่หมุนเปลี่ยนหรือลบ

ใช้กับค่าที่การอ่านได้คือความเสี่ยงในตัวมันเอง — คีย์รับชำระเงิน คีย์เซ็นข้อมูล token ที่ใช้เงินได้ ค่าที่เหลือใช้ตัวแปรธรรมดา เพราะค่าที่ไม่มีใครอ่านกลับได้ ก็คือค่าที่คุณตรวจสอบไม่ได้ตอนมีอะไรผิดปกติ

สิ่งที่ยังเป็นหน้าที่คุณ

หมุนเปลี่ยนคีย์ที่ผู้ให้บริการเมื่อมีคนออกจากทีม ตัดสินใจว่าผู้ใช้ของแอปคุณคนไหนเห็นอะไรได้ และอะไรก็ตามที่คีย์ทำได้เมื่อโค้ดของคุณถือมันแล้ว — แพลตฟอร์มถือค่านั้นไว้ได้ แต่ถือเจตนาของคุณแทนไม่ได้

บทเรียนทั้งหมด