Zephyrnet logo

Poista arkaluontoiset tiedot suoratoistotiedoista lähes reaaliajassa Amazon Comprehendin ja Amazon Kinesis Data Firehosen avulla

Treffi:

Lähes reaaliaikainen tietojen ja oivallusten toimitus mahdollistaa yritysten nopean reagoinnin asiakkaidensa tarpeisiin. Reaaliaikainen data voi olla peräisin useista eri lähteistä, mukaan lukien sosiaalinen media, IoT-laitteet, infrastruktuurin seuranta, puhelinkeskuksen valvonta ja paljon muuta. Useista eri lähteistä syötettävän tiedon laajuuden ja syvyyden vuoksi yritykset etsivät ratkaisuja asiakkaidensa yksityisyyden suojaamiseen ja arkaluonteisten tietojen pääsyn estämiseen loppujärjestelmistä. Aiemmin jouduit luottamaan henkilökohtaisten tunnistetietojen (PII) sääntömoottoreihin, jotka saattoivat ilmoittaa vääristä positiivisista tai puuttua tietoja, tai jouduit rakentamaan ja ylläpitämään mukautettuja koneoppimismalleja (ML) tunnistaaksesi henkilökohtaisia ​​tunnistetietoja suoratoistodatastasi. Sinun oli myös otettava käyttöön ja ylläpidettävä näiden moottoreiden tai mallien tukemiseen tarvittava infrastruktuuri.

Voit tehostaa tätä prosessia ja vähentää kustannuksia käyttämällä Amazonin käsitys, luonnollisen kielen käsittelypalvelu (NLP), joka käyttää ML:ää löytääkseen oivalluksia ja suhteita, kuten ihmisiä, paikkoja, tunteita ja aiheita jäsentämättömästä tekstistä. Voit nyt käyttää Amazon Comprehend ML -ominaisuuksia tunnistamaan ja poistamaan henkilökohtaisia ​​tunnistetietoja asiakassähköpostiviesteissä, tukilipuissa, tuotearvosteluissa, sosiaalisessa mediassa ja paljon muuta. ML-kokemusta ei vaadita. Voit esimerkiksi analysoida tukilippuja ja tietoartikkeleita tunnistaaksesi henkilökohtaisia ​​tunnistetietoja ja muokataksesi tekstiä ennen asiakirjojen indeksoimista. Sen jälkeen asiakirjoissa ei ole PII-kokonaisuuksia ja käyttäjät voivat käyttää tietoja. Henkilökohtaisten tunnistetietojen poistaminen auttaa suojaamaan asiakkaasi yksityisyyttä ja noudattamaan paikallisia lakeja ja määräyksiä.

Tässä viestissä opit, kuinka voit ottaa Amazon Comprehendin käyttöön suoratoistoarkkitehtuuriisi henkilökohtaisten tunnistetietojen poistamiseksi lähes reaaliajassa käyttämällä Amazon Kinesis Data Firehose with AWS Lambda.

Tämä viesti keskittyy tietojen poistamiseen valituista kentistä, jotka on siirretty suoratoistoarkkitehtuuriin Kinesis Data Firehosen avulla, jossa haluat luoda, tallentaa ja ylläpitää tiedosta lisäkopioita loppukäyttäjien tai myöhempien sovellusten kulutukseen. Jos käytät Amazon Kinesis -tietovirrat tai sinulla on muita käyttötapauksia PII-muokkauksen ulkopuolella, katso Käännä, muokkaa ja analysoi suoratoistodataa käyttämällä SQL-toimintoja Amazon Kinesis Data Analyticsin, Amazon Translaten ja Amazon Comprehendin avulla, jossa näytämme, kuinka voit käyttää Amazon Kinesis Data Analytics Studio virtansa Apache Zeppelin ja Apache Flash vuorovaikutteisesti analysoida, kääntää ja muokata tekstikenttiä suoratoistotiedoissa.

