Oscura i dati sensibili dai flussi di dati in tempo quasi reale utilizzando Amazon Comprehend e Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Elimina i dati sensibili dai dati in streaming quasi in tempo reale utilizzando Amazon Comprehend e Amazon Kinesis Data Firehose

La distribuzione quasi in tempo reale di dati e approfondimenti consente alle aziende di rispondere rapidamente alle esigenze dei propri clienti. I dati in tempo reale possono provenire da una varietà di fonti, inclusi social media, dispositivi IoT, monitoraggio dell'infrastruttura, monitoraggio del call center e altro ancora. A causa dell'ampiezza e della profondità dei dati acquisiti da più origini, le aziende cercano soluzioni per proteggere la privacy dei propri clienti e impedire l'accesso ai dati sensibili dai sistemi finali. In precedenza dovevi fare affidamento su motori di regole per le informazioni di identificazione personale (PII) che potevano segnalare falsi positivi o dati mancanti, oppure dovevi creare e mantenere modelli di machine learning (ML) personalizzati per identificare le PII nei tuoi dati di streaming. Dovevi anche implementare e mantenere l'infrastruttura necessaria per supportare questi motori o modelli.

Per semplificare questo processo e ridurre i costi, puoi utilizzare Amazon Comprehend, un servizio di elaborazione del linguaggio naturale (NLP) che utilizza il ML per trovare approfondimenti e relazioni come persone, luoghi, sentimenti e argomenti in testo non strutturato. Ora puoi utilizzare le funzionalità di Amazon Comprehend ML per rilevare e modificare le PII nelle e-mail dei clienti, nei ticket di supporto, nelle recensioni dei prodotti, nei social media e altro ancora. Non è richiesta alcuna esperienza di machine learning. Ad esempio, puoi analizzare ticket di supporto e articoli della conoscenza per rilevare entità PII e redigere il testo prima di indicizzare i documenti. Successivamente, i documenti sono privi di entità PII e gli utenti possono consumare i dati. La redazione di entità PII ti aiuta a proteggere la privacy dei tuoi clienti e a rispettare le leggi e i regolamenti locali.

In questo post imparerai come implementare Amazon Comprehend nelle tue architetture di streaming per redigere entità PII quasi in tempo reale utilizzando Firehose dati Amazon Kinesis con AWS Lambda.

Questo post è incentrato sulla redazione dei dati da campi selezionati che vengono inseriti in un'architettura di streaming utilizzando Kinesis Data Firehose, in cui si desidera creare, archiviare e mantenere copie derivate aggiuntive dei dati per il consumo da parte degli utenti finali o delle applicazioni downstream. Se stai usando Flussi di dati di Amazon Kinesis o avere casi d'uso aggiuntivi al di fuori della redazione delle PII, fare riferimento a Traduci, modifica e analizza i dati in streaming utilizzando le funzioni SQL con Amazon Kinesis Data Analytics, Amazon Translate e Amazon Comprehend, dove mostriamo come puoi usare Studio di analisi dei dati di Amazon Kinesis offerto da Zeppelin Apache ed Apache Flink per analizzare, tradurre e redigere in modo interattivo i campi di testo nei dati in streaming.

Panoramica della soluzione

La figura seguente mostra un'architettura di esempio per eseguire la redazione PII di dati in streaming in tempo reale, utilizzando Servizio di archiviazione semplice Amazon (Amazon S3), Trasformazione dei dati di Kinesis Data Firehose, Amazon Comprehende AWS Lambda. Inoltre, utilizziamo il SDK AWS per Python (Boto3) per le funzioni Lambda. Come indicato nel diagramma, il bucket non elaborato S3 contiene dati non modificati e il bucket S3 modificato contiene dati oscurati dopo aver utilizzato Amazon Comprehend DetectPiiEntities API all'interno di una funzione Lambda.

Costi coinvolti

Oltre ai costi di Kinesis Data Firehose, Amazon S3 e Lambda, questa soluzione comporterà costi di utilizzo da parte di Amazon Comprehend. L'importo da pagare è un fattore del numero totale di record che contengono PII e i caratteri elaborati dalla funzione Lambda. Per ulteriori informazioni, fare riferimento a Prezzi di Amazon Kinesis Data Firehose, Prezzi comprensivi di Amazone Prezzi di AWS Lambda.

