Uredite občutljive podatke iz pretočnih podatkov v skoraj realnem času z uporabo Amazon Comprehend in Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Uredite občutljive podatke iz pretočnih podatkov v skoraj realnem času z uporabo Amazon Comprehend in Amazon Kinesis Data Firehose

Dostava podatkov in vpogledov v skoraj realnem času omogoča podjetjem, da se hitro odzovejo na potrebe svojih strank. Podatki v realnem času lahko prihajajo iz različnih virov, vključno s socialnimi mediji, napravami IoT, nadzorom infrastrukture, nadzorom klicnega centra in več. Zaradi širine in globine podatkov, ki se zaužijejo iz več virov, podjetja iščejo rešitve za zaščito zasebnosti svojih strank in preprečujejo dostop do občutljivih podatkov iz končnih sistemov. Prej ste se morali zanašati na mehanizme pravil za podatke, ki omogočajo osebno identifikacijo (PII), ki so lahko označevali lažno pozitivne ali zgrešene podatke, ali pa ste morali zgraditi in vzdrževati modele strojnega učenja (ML) po meri za prepoznavanje PII v vaših pretočnih podatkih. Prav tako ste morali uvesti in vzdrževati infrastrukturo, potrebno za podporo teh motorjev ali modelov.

Za poenostavitev tega postopka in zmanjšanje stroškov lahko uporabite Amazonsko razumevanje, storitev za obdelavo naravnega jezika (NLP), ki uporablja ML za iskanje vpogledov in odnosov, kot so ljudje, kraji, občutki in teme v nestrukturiranem besedilu. Zdaj lahko uporabite zmogljivosti Amazon Comprehend ML za odkrivanje in urejanje PII v e-poštnih sporočilih strank, vstopnicah za podporo, ocenah izdelkov, družbenih medijih in še več. Izkušnje ML niso potrebne. Na primer, lahko analizirate zahteve za podporo in članke znanja, da odkrijete entitete PII in popravite besedilo, preden indeksirate dokumente. Po tem so dokumenti brez entitet PII in uporabniki lahko uporabljajo podatke. Redigiranje subjektov, ki omogočajo osebno prepoznavo, vam pomaga zaščititi zasebnost vaše stranke in spoštovati lokalne zakone in predpise.

V tem prispevku se boste naučili implementirati Amazon Comprehend v svoje pretočne arhitekture za redigiranje oseb PII v skoraj realnem času z uporabo Amazon Kinesis Data Firehose z AWS Lambda.

Ta objava je osredotočena na redigiranje podatkov iz izbranih polj, ki so zaužiti v pretočno arhitekturo z uporabo Kinesis Data Firehose, kjer želite ustvariti, shraniti in vzdrževati dodatne izpeljane kopije podatkov za uporabo s strani končnih uporabnikov ali nadaljnjih aplikacij. Če uporabljate Amazonski kinezi podatkovni tokovi ali imajo dodatne primere uporabe zunaj redakcije PII, glejte Prevajanje, urejanje in analiziranje pretočnih podatkov s funkcijami SQL z Amazon Kinesis Data Analytics, Amazon Translate in Amazon Comprehend, kjer pokažemo, kako lahko uporabite Amazon Kinesis Data Analytics Studio powered by Apaški cepelin in Apache Flash za interaktivno analizo, prevajanje in urejanje besedilnih polj v pretočnih podatkih.

Pregled rešitev

Naslednja slika prikazuje primer arhitekture za izvajanje redakcije PII pretočnih podatkov v realnem času z uporabo Preprosta storitev shranjevanja Amazon (Amazon S3), Transformacija podatkov Kinesis Data Firehose, Amazonsko razumevanjein AWS Lambda. Poleg tega uporabljamo AWS SDK za Python (Boto3) za funkcije Lambda. Kot je prikazano v diagramu, neobdelano vedro S3 vsebuje neredigirane podatke, redigirano vedro S3 pa vsebuje redigirane podatke po uporabi Amazon Comprehend DetectPiiEntities API znotraj funkcije Lambda.

Vključeni stroški

Poleg stroškov Kinesis Data Firehose, Amazon S3 in Lambda bo ta rešitev povzročila stroške uporabe storitve Amazon Comprehend. Znesek, ki ga plačate, je faktor skupnega števila zapisov, ki vsebujejo PII in znake, ki jih obdela funkcija Lambda. Za več informacij glejte Cene Amazon Kinesis Data Firehose, Amazonske celovite cenein AWS Lambda cene.

