قم بتمرير البيانات الحساسة من تدفق البيانات في الوقت الفعلي تقريبًا باستخدام Amazon Comprehend و Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

قم بتمرير البيانات الحساسة من تدفق البيانات في الوقت الفعلي تقريبًا باستخدام Amazon Comprehend و Amazon Kinesis Data Firehose

يُمكِّن تسليم البيانات والرؤى في الوقت الفعلي تقريبًا الشركات من الاستجابة بسرعة لاحتياجات عملائها. يمكن أن تأتي البيانات في الوقت الفعلي من مجموعة متنوعة من المصادر ، بما في ذلك وسائل التواصل الاجتماعي وأجهزة إنترنت الأشياء ومراقبة البنية التحتية ومراقبة مركز الاتصال والمزيد. نظرًا لاتساع وعمق البيانات التي يتم استيعابها من مصادر متعددة ، تبحث الشركات عن حلول لحماية خصوصية عملائها ومنع الوصول إلى البيانات الحساسة من الأنظمة النهائية. كان عليك في السابق الاعتماد على محركات قواعد معلومات التعريف الشخصية (PII) التي يمكنها الإبلاغ عن الإيجابيات الزائفة أو فقدان البيانات ، أو كان عليك إنشاء نماذج مخصصة للتعلم الآلي (ML) وصيانتها لتحديد معلومات تحديد الهوية الشخصية في بياناتك المتدفقة. تحتاج أيضًا إلى تنفيذ وصيانة البنية التحتية اللازمة لدعم هذه المحركات أو النماذج.

للمساعدة في تبسيط هذه العملية وتقليل التكاليف ، يمكنك استخدام فهم الأمازون، خدمة معالجة اللغة الطبيعية (NLP) التي تستخدم التعلم الآلي للعثور على رؤى وعلاقات مثل الأشخاص والأماكن والمشاعر والموضوعات في نص غير منظم. يمكنك الآن استخدام إمكانات Amazon Comprehend ML لاكتشاف معلومات تحديد الهوية الشخصية وتنقيحها في رسائل البريد الإلكتروني للعملاء ، وتذاكر الدعم ، ومراجعات المنتجات ، ووسائل التواصل الاجتماعي ، والمزيد. لا يلزم وجود خبرة ML. على سبيل المثال ، يمكنك تحليل تذاكر الدعم والمقالات المعرفية لاكتشاف كيانات معلومات تحديد الهوية الشخصية وتنقيح النص قبل فهرسة المستندات. بعد ذلك ، تصبح المستندات خالية من كيانات PII ويمكن للمستخدمين استهلاك البيانات. تساعدك كيانات تنقيح معلومات تحديد الهوية الشخصية على حماية خصوصية العميل والامتثال للقوانين واللوائح المحلية.

في هذا المنشور ، ستتعلم كيفية تنفيذ Amazon Comprehend في بنيات البث الخاصة بك لتنقيح كيانات PII في الوقت الفعلي تقريبًا باستخدام أمازون كينسيس داتا فايرهاوس مع AWS لامدا.

يركز هذا المنشور على تنقيح البيانات من الحقول المحددة التي يتم استيعابها في بنية التدفق باستخدام Kinesis Data Firehose ، حيث تريد إنشاء نسخ مشتقة إضافية من البيانات وتخزينها والاحتفاظ بها للاستهلاك من قبل المستخدمين النهائيين أو التطبيقات النهائية. إذا كنت تستخدم ملفات الأمازون كينسيس دفق البيانات أو لديك حالات استخدام إضافية خارج تنقيح معلومات تحديد الهوية الشخصية ، يرجى الرجوع إلى ترجمة وتحرير وتحليل البيانات المتدفقة باستخدام وظائف SQL مع Amazon Kinesis Data Analytics و Amazon Translate و Amazon Comprehend، حيث نعرض كيف يمكنك استخدام استوديو تحليلات البيانات Amazon Kinesis مدعوم من اباتشي زيبلين و اباتشي فلينك لتحليل الحقول النصية وترجمتها وتنقيحها بشكل تفاعلي في تدفق البيانات.

حل نظرة عامة