Ratkaisun yleiskatsaus

Seuraavassa kuvassa on esimerkkiarkkitehtuuri suoratoistodatan PII-muokkauksen suorittamiseksi reaaliajassa käyttämällä Amazonin yksinkertainen tallennuspalvelu (Amazon S3), Kinesis Data Firehose -tietojen muunnos, Amazonin käsitysja AWS Lambda. Lisäksi käytämme AWS SDK Pythonille (Boto3) lambda-toimintoja varten. Kuten kaaviossa on osoitettu, S3-raaka-ämpäri sisältää muokkaamatonta dataa ja S3-muokattu ryhmä sisältää muokattuja tietoja Amazon Comprehendin käytön jälkeen. DetectPiiEntities API Lambda-funktiossa.

Asiaan liittyvät kustannukset

Kinesis Data Firehose-, Amazon S3- ja Lambda-kustannusten lisäksi tästä ratkaisusta aiheutuu Amazon Comprehendiltä käyttökustannuksia. Maksamasi summa on tekijä henkilökohtaisia ​​tunnistetietoja sisältävien tietueiden ja Lambda-toiminnon käsittelemien merkkien kokonaismäärässä. Lisätietoja on kohdassa Amazon Kinesis Data Firehose -hinnoittelu, Amazon ymmärtää hinnoittelunja AWS Lambda -hinnoittelu.

Oletetaan esimerkiksi, että sinulla on 10,000 500 lokitietuetta ja avainarvo, josta haluat poistaa henkilökohtaisia ​​tunnistetietoja, on 10,000 merkkiä. 50 XNUMX lokitietueesta XNUMX tunnistetaan sisältävän henkilökohtaisia ​​tunnistetietoja. Kustannustiedot ovat seuraavat:

Sisältää PII-hinnan:

  • Kunkin avainarvon koko = 500 merkkiä (1 yksikkö = 100 merkkiä)
  • Yksiköiden määrä (100 merkkiä) tietueessa (minimi on 3 yksikköä) = 5
  • Yksiköt yhteensä = 10,000 5 (tietuetta) x 1 (yksikköä per tietue) x 50,000 (Amazon Comprehend -pyynnöt tietueita kohti) = XNUMX XNUMX
  • Yksikköhinta = 0.000002 dollaria
    • Kokonaiskustannukset henkilökohtaisten tunnistetietojen tunnistamisesta lokitietueiden tunnistamisesta ContainsPiiEntities API:n avulla = 0.1 $ [50,000 0.000002 yksikköä x XNUMX XNUMX $] 

Muokkaa henkilökohtaisia ​​tunnistetietoja:

  • Henkilökohtaisia ​​tunnistetietoja sisältävien yksiköiden kokonaismäärä = 50 (tietueita) x 5 (yksikköä tietuetta kohti) x 1 (Amazon Comprehend -pyynnöt tietueita kohti) = 250
  • Yksikköhinta = 0.0001 dollaria
    • Kokonaiskustannukset henkilökohtaisten tunnistetietojen sijainnin tunnistamisesta DetectPiiEntities API:n avulla = [yksikköjen määrä] x [yksikkökohtainen hinta] = 250 x 0.0001 $ = 0.025 $

Tunnistamisen ja poistamisen kokonaiskustannukset:

  • Kokonaiskustannukset: 0.1 $ (vahvistus, jos kenttä sisältää henkilökohtaisia ​​tunnistetietoja) + 0.025 $ (muista kentät, jotka sisältävät henkilökohtaisia ​​tietoja) = 0.125 $

Ota ratkaisu käyttöön AWS CloudFormation -sovelluksella

