با استفاده از Amazon Comprehend و Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence، داده‌های حساس را از جریان داده‌ها در زمان تقریباً واقعی ویرایش کنید. جستجوی عمودی Ai.

با استفاده از Amazon Comprehend و Amazon Kinesis Data Firehose داده‌های حساس را از جریان داده‌ها در زمان تقریباً واقعی ویرایش کنید.

تحویل تقریباً بی‌درنگ داده‌ها و بینش‌ها، کسب‌وکارها را قادر می‌سازد تا به سرعت به نیازهای مشتریان خود پاسخ دهند. داده‌های بلادرنگ می‌توانند از منابع مختلفی از جمله رسانه‌های اجتماعی، دستگاه‌های اینترنت اشیا، نظارت بر زیرساخت، نظارت بر مرکز تماس و غیره به دست آیند. به دلیل گستردگی و عمق داده‌هایی که از منابع متعدد جذب می‌شوند، کسب‌وکارها به دنبال راه‌حل‌هایی برای محافظت از حریم خصوصی مشتریان خود و جلوگیری از دسترسی به داده‌های حساس از سیستم‌های نهایی هستند. قبلاً مجبور بودید به موتورهای قواعد اطلاعات شخصی (PII) که می‌توانند موارد مثبت کاذب را علامت‌گذاری کنند یا داده‌ها را از دست می‌دهند، تکیه می‌کردید، یا باید مدل‌های یادگیری ماشینی سفارشی (ML) را برای شناسایی PII در داده‌های جریانی خود ایجاد و نگهداری می‌کردید. شما همچنین نیاز به پیاده سازی و حفظ زیرساخت های لازم برای پشتیبانی از این موتورها یا مدل ها داشتید.

برای کمک به ساده سازی این فرآیند و کاهش هزینه ها، می توانید استفاده کنید درک آمازون، یک سرویس پردازش زبان طبیعی (NLP) که از ML برای یافتن بینش ها و روابطی مانند افراد، مکان ها، احساسات و موضوعات در متن بدون ساختار استفاده می کند. اکنون می توانید از قابلیت های Amazon Comprehend ML برای شناسایی و ویرایش PII در ایمیل های مشتری، بلیط های پشتیبانی، بررسی محصول، رسانه های اجتماعی و موارد دیگر استفاده کنید. هیچ تجربه ML مورد نیاز نیست. برای مثال، می‌توانید بلیط‌های پشتیبانی و مقالات دانش را برای شناسایی نهادهای PII تجزیه و تحلیل کنید و قبل از فهرست‌بندی اسناد، متن را ویرایش کنید. پس از آن، اسناد عاری از نهادهای PII هستند و کاربران می توانند داده ها را مصرف کنند. ویرایش نهادهای PII به شما کمک می کند از حریم خصوصی مشتری خود محافظت کنید و از قوانین و مقررات محلی پیروی کنید.

در این پست، نحوه پیاده سازی Amazon Comprehend را در معماری های جریان خود می آموزید تا موجودیت های PII را در زمان واقعی با استفاده از آن ویرایش کنید. Amazon Kinesis Data Firehose با AWS لامبدا.

این پست بر ویرایش داده‌ها از فیلدهای انتخابی متمرکز شده است که با استفاده از Kinesis Data Firehose وارد یک معماری جریان می‌شوند، جایی که می‌خواهید نسخه‌های مشتق شده اضافی از داده‌ها را برای مصرف توسط کاربران نهایی یا برنامه‌های پایین‌دستی ایجاد، ذخیره و نگهداری کنید. اگر استفاده می کنید آمازون کینزیس جریان داده یا موارد استفاده اضافی خارج از ویرایش PII، مراجعه کنید ترجمه، ویرایش و تجزیه و تحلیل جریان داده ها با استفاده از توابع SQL با Amazon Kinesis Data Analytics، Amazon Translate و Amazon Comprehend، جایی که نشان می دهیم چگونه می توانید استفاده کنید Amazon Kinesis Data Analytics Studio طراحی توسط آپاچی زپلین و آپاچی فلینک برای تجزیه و تحلیل تعاملی، ترجمه و ویرایش فیلدهای متنی در جریان داده ها.

بررسی اجمالی راه حل

شکل زیر نمونه ای از معماری را برای انجام ویرایش PII جریان داده در زمان واقعی با استفاده از آن نشان می دهد سرویس ذخیره سازی ساده آمازون (Amazon S3) Kinesis Data Firehose تبدیل داده, درک آمازونو AWS لامبدا. علاوه بر این، ما از AWS SDK برای پایتون (Boto3) برای توابع لامبدا همانطور که در نمودار نشان داده شده است، سطل خام S3 حاوی داده های بدون ویرایش است و سطل ویرایش شده S3 حاوی داده های ویرایش شده پس از استفاده از Amazon Comprehend است. DetectPiiEntities API در یک تابع Lambda.