يوضح الشكل التالي نموذجًا معماريًا لأداء تنقيح PII للبيانات المتدفقة في الوقت الفعلي ، باستخدام خدمة تخزين أمازون البسيطة (Amazon S3) ، Kinesis Data Firehose تحويل البيانات, فهم الأمازونو AWS لامدا. بالإضافة إلى ذلك ، نستخدم ملف AWS SDK لـ Python (Boto3) لوظائف لامدا. كما هو موضح في الرسم التخطيطي ، تحتوي حاوية S3 الأولية على بيانات غير منقحة ، بينما تحتوي حاوية S3 المنقحة على بيانات منقحة بعد استخدام Amazon Comprehend DetectPiiEntities API ضمن دالة Lambda.

التكاليف المترتبة على ذلك

بالإضافة إلى تكاليف Kinesis Data Firehose و Amazon S3 و Lambda ، سيتحمل هذا الحل تكاليف الاستخدام من Amazon Comprehend. المبلغ الذي تدفعه هو أحد عوامل العدد الإجمالي للسجلات التي تحتوي على معلومات PII والأحرف التي تتم معالجتها بواسطة دالة Lambda. لمزيد من المعلومات ، يرجى الرجوع إلى تسعير Amazon Kinesis Data Firehose, تسعير Amazon Comprehendو تسعير AWS Lambda.

على سبيل المثال ، لنفترض أن لديك 10,000 سجل ، والقيمة الأساسية التي تريد تنقيح معلومات تحديد الهوية الشخصية منها هي 500 حرف. من بين 10,000 سجل سجل ، تم تحديد 50 على أنها تحتوي على معلومات تحديد الهوية الشخصية. تفاصيل التكلفة هي كما يلي:

يحتوي على تكلفة معلومات تحديد الهوية الشخصية:

  • حجم كل قيمة مفتاح = 500 حرف (وحدة واحدة = 1 حرف)
  • عدد الوحدات (100 حرف) لكل سجل (الحد الأدنى 3 وحدات) = 5
  • إجمالي الوحدات = 10,000 (سجل) × 5 (وحدات لكل سجل) × 1 (طلبات Amazon Comprehend لكل سجل) = 50,000
  • سعر الوحدة = 0.000002 دولار
    • التكلفة الإجمالية لتحديد سجلات السجل باستخدام معلومات تحديد الهوية الشخصية باستخدام واجهة برمجة تطبيقات ContainsPiiEntities = 0.1 دولارًا أمريكيًا [50,000 وحدة × 0.000002 دولار أمريكي] 

تكلفة Redact PII:

  • إجمالي الوحدات التي تحتوي على معلومات PII = 50 (سجلات) × 5 (وحدات لكل سجل) × 1 (طلبات Amazon Comprehend لكل سجل) = 250
  • سعر الوحدة = 0.0001 دولار
    • التكلفة الإجمالية لتحديد موقع معلومات تحديد الهوية الشخصية باستخدام واجهة برمجة تطبيقات DetectPiiEntities = [عدد الوحدات] x [التكلفة لكل وحدة] = 250 x 0.0001 USD = 0.025 USD

التكلفة الإجمالية للتعريف والتنقيح:

  • التكلفة الإجمالية: 0.1 دولارًا أمريكيًا (التحقق إذا كان الحقل يحتوي على معلومات تحديد الهوية الشخصية) + 0.025 دولارًا (حقول التنقيح التي تحتوي على معلومات تحديد الهوية الشخصية) = 0.125 دولارًا أمريكيًا

انشر الحل باستخدام AWS CloudFormation

لهذا المنشور ، نحن نقدم تكوين سحابة AWS تدفق تنقيح البيانات قالب، والذي يوفر التفاصيل الكاملة للتنفيذ لتمكين عمليات النشر القابلة للتكرار. عند النشر ، يُنشئ هذا القالب اثنين من حاويات S3: واحدة لتخزين بيانات العينة الأولية التي يتم إدخالها من Amazon Kinesis Data Generator (KDG) ، والأخرى لتخزين البيانات المنقحة. بالإضافة إلى ذلك ، يقوم بإنشاء تدفق توصيل Kinesis Data Firehose باستخدام DirectPUT كمدخلات ، ووظيفة Lambda التي تستدعي Amazon Comprehend يحتوي على كيانات و DetectPiiEntities API لتحديد وتنقيح بيانات PII. تعتمد وظيفة Lambda على مدخلات المستخدم في متغيرات البيئة لتحديد القيم الأساسية التي يجب فحصها لمعرفة معلومات تحديد الهوية الشخصية.

