Getting to know HashiCorp Vault ตัวจัดการ Secrets

เคยไหมครับ? เก็บรหัสผ่านไว้บนไฟล์ .env แล้วเกิดลืมบ้าง หายบ้าง โดนแฮ็กบ้าง หากคุณเจอปัญหาเหล่านี้และมีความจำเป็นต้องจัดการกับข้อมูลที่ต้องเก็บเป็นความลับอย่าง คีย์, Token รหัสผ่าน, Certificate และ SSH Key ในบทความนี้จะพาทุกคนมาดูวิธีการเก็บข้อมูลเหล่านี้ให้ปลอดภัยโดยการใช้ Secrete Manager  ตัวSecret Management ที่ชื่อว่า HashiCorp Vault มันคืออะไร เจ๋งยังไง ไปดูกัน !!!

HashiCorp Vault คืออะไร? 

HashiCorp Vault คือเครื่องมือสำหรับจัดการข้อมูลที่ต้องเก็บเป็นความลับ (Secret Management) สำหรับองค์กร การใช้ Vault ช่วยให้องค์กรจัดเก็บข้อมูลลับต่างๆ เช่น รหัสผ่าน, Key, Token, SSH Certificate ต่าง ๆ ได้อย่างปลอดภัยและมีการจัดการเข้าถึงได้อย่างดี โดย HashiCrop Vault เป็นหนึ่งในผลิตภัณฑ์ของ HashiCorp บริษัทผู้พัฒนาซอฟต์แวร์โอเพนซอร์สสำหรับ IT Infrastructure 

ทำความรู้จักกับ Vault เพิ่มขึ้นหน่อย 

หากเราพูดถึง Vault มันคือตู้นิรภัยที่เราจะเอาของสำคัญเก็บไว้ในนั้น Vault ในโลกดิจิตอลก็เปรียบเสมือนตู้เซฟอัจฉริยะสำหรับเก็บข้อมูลลับต่างๆ เช่น Key, Token, รหัสผ่าน, Certificate  และอื่น ๆ อีกมากมาย โดย Vault จะทำการจัดเก็บในที่ที่ปลอดภัย เข้ารหัสข้อมูลเหล่านี้อย่างแน่นหนา มีการตรวจสอบตัวตน จัดการสิทธิ์ที่รัดกุม ป้องกันไม่ให้แฮ็กเกอร์ หรือคนที่ไม่หวังดีมาเข้าถึงข้อมูลเหล่านี้และก่อให้เกิดความเสียหายกับระบบและธุรกิจของเราได้

แล้ว Vault ทำงานยังไง?

โดยในส่วนนี้ Cloud HM ขอแนะนำการทำงานของ HashiCorp Vault ซึ่งมี Token Based Authentication โดยการใช้ Token เป็นเหมือนกุญแจที่จะใช้เข้าถึงข้อมูลที่เก็บไว้ใน Vault โดยแต่ละ Token จะมี Policy คอยกำกับที่จะบอกขอบเขตของข้อมูลว่าแต่ละ Token เข้าถึงอะไรได้หรือไม่ได้บ้าง โดยเราสามารถสสร้าง Token ได้ด้วยตัวเองแล้วส่งให้ User หรือจะให้ User ทำการ Login เข้ามายังระบบเพื่อขอ Token ไปใช้ได้

โดยขั้นตอนการทำงานของ Vault จะประกอบไปด้วย 4 ขั้นตอนคือ 

1. Authenticate (การพิสูจน์ตัวตน): ผู้ใช้ยืนยันตัวตนผ่านระบบของ Vault เมื่อตรวจสอบสิทธิ์ผ่าน ระบบจะออก Token ที่มี policy กำกับมาให้

2. Validation (การตรวจสอบความถูกต้อง): Vault ตรวจสอบผู้ใช้งานกับแหล่งข้อมูลภายนอกที่เชื่อถือได้ เช่น GitHub, LDAP, AppRole เป็นต้น