Tätä viestiä varten tarjoamme AWS-pilven muodostuminen suoratoistodatan muokkaus sapluuna, joka tarjoaa täydelliset yksityiskohdat toteutuksesta toistettavien käyttöönoton mahdollistamiseksi. Käyttöönoton yhteydessä tämä malli luo kaksi S3-säihöä: yhden Amazon Kinesis Data Generatorista (KDG) syötetyn raakanäytedatan tallentamiseen ja toisen muokatun tiedon tallentamiseen. Lisäksi se luo Kinesis Data Firehose -toimitusvirran DirectPUT syötteenä ja Lambda-toiminto, joka kutsuu Amazon Comprehendia SisältääPiiEntities ja DetectPiiEntities API tunnistaa ja poistaa henkilökohtaisia ​​tietoja. Lambda-funktio luottaa käyttäjän syötteisiin ympäristömuuttujissa määrittääkseen, mitkä avainarvot on tarkastettava henkilökohtaisten tunnistetietojen osalta.

Tämän ratkaisun lambda-toiminnon hyötykuorma on rajoitettu 100 kilotavuun. Jos tarjotaan hyötykuorma, jossa teksti on suurempi kuin 100 kt, Lambda-toiminto ohittaa sen.

Ota ratkaisu käyttöön suorittamalla seuraavat vaiheet:

  1. Käynnistä CloudFormation-pino USA:n itäosassa (N. Virginia) us-east-1:
  2. Anna pinon nimi ja jätä muut parametrit oletusarvoiksi
  3. valita Myönnän, että AWS CloudFormation saattaa luoda IAM-resursseja mukautetuilla nimillä.
  4. Valita Luo pino.

Ota resurssit käyttöön manuaalisesti

Jos haluat rakentaa arkkitehtuurin manuaalisesti AWS CloudFormationin käyttämisen sijaan, suorita tämän osan vaiheet.

Luo S3-kauhat

Luo S3-kauhat seuraavasti:

  1. Valitse Amazon S3 -konsolissa kauhat navigointipaneelissa.
  2. Valita Luo ämpäri.
  3. Luo yksi ryhmä raakatiedoillesi ja yksi redusoiduille tiedoille.
  4. Huomaa juuri luomiesi ryhmien nimet.

Luo Lambda-funktio

Luo ja ota Lambda-toiminto käyttöön suorittamalla seuraavat vaiheet:

  1. Valitse Lambda-konsolista Luo toiminto.
  2. Valita Kirjailija tyhjästä.
  3. varten Toiminnon nimi, tulla sisään AmazonComprehendPII-Redact.
  4. varten Runtime, valitse Python 3.9.
  5. varten arkkitehtuurivalitse x86_64.
  6. varten Suoritusroolivalitse Luo uusi rooli Lambda-oikeuksilla.
  7. Kun olet luonut toiminnon, kirjoita seuraava koodi:
    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. Valita Sijoittaa.
  9. Valitse siirtymisruudussa Kokoonpano.
  10. Navigoida johonkin Ympäristömuuttujat.
  11. Valita muokata.
  12. varten avain, tulla sisään keys.
  13. varten Arvo, kirjoita avainarvot, joista haluat poistaa henkilökohtaiset tunnistetiedot, erotettuina pilkulla ja välilyönnillä. Esimerkiksi syötä Tweet1, Tweet2 jos käytät tämän viestin seuraavassa osassa annettuja näytetestitietoja.
  14. Valita Säästä.
  15. Navigoida johonkin Yleinen kokoonpano.
  16. Valita muokata.
  17. Muuta arvoa Timeout 1 minuuttiin.
  18. Valita Säästä.
  19. Navigoida johonkin Oikeudet.
  20. Valitse roolin nimi alta Toteutusrooli.
    Sinut ohjataan AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (IAM) -konsoli.
  21. varten Lisää käyttöoikeudet, valitse Liitä käytännöt.
  22. enter Comprehend hakupalkkiin ja valitse käytäntö ComprehendFullAccess.
  23. Valita Liitä käytännöt.

Luo Firehose-toimitusvirta