Na primer, predpostavimo, da imate 10,000 zapisov dnevnikov in da je ključna vrednost, iz katere želite redigirati PII, 500 znakov. Od 10,000 dnevniških zapisov je za 50 opredeljenih, da vsebujejo PII. Podrobnosti o stroških so naslednje:

Vsebuje PII stroške:

  • Velikost posamezne vrednosti ključa = 500 znakov (1 enota = 100 znakov)
  • Število enot (100 znakov) na zapis (najmanjše število je 3 enote) = 5
  • Skupno število enot = 10,000 (zapisov) x 5 (enot na zapis) x 1 (zahtev Amazon Comprehend na zapis) = 50,000
  • Cena na enoto = 0.000002 USD
    • Skupni strošek za identifikacijo dnevniških zapisov s PII z uporabo ContainsPiiEntities API = 0.1 USD [50,000 enot x 0.000002 USD] 

Uredi stroške PII:

  • Skupno število enot, ki vsebujejo PII = 50 (zapisov) x 5 (enot na zapis) x 1 (zahtev Amazon Comprehend na zapis) = 250
  • Cena na enoto = 0.0001 USD
    • Skupni stroški za prepoznavanje lokacije PII z uporabo DetectPiiEntities API = [število enot] x [strošek na enoto] = 250 x 0.0001 USD = 0.025 USD

Skupni stroški identifikacije in redakcije:

  • Skupni stroški: 0.1 USD (preverjanje, če polje vsebuje podatke, ki omogočajo osebno prepoznavo) + 0.025 USD (uredi polja, ki vsebujejo podatke, ki omogočajo osebno prepoznavo) = 0.125 USD

Razmestite rešitev z AWS CloudFormation

Za to objavo nudimo Oblikovanje oblaka AWS redakcijo pretočnih podatkov Predloga, ki zagotavlja vse podrobnosti o izvedbi za omogočanje ponovljivih uvajanj. Po uvedbi ta predloga ustvari dve vedri S3: eno za shranjevanje neobdelanih vzorčnih podatkov, zaužitih iz Amazon Kinesis Data Generator (KDG), in eno za shranjevanje redigiranih podatkov. Poleg tega ustvari tok dostave Kinesis Data Firehose s DirectPUT kot vhod in funkcijo Lambda, ki kliče Amazon Comprehend VsebujePiiEntities in DetectPiiEntities API za prepoznavanje in urejanje podatkov, ki omogočajo osebno prepoznavo. Funkcija Lambda se opira na uporabniški vnos v spremenljivke okolja, da določi, katere ključne vrednosti je treba pregledati za PII.

Funkcija Lambda v tej rešitvi ima omejeno velikost tovora na 100 KB. Če je podana koristna obremenitev, kjer je besedilo večje od 100 KB, jo bo funkcija Lambda preskočila.

Za namestitev rešitve izvedite naslednje korake:

  1. Zaženite sklad CloudFormation na vzhodu ZDA (N. Virginia) us-east-1:
    Uredite občutljive podatke iz pretočnih podatkov v skoraj realnem času z uporabo Amazon Comprehend in Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  2. Vnesite ime sklada in pustite druge parametre privzete
  3. Izberite Potrjujem, da lahko AWS CloudFormation ustvari vire IAM z imeni po meri.
  4. Izberite Ustvari sklad.

Ročno razporedite sredstva

Če želite arhitekturo zgraditi ročno namesto z uporabo AWS CloudFormation, dokončajte korake v tem razdelku.

Ustvarite vedra S3

Ustvarite vedra S3 z naslednjimi koraki:

  1. Na konzoli Amazon S3 izberite Žlice v podoknu za krmarjenje.
  2. Izberite Ustvari vedro.
  3. Ustvarite eno vedro za svoje neobdelane podatke in eno za redigirane podatke.
  4. Zapomnite si imena veder, ki ste jih pravkar ustvarili.

Ustvarite funkcijo Lambda

