การรักษาความปลอดภัยที่ดีสำหรับการจัดเก็บฐานข้อมูลที่สำคัญในแล็ปท็อปของนักพัฒนาคืออะไร?


33

เรามี givens ไม่กี่:

  1. นักพัฒนาต้องการจำลองฐานข้อมูลการผลิตบนเครื่องของพวกเขา
  2. นักพัฒนามีรหัสผ่านเพื่อกล่าวว่าฐานข้อมูลในไฟล์ App.config
  3. เราไม่ต้องการให้ข้อมูลในฐานข้อมูลดังกล่าวถูกบุกรุก

แนวทางแก้ไขปัญหาที่แนะนำและข้อเสีย:

  1. เต็มรูปแบบดิสก์เข้ารหัส วิธีนี้จะช่วยแก้ปัญหาทั้งหมด แต่ลดประสิทธิภาพของแล็ปท็อปลงและเรากำลังเริ่มต้นขึ้นดังนั้นอย่ามีเงินสำหรับนักเขียน
  2. การสร้าง VM ด้วยฮาร์ดดิสก์ที่เข้ารหัสและเก็บฐานข้อมูลไว้ มันใช้งานได้ดี แต่ก็ไม่ได้ช่วยอะไรมากนักเนื่องจากมีรหัสผ่านใน Web.Config
  3. โซลูชันหมายเลข 2 + ต้องการให้ผู้พัฒนาพิมพ์รหัสผ่านฐานข้อมูลทุกครั้งที่เขารันอะไร มันแก้ปัญหาทั้งหมด แต่มันยุ่งยากสำหรับนักพัฒนาที่บางครั้งไฟแอพพลิเคชั่นหลายครั้งต่อนาที นอกจากนี้เรายังมีแอพพลิเคชั่นหลายตัวที่เชื่อมต่อกับฐานข้อมูลเดียวกันและการใช้งานหน้าจอรหัสผ่านจะต้องแตกต่างกันไปในแต่ละโปรแกรม

ดังนั้นคำถามของฉันคือหากมีวิธีแก้ไขปัญหาดังกล่าวร่วมกันหรือข้อเสนอแนะใด ๆ เกี่ยวกับวิธีการแก้ปัญหาข้างต้นใช้งานได้?


26
คุณวัดผลกระทบของประสิทธิภาพการทำงานของการเข้ารหัสดิสก์แบบเต็มจริงหรือไม่ ฉันใช้มันกับแล็ปท็อปรุ่นเก่าและไม่รู้จักประสิทธิภาพที่ลดลงอย่างมีนัยสำคัญ ระบบปฏิบัติการสมัยใหม่ค่อนข้างดีในการแคชและดิสก์ก็ช้าอยู่ดี ผลกระทบที่เลวร้ายที่สุดอาจเกิดขึ้นกับอายุการใช้งานแบตเตอรี่ของคุณ
5gon12eder

69
ความจริงแล้วมันไม่ได้เป็นวิธีที่เหมาะสม 1) ทำไม devs ต้องการฐานข้อมูลการผลิตบนเครื่องของพวกเขา? ไม่มีวิธีในการสร้างข้อมูลจำลองสำหรับ dev db หรือไม่ 2) ทำไมรหัสผ่านถูกเก็บเป็นข้อความธรรมดาในไฟล์ปรับแต่ง? คุณกำลังพยายามใส่ผ้าพันแผลในกระบวนการที่มีข้อบกพร่องดูเหมือนว่า บางทีคุณสามารถแก้ไขสิ่งที่มีอยู่จริงบนเครื่อง dev รวมถึงวิธีการจัดเก็บรหัสผ่านสำหรับฐานข้อมูล
Thomas Stringer

