การหมุนเวียนรหัสผ่าน MySQL: การใช้ผู้ใช้คนเดียวเพื่อเปลี่ยนรหัสผ่านผู้ใช้อื่น
ฉันกำลังดำเนินการตั้งค่ากลยุทธ์การหมุนเวียนรหัสผ่านสำหรับแอปพลิเคชันที่ใช้ AWS Aurora / MySQL
แผนของฉันคือใช้กลยุทธ์แบบนี้ ...
- ชื่อผู้ใช้ / รหัสผ่านของแอปพลิเคชันที่เก็บไว้ในพารามิเตอร์ที่เข้ารหัส AWS SSM
- แอ็พพลิเคชันเซิร์ฟเวอร์สามารถเข้าถึงเพื่อดึงเฉพาะข้อมูลประจำตัวจาก SSM ถูก จำกัด โดยสภาพแวดล้อม (การจัดเตรียมการผลิต ฯลฯ )
- Lambda กำหนดค่าให้ทำงานเป็นระยะเพื่อเปลี่ยนรหัสผ่านใน MySQL และเก็บค่าใหม่ใน SSM Lambda เพื่อพิสูจน์ตัวตนกับฐานข้อมูลโดยใช้บทบาท AWS IAM แทนที่จะใช้รหัสผ่าน
บิตสุดท้ายคือบิตที่ฉันไม่แน่ใจ การกำหนดค่านี้ต้องการให้บทบาทแลมบ์ดา / ผู้ใช้มีสิทธิ์ในการเปลี่ยนรหัสผ่านสำหรับผู้ใช้แอปพลิเคชันอื่น ๆ ทั้งหมด
วิธีนี้เป็นวิธีที่สมเหตุสมผลจากมุมมองด้านความปลอดภัยหรือไม่? เนื่องจากผู้ใช้ lambda mysql จะใช้บทบาท IAM แทนรหัสผ่านจึงควร จำกัด ให้ใช้เฉพาะบทบาทที่ได้รับอนุญาตเท่านั้น
อีกทางเลือกหนึ่งคือไม่มีผู้ใช้ฐานข้อมูลพิเศษสำหรับแลมบ์ดาเพื่อเข้าสู่ระบบ แต่ต้องการให้ฟังก์ชันแลมบ์ดาดึงข้อมูลประจำตัวของผู้ใช้แต่ละคนจาก SSM จากนั้นเข้าสู่ระบบในฐานะผู้ใช้แต่ละคนเพื่อเปลี่ยนรหัสผ่าน
ไม่ว่าจะด้วยวิธีใดแลมด้าจะต้องมีการเข้าถึงผู้ใช้แต่ละคน
สมมติว่าฉันสามารถดึงการเข้าถึง "lambda_user" ใน MySQL ได้อย่างระมัดระวังมีปัญหาอื่น ๆ ที่ทำให้ผู้ใช้มีอำนาจในการเปลี่ยนรหัสผ่านของผู้ใช้รายอื่นหรือไม่
นอกจากนี้เพื่อชี้แจงว่าเป็นผู้ใช้แอปพลิเคชันไม่ใช่ผู้ใช้ประเภทมนุษย์ทั่วไปที่จะใช้ข้อมูลรับรองเหล่านี้
คำตอบ
นี่เป็นวิธีปฏิบัติที่ดีที่สุดด้วยเหตุผลที่คุณร่างไว้ การให้แลมด้าใช้บทบาทในการตรวจสอบสิทธิ์แทนข้อมูลรับรองคุณจะลดจำนวนความลับที่คุณเก็บไว้ให้เหลือน้อยที่สุดซึ่งเป็นสิ่งที่ดีอย่างแน่นอน มีเพียง 2 สิ่งที่ควรชี้ให้เห็น:
ตอนนี้คุณสามารถใช้ CloudFormation เพื่อจัดเตรียมและปรับใช้แลมบ์ดาเพื่อวัตถุประสงค์พิเศษโดยอัตโนมัติได้แล้ว ด้วยเหตุนี้คุณสามารถทำได้อย่างง่ายดาย ฉันไม่ได้เป็นแฟนตัวยงของ CloudFormation เป็นการส่วนตัว แต่ฉันจะใช้ที่นี่ต่อไป
การเปลี่ยนไปใช้ปลายทางข้อมูลเมตา V2 สามารถให้ความปลอดภัยเพิ่มเติมบางอย่างจาก SSRF ที่พบในโครงสร้างพื้นฐานของคุณรวมถึงการแตกในรูปแบบอื่น ๆ แม้ว่าจะไม่เกี่ยวข้องมากนักในกรณีการใช้งานนี้