3. Authorize (การให้อนุญาต): Vault อนุญาตให้ผู้ใช้เข้าถึงข้อมูลตาม Security Policy ของ Vault ที่ได้กำกับสิทธิ์ในการเข้าถึงและดำเนินการกับข้อมูลของผู้ใช้แต่ละราย

4. Access (การเข้าถึง): เมื่อผู้ใช้ผ่านการรับรองแล้ว Vault จะออก Token ซึ่งผูกกับ policy โดยผู้ใช้สามารถใช้ Token นี้ในการเข้าถึงข้อมูลในภายหลัง

ทำไมต้องใช้ Vault ?

ในยุคปัจจุบัน การใช้ Cloud Native และ Microservice กำลังเป็นที่นิยมอย่างมาก  สถาปัตยกรรมเหล่านี้ช่วยให้องค์กรสามารถพัฒนาและ Implement แอปได้ไวและง่ายมากขึ้น แต่มันจะมีความท้าทายนึงในการทำระบบนี้คือการจัดการข้อมูลที่เป็นความลับ พวกรหัสผ่าน, API Key หรือ Token ต่าง ๆ ของเหล่านี้ค่อนข้างจะกระจัดกระจายกันไปในส่วนต่างๆ ขององค์กรทำให้ยากที่จะควบคุม แถมยังก่อให้เกิดความเสี่ยงอีกมากมายไม่ว่าจะเป็นข้อมูลพวกนี้ที่เก็บในรูปแบบของ Plain Text, ฝังไว้ในโค้ดตามที่ต่างๆ ทำให้เสี่ยงต่อการโดนโจมตีในหลายรูปแบบมาก

ซึ่งปัญหาเหล่านี้สามารถใช้ Vault ในการจัดการได้ โดยเจ้า Vault จะเป็นตัวที่ทำหน้าที่เป็นศูนย์กลาง ที่รวมรวบข้อมูลเหล่านี้ไว้ แล้วจัดการการเข้าถึงต่าง ๆ ไว้ในจุดเดียวทำให้เพิ่มระดับความปลอดภัยในการ Authentication และ Authorization ได้อย่างชัดเจนสำหรับทั้งด้านผู้ใช้ ตัวแอปพลิเคชัน รวมไปถึงระบบต่าง ๆ ซึ่ง HashiCrop Vault ก็เป็นบริการที่ออกแบบมาสำหรับแก้ไขปัญหานี้ ทำหน้าที่ช่วยปกป้องข้อมูลของเราให้มีความรัดกุมขึ้นนั้นเอง 

Vault ช่วยแก้ปัญหานี้ยังไง?

  • เป็นเครื่องมือช่วยให้จัดเก็บ Secret ทั้งหมดไว้ในที่เดียว
  • เข้ารหัส Secret ให้ ทำให้ข้อมูลปลอดภัยจากการถูกโจมตี
  • ช่วยควบคุมการเข้าถึง Secret ช่วยให้มั่นใจได้ว่า ผู้ที่ได้รับอนุญาตเท่านั้นที่สามารถเข้าถึงข้อมูลได้
  • ตรวจสอบการเข้าถึง Secret ทำให้รู้ได้ว่าใครเข้าถึง Secret ของเราบ้าง

ตัวอย่างการใช้งาน Vault

1.จัดการกับข้อมูลทั่วไป: โดยพวก Static credential หรือข้อมูลที่ใช้สำหรับเข้าถึงระบบต่างๆ ข้อมูลที่ถูกสร้างไว้ให้พนักงานใช้ เช่น พวก Key หรือ Username Password แล้วระบบไม่ได้มีการจัดการกำหนดระยะเวลาหรือถอนสิทธิ์ออกอัตโนมัติ ก็อาจจะทำให้เกิดการรั่วไหลได้ ซึ่ง Vault จะสามารถทำการตั้งให้ข้อมูลนั้น ๆ มีอายุหรือมีการถอนสิทธ์อัตโนมัติได้