2
มีเหตุผลสำหรับนักพัฒนาที่ต้องการฐานข้อมูลการผลิต ด้วยเหตุผลทางประวัติศาสตร์ผลงานของพวกเขานั้นเข้าคู่กับข้อมูลสด ฉันรู้ว่านี่เป็นความคิดที่ไม่ดีและหากเราไม่พบทางออกที่ดีเราจะย้ายไปยังข้อมูลจำลอง สำหรับตอนนี้ฉันพยายามหาทางออกที่ดีถ้าไม่มี
Svarog

6
ไม่มีผู้ใช้ MacBook Pro ที่สามารถบอกคุณได้จากความเร็วของเครื่องว่าจะเปิดหรือปิดการเข้ารหัสดิสก์เต็มรูปแบบในไดรฟ์ SSD ไม่มีความแตกต่าง ไม่มีที่คุณสามารถสังเกตเห็น บางทีคนที่คุณสามารถวัดได้ แต่ไม่มีอะไรที่เห็นได้ชัดเจน
gnasher729

5
ฉันความคิดเห็นที่สองของ @ gnasher729 การใช้การเข้ารหัสดิสก์เต็มรูปแบบเป็นเวลาหลายปีในสภาพแวดล้อมที่มีการควบคุม (ด้านการเงินและการดูแลสุขภาพ) ไม่จำเป็นต้องลดประสิทธิภาพลงอย่างเห็นได้ชัด ผู้คนจำนวนมากแสดงจุดที่ถูกต้องอื่น ๆ แต่ในสภาพแวดล้อม HIPAA มันยากที่จะมีนโยบายที่เหมาะสมโดยไม่มีการเข้ารหัสดิสก์เต็มแม้ว่าฐานข้อมูลจะไม่ถูกวางไว้ในโน้ตบุ๊ก อีเมลและข้อมูลอื่น ๆ มักจะมีอยู่แล้ว สลับไฟล์ .... ฯลฯ ... การเข้ารหัสดิสก์แบบเต็มไม่เพียงพอ แต่มักจำเป็นต้องใช้
joshp

คำตอบ:


100

ไม่เพียง แต่คุณไม่ต้องการสำเนาของฐานข้อมูลการผลิตจริง ๆ แล้วมันอาจผิดกฎหมาย ตัวอย่างเช่นในสหรัฐอเมริกาคุณไม่สามารถย้ายข้อมูลการผลิตออกจากสภาพแวดล้อมการผลิตหากมีข้อมูลที่ควบคุมเช่นข้อมูลสุขภาพส่วนบุคคลข้อมูลทางการเงินหรือแม้แต่ข้อมูลที่สามารถใช้ในการขโมยข้อมูลประจำตัว หากคุณทำเช่นนั้นคุณอาจถูกปรับเสียสถานะการปฏิบัติตามกฎระเบียบดังนั้นจึงต้องถูกตรวจสอบอย่างเข้มงวดมากขึ้นหรือแม้แต่ถูกฟ้องร้องในคดี

หากคุณต้องการข้อมูลระดับการผลิตสำหรับการทดสอบคุณมีสองทางเลือกดังนี้:

  1. สร้างข้อมูลจำลองทั้งหมด นี่มันยากกว่าที่คิด มันยากอย่างน่าประหลาดใจและใช้แรงงานมากในการสร้างข้อมูลจินตภาพที่สมเหตุสมผล
  2. ปิดบังข้อมูลการผลิตของคุณ สิ่งนี้อาจทำได้ง่ายกว่า แต่ดำเนินการด้วยความระมัดระวัง

สำหรับตัวเลือก # 2

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

31
และรหัสผ่านไปยังสำเนาฐานข้อมูลไม่ควรเหมือนกันกับเวอร์ชั่นการผลิต .....
Lightness Races with Monica