Ad esempio, supponiamo che tu abbia 10,000 record di log e che il valore chiave da cui vuoi redigere le PII sia 500 caratteri. Dei 10,000 record di registro, 50 sono identificati come contenenti PII. I dettagli dei costi sono i seguenti:

Contiene PII Costo:

  • Dimensione di ogni valore chiave = 500 caratteri (1 unità = 100 caratteri)
  • Numero di unità (100 caratteri) per record (il minimo è 3 unità) = 5
  • Unità totali = 10,000 (record) x 5 (unità per record) x 1 (richieste Amazon Comprehend per record) = 50,000
  • Prezzo per unità = $ 0.000002
    • Costo totale per l'identificazione dei record di registro con PII utilizzando l'API ContainsPiiEntities = $ 0.1 [50,000 unità x $ 0.000002] 

Redigere PII Costo:

  • Unità totali contenenti PII = 50 (record) x 5 (unità per record) x 1 (richieste Amazon Comprehend per record) = 250
  • Prezzo per unità = $ 0.0001
    • Costo totale per l'identificazione della posizione delle PII utilizzando l'API DetectPiiEntities = [numero di unità] x [costo per unità] = 250 x 0.0001 USD = 0.025 USD

Costo totale per l'identificazione e la redazione:

  • Costo totale: $ 0.1 (convalida se il campo contiene PII) + $ 0.025 (escludi i campi che contengono PII) = $ 0.125

Distribuisci la soluzione con AWS CloudFormation

Per questo post, forniamo un AWS CloudFormazione redazione dei dati in streaming modello, che fornisce tutti i dettagli dell'implementazione per consentire distribuzioni ripetibili. Al momento della distribuzione, questo modello crea due bucket S3: uno per archiviare i dati di esempio grezzi acquisiti da Amazon Kinesis Data Generator (KDG) e uno per archiviare i dati redatti. Inoltre, crea un flusso di consegna Kinesis Data Firehose con DirectPUT come input e una funzione Lambda che chiama Amazon Comprehend ContienePiiEntità ed Rileva EntitàPii API per identificare e redigere i dati PII. La funzione Lambda si basa sull'input dell'utente nelle variabili di ambiente per determinare quali valori chiave devono essere controllati per le PII.

La funzione Lambda in questa soluzione ha dimensioni del carico utile limitate a 100 KB. Se viene fornito un payload in cui il testo è maggiore di 100 KB, la funzione Lambda lo salterà.

Per distribuire la soluzione, completare i seguenti passaggi:

  1. Avvia lo stack CloudFormation negli Stati Uniti orientali (Virginia settentrionale) us-east-1:
    Oscura i dati sensibili dai flussi di dati in tempo quasi reale utilizzando Amazon Comprehend e Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.
  2. Immettere un nome di stack e lasciare gli altri parametri ai valori predefiniti
  3. Seleziona Riconosco che AWS CloudFormation potrebbe creare risorse IAM con nomi personalizzati.
  4. Scegli Crea stack.

Distribuisci risorse manualmente

Se preferisci creare l'architettura manualmente invece di utilizzare AWS CloudFormation, completa i passaggi in questa sezione.

Crea i bucket S3

Crea i tuoi bucket S3 con i seguenti passaggi:

  1. Sulla console Amazon S3, scegli Secchi nel pannello di navigazione.
  2. Scegli Crea un secchio.
  3. Crea un bucket per i tuoi dati grezzi e uno per i tuoi dati redatti.
  4. Prendi nota dei nomi dei bucket che hai appena creato.

Crea la funzione Lambda