Če želite ustvariti in razmestiti funkcijo Lambda, dokončajte naslednje korake:

  1. Na konzoli Lambda izberite Ustvari funkcijo.
  2. Izberite Avtor iz nič.
  3. za Ime funkcije, vnesite AmazonComprehendPII-Redact.
  4. za Čas izvajanja, izberite Python 3.9.
  5. za Arhitekturatako, da izberete x86_64.
  6. za Izvršilna vlogatako, da izberete Ustvarite novo vlogo z dovoljenji Lambda.
  7. Ko ustvarite funkcijo, vnesite to kodo:
    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. Izberite uvajanje.
  9. V podoknu za krmarjenje izberite Konfiguracija.
  10. Pomaknite se na Spremenljivke okolja.
  11. Izberite Uredi.
  12. za Ključne, vnesite keys.
  13. za vrednost, vnesite ključne vrednosti, iz katerih želite odstraniti PID, ločene z vejico in presledkom. Na primer, enter Tweet1, Tweet2 če uporabljate vzorčne testne podatke, navedene v naslednjem razdelku te objave.
  14. Izberite Shrani.
  15. Pomaknite se na Splošna konfiguracija.
  16. Izberite Uredi.
  17. Spremenite vrednost Timeout do 1 minute.
  18. Izberite Shrani.
  19. Pomaknite se na Dovoljenja.
  20. Izberite ime vloge pod Izvršilna vloga.
    Preusmerjeni ste na AWS upravljanje identitete in dostopa (IAM) konzola.
  21. za Dodajte dovoljenja, izberite Priložite pravilnike.
  22. Vnesite Comprehend v iskalno vrstico in izberite pravilnik ComprehendFullAccess.
  23. Izberite Priložite pravilnike.

Ustvarite tok dostave Firehose

Če želite ustvariti tok dostave Firehose, izvedite naslednje korake:

  1. Na konzoli Kinesis Data Firehose izberite Ustvari tok dostave.
  2. za virtako, da izberete Neposredni PUT.
  3. za destinacijatako, da izberete Amazon S3.
  4. za Ime toka dostave, vnesite ComprehendRealTimeBlog.
  5. Pod Pretvorite izvorne zapise z AWS Lambdatako, da izberete omogočeno.
  6. za AWS Lambda funkcija, vnesite ARN za funkcijo, ki ste jo ustvarili, ali poiščite funkcijo AmazonComprehendPII-Redact.
  7. za Velikost pufra, nastavite vrednost na 1 MB.
  8. za Interval medpomnilnika, pustite 60 sekund.
  9. Pod Nastavitve cilja, izberite vedro S3, ki ste ga ustvarili za redigirane podatke.
  10. Pod Nastavitve varnostnih kopij, izberite vedro S3, ki ste ga ustvarili za neobdelane zapise.
  11. Pod Dovoljenje, ustvarite ali posodobite vlogo IAM ali izberite obstoječo vlogo z ustreznimi dovoljenji.
  12. Izberite Ustvari tok dostave.

Razmestite rešitev za pretakanje podatkov s Kinesis Data Generatorjem

Generator podatkov Kinesis (KDG) lahko uporabite za vnos vzorčnih podatkov v Kinesis Data Firehose in preizkusite rešitev. Za poenostavitev tega postopka ponujamo funkcijo Lambda in predlogo CloudFormation za ustvarjanje Amazon Cognito uporabnika in dodeli ustrezna dovoljenja za uporabo KDG.

  1. o Stran Amazon Kinesis Data Generator, izberite Ustvarite uporabnika Cognito z CloudFormation.Preusmerjeni ste na konzolo AWS CloudFormation, da ustvarite svoj sklad.
  2. Podajte uporabniško ime in geslo za uporabnika, s katerim se prijavljate v KDG.
  3. Ostale nastavitve pustite privzete in ustvarite svoj sklad.
  4. o Izhodi izberite povezavo KDG UI.
  5. Za prijavo vnesite svoje uporabniško ime in geslo.

Pošljite testne zapise in potrdite redakcijo v Amazon S3

