วิธีการแยกข้อมูลที่สำคัญในฐานข้อมูล (MySql)


9

ฉันต้องการออกแบบฐานข้อมูลที่จะมีข้อมูลเกี่ยวกับโรคส่วนตัวของผู้ใช้

สิ่งที่สามารถเป็นวิธีการที่จะใช้คอลัมน์ของตารางฐานข้อมูล: เข้ารหัสข้อมูลแยกข้อมูลภายในสองฐานข้อมูล differents หนึ่งสำหรับข้อมูลที่สำคัญและอื่น ๆ สำหรับข้อมูลที่ไม่สำคัญหรือทั้งสองหรือวิธีอื่น?


1
คุณต้องการปกป้องข้อมูลจากใคร
Oded

เป็นคำถามที่ดี แต่บางทีนี้ควรจะอพยพไปdba.stackexchange.com/questions ?
FrustratedWithFormsDesigner

@ เกิน dba ไม่ควรดูข้อมูลเกี่ยวกับโรคของผู้ใช้ฐานข้อมูล
carlo

2
แต่ใครไม่ควร ?
Oded

1
คุณสามารถเข้ารหัสได้ที่ด้านแอปพลิเคชัน แต่แอปพลิเคชันจะมีรหัส นี่เป็นเว็บแอปพลิเคชันที่ "ป้อนข้อมูล" หรือไม่
Ominus

คำตอบ:


5

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

dba ไม่สามารถดูข้อมูลเกี่ยวกับโรคของผู้ใช้ฐานข้อมูล

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


1
เหตุผลอีกประการหนึ่งสำหรับฐานข้อมูลแยกต่างหากคือข้อกำหนดทางกฎหมายหรือสัญญาที่ต้องเก็บข้อมูลที่ละเอียดอ่อนภายในเขตอำนาจศาล (ไม่ใช่บนคลาวด์)
Gilbert Le Blanc

2

คำตอบของ Ominus ตอบคำถามแรกของคุณ คำตอบของคำถามที่สองอาจต้องการรายละเอียดเพิ่มเติมเกี่ยวกับการสมัครของคุณ

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

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

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

หมายเหตุ: บางส่วนของคำตอบนี้จะเหมาะสมกว่าเป็นความคิดเห็น แต่ฉันยังไม่มีตัวแทนที่เพียงพอในการโพสต์ความคิดเห็นที่นี่


1

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

เพื่อป้องกันไม่ให้ DBA ดูข้อมูลคุณจะต้องเข้ารหัสโดยใช้รหัสที่ DBA ไม่สามารถเข้าถึงได้

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

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

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

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