Видаляйте конфіденційні дані з потокових даних майже в реальному часі за допомогою Amazon Comprehend і Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Видаляйте конфіденційні дані з потокових даних майже в реальному часі за допомогою Amazon Comprehend і Amazon Kinesis Data Firehose

Передача даних і аналізу в режимі майже в реальному часі дозволяє компаніям швидко реагувати на потреби клієнтів. Дані в реальному часі можуть надходити з різних джерел, включаючи соціальні мережі, пристрої IoT, моніторинг інфраструктури, моніторинг колл-центру тощо. Завдяки широті та глибині даних, які надходять із багатьох джерел, компанії шукають рішення для захисту конфіденційності своїх клієнтів і захисту конфіденційних даних від доступу з кінцевих систем. Раніше вам доводилося покладатися на механізми правил щодо ідентифікаційної інформації (PII), які могли позначати помилкові спрацьовування або пропускати дані, або вам доводилося створювати та підтримувати власні моделі машинного навчання (ML), щоб ідентифікувати PII у ваших потокових даних. Вам також потрібно було запровадити та підтримувати інфраструктуру, необхідну для підтримки цих механізмів або моделей.

Щоб спростити цей процес і зменшити витрати, ви можете використовувати «Амазонка», служба обробки природної мови (NLP), яка використовує ML для пошуку інформації та зв’язків, як-от людей, місць, настроїв і тем, у неструктурованому тексті. Тепер ви можете використовувати можливості Amazon Comprehend ML для виявлення та редагування ідентифікаційної інформації в електронних листах клієнтів, заявках у службу підтримки, оглядах продуктів, соціальних мережах тощо. Досвід ML не потрібен. Наприклад, ви можете проаналізувати запити служби підтримки та статті бази знань, щоб виявити ідентифікаційні сутності та відредагувати текст, перш ніж індексувати документи. Після цього документи звільняються від ідентифікаційної інформації, і користувачі можуть використовувати дані. Редагування ідентифікаційних даних допомагає вам захистити конфіденційність ваших клієнтів і дотримуватися місцевих законів і правил.

У цій публікації ви дізнаєтесь, як застосувати Amazon Comprehend у вашій потоковій архітектурі, щоб редагувати ідентифікаційні сутності майже в реальному часі за допомогою Amazon Kinesis Data Firehose з AWS Lambda.

Ця публікація зосереджена на редагуванні даних із вибраних полів, які завантажуються в потокову архітектуру за допомогою Kinesis Data Firehose, де ви хочете створювати, зберігати та підтримувати додаткові похідні копії даних для використання кінцевими користувачами або додатками нижче. Якщо ви використовуєте Потоки даних Amazon Kinesis або мати додаткові випадки використання поза редакцією ідентифікаційної інформації, див Перекладайте, редагуйте й аналізуйте потокові дані за допомогою функцій SQL із Amazon Kinesis Data Analytics, Amazon Translate та Amazon Comprehend, де ми показуємо, як можна використовувати Студія аналітики даних Amazon Kinesis живлення від Апач Цепелін та Apache Flash для інтерактивного аналізу, перекладу та редагування текстових полів у потокових даних.

Огляд рішення

На наступному малюнку показано приклад архітектури для редагування ідентифікаційної інформації потокових даних у реальному часі за допомогою Служба простого зберігання Amazon (Amazon S3), Kinesis Data Перетворення даних Firehose, «Амазонка» та AWS Lambda. Крім того, ми використовуємо AWS SDK для Python (Boto3) для лямбда-функцій. Як показано на схемі, необроблений сегмент S3 містить невідредаговані дані, а відредагований сегмент S3 містить відредаговані дані після використання Amazon Comprehend DetectPiiEntities API у лямбда-функції.

Залучені витрати

Окрім витрат на Kinesis Data Firehose, Amazon S3 і Lambda, це рішення спричинить витрати на використання від Amazon Comprehend. Сума, яку ви сплачуєте, є фактором загальної кількості записів, які містять ідентифікаційну інформацію, і символів, які обробляються функцією лямбда. Для отримання додаткової інформації див Ціни Amazon Kinesis Data Firehose, Amazon Comprehend Pricing та Ціни AWS Lambda.

Для прикладу припустімо, що у вас є 10,000 500 записів журналу, а значення ключа, з якого ви хочете відредагувати ідентифікаційну інформацію, становить 10,000 символів. З 50 XNUMX записів журналу XNUMX визначено як такі, що містять ідентифікаційну інформацію. Деталі вартості такі:

Містить вартість ідентифікаційної інформації:

  • Розмір кожного значення ключа = 500 символів (1 одиниця = 100 символів)
  • Кількість одиниць (100 символів) на запис (мінімум 3 одиниці) = 5
  • Усього одиниць = 10,000 5 (записів) x 1 (одиниць на запис) x 50,000 (запитів Amazon Comprehend на запис) = XNUMX XNUMX
  • Ціна за одиницю = 0.000002 $
    • Загальна вартість ідентифікації записів журналу з ідентифікаційною інформацією за допомогою ContainsPiiEntities API = $0.1 [50,000 0.000002 одиниць x $XNUMX] 

Відредагувати вартість ідентифікаційної інформації:

  • Загальна кількість одиниць, що містять ідентифікаційну інформацію = 50 (записів) x 5 (одиниць на запис) x 1 (запитів Amazon Comprehend на запис) = 250
  • Ціна за одиницю = 0.0001 $
    • Загальна вартість визначення місцезнаходження ідентифікаційної інформації за допомогою DetectPiiEntities API = [кількість одиниць] x [вартість за одиницю] = 250 x 0.0001 $ = 0.025 $