Če želite preizkusiti rešitev, opravite naslednje korake:

  1. Prijavite se v URL KDG, ki ste ga ustvarili v prejšnjem koraku.
  2. Izberite regijo, kjer je bil nameščen sklad AWS CloudFormation.
  3. za Tok/tok dostave, izberite tok dostave, ki ste ga ustvarili (če ste uporabili predlogo, ima obliko accountnumber-awscomprehend-blog).
  4. Ostale nastavitve pustite privzete.
  5. Za predlogo zapisa lahko ustvarite lastne teste ali uporabite naslednjo predlogo. Če za testiranje uporabljate spodnje vzorčne podatke, bi morali imeti posodobljene spremenljivke okolja v AmazonComprehendPII-Redact Lambda funkcija za Tweet1, Tweet2. Če je uveden prek CloudFormation, posodobite spremenljivke okolja na Tweet1, Tweet2 znotraj ustvarjene funkcije Lambda. Vzorčni testni podatki so spodaj:
    {"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. Izberite Pošlji podatkein počakajte nekaj sekund, da se zapisi pošljejo v vaš tok.
  7. Po nekaj sekundah ustavite generator KDG in preverite vedra S3 za dostavljene datoteke.

Sledi primer neobdelanih podatkov v neobdelanem vedru 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"}

Sledi primer redigiranih podatkov v redigiranem vedru 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"}

Občutljivi podatki so bili odstranjeni iz redigiranih sporočil, kar zagotavlja zaupanje, da lahko te podatke delite s končnimi sistemi.

Pospravi

Ko končate s preizkušanjem te rešitve, počistite svoje vire z uporabo konzole AWS CloudFormation, da izbrišete vse vire, ki so razporejeni v tem primeru. Če ste sledili ročnim korakom, boste morali ročno izbrisati dve vedri, AmazonComprehendPII-Redact funkcija, ComprehendRealTimeBlog tok, skupina dnevnikov za ComprehendRealTimeBlog tok in vse vloge IAM, ki so bile ustvarjene.

zaključek

Ta objava vam je pokazala, kako integrirati urejanje PII v svojo arhitekturo pretakanja v skoraj realnem času in skrajšati čas obdelave podatkov z redigiranjem med letom. V tem scenariju posredujete redigirane podatke svojim končnim uporabnikom, skrbnik podatkovnega jezera pa zavaruje neobdelano vedro za kasnejšo uporabo. Prav tako lahko zgradite dodatno obdelavo z Amazon Comprehend, da prepoznate ton ali čustva, identificirate entitete v podatkih in razvrstite vsako sporočilo.

Kot del te objave smo zagotovili posamezne korake za vsako storitev in vključili tudi predlogo CloudFormation, ki vam omogoča, da zagotovite zahtevana sredstva v svojem računu. To predlogo je treba uporabiti samo za dokaz koncepta ali scenarijev testiranja. Oglejte si vodnike za razvijalce za Amazonsko razumevanje, Lambdain Kinesis Data FireHose za morebitne omejitve storitev.

Če želite začeti z identifikacijo in urejanjem PII, glejte Osebni podatki (PII). S primerom arhitekture v tej objavi bi lahko integrirali katerega koli API-ja Amazon Comprehend s podatki v skoraj realnem času s pretvorbo podatkov Kinesis Data Firehose. Če želite izvedeti več o tem, kaj lahko zgradite s svojimi podatki v skoraj realnem času s Kinesis Data Firehose, glejte Priročnik za razvijalce Amazon Kinesis Data Firehose. Ta rešitev je na voljo v vseh regijah AWS, kjer sta na voljo Amazon Comprehend in Kinesis Data Firehose.


O avtorjih

Uredite občutljive podatke iz pretočnih podatkov v skoraj realnem času z uporabo Amazon Comprehend in Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Navpično iskanje. Ai. Joe Morotti je arhitekt rešitev pri Amazon Web Services (AWS), ki pomaga strankam Enterprise na srednjem zahodu ZDA. Imel je širok nabor tehničnih vlog in uživa v prikazovanju kupčeve umetnosti možnega. V prostem času uživa v kakovostnem preživljanju časa z družino, kjer raziskuje nove kraje in pretirano analizira uspešnost svoje športne ekipe.

Uredite občutljive podatke iz pretočnih podatkov v skoraj realnem času z uporabo Amazon Comprehend in Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Sriharsh Adari je višji arhitekt rešitev pri Amazon Web Services (AWS), kjer strankam pomaga pri delu nazaj od poslovnih rezultatov do razvoja inovativnih rešitev na AWS. V preteklih letih je pomagal številnim strankam pri transformacijah podatkovne platforme v različnih industrijskih vertikalah. Njegovo osrednje strokovno področje vključuje tehnološko strategijo, podatkovno analitiko in podatkovno znanost. V prostem času rad igra tenis, gleda televizijske oddaje in igra tablo.

Časovni žig:

Več od Strojno učenje AWS