2. หมดปัญหาทีมไอทีต้องมานั่งเจนคีย์เอง: อย่างพวก Token ที่ใช้เข้าสู่ระบบ บางส่วนมันอาจจะมีอายุที่สั้นมาก ๆ ทีมไอทีต้องคอยมาเจนให้ใหม่บ่อย ๆ  แต่เราสามารถตั้งให้ Vault สร้างให้ใหม่ได้เอง ไม่ต้องมาคอยนั่งเปลี่ยนบ่อยๆ

3.เก็บไว้แบบปลอดภัย: เพิ่มความมั่นใจให้กับข้อมูลที่เก็บไว้เพราะ Vault จะจัดการเรื่องเข้ารหัสให้เราแบบเบ็ดเสร็จ

4. ช่วยเรื่องจัดการ Identity: ใน Vault จะมีระบบ ACL ที่เป็นระบบที่ใช้ควบคุมว่าใครสามารถเข้าถึงข้อมูลหรือ Vault path อะไรได้บ้าง ทำให้ระบบเราที่ไปต่อกับคลาวด์ บริการ หรือระบบอื่น ๆ ทำให้เราสามารถควบคุมการเข้าถึงระบบและแอปพลิเคชันที่เชื่อถือได้

ตัวอย่างการนำ Vault ไปใช้กับบริการอื่น ๆ 

ตัวอย่างเช่น การใช้งาน Database Secrets Engine ใน HashiCorp Vault ร่วมกับ MongoDB เพื่อจัดการความลับของฐานข้อมูล (Database Secrets) อย่างปลอดภัย

Database Secrets Engine คืออะไร?

Database Secrets Engine เป็นส่วนหนึ่งของ HashiCorp Vault ที่ช่วยสร้างข้อมูลลับสำหรับการเข้าถึงฐานข้อมูล (อย่างเช่น ชื่อผู้ใช้และรหัสผ่าน) อย่างอัตโนมัติและชั่วคราว (dynamically) ซึ่งมันดีตรงที่ secrets เหล่านี้จะมีการกำหนดเวลาหมดอายุ (TTL) สามารถถูกถอนสิทธิ์อัตโนมัติเมื่อไม่ถูกใช้ ช่วยเพิ่มความปลอดภัย

ซึ่งหลัก ๆ แล้วการใช้งานกับ MongoDB จะมีขั้นตอน ดังนี้

  1. ติดตั้งฐานข้อมูล
  2. ตั้งค่า Vault: เปิดใช้งาน Database Secrets Engine สำหรับ MongoDB
  3. กำหนดค่า MongoDB ใน Vault: บอก Vault ว่าจะเชื่อมต่อไปยังฐานข้อมูล MongoDB ที่ไหน รวมถึงให้ข้อมูลผู้ใช้ระดับ Admin ของ MongoDB
  4. สร้าง Role: สร้าง role ใน Vault เพื่อกำหนดว่าจะให้สิทธิ์อะไรกับผู้ใช้ที่ได้รับ Credentials ผ่าน Vault และตั้งค่าระยะเวลาใช้งาน (TTL)
  5. ขอรับ Credentials: Vault จะสร้างชื่อผู้ใช้และรหัสผ่านให้แบบชั่วคราวเมื่อมีการขอใช้ผ่าน role ที่เราสร้างไว้
  6. ตรวจสอบ: เมื่อเรานำ credentials ที่ได้ไปใช้เชื่อมต่อ MongoDB ก็จะใช้ได้จริง

โดย Vault ยังมีความสามารถจัดการ Secret ให้กับฐานข้อมูลประเภทอื่นๆได้ด้วย ไม่ได้จำกัดแค่ MongoDB เท่านั้น

Vault เหมาะกับใคร ?

Vault เหมาะสำหรับองค์กรและนักพัฒนาซอฟต์แวร์ที่ต้องการจัดการความลับของตัวเองอย่างปลอดภัย ไม่ว่าจะเป็น

  • ทีม DevOps ที่ต้องการจัดการ Secrets สำหรับ Deployments
  • ทีม Security ที่ต้องการควบคุมการเข้าถึงข้อมูลลับ
  • ทีม Compliance ที่ต้องการตรวจสอบและบันทึกการเข้าถึงข้อมูลลับ
  • นักพัฒนาซอฟต์แวร์ที่ต้องการเก็บ API keys และ credentials ของตัวเอง

