Elimine datos confidenciales de la transmisión de datos casi en tiempo real con Amazon Comprehend y Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Redacte datos confidenciales de la transmisión de datos casi en tiempo real con Amazon Comprehend y Amazon Kinesis Data Firehose

La entrega de datos e información casi en tiempo real permite a las empresas responder rápidamente a las necesidades de sus clientes. Los datos en tiempo real pueden provenir de una variedad de fuentes, que incluyen redes sociales, dispositivos IoT, monitoreo de infraestructura, monitoreo de centros de llamadas y más. Debido a la amplitud y profundidad de los datos que se incorporan de múltiples fuentes, las empresas buscan soluciones para proteger la privacidad de sus clientes y evitar que se acceda a datos confidenciales desde los sistemas finales. Anteriormente, tenía que confiar en motores de reglas de información de identificación personal (PII) que podían marcar falsos positivos o perder datos, o tenía que crear y mantener modelos personalizados de aprendizaje automático (ML) para identificar PII en sus datos de transmisión. También necesitaba implementar y mantener la infraestructura necesaria para admitir estos motores o modelos.

Para ayudar a agilizar este proceso y reducir costos, puede utilizar Amazon Comprehend, un servicio de procesamiento de lenguaje natural (NLP) que usa ML para encontrar información y relaciones como personas, lugares, sentimientos y temas en texto no estructurado. Ahora puede usar las capacidades de Amazon Comprehend ML para detectar y redactar PII en correos electrónicos de clientes, tickets de soporte, reseñas de productos, redes sociales y más. No se requiere experiencia en ML. Por ejemplo, puede analizar tickets de soporte y artículos de conocimientos para detectar entidades PII y redactar el texto antes de indexar los documentos. Después de eso, los documentos están libres de entidades PII y los usuarios pueden consumir los datos. La redacción de entidades de PII lo ayuda a proteger la privacidad de su cliente y cumplir con las leyes y regulaciones locales.

En esta publicación, aprenderá cómo implementar Amazon Comprehend en sus arquitecturas de transmisión para redactar entidades PII casi en tiempo real usando Manguera de bomberos de datos de Amazon Kinesis AWS Lambda.

Esta publicación se centra en la redacción de datos de campos seleccionados que se incorporan a una arquitectura de transmisión mediante Kinesis Data Firehose, donde desea crear, almacenar y mantener copias derivadas adicionales de los datos para el consumo de los usuarios finales o las aplicaciones posteriores. si estás usando Secuencias de datos de Amazon Kinesis o tiene casos de uso adicionales fuera de la redacción de PII, consulte Traduzca, redacte y analice datos de transmisión mediante funciones SQL con Amazon Kinesis Data Analytics, Amazon Translate y Amazon Comprehend, donde mostramos cómo puedes usar Estudio de análisis de datos de Amazon Kinesis creado por Zepelín apache y Apache Flink para analizar, traducir y redactar de forma interactiva campos de texto en datos de transmisión.

Resumen de la solución

La siguiente figura muestra una arquitectura de ejemplo para realizar la redacción de PII de datos de transmisión en tiempo real, utilizando Servicio de almacenamiento simple de Amazon (Amazon S3), Transformación de datos de Kinesis Data Firehose, Amazon Comprehendy AWS Lambda. Además, utilizamos el AWS SDK para Python (Boto3) para las funciones Lambda. Como se indica en el diagrama, el depósito sin procesar de S3 contiene datos no redactados y el depósito redactado de S3 contiene datos redactados después de usar Amazon Comprehend DetectPiiEntities API dentro de una función Lambda.

Costos involucrados

Además de los costos de Kinesis Data Firehose, Amazon S3 y Lambda, esta solución generará costos de uso de Amazon Comprehend. El monto que paga es un factor de la cantidad total de registros que contienen PII y los caracteres que procesa la función Lambda. Para obtener más información, consulte Precios de Amazon Kinesis Data Firehose, Precios de Amazon Comprehendy Precios de AWS Lambda.