3
"ตัวอย่างเช่นในสหรัฐอเมริกาคุณไม่สามารถย้ายข้อมูลการผลิตออกจากสภาพแวดล้อมการผลิตหากมีข้อมูลที่มีการควบคุม" อะไร คุณมีแหล่งที่มาสำหรับสิ่งนี้หรือไม่? ตัวอย่างเช่นคุณไม่สามารถใช้การสำรองข้อมูลของฐานข้อมูลการผลิตเป็นข้อมูลสำหรับสภาพแวดล้อมการจัดเตรียมหรือเป็นการทดสอบฐานข้อมูลบนเครื่องนักพัฒนาซอฟต์แวร์
พี่เลี้ยง

12
@nanny ไม่ใช่ถ้าคุณใช้ข้อมูลที่มีการควบคุม ตัวอย่างเช่นฉันทำงานภายใต้ข้อบังคับ HIPAA HIPAA กล่าวว่า "หน่วยงานที่ได้รับความคุ้มครองจะต้องดำเนินการตามนโยบายและขั้นตอนที่จำเป็นขั้นต่ำตามสมควรซึ่ง จำกัด จำนวนข้อมูลด้านสุขภาพที่ได้รับความคุ้มครองเปิดเผยและร้องขอเพื่อวัตถุประสงค์บางประการ" นโยบายที่จำเป็นขั้นต่ำเปิดให้มีการตีความบางอย่าง ที่ปรึกษากฎหมายของเราแนะนำให้ตีความอย่างเข้มงวดซึ่งเก็บข้อมูลที่มีความละเอียดอ่อนซึ่งผู้พัฒนาไม่สามารถเข้าถึงได้ (จำเป็นหรือไม่ที่พวกเขาจะต้องทำงานของพวกเขาอย่างแท้จริง?) ความระมัดระวังเช่นเดียวกับการปฏิบัติตามการเงินเช่น PCI
Corbin วันที่

4
@ พี่เลี้ยงเอาสิ่งนี้มาเป็นคำบอกเล่าจากผู้ไม่เป็นทนาย แต่เมื่อฉันเข้าใจแล้วกฎแตกต่างกันไปตามรัฐ ที่ปรึกษาด้านกฎหมายที่ฉันทำงานด้วยมักจะทำผิดพลาดด้วยความระมัดระวัง การพูดอย่างเคร่งครัดผู้พัฒนาไม่จำเป็นต้องใช้SSN จริงในการปฏิบัติหน้าที่ดังนั้นที่ปรึกษาแนะนำว่า SSN เหล่านั้นอาศัยอยู่ในสภาพแวดล้อมที่มีการป้องกันซึ่งผู้พัฒนาไม่สามารถเข้าถึงได้ อย่าฟังฉันเลย ทนายความที่มองหาผลประโยชน์ระยะยาวของคุณจะเป็นทรัพยากรที่ดีที่สุด
Corbin วันที่

5
การพูดอย่างเคร่งครัดไม่ใช่ความผิดที่จะไม่ประมาทต่อ PPI เว้นแต่ว่าคุณกำลังทำงานของรัฐบาลดังนั้นชื่อเรื่องที่ 32 จะเข้ามามีบทบาท ... แต่เป็นการเปิดเผยความรับผิดทางแพ่งอย่างร้ายแรง นี่เป็นคำตอบที่ดี upvoted
dwoz

9

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


อ่านมากขึ้นเช่นความเห็นดูวิธีการตอบ
gnat

5
@ คาดว่าคำตอบนี้อาจจะสั้น แต่ก็เป็นทางเลือกที่ดีมาก

อย่าเป็นคนอวดรู้อย่างนี้ @gnat ... นี่เป็นคำตอบที่ดี
dwoz

@ dan1111 นั่นคือปัญหา มันไม่ใช่คำตอบ มันเป็นทางเลือก นั่นทำให้ความคิดเห็นไม่ใช่คำตอบ
corsiKa

2
@corsiKa คำตอบที่ท้าทายหลักฐานของคำถามได้รับอนุญาตและมักจะเป็นคำตอบที่ดีมาก ปัญหาดู XY: meta.stackexchange.com/questions/66377/what-is-the-xy-problem และคำตอบที่ละเอียดยิ่งขึ้นอาจดีกว่านี้ แต่นี่ก็ยังเป็นคำตอบ