وظيفة Lambda في هذا الحل لها أحجام حمولة محدودة تصل إلى 100 كيلوبايت. إذا تم توفير حمولة حيث كان النص أكبر من 100 كيلوبايت ، فستتخطى وظيفة Lambda.

لنشر الحل ، أكمل الخطوات التالية:

  1. إطلاق حزمة CloudFormation في شرق الولايات المتحدة (شمال فيرجينيا) us-east-1:
    قم بتمرير البيانات الحساسة من تدفق البيانات في الوقت الفعلي تقريبًا باستخدام Amazon Comprehend و Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. البحث العمودي. عاي.
  2. أدخل اسم المكدس ، واترك المعلمات الأخرى على الإعدادات الافتراضية
  3. أختار أقر بأن AWS CloudFormation قد ينشئ موارد IAM بأسماء مخصصة.
  4. اختار إنشاء مكدس.

انشر الموارد يدويًا

إذا كنت تفضل إنشاء البنية يدويًا بدلاً من استخدام AWS CloudFormation ، فأكمل الخطوات الواردة في هذا القسم.

أنشئ حاويات S3

قم بإنشاء حاويات S3 الخاصة بك من خلال الخطوات التالية:

  1. في وحدة تحكم Amazon S3 ، اختر الدلاء في جزء التنقل.
  2. اختار إنشاء دلو.
  3. أنشئ دلوًا واحدًا لبياناتك الأولية وآخر لبياناتك المنقحة.
  4. لاحظ أسماء المستودعات التي أنشأتها للتو.

قم بإنشاء وظيفة Lambda

لإنشاء ونشر وظيفة Lambda ، أكمل الخطوات التالية:

  1. في وحدة تحكم لامدا ، اختر خلق وظيفة.
  2. اختار مؤلف من الصفر.
  3. في حالة اسم الوظيفة، أدخل AmazonComprehendPII-Redact.
  4. في حالة وقت التشغيل، اختر بيثون 3.9.
  5. في حالة معمار، حدد x86_64.
  6. في حالة دور التنفيذ، حدد أنشئ دورًا جديدًا باستخدام أذونات Lambda.
  7. بعد إنشاء الوظيفة ، أدخل الرمز التالي:
    import json
    import boto3
    import os
    import base64
    import sys
    
    def lambda_handler(event, context):
        
        output = []
        
        for record in event['records']:
            
            # Gathers keys from enviroment variables and makes a list of desired keys to check for PII
            rawkeys = os.environ['keys']
            splitkeys = rawkeys.split(", ")
            print(splitkeys)
            #decode base64
            #Kinesis data is base64 encoded so decode here
            payloadraw=base64.b64decode(record["data"]).decode('utf-8')
            #Loads decoded payload into json
            payloadjsonraw = json.loads(payloadraw)
            
            # Creates Comprehend client
            comprehend_client = boto3.client('comprehend')
            
            
            # This codes handles the logic to check for keys, identify if PII exists, and redact PII if available. 
            for i in payloadjsonraw:
                # checks if the key found in the message matches a redact
                if i in splitkeys:
                    print("Redact key found, checking for PII")
                    payload = str(payloadjsonraw[i])
                    # check if payload size is less than 100KB
                    if sys.getsizeof(payload) < 99999:
                        print('Size is less than 100KB checking if value contains PII')
                        # Runs Comprehend ContainsPiiEntities API call to see if key value contains PII
                        pii_identified = comprehend_client.contains_pii_entities(Text=payload, LanguageCode='en')
                        
                        # If PII is not found, skip over key
                        if (pii_identified['Labels']) == []:
                            print('No PII found')
                        else:
                        # if PII is found, run through redaction logic
                            print('PII found redacting')
                            # Runs Comprehend DetectPiiEntities call to find exact location of PII
                            response = comprehend_client.detect_pii_entities(Text=payload, LanguageCode='en')
                            entities = response['Entities']
                            # creates redacted_payload which will be redacted
                            redacted_payload = payload
                            # runs through a loop that gathers necessary values from Comprehend API response and redacts values
                            for entity in entities:
                                char_offset_begin = entity['BeginOffset']
                                char_offset_end = entity['EndOffset']
                                redacted_payload = redacted_payload[:char_offset_begin] + '*'*(char_offset_end-char_offset_begin) + redacted_payload[char_offset_end:]
                            # replaces original value with redacted value
                            payloadjsonraw[i] = redacted_payload
                            print(str(payloadjsonraw[i]))
                    else:
                        print ('Size is more than 100KB, skipping inspection')
                else:
                    print("Key value not found in redaction list")
            
            redacteddata = json.dumps(payloadjsonraw)
            
            # adds inspected record to record
            output_record = {
                'recordId': record['recordId'],
                'result': 'Ok',
                'data' : base64.b64encode(redacteddata.encode('utf-8'))
            }
            output.append(output_record)
            print(output_record)
            
        print('Successfully processed {} records.'.format(len(event['records'])))
        
        return {'records': output}

  8. اختار نشر.
  9. في جزء التنقل ، اختر التكوين.
  10. انتقل إلى متغيرات البيئة.
  11. اختار تعديل.
  12. في حالة القفل، أدخل keys.
  13. في حالة القيم، أدخل القيم الأساسية التي تريد تنقيح معلومات تحديد الهوية الشخصية منها ، مفصولة بفاصلة ومسافة. على سبيل المثال ، أدخل Tweet1, Tweet2 إذا كنت تستخدم بيانات الاختبار النموذجية الواردة في القسم التالي من هذا المنشور.
  14. اختار حفظ.
  15. انتقل إلى التكوين العام.
  16. اختار تعديل.
  17. تغيير قيمة مهلة إلى 1 دقيقة.
  18. اختار حفظ.
  19. انتقل إلى أذونات.
  20. اختر اسم الدور تحته دور التنفيذ.
    تتم إعادة توجيهك إلى إدارة الهوية والوصول AWS (IAM).
  21. في حالة أضف أذونات، اختر إرفاق السياسات.
  22. أدخل Comprehend في شريط البحث واختر السياسة ComprehendFullAccess.
  23. اختار إرفاق السياسات.