ตัวอย่างการใช้ HashiCorp Vault

 สำหรับการรักษาความปลอดภัยให้ Secrets และ Identity สำหรับอุปกรณ์ Edge กว่า 100,000 เครื่องที่ Starbucks โดยใช้ HashiCorp Vault

เนื่องจาก Starbucks มีอุปกรณ์ Edge มากกว่า 100,000 เครื่องที่กระจายอยู่ตามร้านค้าหลายพันแห่ง แน่นอนว่าการมีอุปกรณ์เยอะขนาดนี้ แต่ละอุปกรณ์ก็จะต้องมีการใช้งาน Secret ต่าง ๆ เยอะแยะมากมาย การจัดการปลอดภัยในแบบดั้งเดิมไม่ใช่เรื่องง่ายแน่ ๆ โดย Solution ที่ Starbuck ใช้คือ Starbucks ใช้ HashiCorp Vault สร้าง Secrets ที่มีอายุสั้นซึ่งเปลี่ยนแปลงโดยอัตโนมัติ มีการใช้ “Secret Zero” คือ Secrets แรกที่อุปกรณ์ต้องการเพื่อรับ Secrets อื่นๆ ทั้งหมด โดยการทำงานของ “Secret Zero” โดย ระบบส่วนกลางตรวจสอบกับอุปกรณ์เพื่อให้ Secrets 

HCP Vault คืออะไร?

HCP Vault บริการนี้ทำงานบน HashiCorp Cloud Platform (HCP) ซึ่งเป็นระบบคลาวด์ ทำให้สะดวกและปลอดภัยมากขึ้น เราไม่ต้องดูแลเซิร์ฟเวอร์เอง

ข้อดีของ HCP Vault

  • ใช้งานง่าย: เริ่มต้นใช้งานได้รวดเร็ว เพราะไม่ต้องจัดการเซิร์ฟเวอร์เอง
  • ปลอดภัยสูง: เป็นบริการบนคลาวด์ มีระบบการเข้ารหัสและการป้องกันที่ได้มาตรฐาน
  • สะดวกในการสเกล: เพิ่มหรือลดขนาดพื้นที่ได้ตามต้องการผ่าน HCP Vault portal
  • ลดความเสี่ยงจากการใช้คีย์และข้อมูลลับซ้ำ Vault: ช่วยให้องค์กรสามารถจัดการคีย์และข้อมูลลับได้แบบรวมศูนย์กลาง ทำให้องค์กรสามารถลดความเสี่ยงจากการใช้คีย์และข้อมูลลับซ้ำกันได้

แต่นอกจากการใช้ Vault แบบ HCP ที่เป็นบริการคลาวด์แล้ว ยังสามารถใช้แบบ Self-managed โดย Vault แบบที่เราจัดการเองจะเป็น Vault ที่มีทั้งแบบฟรี (Community) และเสียเงินซื้อ (Enterprise) ข้อดีคือปรับแต่งได้เยอะตามที่ต้องการ แต่ข้อจำกัดคือเราต้องตั้งค่าและดูแลความปลอดภัยของระบบ Vault นี้ด้วยตัวเอง แต่หากเราต้องการระบบที่มีมาตรฐานความปลอดภัยสูงๆ แนะนำให้ใช้ HCP Vault ดีกว่า

หากคุณกำลังมองหาผู้เชี่ยวชาญด้านคลาวด์ ที่สามารถช่วยให้เริ่มต้นใช้งาน Vault ได้อย่างรวดเร็วและมีประสิทธิภาพ ผมขอแนะนำ Cloud HM ผู้ให้บริการคลาวด์ที่เป็นพันธมิตรอย่างเป็นทางการกับ Hashicorp Vault โดยตรง โดย Cloud HM มีทีมผู้เชี่ยวชาญที่พร้อมให้บริการและช่วยเหลือในทุกขั้นตอนของการใช้งาน Vault  สามารถติดต่อได้ผ่านช่องทางนี้ครับ https://www.cloudhm.co.th/contact/

Cloud HM