هزینه های مربوطه

علاوه بر هزینه های Kinesis Data Firehose، Amazon S3 و Lambda، این راه حل هزینه های استفاده از Amazon Comprehend را نیز متحمل خواهد شد. مبلغی که پرداخت می کنید فاکتوری از تعداد کل رکوردهای حاوی PII و کاراکترهایی است که توسط تابع Lambda پردازش می شوند. برای اطلاعات بیشتر مراجعه کنید قیمت گذاری Amazon Kinesis Data Firehose, قیمت گذاری جامع آمازونو قیمت گذاری AWS Lambda.

به عنوان مثال، فرض کنید 10,000 رکورد log دارید و مقدار کلیدی که می خواهید PII را از آن ویرایش کنید 500 کاراکتر است. از 10,000 رکورد log، 50 مورد دارای PII هستند. جزئیات هزینه به شرح زیر است:

شامل هزینه PII:

  • اندازه هر کلید = 500 کاراکتر (1 واحد = 100 کاراکتر)
  • تعداد واحدها (100 کاراکتر) در هر رکورد (حداقل 3 واحد است) = 5
  • مجموع واحدها = 10,000 (سوابق) x 5 (واحد در هر رکورد) x 1 (درخواست آمازون Comprehend در هر رکورد) = 50,000
  • قیمت هر واحد = 0.000002 دلار
    • هزینه کل برای شناسایی رکوردهای گزارش با PII با استفاده از ContainsPiiEntities API = 0.1 دلار [50,000 واحد x 0.000002 دلار] 

هزینه ویرایش PII:

  • مجموع واحدهای حاوی PII = 50 (سوابق) x 5 (واحد در هر رکورد) x 1 (درخواست آمازون Comprehend در هر رکورد) = 250
  • قیمت هر واحد = 0.0001 دلار
    • کل هزینه برای شناسایی مکان PII با استفاده از DetectPiiEntities API = [تعداد واحدها] x [هزینه هر واحد] = 250 x 0.0001 دلار = 0.025 دلار

کل هزینه برای شناسایی و ویرایش:

  • هزینه کل: 0.1 دلار (در صورتی که فیلد حاوی PII باشد، اعتبارسنجی) + 0.025 دلار (فیلدهایی که حاوی PII هستند را ویرایش کنید) = 0.125 دلار

راه حل را با AWS CloudFormation مستقر کنید

برای این پست، ما یک AWS CloudFormation ویرایش داده های جریانی قالب، که جزئیات کامل پیاده سازی را برای فعال کردن استقرارهای تکرارپذیر ارائه می دهد. پس از استقرار، این الگو دو سطل S3 ایجاد می‌کند: یکی برای ذخیره داده‌های نمونه خام دریافت شده از Amazon Kinesis Data Generator (KDG) و دیگری برای ذخیره داده‌های ویرایش شده. علاوه بر این، یک جریان تحویل Kinesis Data Firehose ایجاد می کند DirectPUT به عنوان ورودی و تابع Lambda که آمازون Comprehend را فراخوانی می کند حاوی PiiEntities و DetectPiiEntities API برای شناسایی و ویرایش داده های PII. تابع Lambda به ورودی کاربر در متغیرهای محیطی متکی است تا تعیین کند چه مقادیر کلیدی باید برای PII بررسی شوند.

تابع لامبدا در این راه حل، حجم محموله را به 100 کیلوبایت محدود می کند. اگر حجم متن بیشتر از 100 کیلوبایت باشد، تابع Lambda از آن صرفنظر می کند.

برای استقرار راه حل، مراحل زیر را انجام دهید:

  1. راه اندازی پشته CloudFormation در شرق ایالات متحده (N. Virginia) us-east-1:
    با استفاده از Amazon Comprehend و Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence، داده‌های حساس را از جریان داده‌ها در زمان تقریباً واقعی ویرایش کنید. جستجوی عمودی Ai.
  2. نام پشته را وارد کنید و سایر پارامترها را در حالت پیش فرض قرار دهید
  3. انتخاب کنید من تصدیق می کنم که AWS CloudFormation ممکن است منابع IAM را با نام های سفارشی ایجاد کند.
  4. را انتخاب کنید پشته ایجاد کنید.

منابع را به صورت دستی مستقر کنید

اگر ترجیح می دهید به جای استفاده از AWS CloudFormation، معماری را به صورت دستی بسازید، مراحل این بخش را کامل کنید.

سطل های S3 را ایجاد کنید

