0Pricing
DevOps Bootcamp · บทเรียน

เหตุใดจึงไม่ควรเก็บ Secrets ไว้ใน values.yaml

ความเสี่ยงของ Secrets แบบข้อความธรรมดาในแผนภูมิและ Git

เหตุใดจึงไม่ควรเก็บ Secrets ไว้ใน values.yaml เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

ค่าเป็นข้อความธรรมดา

values.yaml ของชาร์ตเป็นข้อความธรรมดาที่ไม่ได้เข้ารหัส ทุกสิ่งที่คุณเขียนไว้ที่นั่น รวมถึงรหัสผ่าน จะอ่านได้โดยทุกคนที่เปิดไฟล์

Git จดจำตลอดไป

โดยทั่วไปชาร์ตจะอยู่ใน Git ข้อมูลลับที่คอมมิตไว้เพียงครั้งเดียวยังคงอยู่ในประวัติแม้คุณลบออกแล้ว ดังนั้นข้อมูลที่รั่วไหลจึงไม่หายไป 🔒

ความผิดพลาดที่ชวนให้ทำ

การใส่รหัสผ่านจริงลงใน values.yaml โดยตรงเพื่อให้ระบบทำงานได้นั้นเป็นเรื่องที่ชวนให้ทำ แต่ควรห้ามใจไว้ เพราะค่านั้นจะแพร่กระจายไปทุกที่

database:
  password: super-secret-123

Helm จัดเก็บข้อมูลรีลีส

เมื่อติดตั้ง Helm จะบันทึกค่าที่ผสานแล้วลงในซีเคร็ต รีลีส ภายในคลัสเตอร์ ดังนั้นรหัสผ่านแบบข้อความธรรมดาของคุณจะอยู่ที่นั่นด้วย

helm get values เปิดเผยข้อมูล

ทุกคนที่เข้าถึงรีลีสได้สามารถเรียกใช้ helm get values เพื่ออ่านค่าที่คุณส่งเข้าไปกลับมาได้ตรง ๆ รวมถึงรหัสผ่านแบบข้อความธรรมดา

helm get values myapp

บันทึก CI ก็รั่วไหลเช่นกัน

การส่งข้อมูลลับผ่าน --set ในกระบวนการทำงานมักพิมพ์ข้อมูลเหล่านั้นลงในบันทึกการสร้าง ซึ่งจะแสดงให้ทั้งทีมเห็นอย่างชัดเจน

helm install myapp ./chart --set db.password=secret

กฎสำคัญ

กฎนี้เรียบง่าย: ข้อมูลลับต้องไม่อยู่ในรูปข้อความธรรมดาภายในชาร์ต ใน Git หรือบนบรรทัดคำสั่ง ต้องเก็บข้อมูลเหล่านี้ไว้ภายนอก

อ้างอิง อย่าฝังค่า

รูปแบบที่ปลอดภัยคืออ้างอิงข้อมูลลับแทนการฝังค่าไว้ เทมเพลตจะชี้ไปยังทรัพยากร Secret ที่คลัสเตอร์มีอยู่แล้ว

valueFrom:
  secretKeyRef:
    name: db-credentials
    key: password

เข้ารหัสหากจำเป็นต้องจัดเก็บ

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

สามแนวทางที่ใช้กันทั่วไป

มีสามแนวทางในการแก้ปัญหานี้ ได้แก่ การเข้ารหัสค่าด้วยเครื่องมือ การดึงข้อมูลลับจากที่จัดเก็บภายนอก หรือการสร้างออบเจ็กต์ Secret จากข้อมูลที่ส่งเข้าไป

การแปลงรหัสไม่ใช่การรักษาความปลอดภัย

Base64 ใน Kubernetes Secret เป็นเพียงการแปลงรหัส ไม่ใช่การเข้ารหัส จึงไม่ได้ซ่อนข้อมูลใด ๆ และไม่ควรถือว่าค่าที่แปลงแล้วได้รับการปกป้อง

ตรวจสอบอย่างรวดเร็ว

เหตุใดการใส่รหัสผ่านไว้ใน values.yaml จึงมีความเสี่ยงสูง

ทบทวน

คุณได้เห็นแล้วว่าเหตุใดข้อมูลลับแบบข้อความธรรมดาใน values.yaml จึงรั่วไหลผ่าน Git ข้อมูลรีลีส และบันทึก CI และเหตุใดจึงต้องอ้างอิงหรือเข้ารหัสข้อมูลเหล่านั้นแทน 🎉

คำถามที่พบบ่อย

บทเรียน “เหตุใดจึงไม่ควรเก็บ Secrets ไว้ใน values.yaml” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เหตุใดจึงไม่ควรเก็บ Secrets ไว้ใน values.yaml” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เหตุใดจึงไม่ควรเก็บ Secrets ไว้ใน values.yaml”

ความเสี่ยงของ Secrets แบบข้อความธรรมดาในแผนภูมิและ Git คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “เหตุใดจึงไม่ควรเก็บ Secrets ไว้ใน values.yaml” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงไม่ควรเก็บ Secrets ไว้ใน values.yaml
  2. การเข้ารหัสค่าด้วย helm-secrets และ SOPS
  3. การดึงข้อมูลจาก External Secrets Operators
  4. การสร้างแม่แบบทรัพยากร Kubernetes Secret
← กลับไปที่ DevOps Bootcamp