Como ejemplo, supongamos que tiene 10,000 500 registros y el valor clave del que desea redactar la PII es de 10,000 caracteres. De los 50 XNUMX registros, se identifica que XNUMX contienen PII. El detalle de los costos es el siguiente:

Contiene PII Costo:

  • Tamaño de cada valor clave = 500 caracteres (1 unidad = 100 caracteres)
  • Número de unidades (100 caracteres) por registro (el mínimo es 3 unidades) = 5
  • Unidades totales = 10,000 5 (registros) x 1 (unidades por registro) x 50,000 (solicitudes de Amazon Comprehend por registro) = XNUMX XNUMX
  • Precio por unidad = $ 0.000002
    • Costo total para identificar registros de registro con PII mediante la API de ContainersPiiEntities = 0.1 USD [50,000 0.000002 unidades x XNUMX USD] 

Redactar PII Costo:

  • Unidades totales que contienen PII = 50 (registros) x 5 (unidades por registro) x 1 (solicitudes de Amazon Comprehend por registro) = 250
  • Precio por unidad = $ 0.0001
    • Costo total para identificar la ubicación de PII mediante la API de DetectPiiEntities = [número de unidades] x [costo por unidad] = 250 x 0.0001 USD = 0.025 USD

Costo total de identificación y redacción:

  • Costo total: $0.1 (validación si el campo contiene PII) + $0.025 (redactar campos que contienen PII) = $0.125

Implemente la solución con AWS CloudFormation

Para esta publicación, proporcionamos un Formación en la nube de AWS redacción de datos de transmisión plantilla, que proporciona los detalles completos de la implementación para permitir implementaciones repetibles. Tras la implementación, esta plantilla crea dos depósitos S3: uno para almacenar los datos de muestra sin procesar recopilados de Amazon Kinesis Data Generator (KDG) y otro para almacenar los datos redactados. Además, crea un flujo de entrega de Kinesis Data Firehose con DirectPUT como entrada, y una función Lambda que llama a Amazon Comprehend Contiene entidades Pii y Detectar entidades Pii API para identificar y redactar datos PII. La función de Lambda se basa en la entrada del usuario en las variables de entorno para determinar qué valores clave deben inspeccionarse en busca de PII.

La función Lambda en esta solución tiene tamaños de carga útil limitados a 100 KB. Si se proporciona una carga útil en la que el texto es superior a 100 KB, la función de Lambda la omitirá.

Para implementar la solución, complete los siguientes pasos:

  1. Lanzar la pila de CloudFormation en EE. UU. Este (Norte de Virginia) us-east-1:
    Elimine datos confidenciales de la transmisión de datos casi en tiempo real con Amazon Comprehend y Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  2. Ingrese un nombre de pila y deje otros parámetros en su valor predeterminado
  3. Seleccione Reconozco que AWS CloudFormation podría crear recursos de IAM con nombres personalizados.
  4. Elige Crear pila.

Implementar recursos manualmente

Si prefiere construir la arquitectura manualmente en lugar de utilizar AWS CloudFormation, complete los pasos de esta sección.

Crea los cubos de S3

Cree sus cubos S3 con los siguientes pasos:

  1. En la consola de Amazon S3, elija cubos en el panel de navegación.
  2. Elige Crear cubeta.
  3. Cree un depósito para sus datos sin procesar y otro para sus datos redactados.
  4. Anote los nombres de los cubos que acaba de crear.

Crear la función Lambda