8

เปลี่ยนวิธีการทำงานของคุณถ้าเป็นไปได้

ตามที่คนอื่น ๆ ชี้:

  • การใช้ข้อมูลการผลิตเพื่อการพัฒนานั้นไม่ใช่วิธีปฏิบัติที่ดี
  • การมีรหัสผ่านที่จัดเก็บเป็นข้อความล้วนไม่ใช่วิธีปฏิบัติที่ดี

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

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

หากจำเป็นจริงๆคุณเพียงแค่ทำการเข้ารหัสเต็มดิสก์

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

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


1
"ไม่ใช่โซลูชันที่สมบูรณ์แบบ" ควรเปลี่ยนสำหรับ "ความคิดโง่ ๆ อย่างสมบูรณ์" IMO
Darkhogg

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

ฉันเห็นด้วยกับจุดแรก แต่ไม่ใช่ครั้งที่สอง หากคุณไม่ได้จัดเก็บรหัสผ่านของคุณในเท็กซ์เท็กซ์คุณกำลังใช้รหัสผ่าน (1) ไซเฟอร์เท็กซ์หรือ (2) สมองของคุณ หาก (1) คุณจะเก็บรหัสผ่านสำหรับรหัส (ตรวจพบลูปไม่สิ้นสุด) ที่ไหน หาก (2) ฉันหวังว่าคุณจะชอบตื่นเวลา 2:00 น. เพื่อพิมพ์รหัสผ่านเพื่อเริ่มบริการใหม่
emory

1

คำตอบของ Corbin March ค่อนข้างดีฉันจะเพิ่มรายละเอียดเพิ่มเติมโดยทั่วไปคุณมีข้อมูลสองชั้นในฐานข้อมูลการผลิตของคุณ: เมตาดาต้าระบบ / แอปพลิเคชัน; และข้อมูลผู้ใช้ของลูกค้า / ข้อมูลการทำธุรกรรม สิ่งนี้ไม่ควรใช้ในสภาพแวดล้อมการพัฒนา "ตามที่เป็นอยู่"

มันหายากมากแน่นอนว่าคุณต้องการข้อมูลลูกค้าที่ใช้งานจริงเพื่อทำการพัฒนา

อย่างไรก็ตามหากปัญหาที่ OP อธิบายไว้ที่นี่เกี่ยวข้องกับข้อมูลความลับทางการค้าหรือข้อมูลระบบที่มีกรรมสิทธิ์สูงซึ่งไม่เกี่ยวข้องกับข้อมูลลูกค้านั่นเป็นสิ่งที่ devs ต้องการ ... วิธีการรักษาความปลอดภัยต้องเกี่ยวข้องกับรูปแบบที่ไม่มี รหัสผ่าน db เก็บไว้ใน cleartext ในไฟล์ทรัพยากรบางแห่ง ต้องมีกลไกที่จะสร้างรหัสผ่านใหม่ทุกวันซึ่งไม่ได้เก็บไว้ในดิสก์


5
client user data/transactional data... should NEVER be used in a development environment "as is." - ฟังดูไม่สามารถใช้งานได้สำหรับฉัน ปัญหาการเขียนโปรแกรมที่เกี่ยวข้องกับการผลิตที่เกี่ยวข้องกับข้อมูลลูกค้าเฉพาะจะไม่สามารถแก้ไขได้ภายใต้ข้อตกลงนี้ นอกจากนี้ข้อมูลสดที่เกิดขึ้นจริงมีประโยชน์อย่างมากจากมุมมองการทดสอบ ความพยายามในการแปรรูปหรือการไม่เปิดเผยชื่อควรเน้นเฉพาะข้อมูลที่มีการควบคุมเป็นพิเศษ
Robert Harvey