Luo Firehose-toimitusvirta seuraavasti:

  1. Valitse Kinesis Data Firehose -konsolista Luo toimitusvirta.
  2. varten lähdevalitse Suora PUT.
  3. varten määränpäävalitse Amazon S3.
  4. varten Toimitusvirran nimi, tulla sisään ComprehendRealTimeBlog.
  5. Alle Muunna lähdetietueita AWS Lambdallavalitse käytössä.
  6. varten AWS Lambda -toiminto, kirjoita luomasi funktion ARN tai selaa funktioon AmazonComprehendPII-Redact.
  7. varten Puskurin koko, aseta arvoksi 1 Mt.
  8. varten Puskuriväli, jätä se 60 sekunniksi.
  9. Alle Kohdeasetukset, valitse S3-säilö, jonka loit redusoiduille tiedoille.
  10. Alle Varmuuskopiointiasetukset, valitse S3-säilö, jonka loit raakatietueille.
  11. Alle Lupa, joko luo tai päivitä IAM-rooli tai valitse olemassa oleva rooli, jolla on asianmukaiset käyttöoikeudet.
  12. Valita Luo toimitusvirta.

Ota käyttöön suoratoistodataratkaisu Kinesis Data Generatorin avulla

Voit käyttää Kinesis Data Generatoria (KDG) näytetietojen syöttämiseen Kinesis Data Firehoseen ja testaamaan ratkaisua. Tämän prosessin yksinkertaistamiseksi tarjoamme Lambda-toiminnon ja CloudFormation-mallin, jolla luodaan Amazon Cognito käyttäjälle ja anna tarvittavat KDG:n käyttöoikeudet.

  1. On Amazon Kinesis Data Generator -sivu, valitse Luo Cognito-käyttäjä CloudFormationin avulla.Sinut ohjataan AWS CloudFormation -konsoliin pinon luomista varten.
  2. Anna käyttäjätunnus ja salasana käyttäjälle, jolla kirjaudut KDG:hen.
  3. Jätä muut asetukset oletusarvoihinsa ja luo pino.
  4. On Lähdöt -välilehti, valitse KDG-käyttöliittymän linkki.
  5. Syötä käyttäjätunnuksesi ja salasanasi kirjautuaksesi sisään.

Lähetä testitietueet ja vahvista muokkaus Amazon S3:ssa

