خصوصية البيانات والأمان: دليل المطور للتعامل مع البيانات الحساسة باستخدام DuckDB

فهم DuckDB لخصوصية البيانات والأمان

خصوصية البيانات والأمان أصبحت أمورًا حاسمة لجميع المنظمات حول العالم. تحتاج المنظمات غالبًا إلى تحديد أو إخفاء أو إزالة المعلومات الحساسة من مجموعاتها البيانية مع الحفاظ على فائدة البيانات. تستكشف هذه المقالة كيفية الاستفادة من DuckDB، وهو قاعدة بيانات تحليلية تعمل في المعالجة، لإصلاح البيانات الحساسة بكفاءة.

لماذا DuckDB؟ (ولماذا يجب أن تهتم؟)

فكر في DuckDB كابن عم موهوب تحليليًا لـ SQLite. إنها قاعدة بيانات مدمجة تعمل مباشرة في عمليتك، لكنها مصممة خصيصًا للتعامل مع أحمال العمل التحليلية. ما الذي يجعلها مثالية لإصلاح البيانات؟ حسنًا، تخيل القدرة على معالجة مجموعات بيانات كبيرة بسرعة البرق، دون إعداد خادم قاعدة بيانات معقد. يبدو جيدًا، أليس كذلك؟

إليك ما يجعل DuckDB رائعًا بشكل خاص لحالتنا:

  • إنها سريعة للغاية بفضل تخزينها الموجه حسب الأعمدة.
  • يمكنك تشغيلها مباشرة في بيئة Python الحالية لديك.
  • تتعامل مع صيغ ملفات متعددة كما لو لم يكن هناك شيء.
  • تتفاعل بشكل جيد مع التخزين السحابي (المزيد عن ذلك لاحقًا).

في هذا الدليل، سأستخدم Python مع DuckDB. يدعم DuckDB لغات أخرى أيضًا، كما هو مذكور في الوثائق.

بدء الاستخدام مع DuckDB لخصوصية البيانات

المتطلبات السابقة

  • تثبيت Python 3.9 أو أعلى
  • معرفة سابقة بإعداد مشاريع Python والبيئات الافتراضية أو بيئات Conda

تثبيت DuckDB داخل بيئة افتراضية عن طريق تشغيل الأمر التالي:

Shell

 

الآن بعد أن قمت بتثبيت DuckDB، دعنا ننشئ اتصالًا بـ DuckDB:

Python

 

تقنيات متقدمة لتعتيم بيانات PII

إليك كيفية تنفيذ تعتيم بيانات PII (معلومات شخصية يمكن التعرف عليها):

لنفترض أن لديك مجموعة بيانات مليئة بمعلومات العملاء التي تحتاج إلى تنظيفها. إليك كيفية التعامل مع السيناريوهات الشائعة.

دعنا ننشئ بيانات عينة:

SQL

 

  • هذا ينشئ جدولًا يسمى customer_data يحتوي على صف واحد من البيانات الحساسة كعينة.
  • تتضمن البيانات اسمًا ورقم الضمان الاجتماعي والبريد الإلكتروني ورقم الهاتف.

الجزء الثاني يتضمن أنماط التعتيم باستخدام regexp_replace:

SQL

 

دعني أشرح لك ما يقوم به كود SQL أعلاه.

  • regexp_replace(name, '[a-zA-Z]', 'X')
    • يستبدل جميع الحروف (سواء كانت كبيرة أو صغيرة) بـ 'X'
    • مثال: "جون دو" يصبح "XXXX XXX"
  • regexp_replace(ssn, '[0-9]', '*') as masked_ssn
    • يستبدل جميع الأرقام بـ '*'
    • مثال: "123-45-6789" يصبح "--***"
  • regexp_replace(email, '(^[^@]+)(@.*$)', '****$2') as masked_email:
    • (^[^@]+) يلتقط كل شيء قبل رمز @
    • (@.*$) يلتقط @ وكل شيء بعده
    • يستبدل الجزء الأول بـ '****' ويحتفظ بجزء النطاق
    • مثال: "" يصبح "****@email.com"
  • regexp_replace(phone, '[0-9]', '#') as masked_phone:
    • يستبدل جميع الأرقام بـ'#'
    • مثال: "123-456-7890" يصبح "###-###-####"

لذا يتم تحويل بياناتك كما يلي: 

  • البيانات الأصلية:
name: John Doe
ssn: 123-45-6789
email: [email protected]
phone: 123-456-7890

  • البيانات المقنعة:
masked_name: XXXX XXX
masked_ssn: ***-**-****
masked_email: ****@email.com
masked_phone: ###-###-####

تنفيذ Python

Python

 

إخفاء البيانات بناءً على القواعد

دعني أشرح عملية إخفاء البيانات ببساطة قبل الانغماس في جوانبها التقنية.

إخفاء البيانات هو عملية إخفاء أو إزالة المعلومات الحساسة من المستندات أو قواعد البيانات مع الحفاظ على الهيكل العام والمحتوى غير الحساس. فكر فيه كما لو كنت تستخدم قلم تظليل أسود لإخفاء المعلومات السرية على وثيقة مطبوعة، ولكن بشكل رقمي.

لنقم الآن بتنفيذ إخفاء البيانات باستخدام DuckDB و Python. لقد أضفت هذا المقتطف البرمجي مع تعليقات حتى تتمكن من متابعته بسهولة.

Python

 

نتائج عينية

قبل الإخفاء:

name       email              sensitive_field
John Doe   [email protected] CC: 4532-1234-5678-9012

بعد الإخفاء:

name       email      sensitive_field
(REDACTED) (REDACTED) (REDACTEd)

استنتاج

DuckDB هو قاعدة بيانات بسيطة ولكن قوية في الذاكرة التي يمكن أن تساعد في إصلاح البيانات الحساسة. 

تذكر دائمًا:

  • التحقق من البيانات المقنعة الخاصة بك.
  • استخدام المعالجة المتوازية لمجموعات بيانات كبيرة.
  • الاستفادة من تكامل DuckDB مع S3 لبيانات السحابة.
  • كن حذرًا من استخدام الذاكرة عند معالجة الملفات الكبيرة.

Source:
https://dzone.com/articles/developers-guide-handling-sensitive-data-with-duckdb