@RobertHarvey มันใช้ไม่ได้ถ้าคุณไม่สามารถสร้างปัญหาการผลิตในสภาพแวดล้อมการพัฒนา ฉันคิดว่าในอาชีพของฉัน (ยาว) ฉันสามารถนับจำนวนครั้งที่ข้อมูลการทดสอบที่ถูกสุขอนามัยไม่เพียงพอสำหรับการทำซ้ำข้อบกพร่องในการผลิต "ข้อมูลธุรกิจที่เป็นกรรมสิทธิ์" ไปไกลเกินกว่า SSN และหมายเลข CC!
dwoz

4
แต่ถ้าคุณกำลังจะไปตามเส้นทางนั้นคุณจะมีคนไอทีที่ไม่สามารถทำงานได้เพราะพวกเขาไม่มีสิทธิ์เข้าถึงระดับผู้ดูแลระบบสำหรับทุกสิ่ง ฉันยอมรับว่าเป็นสาเหตุของปัญหา Snowden แต่ฉันไม่เห็นทางเลือกที่ใช้การได้นอกจากจะจ้างคนที่คุณไว้ใจได้ Sarbanes Oxley และ HIPAA มีความเฉพาะเจาะจงมากเกี่ยวกับประเภทของข้อมูลที่ต้องถูกแยกออกจากกันและจะไม่รวม "ข้อมูลการผลิตทั้งหมด" ไม่ใช่ด้วยการยิงระยะไกล ที่กล่าวว่าฉันไม่เชื่อข้อมูลการผลิตใด ๆ ที่ควรมีอยู่ในแล็ปท็อปโรมมิ่ง
Robert Harvey

1
-1 สำหรับไม่เคย ความคิดเห็นที่เหมาะสมยิ่งกว่าของคุณดีกว่าคำตอบของคุณ คุณควรแก้ไขมัน

1
@ dan1111 เราสามารถตกลงที่จะไม่เห็นด้วยแล้ว ข้อมูลลูกค้า "ตามสภาพ" ไม่ควรใช้ในระบบ dev ควรทำให้สะอาดอยู่เสมอ คุณไม่เชื่อเรื่องนี้เพราะคุณยังไม่ถูกกัดด้วยพังพอนบ้า ... และนั่นคือสิ่งที่เกิดขึ้นเมื่อมันเกิดขึ้น หนูบ้าบ้าที่ตั้งใจจะดึงเลือดของคุณ ใช้คำแนะนำของฉันหลีกเลี่ยงพังพอนบ้า
dwoz

1

คุณไม่ได้ระบุฐานข้อมูลใดและสภาพแวดล้อมใด

หากคุณสามารถใช้การรักษาความปลอดภัยแบบบูรณาการแล้วฐานข้อมูลจะไม่สามารถเข้าถึงได้โดยไม่ต้องเข้าสู่ระบบในฐานะผู้ใช้ที่ ใช่ถ้าข้อมูลอยู่ในฮาร์ดดิสก์สามารถแฮ็คได้ แต่นี่เป็นการป้องกันระดับแรก

App.config ทำให้ฉันคิดว่านี่อาจเป็น. NET ใส่ config ลงใน thumb drive และอ่านจาก thumb drive หากไม่มีไดรฟ์ให้สร้างประเภทผู้ใช้ในรหัสผ่าน

มีวิธีการเก็บรหัสผ่านในหน่วยความจำในครั้งแรกที่มีการป้อนและอ่านทั้งหมด คุณไม่ได้ระบุสภาพแวดล้อมอีกครั้ง ไฟล์ที่แมปหน่วยความจำ

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


0

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


สิ่งนี้ดูเหมือนจะทำซ้ำเพียงจุดที่ทำและอธิบายในคำตอบที่ดีที่สุดประมาณหนึ่งสัปดาห์ที่ผ่านมา
ริ้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.