[Spring boot] มาเก็บ Secrets Properties ให้ปลอดภัยกันเถอะ 🤗
สวัสดีครับเพื่อนๆ^^ วันนี้ผมจะมาเแนะนำวิธีการเก็บ secret properties แบบง่ายๆและปลอดภัยครับ
การพัฒนาแอพพลิเคชั่นเราจะต้องเจอกับ secret properties มากมาย เช่น ใช้ในการ authentication สำหรับเรียกใช้งาน public api หรือการเชื่อมต่อกับ service อื่นๆที่มีระบบตรวจสอบผู้ใช้งาน ดังนั้นใน application ของเราจึงจำเป็นที่จะต้องมีการเก็บ secret properties เอาไว้
ในการเก็บ properties สามารถเก็บได้หลายวิธี ซึ่งผมจะขอยกตัวอย่าง 2 วิธีหลักๆ ที่พบเจอได้ในการพัฒนาแอพพลิเคชั่นด้วย spring boot
- การเก็บ properties ไว้ในไฟล์ application.properties โดยวิธีนี้จะเป็นวิธีที่ง่ายที่สุด สามารถเรียกใช้ค่าผ่าน @Value ของ springboot ได้โดยตรง แต่ก็แลกมาด้วยความปลอดภัยที่ต่ำ เนื่องจากไฟล์ application.properties นั้นจำเป็นต้องเก็บไว้บน git สำหรับใช้ในการ build application
2. การสร้างไฟล์ใหม่มาสำหรับเก็บ properties เรียกใช้โดยการเขียนฟังก์ชันมาอ่านไฟล์ ซึ่งวิธีนี้จะปลอดภัยมากกว่าวิธีแรก แต่ต้องแลกมาด้วยการเขียนฟังก์ชันที่มากขึ้น การเรียกใช้งานที่มีความซับซ้อนกว่าเดิม
ดังนั้นในบทความนี้ผมจะพาไปลองใช้ @EnableConfigurationProperties และ @ConfigurationProperties 2 ตัวนี้ช่วยให้เราสามารถเก็บ secrets properties ต่างๆได้ง่ายมากยิ่งขึ้น มีลักษณะการทำงานเปรียบเสมือนการรวมเอา 2 วิธีทางด้านบนมาประยุกต์ใช้งานร่วมกันครับ
Getting Started …
เริ่มจากการสร้างไฟล์แยกสำหรับเก็บ secrets properties
- สร้าง Class สำหรับเก็บ properties ที่เราต้องการใช้ โดยเรียกใช้ @ConfigurationProperties(“ใส่ prefix ให้ตรงกับที่กำหนดไว้ในไฟล์ ในกรณีนี้คือ com.example”)
2. เรียกใช้ @EnableConfigurationProperties ระบุชื่อ Class ที่เราต้องการ inject properties
3. เพิ่มชื่อไฟล์ที่เราเก็บ properties เอาไว้ที่ application.properties (file ->secrets properties)
4. เพิ่มไฟล์ secrets.properties ที่ไฟล์ .gitignore เพื่อไม่ให้นำไฟล์นี้ขึ้นไปที่ git
5. นำไฟล์ secrets.properties ไปวางบน Server….
เพียงเท่านี้เราก็สามารถเรียกใช้ properties จากไฟล์ได้โดยตรงไม่จำเป็นต้องใช้ฟังก์ชันในการอ่านไฟล์และดึงค่าออกมาอีกแล้วครับ
I hope that it was useful to you… Bye Bye 😁