วิธีการจัดเก็บข้อมูลประจำตัวที่ต้องการโดยแอปพลิเคชัน?


13

ทุกคนบอกว่าการเก็บข้อมูลประจำตัวในการควบคุมเวอร์ชัน (git) เป็นสิ่งที่ไม่ดี ดังนั้นจะต้องมีวิธีอื่นในการจัดเก็บข้อมูลรับรองซึ่งดีกว่ามาก

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

วิธีจัดการข้อมูลประจำตัวของแอปพลิเคชัน


4
นี่อาจเป็นคำที่กว้างเกินไปสำหรับคำตอบเดียวซึ่งไม่ใช่ขนาดของหนังสือ
coderanger

1
@coderanger เมื่อดูการนำเสนอของคุณการจัดหมวดหมู่ความลับประเภทต่าง ๆ ของคุณนั้นยอดเยี่ยมมาก และฉันสามารถดูได้ว่าคุณคิดอย่างไรกับหนังสือ ... แต่คำถามข้างต้นไม่ได้ขอการจัดหมวดหมู่มีเพียงวิธีแก้ปัญหาเฉพาะเท่านั้น
Evgeny

2
หากคุณมีสถานการณ์ที่เฉพาะเจาะจงโปรดแก้ไขคำถามเพื่อรวมรายละเอียดเพิ่มเติมเช่นประเภทของความลับที่ใช้ (รหัสผ่านฐานข้อมูลคีย์ TLS และอื่น ๆ )
coderanger

1
นี่กว้างเกินไป มีเครื่องมืออย่างน้อย 14 อย่างที่มีให้ทำเช่นนี้ไม่รวมสคริปต์ที่กำหนดเองหรือแม่แบบ: gist.github.com/maxvt/bb49a6c7243163b8120625fc8ae3f3cd ต้องการ รายละเอียดเพิ่มเติม (เช่น CLI จำเป็นต้องมี แอปพลิเคชั่นแบบเสาหิน ฯลฯ )
Alexandre

1
@Alexandre ฮะผมเปิดที่และคิดว่า "yay รายการที่รวบรวมดี" แล้วดูตัวเองอ้างที่ด้านล่าง :)
coderanger

คำตอบ:


5

การจัดการความลับของแอปพลิเคชันอย่างเหมาะสมนั้นเป็นความท้าทายเสมอ ความท้าทายใหม่ ๆ เกิดขึ้นจากการใช้คลาวด์ มีการนำเสนอ OWASP ที่ยอดเยี่ยมเกี่ยวกับความจริงและความท้าทายในการจัดเก็บความลับในคลาวด์

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

การจัดการความลับทุกประเภทมีจุดแข็งและจุดอ่อนและการนำเสนอครอบคลุมอยู่แล้ว แต่ฉันจะลองดูคุณสมบัติบางอย่างที่คุณอาจมองหาในโซลูชันการจัดการความลับ (ข้อมูลรับรอง):

  • การควบคุมการเข้าถึง: คุณสามารถให้สิทธิ์การเขียนแก่ผู้ดูแลระบบและการอ่านเพื่อเข้าถึงแอปพลิเคชันหรือไม่ คุณสามารถ จำกัด แอปพลิเคชันที่สามารถอ่านได้ (แอปพลิเคชัน A มีสิทธิ์เข้าถึงความลับเหล่านั้นเท่านั้น)
  • บันทึกการตรวจสอบ: จำเป็นสำหรับรายงานการปฏิบัติตามกฎหมายจำนวนมากและเป็นวิธีที่ดีในการคิดว่ามีบางสิ่งผิดพลาดหรือไม่
  • การจัดเก็บข้อมูลลับอย่างปลอดภัย: วิธีแก้ปัญหาคือการจัดเก็บความลับอย่างไร เข้ารหัสฐานข้อมูล? เข้ารหัส FS หรือไม่ ใคร / คีย์ใดมีคีย์การเข้ารหัสหากมี ใช้คีย์นี้อย่างไร - เมื่อเริ่มต้นแล้วละทิ้งอย่างปลอดภัย
  • การหมุนหรือการต่ออายุคีย์ / รหัสผ่าน: หากมีการเปิดเผยความลับคุณสามารถเพิกถอนและส่งความลับที่อัปเดตไปยังแอปพลิเคชันได้หรือไม่ แอปพลิเคชันสามารถ / ควรรวมบริการการจัดการความลับหรือไม่
  • ความเข้ากันได้: โซลูชันเหล่านี้บางตัวมีการผสานอย่างแน่นหนากับบางภาษาหรือกรอบงาน ข้อเสนอ REST API บางอย่าง คุณสนใจสิ่งนี้หรือไม่?

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


3

สำหรับสภาพแวดล้อมบนพื้นฐานของ EC2 อย่างแท้จริงทางออกที่ง่ายที่สุดคือการใช้บทบาท AWS IAM และนโยบายที่เก็บข้อมูล S3 บางสูตรของรูปแบบนี้รวมถึง KMS สำหรับการเข้ารหัสและ DynamoDB แทน S3 สำหรับการจัดเก็บ แต่ฉันไม่พบเหตุผลที่น่าสนใจอย่างมหาศาลที่จะใช้อย่างใดอย่างหนึ่ง ลองดูที่https://github.com/poise/citadelมันมีจุดประสงค์เฉพาะสำหรับผู้ใช้งาน Chef แต่รูปแบบพื้นฐานนั้นใช้ได้กับทุกสิ่งคุณอาจต้องทำผู้ช่วยของคุณเองเพื่อทำการดาวน์โหลดจริงจาก S3


1
สำหรับอนาคตสิ่งนี้จะตอบคำถามรุ่นก่อนหน้าและเฉพาะเจาะจงมากขึ้น
coderanger

2
AWS ในขณะนี้ให้บริการเฉพาะสำหรับการจัดเก็บค่าคีย์รวมทั้งการเข้ารหัสผ่าน KMS: aws.amazon.com/ec2/systems-manager/parameter-store
bnzmnzhnz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.