قم بإنشاء تدفق توصيل Firehose

لإنشاء تدفق تسليم Firehose ، أكمل الخطوات التالية:

  1. في وحدة التحكم Kinesis Data Firehose ، اختر إنشاء دفق التسليم.
  2. في حالة مصدر، حدد وضع مباشر.
  3. في حالة الرحلات، حدد الأمازون S3.
  4. في حالة اسم تيار التسليم، أدخل ComprehendRealTimeBlog.
  5. تحت قم بتحويل سجلات المصدر باستخدام AWS Lambda، حدد تمكين.
  6. في حالة دالة AWS Lambda، أدخل ARN للوظيفة التي قمت بإنشائها ، أو استعرض للوصول إلى الوظيفة AmazonComprehendPII-Redact.
  7. في حالة حجم المخزن المؤقت، اضبط القيمة على 1 ميغا بايت.
  8. في حالة الفاصل الزمني للمخزن المؤقت، اتركها 60 ثانية.
  9. تحت إعدادات الوجهة، حدد حاوية S3 التي قمت بإنشائها للبيانات المنقحة.
  10. تحت إعدادات النسخ الاحتياطي، حدد حاوية S3 التي قمت بإنشائها للسجلات الأولية.
  11. تحت إذن، إما إنشاء أو تحديث دور IAM ، أو اختيار دور حالي مع الأذونات المناسبة.
  12. اختار إنشاء دفق التسليم.

انشر حل تدفق البيانات باستخدام Kinesis Data Generator

يمكنك استخدام Kinesis Data Generator (KDG) لإدخال عينة من البيانات إلى Kinesis Data Firehose واختبار الحل. لتبسيط هذه العملية ، نقدم وظيفة Lambda ونموذج CloudFormation لإنشاء ملف أمازون كوجنيتو المستخدم وتعيين الأذونات المناسبة لاستخدام KDG.

  1. على صفحة Amazon Kinesis Data Generator، اختر أنشئ مستخدم Cognito باستخدام CloudFormationتتم إعادة توجيهك إلى وحدة تحكم AWS CloudFormation لإنشاء مكدس الخاص بك.
  2. أدخل اسم مستخدم وكلمة مرور للمستخدم الذي من خلاله تقوم بتسجيل الدخول إلى KDG.
  3. اترك الإعدادات الأخرى على الإعدادات الافتراضية الخاصة بها وقم بإنشاء مكدس الخاص بك.
  4. على النواتج علامة التبويب ، اختر رابط KDG UI.
  5. ادخل اسم المستخدم وكلمة المرور للدخول.