Para crear e implementar la función Lambda, complete los siguientes pasos:

  1. En la consola Lambda, elija Crear función.
  2. Elige Autor desde cero.
  3. Nombre de la función, introduzca AmazonComprehendPII-Redact.
  4. Runtime, escoger 3.9 Python.
  5. Arquitectura, seleccione x86_64.
  6. Rol de ejecución, seleccione Cree un nuevo rol con permisos de Lambda.
  7. Después de crear la función, ingrese el siguiente código:
    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. Elige Despliegue.
  9. En el panel de navegación, elija Configuración.
  10. Navegue hasta Variables de entorno.
  11. Elige Editar.
  12. Clave, introduzca keys.
  13. Valor, ingrese los valores clave de los que desea eliminar la PII, separados por una coma y un espacio. Por ejemplo, ingrese Tweet1, Tweet2 si está utilizando los datos de prueba de muestra proporcionados en la siguiente sección de esta publicación.
  14. Elige Guardar.
  15. Navegue hasta Configuración general.
  16. Elige Editar.
  17. Cambiar el valor de Tiempo de espera a 1 minuto.
  18. Elige Guardar.
  19. Navegue hasta Permisos.
  20. Elija el nombre de la función en Rol de ejecución.
    Eres redirigido a Gestión de identidades y accesos de AWS (IAM) consola.
  21. Agregar permisos, escoger Adjuntar políticas.
  22. Participar Comprehend en la barra de búsqueda y elija la política ComprehendFullAccess.
  23. Elige Adjuntar políticas.

Crear el flujo de entrega de Firehose

Para crear su flujo de entrega de Firehose, complete los siguientes pasos:

  1. En la consola de Kinesis Data Firehose, elija Crear flujo de entrega.
  2. Fuente, seleccione PUT directa.
  3. Destino, seleccione Amazon S3.
  4. Nombre del flujo de entrega, introduzca ComprehendRealTimeBlog.
  5. under Transforme los registros de origen con AWS Lambda, seleccione implante.
  6. Función AWS Lambda, ingrese el ARN para la función que creó, o busque la función AmazonComprehendPII-Redact.
  7. Tamaño del búfer, establezca el valor en 1 MB.
  8. Intervalo de búfer, déjalo como 60 segundos.
  9. under Configuración de destino, seleccione el depósito de S3 que creó para los datos redactados.
  10. under Configuración de copia de seguridad, seleccione el depósito de S3 que creó para los registros sin procesar.
  11. under Permiso, cree o actualice una función de IAM, o elija una función existente con los permisos adecuados.
  12. Elige Crear flujo de entrega.

Implemente la solución de transmisión de datos con Kinesis Data Generator

Puede usar Kinesis Data Generator (KDG) para incorporar datos de muestra a Kinesis Data Firehose y probar la solución. Para simplificar este proceso, proporcionamos una función Lambda y una plantilla de CloudFormation para crear un Cognito Amazonas usuario y asigne los permisos apropiados para usar el KDG.

  1. En Página del generador de datos de Amazon Kinesis, escoger Crear un usuario de Cognito con CloudFormation.Se le redirigirá a la consola de AWS CloudFormation para crear su pila.
  2. Proporcione un nombre de usuario y una contraseña para el usuario con el que inicia sesión en el KDG.
  3. Deje las otras configuraciones en sus valores predeterminados y cree su pila.
  4. En Salidas pestaña, seleccione el enlace de la interfaz de usuario de KDG.
  5. Introduzca su nombre de usuario y contraseña para iniciar sesión.

Envíe registros de prueba y valide la redacción en Amazon S3