سطل های S3 خود را با مراحل زیر ایجاد کنید:

  1. در کنسول آمازون 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. برای ارزش، مقادیر کلیدی را که می خواهید PII را از آنها ویرایش کنید، وارد کنید، که با کاما و فاصله از هم جدا شده اند. برای مثال وارد کنید 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 برای ایجاد یک الگو ارائه می‌کنیم Cognito آمازون کاربر و اختصاص مجوزهای مناسب برای استفاده از KDG.

  1. بر صفحه Amazon Kinesis Data Generator، انتخاب کنید یک کاربر Cognito با CloudFormation ایجاد کنیدبرای ایجاد پشته خود به کنسول AWS CloudFormation هدایت می شوید.
  2. برای کاربری که با آن وارد KDG می شوید یک نام کاربری و رمز عبور ارائه دهید.
  3. تنظیمات دیگر را در حالت پیش فرض خود بگذارید و پشته خود را ایجاد کنید.
  4. بر خروجی برگه، پیوند KDG UI را انتخاب کنید.
  5. نام کاربری و رمز عبور خود را برای ورود وارد کنید.

سوابق آزمایشی را ارسال کنید و ویرایش را در آمازون S3 تأیید کنید

برای آزمایش راه حل، مراحل زیر را انجام دهید:

  1. به URL KDG که در مرحله قبل ایجاد کردید وارد شوید.
  2. منطقه ای را انتخاب کنید که پشته AWS CloudFormation در آن مستقر شده است.
  3. برای جریان/جریان تحویل، جریان تحویلی که ایجاد کرده اید را انتخاب کنید (اگر از الگو استفاده کرده اید، فرمت آن را دارد accountnumber-awscomprehend-blog).
  4. تنظیمات دیگر را در حالت پیش فرض خود بگذارید.
  5. برای الگوی رکورد، می توانید آزمایش های خود را ایجاد کنید یا از الگوی زیر استفاده کنید. اگر از داده های نمونه ارائه شده در زیر برای آزمایش استفاده می کنید، باید متغیرهای محیطی به روز شده را در AmazonComprehendPII-Redact تابع لامبدا به 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 که ایجاد شده است.

نتیجه

این پست به شما نشان داد که چگونه ویرایش PII را در معماری جریان تقریباً واقعی خود ادغام کنید و با انجام ویرایش در پرواز، زمان پردازش داده را کاهش دهید. در این سناریو، شما داده های ویرایش شده را در اختیار کاربران نهایی خود قرار می دهید و یک مدیر دریاچه داده، سطل خام را برای استفاده بعدی ایمن می کند. همچنین می‌توانید پردازش‌های اضافی را با آمازون Comprehend برای شناسایی لحن یا احساسات، شناسایی موجودیت‌های درون داده‌ها و طبقه‌بندی هر پیام ایجاد کنید.

ما مراحل جداگانه ای را برای هر سرویس به عنوان بخشی از این پست ارائه کردیم و همچنین یک الگوی CloudFormation قرار دادیم که به شما امکان می دهد منابع مورد نیاز را در حساب خود تهیه کنید. این الگو باید فقط برای اثبات مفهوم یا سناریوهای آزمایشی استفاده شود. به راهنمای توسعه دهندگان مراجعه کنید درک آمازون, یازدهمین حرف الفبای یونانیو کینسیس دیتا فایرهوز برای هر گونه محدودیت خدمات

برای شروع با شناسایی و ویرایش PII، ببینید اطلاعات شناسایی شخصی (PII). با معماری مثال در این پست، می‌توانید هر یک از APIهای آمازون 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، داده‌های حساس را از جریان داده‌ها در زمان تقریباً واقعی ویرایش کنید. جستجوی عمودی Ai. جو موروتی یک معمار راه حل در خدمات وب آمازون (AWS) است که به مشتریان سازمانی در سراسر غرب میانه ایالات متحده کمک می کند. او طیف گسترده ای از نقش های فنی را بر عهده داشته است و از نمایش هنر ممکن مشتری لذت می برد. او در اوقات فراغت خود از گذراندن اوقات با کیفیت با خانواده خود برای کاوش در مکان های جدید و تحلیل بیش از حد عملکرد تیم ورزشی خود لذت می برد.

با استفاده از Amazon Comprehend و Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence، داده‌های حساس را از جریان داده‌ها در زمان تقریباً واقعی ویرایش کنید. جستجوی عمودی Ai.سریهرش آداری یک معمار ارشد راه حل در خدمات وب آمازون (AWS) است، جایی که او به مشتریان کمک می کند تا نسبت به نتایج کسب و کار عقب مانده برای توسعه راه حل های نوآورانه در AWS کار کنند. در طول سال‌ها، او به چندین مشتری در تحولات پلتفرم داده در سراسر صنعت کمک کرده است. حوزه اصلی تخصص او شامل استراتژی فناوری، تجزیه و تحلیل داده ها و علم داده است. او در اوقات فراغت خود از بازی تنیس، تماشای برنامه های تلویزیونی و بازی تبلا لذت می برد.

تمبر زمان:

بیشتر از آموزش ماشین AWS