أرسل سجلات الاختبار وتحقق من صحة التنقيح في Amazon S3

لاختبار الحل ، أكمل الخطوات التالية:

  1. قم بتسجيل الدخول إلى عنوان URL الخاص بـ KDG الذي قمت بإنشائه في الخطوة السابقة.
  2. اختر المنطقة التي تم فيها نشر مكدس AWS CloudFormation.
  3. في حالة تيار / تسليم تيار، اختر تدفق التسليم الذي أنشأته (إذا استخدمت النموذج ، فسيكون له التنسيق accountnumber-awscomprehend-blog).
  4. اترك الإعدادات الأخرى في إعداداتها الافتراضية.
  5. بالنسبة لقالب السجل ، يمكنك إنشاء الاختبارات الخاصة بك ، أو استخدام النموذج التالي. إذا كنت تستخدم البيانات النموذجية المتوفرة أدناه للاختبار ، فيجب أن يكون لديك متغيرات البيئة المحدثة في AmazonComprehendPII-Redact وظيفة Lambda ل Tweet1, Tweet2. إذا تم النشر عبر CloudFormation ، فقم بتحديث متغيرات البيئة إلى Tweet1, Tweet2 ضمن وظيفة Lambda التي تم إنشاؤها. بيانات اختبار العينة أدناه:
    {"User":"12345", "Tweet1":" Good morning, everybody. My name is Van Bokhorst Serdar, and today I feel like sharing a whole lot of personal information with you. Let's start with my Email address SerdarvanBokhorst@dayrep.com. My address is 2657 Koontz Lane, Los Angeles, CA. My phone number is 818-828-6231.", "Tweet2": "My Social security number is 548-95-6370. My Bank account number is 940517528812 and routing number 195991012. My credit card number is 5534816011668430, Expiration Date 6/1/2022, my C V V code is 121, and my pin 123456. Well, I think that's it. You know a whole lot about me. And I hope that Amazon comprehend is doing a good job at identifying PII entities so you can redact my personal information away from this streaming record. Let's check"}

  6. اختار أرسل البيانات، وانتظر بضع ثوانٍ لإرسال السجلات إلى مجموعة البث الخاصة بك.
  7. بعد بضع ثوانٍ ، أوقف منشئ KDG وتحقق من دلاء S3 الخاصة بك بحثًا عن الملفات التي تم تسليمها.

فيما يلي مثال على البيانات الأولية في حاوية S3 الأولية:

{"User":"12345", "Tweet1":" Good morning, everybody. My name is Van Bokhorst Serdar, and today I feel like sharing a whole lot of personal information with you. Let's start with my Email address SerdarvanBokhorst@dayrep.com. My address is 2657 Koontz Lane, Los Angeles, CA. My phone number is 818-828-6231.", "Tweet2": "My Social security number is 548-95-6370. My Bank account number is 940517528812 and routing number 195991012. My credit card number is 5534816011668430, Expiration Date 6/1/2022, my C V V code is 121, and my pin 123456. Well, I think that's it. You know a whole lot about me. And I hope that Amazon comprehend is doing a good job at identifying PII entities so you can redact my personal information away from this streaming record. Let's check"}

فيما يلي مثال على البيانات المنقحة في حاوية S3 المنقحة:

{"User":"12345", "Tweet1":"Good morning, everybody. My name is *******************, and today I feel like sharing a whole lot of personal information with you. Let's start with my Email address ****************************. My address is ********************************** My phone number is ************.", "Tweet"2: "My Social security number is ***********. My Bank account number is ************ and routing number *********. My credit card number is ****************, Expiration Date ********, my C V V code is ***, and my pin ******. Well, I think that's it. You know a whole lot about me. And I hope that Amazon comprehend is doing a good job at identifying PII entities so you can redact my personal information away from this streaming record. Let's check"}