Para probar la solución, complete los siguientes pasos:

  1. Inicie sesión en la URL de KDG que creó en el paso anterior.
  2. Elija la región donde se implementó la pila de AWS CloudFormation.
  3. Flujo/flujo de entrega, elige el flujo de entrega que creaste (si usaste la plantilla, tiene el formato accountnumber-awscomprehend-blog).
  4. Deje las otras configuraciones en sus valores predeterminados.
  5. Para la plantilla de registro, puede crear sus propias pruebas o usar la siguiente plantilla. Si está usando los datos de muestra proporcionados a continuación para realizar pruebas, debe tener variables de entorno actualizadas en el AmazonComprehendPII-Redact función lambda a Tweet1, Tweet2. Si se implementa a través de CloudFormation, actualice las variables de entorno para Tweet1, Tweet2 dentro de la función Lambda creada. Los datos de prueba de muestra están a continuación:
    {"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. Elige Enviar datosy espere unos segundos para que los registros se envíen a su transmisión.
  7. Después de unos segundos, detenga el generador KDG y verifique los archivos entregados en sus cubos S3.

El siguiente es un ejemplo de los datos sin procesar en el depósito de S3 sin procesar:

{"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"}

El siguiente es un ejemplo de los datos redactados en el depósito de S3 redactado:

{"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"}

La información confidencial se eliminó de los mensajes redactados, lo que brinda la confianza de que puede compartir estos datos con los sistemas finales.

Limpiar

Cuando termine de experimentar con esta solución, limpie sus recursos mediante la consola de AWS CloudFormation para eliminar todos los recursos implementados en este ejemplo. Si siguió los pasos manuales, deberá eliminar manualmente los dos cubos, el AmazonComprehendPII-Redact función, la ComprehendRealTimeBlog flujo, el grupo de registro para el ComprehendRealTimeBlog stream y cualquier rol de IAM que se haya creado.

Conclusión

Esta publicación le mostró cómo integrar la redacción de PII en su arquitectura de transmisión casi en tiempo real y reducir el tiempo de procesamiento de datos al realizar la redacción en vuelo. En este escenario, usted proporciona los datos redactados a sus usuarios finales y un administrador del lago de datos protege el depósito sin procesar para su uso posterior. También puede crear un procesamiento adicional con Amazon Comprehend para identificar el tono o el sentimiento, identificar entidades dentro de los datos y clasificar cada mensaje.

Brindamos pasos individuales para cada servicio como parte de esta publicación y también incluimos una plantilla de CloudFormation que le permite aprovisionar los recursos necesarios en su cuenta. Esta plantilla debe usarse solo para pruebas de concepto o escenarios de prueba. Consulte las guías para desarrolladores para Amazon Comprehend, lambday Manguera de incendios de datos de Kinesis para cualquier límite de servicio.

Para comenzar con la identificación y redacción de PII, consulte Información de identificación personal (PII). Con la arquitectura de ejemplo de esta publicación, podría integrar cualquiera de las API de Amazon Comprehend con datos casi en tiempo real mediante la transformación de datos de Kinesis Data Firehose. Para obtener más información sobre lo que puede crear con sus datos casi en tiempo real con Kinesis Data Firehose, consulte la Guía para desarrolladores de Amazon Kinesis Data Firehose. Esta solución está disponible en todas las regiones de AWS donde están disponibles Amazon Comprehend y Kinesis Data Firehose.


Sobre los autores

Elimine datos confidenciales de la transmisión de datos casi en tiempo real con Amazon Comprehend y Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai. joe morotti es un arquitecto de soluciones en Amazon Web Services (AWS), que ayuda a los clientes empresariales en todo el medio oeste de EE. UU. Ha ocupado una amplia gama de funciones técnicas y disfruta mostrando el arte de lo posible de los clientes. En su tiempo libre, disfruta pasar tiempo de calidad con su familia explorando nuevos lugares y analizando en exceso el rendimiento de su equipo deportivo.

Elimine datos confidenciales de la transmisión de datos casi en tiempo real con Amazon Comprehend y Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Sriharsh Adari es arquitecto sénior de soluciones en Amazon Web Services (AWS), donde ayuda a los clientes a trabajar hacia atrás a partir de los resultados comerciales para desarrollar soluciones innovadoras en AWS. A lo largo de los años, ha ayudado a varios clientes en la transformación de plataformas de datos en verticales de la industria. Su área principal de especialización incluye estrategia tecnológica, análisis de datos y ciencia de datos. En su tiempo libre, le gusta jugar al tenis, ver programas de televisión en exceso y jugar a la tabla.

Sello de tiempo:

Mas de Aprendizaje automático de AWS