Per creare e distribuire la funzione Lambda, completare i seguenti passaggi:

  1. Sulla console Lambda, selezionare Crea funzione.
  2. Scegli Autore da zero.
  3. Nel Nome della funzione, accedere AmazonComprehendPII-Redact.
  4. Nel Runtimescegli Python 3.9.
  5. Nel Architettura, selezionare x86_64.
  6. Nel Ruolo di esecuzione, selezionare Crea un nuovo ruolo con autorizzazioni Lambda.
  7. Dopo aver creato la funzione, immettere il codice seguente:
    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. Scegli Schierare.
  9. Nel pannello di navigazione, scegli Configurazione.
  10. Spostarsi Variabili ambientali.
  11. Scegli Modifica.
  12. Nel Le, accedere keys.
  13. Nel Valore, inserisci i valori chiave da cui vuoi redigere le PII, separati da una virgola e uno spazio. Ad esempio, inserisci Tweet1, Tweet2 se stai utilizzando i dati del test di esempio forniti nella sezione successiva di questo post.
  14. Scegli Risparmi.
  15. Spostarsi Configurazione generale.
  16. Scegli Modifica.
  17. Cambia il valore di timeout a 1 minuto.
  18. Scegli Risparmi.
  19. Spostarsi Permessi.
  20. Scegli il nome del ruolo sotto Ruolo di esecuzione.
    Sei reindirizzato al Gestione dell'identità e dell'accesso di AWS console (IAM).
  21. Nel Aggiungi autorizzazioniscegli Allega criteri.
  22. entrare Comprehend nella barra di ricerca e scegli la politica ComprehendFullAccess.
  23. Scegli Allega criteri.

Crea il flusso di consegna Firehose

Per creare il tuo flusso di consegna Firehose, completa i seguenti passaggi:

  1. Nella console di Kinesis Data Firehose, selezionare Crea flusso di consegna.
  2. Nel Fonte, selezionare PUT diretto.
  3. Nel Nei Dintorni, selezionare Amazon S3.
  4. Nel Nome flusso di consegna, accedere ComprehendRealTimeBlog.
  5. Sotto Trasforma i record di origine con AWS Lambda, selezionare abilitato.
  6. Nel Funzione AWS Lambda, inserisci l'ARN per la funzione che hai creato o cerca la funzione AmazonComprehendPII-Redact.
  7. Nel Dimensione buffer, impostare il valore su 1 MB.
  8. Nel Intervallo tampone, lascialo come 60 secondi.
  9. Sotto Impostazioni di destinazione, seleziona il bucket S3 che hai creato per i dati redatti.
  10. Sotto impostazioni di backup, seleziona il bucket S3 che hai creato per i record non elaborati.
  11. Sotto permesso, crea o aggiorna un ruolo IAM oppure scegli un ruolo esistente con le autorizzazioni appropriate.
  12. Scegli Crea flusso di consegna.

Distribuisci la soluzione di dati in streaming con Kinesis Data Generator

È possibile utilizzare Kinesis Data Generator (KDG) per importare dati campione in Kinesis Data Firehose e testare la soluzione. Per semplificare questo processo, forniamo una funzione Lambda e un modello CloudFormation per creare un file Amazzonia Cognito utente e assegnare le autorizzazioni appropriate per utilizzare il KDG.

  1. Sulla Pagina Amazon Kinesis Data Generatorscegli Crea un utente Cognito con CloudFormation.Sei reindirizzato alla console AWS CloudFormation per creare il tuo stack.
  2. Fornisci un nome utente e una password per l'utente con cui accedi al KDG.
  3. Lascia le altre impostazioni ai valori predefiniti e crea il tuo stack.
  4. Sulla Uscite scheda, scegli il collegamento dell'interfaccia utente di KDG.
  5. Inserisci il tuo nome utente e password per accedere.

Invia record di test e convalida la redazione in Amazon S3