Testaa ratkaisu suorittamalla seuraavat vaiheet:

  1. Kirjaudu sisään edellisessä vaiheessa luomaasi KDG-URL-osoitteeseen.
  2. Valitse alue, jossa AWS CloudFormation -pino otettiin käyttöön.
  3. varten Suoratoisto/toimitusvirta, valitse luomasi toimitusvirta (jos käytit mallia, sillä on muoto accountnumber-awscomprehend-blog).
  4. Jätä muut asetukset oletusarvoihinsa.
  5. Voit luoda tietuemallille omia testejä tai käyttää seuraavaa mallia. Jos käytät alla olevia esimerkkitietoja testaamiseen, sinun pitäisi päivittää ympäristömuuttujat AmazonComprehendPII-Redact Lambda toimii Tweet1, Tweet2. Jos otat käyttöön CloudFormationin kautta, päivitä ympäristömuuttujat muotoon Tweet1, Tweet2 luodun lambda-funktion sisällä. Esimerkkitestitiedot ovat alla:
    {"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. Valita Lähetä tiedotja anna muutaman sekunnin, jotta tietueet lähetetään streamiisi.
  7. Pysäytä muutaman sekunnin kuluttua KDG-generaattori ja tarkista toimitetut tiedostot S3-ämpäristäsi.

Seuraavassa on esimerkki raakatiedoista S3-säilössä:

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

Seuraavassa on esimerkki muokatuista tiedoista muokatussa S3-ryhmässä:

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

Arkaluontoiset tiedot on poistettu poistetuista viesteistä, mikä takaa, että voit jakaa nämä tiedot loppujärjestelmien kanssa.

Uudelleenjärjestäminen

Kun olet lopettanut tämän ratkaisun kokeilun, puhdista resurssit käyttämällä AWS CloudFormation -konsolia poistaaksesi kaikki tässä esimerkissä käyttöönotetut resurssit. Jos noudatit manuaalisia vaiheita, sinun on poistettava manuaalisesti kaksi ämpäriä, AmazonComprehendPII-Redact toiminto, ComprehendRealTimeBlog stream, lokiryhmä ComprehendRealTimeBlog stream ja luodut IAM-roolit.

Yhteenveto

Tämä viesti osoitti sinulle, kuinka voit integroida henkilökohtaisten tunnistetietojen poistamisen lähes reaaliaikaiseen suoratoistoarkkitehtuuriisi ja lyhentää tietojen käsittelyaikaa suorittamalla muokkaus lennon aikana. Tässä skenaariossa annat redusoidut tiedot loppukäyttäjillesi, ja data Lake -järjestelmänvalvoja suojaa raakapaketin myöhempää käyttöä varten. Voit myös rakentaa lisäkäsittelyä Amazon Comprehendin avulla tunnistaaksesi sävyn tai tunteen, tunnistaaksesi datan entiteetit ja luokitellaksesi jokaisen viestin.

Toimitimme yksittäiset vaiheet kullekin palvelulle osana tätä viestiä ja sisällytimme myös CloudFormation-mallin, jonka avulla voit tarjota tarvittavat resurssit tilillesi. Tätä mallia tulee käyttää vain konseptin todistamiseen tai testausskenaarioihin. Katso kehittäjän oppaista Amazonin käsitys, Lambdaja Kinesis Data Firehose palvelurajoituksille.

Aloita henkilökohtaisten tunnistetietojen tunnistaminen ja muokkaaminen katsomalla Henkilötunnistettavat tiedot (PII). Tämän viestin esimerkkiarkkitehtuurilla voit integroida minkä tahansa Amazon Comprehend API:n lähes reaaliaikaisiin tietoihin käyttämällä Kinesis Data Firehose -tietojen muuntamista. Saat lisätietoja siitä, mitä voit rakentaa lähes reaaliaikaisilla tiedoillasi Kinesis Data Firehosen avulla, katso Amazon Kinesis Data Firehose -kehittäjäopas. Tämä ratkaisu on saatavilla kaikilla AWS-alueilla, joilla Amazon Comprehend ja Kinesis Data Firehose ovat saatavilla.


Tietoja kirjoittajista

Joe Morotti on Amazon Web Services (AWS) -ratkaisuarkkitehti, joka auttaa yritysasiakkaita kaikkialla Keskilännen Yhdysvalloissa. Hän on toiminut monenlaisissa teknisissä tehtävissä ja nauttii asiakkaan taiteen näyttämisestä mahdollisuuksista. Vapaa-ajallaan hän viettää laatuaikaa perheensä kanssa uusiin paikkoihin tutustuen ja urheilujoukkueensa suoritusten ylianalysoimiseen

Sriharsh Adari on vanhempi ratkaisuarkkitehti Amazon Web Servicesissä (AWS), jossa hän auttaa asiakkaita työskentelemään taaksepäin liiketoiminnan tuloksista ja kehittämään innovatiivisia ratkaisuja AWS:ssä. Vuosien varrella hän on auttanut useita asiakkaita tietoympäristön muutoksissa eri toimialoilla. Hänen ydinosaamisensa ovat teknologiastrategia, dataanalytiikka ja tietotiede. Vapaa-ajallaan hän nauttii tenniksen pelaamisesta, tv-ohjelmien ahmimisesta ja Tablan pelaamisesta.

spot_img

Uusin älykkyys

spot_img

Keskustele kanssamme

Hei siellä! Kuinka voin olla avuksi?