تمت إزالة المعلومات الحساسة من الرسائل المنقحة ، مما يوفر الثقة في أنه يمكنك مشاركة هذه البيانات مع الأنظمة النهائية.

تنظيف

عندما تنتهي من تجربة هذا الحل ، قم بتنظيف مواردك باستخدام وحدة تحكم AWS CloudFormation لحذف جميع الموارد المنشورة في هذا المثال. إذا اتبعت الخطوات اليدوية ، فستحتاج إلى حذف المجموعتين يدويًا ، ملف AmazonComprehendPII-Redact وظيفة، و ComprehendRealTimeBlog تيار ، مجموعة السجل الخاصة بـ ComprehendRealTimeBlog وأية أدوار IAM تم إنشاؤها.

وفي الختام

أوضح لك هذا المنشور كيفية دمج تنقيح معلومات تحديد الهوية الشخصية في بنية التدفق شبه الحقيقي وتقليل وقت معالجة البيانات عن طريق إجراء التنقيح أثناء الطيران. في هذا السيناريو ، تقوم بتوفير البيانات المنقحة للمستخدمين النهائيين ويقوم مسئول بحيرة البيانات بتأمين الحاوية الأولية للاستخدام لاحقًا. يمكنك أيضًا إنشاء معالجة إضافية باستخدام Amazon Comprehend لتحديد النغمة أو المشاعر وتحديد الكيانات داخل البيانات وتصنيف كل رسالة.

قدمنا ​​خطوات فردية لكل خدمة كجزء من هذا المنشور ، وقمنا أيضًا بتضمين نموذج CloudFormation الذي يسمح لك بتوفير الموارد المطلوبة في حسابك. يجب استخدام هذا النموذج لإثبات المفهوم أو اختبار السيناريوهات فقط. الرجوع إلى أدلة المطور ل فهم الأمازون, لامداو Kinesis Data Firehose لأي حدود خدمة.

للبدء في تحديد PII وتنقيحها ، راجع معلومات التعريف الشخصية (PII). باستخدام بنية المثال في هذا المنشور ، يمكنك دمج أي من واجهات برمجة تطبيقات Amazon Comprehend مع بيانات شبه فورية باستخدام تحويل بيانات Kinesis Data Firehose. لمعرفة المزيد حول ما يمكنك إنشاؤه باستخدام بياناتك في الوقت الفعلي تقريبًا باستخدام Kinesis Data Firehose ، يُرجى الرجوع إلى دليل مطور Amazon Kinesis Data Firehose. يتوفر هذا الحل في جميع مناطق AWS حيث يتوفر Amazon Comprehend و Kinesis Data Firehose.


عن المؤلفين

قم بتمرير البيانات الحساسة من تدفق البيانات في الوقت الفعلي تقريبًا باستخدام Amazon Comprehend و Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. البحث العمودي. عاي. جو موروتي مهندس حلول في Amazon Web Services (AWS) ، يساعد عملاء المؤسسات في جميع أنحاء الغرب الأوسط بالولايات المتحدة. لقد شغل مجموعة واسعة من الأدوار الفنية ويستمتع بإظهار فن العميل الممكن. في أوقات فراغه ، يستمتع بقضاء وقت ممتع مع عائلته في استكشاف أماكن جديدة والإفراط في تحليل أداء فريقه الرياضي

قم بتمرير البيانات الحساسة من تدفق البيانات في الوقت الفعلي تقريبًا باستخدام Amazon Comprehend و Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. البحث العمودي. عاي.سريهارش أداري هو مهندس حلول أول في Amazon Web Services (AWS) ، حيث يساعد العملاء على العمل بشكل عكسي من نتائج الأعمال لتطوير حلول مبتكرة على AWS. على مر السنين ، ساعد العديد من العملاء في تحويلات منصة البيانات عبر قطاعات الصناعة. تشمل مجالات خبرته الأساسية استراتيجية التكنولوجيا وتحليلات البيانات وعلوم البيانات. في أوقات فراغه ، يستمتع بلعب التنس ومشاهدة البرامج التلفزيونية بنهم ولعب الطبلة.

الطابع الزمني:

اكثر من التعلم الآلي من AWS