Per testare la soluzione, completare i seguenti passaggi:

  1. Accedi all'URL KDG che hai creato nel passaggio precedente.
  2. Scegli la regione in cui è stato distribuito lo stack AWS CloudFormation.
  3. Nel Stream/flusso di consegna, scegli il flusso di consegna che hai creato (se hai utilizzato il modello, ha il formato accountnumber-awscomprehend-blog).
  4. Lascia le altre impostazioni ai valori predefiniti.
  5. Per il modello di record, puoi creare i tuoi test o utilizzare il modello seguente. Se stai utilizzando i dati di esempio forniti di seguito per i test, dovresti avere le variabili di ambiente aggiornate nel AmazonComprehendPII-Redact Funzione Lambda a Tweet1, Tweet2. Se distribuito tramite CloudFormation, aggiorna le variabili di ambiente a Tweet1, Tweet2 all'interno della funzione Lambda creata. I dati del test di esempio sono di seguito:
    {"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. Scegli Invia i datie attendi alcuni secondi per l'invio dei record al tuo stream.
  7. Dopo alcuni secondi, arresta il generatore KDG e controlla i tuoi bucket S3 per i file consegnati.

Quello che segue è un esempio dei dati grezzi nel bucket S3 non elaborato:

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

Quello che segue è un esempio dei dati redatti nel bucket S3 modificato:

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

Le informazioni sensibili sono state rimosse dai messaggi oscurati, garantendo la possibilità di condividere questi dati con i sistemi finali.

Pulire

Al termine della sperimentazione di questa soluzione, ripulisci le risorse utilizzando la console AWS CloudFormation per eliminare tutte le risorse distribuite in questo esempio. Se hai seguito i passaggi manuali, dovrai eliminare manualmente i due bucket, il AmazonComprehendPII-Redact funzione, il ComprehendRealTimeBlog stream, il gruppo di log per il ComprehendRealTimeBlog stream e tutti i ruoli IAM creati.

Conclusione

Questo post ti ha mostrato come integrare la redazione delle PII nella tua architettura di streaming quasi in tempo reale e ridurre i tempi di elaborazione dei dati eseguendo la redazione in volo. In questo scenario, fornisci i dati redatti ai tuoi utenti finali e un amministratore di data lake protegge il bucket non elaborato per un uso successivo. Puoi anche creare un'elaborazione aggiuntiva con Amazon Comprehend per identificare il tono o il sentiment, identificare le entità all'interno dei dati e classificare ogni messaggio.

Abbiamo fornito singoli passaggi per ciascun servizio come parte di questo post e incluso un modello CloudFormation che ti consente di fornire le risorse richieste nel tuo account. Questo modello deve essere utilizzato solo per prove di concetto o scenari di test. Fare riferimento alle guide per gli sviluppatori per Amazon Comprehend, Lambdae Kinesis Data Firehose per eventuali limiti di servizio.

Per iniziare con l'identificazione e la redazione delle PII, vedere Informazioni di identificazione personale (PII). Con l'architettura di esempio in questo post, puoi integrare qualsiasi API di Amazon Comprehend con dati quasi in tempo reale utilizzando la trasformazione dei dati di Kinesis Data Firehose. Per ulteriori informazioni su cosa puoi creare con i tuoi dati quasi in tempo reale con Kinesis Data Firehose, fai riferimento a Guida per gli sviluppatori di Amazon Kinesis Data Firehose. Questa soluzione è disponibile in tutte le regioni AWS in cui sono disponibili Amazon Comprehend e Kinesis Data Firehose.


Circa gli autori

Oscura i dati sensibili dai flussi di dati in tempo quasi reale utilizzando Amazon Comprehend e Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Ricerca verticale. Ai. Joe Morotti è un Solutions Architect presso Amazon Web Services (AWS), che aiuta i clienti Enterprise nel Midwest degli Stati Uniti. Ha ricoperto una vasta gamma di ruoli tecnici e si diverte a mostrare l'arte del possibile da parte dei clienti. Nel tempo libero, gli piace passare del tempo di qualità con la sua famiglia, esplorando nuovi posti e analizzando eccessivamente le prestazioni della sua squadra sportiva

Oscura i dati sensibili dai flussi di dati in tempo quasi reale utilizzando Amazon Comprehend e Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Sriharsh Adari è Senior Solutions Architect presso Amazon Web Services (AWS), dove aiuta i clienti a lavorare a ritroso dai risultati aziendali per sviluppare soluzioni innovative su AWS. Nel corso degli anni, ha aiutato più clienti nelle trasformazioni della piattaforma dati in tutti i settori verticali. Le sue principali aree di competenza includono la strategia tecnologica, l'analisi dei dati e la scienza dei dati. Nel tempo libero, gli piace giocare a tennis, guardare programmi TV e giocare a Tabla.

Timestamp:

Di più da Apprendimento automatico di AWS