Редактируйте конфиденциальные данные из потоковых данных практически в реальном времени с помощью Amazon Comprehend и Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Редактируйте конфиденциальные данные из потоковых данных практически в реальном времени с помощью Amazon Comprehend и Amazon Kinesis Data Firehose.

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

Чтобы упростить этот процесс и сократить расходы, вы можете использовать Amazon Comprehend, службу обработки естественного языка (NLP), которая использует машинное обучение для поиска идей и отношений, таких как люди, места, настроения и темы в неструктурированном тексте. Теперь вы можете использовать возможности Amazon Comprehend ML для обнаружения и редактирования PII в электронных письмах клиентов, запросах в службу поддержки, обзорах продуктов, социальных сетях и т. д. Опыт ML не требуется. Например, вы можете анализировать запросы в службу поддержки и статьи базы знаний, чтобы обнаруживать объекты PII и редактировать текст перед индексированием документов. После этого документы освобождаются от объектов PII, и пользователи могут использовать данные. Редактирование объектов PII помогает вам защитить конфиденциальность ваших клиентов и соблюдать местные законы и правила.

В этом посте вы узнаете, как внедрить Amazon Comprehend в свои потоковые архитектуры для редактирования объектов PII почти в реальном времени с помощью Пожарный шланг данных Amazon Kinesis AWS Lambda.

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

Обзор решения

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

Затраты

В дополнение к расходам на Kinesis Data Firehose, Amazon S3 и Lambda, это решение будет нести расходы на использование от Amazon Comprehend. Сумма, которую вы платите, зависит от общего количества записей, содержащих PII, и символов, которые обрабатываются функцией Lambda. Для получения дополнительной информации см. Цены на Amazon Kinesis Data Firehose, Amazon понимают ценыи Цены на AWS Lambda.

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

Содержит стоимость PII:

  • Размер каждого ключевого значения = 500 символов (1 единица = 100 символов)
  • Количество единиц (100 символов) в записи (минимум 3 единицы) = 5
  • Всего единиц = 10,000 5 (записей) x 1 (единиц на запись) x 50,000 (запросов Amazon Comprehend на запись) = XNUMX XNUMX
  • Цена за единицу = 0.000002 $
    • Общая стоимость идентификации записей журнала с помощью PII с помощью ContainsPiiEntities API = 0.1 доллара США [50,000 0.000002 единиц x XNUMX доллара США] 

Изменить стоимость PII:

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

Общая стоимость идентификации и редактирования:

  • Общая стоимость: 0.1 доллара США (проверка, если поле содержит персональные данные) + 0.025 доллара США (удаление полей, содержащих персональные данные) = 0.125 доллара США.

Разверните решение с помощью AWS CloudFormation

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

Функция 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, выполните следующие шаги:

  1. На лямбда-консоли выберите Создать функцию.
  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. Что касается Значение, введите ключевые значения, из которых вы хотите удалить PII, разделенные запятой и пробелом. Например, введите Tweet1, Tweet2 если вы используете образцы тестовых данных, представленные в следующем разделе этого поста.
  14. Выберите Сохранить.
  15. Перейдите в Общая конфигурация.
  16. Выберите Редактировать.
  17. Измените значение Истек до 1 минуты.
  18. Выберите Сохранить.
  19. Перейдите в Разрешения....
  20. Выберите имя роли под Роль исполнения.
    Вы перенаправлены на Управление идентификацией и доступом AWS (IAM) консоль.
  21. Что касается Добавить разрешения, выберите Прикрепить политики.
  22. Enter Comprehend в строку поиска и выберите политику ComprehendFullAccess.
  23. Выберите Прикрепить политики.

Создайте поток доставки Firehose

Чтобы создать поток доставки Firehose, выполните следующие действия:

  1. На консоли Kinesis Data Firehose выберите Создать поток доставки.
  2. Что касается Источник, наведите на Прямой ПУТ.
  3. Что касается Направление, наведите на Amazon S3.
  4. Что касается Название потока доставки, войти ComprehendRealTimeBlog.
  5. Под Преобразование исходных записей с помощью AWS Lambda, наведите на Включено.
  6. Что касается Лямбда-функция AWS, введите 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, выберите Создайте пользователя Cognito с помощью CloudFormation.Вы будете перенаправлены в консоль AWS CloudFormation для создания стека.
  2. Укажите имя пользователя и пароль для пользователя, с которым вы входите в KDG.
  3. Оставьте остальные настройки по умолчанию и создайте свой стек.
  4. На Выходы выберите ссылку пользовательского интерфейса KDG.
  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.

Заключение

В этом посте показано, как интегрировать редактирование PII в вашу потоковую архитектуру почти в реальном времени и сократить время обработки данных, выполняя редактирование во время полета. В этом сценарии вы предоставляете отредактированные данные своим конечным пользователям, а администратор озера данных защищает необработанную корзину для последующего использования. Вы также можете создать дополнительную обработку с помощью Amazon Comprehend для определения тона или тональности, идентификации сущностей в данных и классификации каждого сообщения.

Мы предоставили отдельные шаги для каждой службы в рамках этого поста, а также включили шаблон CloudFormation, который позволяет вам предоставлять необходимые ресурсы в вашей учетной записи. Этот шаблон следует использовать только для проверки концепции или тестовых сценариев. Обратитесь к руководствам разработчика для Amazon Comprehend, Лямбдаи Пожарный шланг Kinesis Data для любых лимитов обслуживания.

Чтобы начать работу с идентификацией и редактированием PII, см. Информация, позволяющая установить личность (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. Вертикальный поиск. Ай. Джо Моротти является архитектором решений в Amazon Web Services (AWS), помогая корпоративным клиентам на Среднем Западе США. Он занимал множество технических должностей и с удовольствием демонстрировал клиентам искусство возможного. В свободное время он любит проводить время со своей семьей, исследуя новые места и анализируя результаты своей спортивной команды.

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

Отметка времени:

Больше от Машинное обучение AWS