Загальна вартість ідентифікації та редагування:

  • Загальна вартість: 0.1 дол. США (перевірка, якщо поле містить ідентифікаційну інформацію) + 0.025 дол. США (редагувати поля, які містять ідентифікаційну інформацію) = 0.125 дол. США

Розгорніть рішення за допомогою AWS CloudFormation

Для цієї публікації ми надаємо файл AWS CloudFormation редагування потокових даних шаблон, який містить усі деталі впровадження, щоб уможливити повторювані розгортання. Після розгортання цей шаблон створює два сегменти S3: одне для зберігання необроблених зразків даних, отриманих із Amazon Kinesis Data Generator (KDG), і друге для зберігання відредагованих даних. Крім того, він створює потік доставки Kinesis Data Firehose DirectPUT як вхідні дані та функцію Lambda, яка викликає Amazon Comprehend Містить PiiEntities та DetectPiiEntities API для ідентифікації та редагування ідентифікаційних даних. Функція лямбда покладається на введені користувачем змінні середовища, щоб визначити, які ключові значення потрібно перевірити на ідентифікаційну інформацію.

Функція Lambda в цьому рішенні має обмежений розмір корисного навантаження до 100 КБ. Якщо надається корисне навантаження, де текст перевищує 100 КБ, функція Lambda пропустить його.

Щоб розгорнути рішення, виконайте такі дії:

  1. Запустіть стек CloudFormation на сході США (Північна Вірджинія) us-east-1:
    Видаляйте конфіденційні дані з потокових даних майже в реальному часі за допомогою Amazon Comprehend і Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  2. Введіть назву стека та залиште інші параметри за замовчуванням
  3. Select Я визнаю, що AWS CloudFormation може створювати ресурси IAM із користувацькими іменами.
  4. Вибирати Створити стек.

Розгорнути ресурси вручну

Якщо ви віддаєте перевагу будувати архітектуру вручну замість використання AWS CloudFormation, виконайте кроки в цьому розділі.

Створіть сегменти S3

Створіть свої сегменти S3, виконавши такі кроки:

  1. На консолі Amazon S3 виберіть Відра у навігаційній панелі.
  2. Вибирати Створити відро.
  3. Створіть одне відро для необроблених даних і одне для відредагованих даних.
  4. Зверніть увагу на назви щойно створених сегментів.

Створіть лямбда-функцію

Щоб створити та розгорнути функцію Lambda, виконайте такі дії:

  1. На консолі Lambda виберіть Створити функцію.
  2. Вибирати Автор з нуля.
  3. для Назва функції, введіть AmazonComprehendPII-Redact.
  4. для Час виконаннявиберіть Python 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. для значення, введіть ключові значення, з яких потрібно видалити ідентифікаційну інформацію, розділивши їх комою та пробілом. Наприклад, enter Tweet1, Tweet2 якщо ви використовуєте зразки тестових даних, надані в наступному розділі цієї публікації.
  14. Вибирати зберегти.
  15. перейдіть до Загальна конфігурація.
  16. Вибирати Редагувати.
  17. Зміна значення Тайм-аут до 1 хвилини.
  18. Вибирати зберегти.
  19. перейдіть до Дозволи.
  20. Виберіть назву ролі під Виконавча роль.
    Ви перенаправлені на Управління ідентифікацією та доступом AWS (IAM) консоль.
  21. для Додати дозволивиберіть Додайте політику.
  22. Що натомість? Створіть віртуальну версію себе у Comprehend у рядок пошуку та виберіть політику ComprehendFullAccess.
  23. Вибирати Додайте політику.

Створіть потік доставки Firehose

Щоб створити потік доставки Firehose, виконайте такі дії:

  1. На консолі Kinesis Data Firehose виберіть Створіть потік доставки.
  2. для Sourceвиберіть Прямий ПУТ.
  3. для призначеннявиберіть Amazon 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 Лямбда-функція до Tweet1, Tweet2. У разі розгортання через CloudFormation оновіть змінні середовища до Tweet1, Tweet2 у створеній лямбда-функції. Зразок тестових даних наведено нижче:
    {"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). За допомогою прикладу архітектури в цій публікації ви можете інтегрувати будь-який API 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. Вертикальний пошук. Ai. Джо Моротті є архітектором рішень у Amazon Web Services (AWS), допомагаючи корпоративним клієнтам на Середньому Заході США. Він обіймав широкий спектр технічних посад і любив демонструвати клієнтам мистецтво можливого. У свій вільний час він із задоволенням проводить час із сім’єю, досліджуючи нові місця та надмірно аналізуючи результати своєї спортивної команди.

Видаляйте конфіденційні дані з потокових даних майже в реальному часі за допомогою Amazon Comprehend і Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Шріхарш Адарі є старшим архітектором рішень у Amazon Web Services (AWS), де він допомагає клієнтам працювати у зворотному напрямку від бізнес-результатів для розробки інноваційних рішень на AWS. Протягом багатьох років він допомагав багатьом клієнтам трансформувати платформу даних у різних галузевих вертикалях. Його основна сфера знань включає технологічну стратегію, аналітику даних і науку про дані. У вільний час він любить грати в теніс, дивитися телевізійні шоу та грати в таблу.

Часова мітка:

Більше від AWS Машинне навчання