Menyusun data sensitif dari streaming data hampir secara real-time menggunakan Amazon Comprehend dan Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Redaksi data sensitif dari streaming data hampir secara real time menggunakan Amazon Comprehend dan Amazon Kinesis Data Firehose

Pengiriman data dan wawasan yang hampir real-time memungkinkan bisnis merespons kebutuhan pelanggan mereka dengan cepat. Data waktu nyata dapat berasal dari berbagai sumber, termasuk media sosial, perangkat IoT, pemantauan infrastruktur, pemantauan pusat panggilan, dan banyak lagi. Karena luas dan dalamnya data yang diserap dari berbagai sumber, bisnis mencari solusi untuk melindungi privasi pelanggan mereka dan menjaga data sensitif agar tidak diakses dari sistem akhir. Anda sebelumnya harus mengandalkan mesin aturan informasi identitas pribadi (PII) yang dapat menandai kesalahan positif atau kehilangan data, atau Anda harus membuat dan memelihara model pembelajaran mesin (ML) kustom untuk mengidentifikasi PII dalam data streaming Anda. Anda juga perlu menerapkan dan memelihara infrastruktur yang diperlukan untuk mendukung mesin atau model ini.

Untuk membantu merampingkan proses ini dan mengurangi biaya, Anda dapat menggunakan Amazon Comprehend, layanan pemrosesan bahasa alami (NLP) yang menggunakan ML untuk menemukan wawasan dan hubungan seperti orang, tempat, sentimen, dan topik dalam teks tidak terstruktur. Anda sekarang dapat menggunakan kemampuan Amazon Comprehend ML untuk mendeteksi dan menyunting PII di email pelanggan, tiket dukungan, ulasan produk, media sosial, dan banyak lagi. Tidak diperlukan pengalaman ML. Misalnya, Anda dapat menganalisis tiket dukungan dan artikel pengetahuan untuk mendeteksi entitas PII dan menyunting teks sebelum mengindeks dokumen. Setelah itu, dokumen bebas dari entitas PII dan pengguna dapat menggunakan data tersebut. Menghapus entitas PII membantu Anda melindungi privasi pelanggan Anda dan mematuhi undang-undang dan peraturan setempat.

Dalam posting ini, Anda mempelajari cara mengimplementasikan Amazon Comprehend ke dalam arsitektur streaming Anda untuk menyunting entitas PII dalam waktu dekat menggunakan Firehose Data Amazon Kinesis dengan AWS Lambda.

Posting ini difokuskan pada menyunting data dari bidang tertentu yang diserap ke dalam arsitektur streaming menggunakan Kinesis Data Firehose, tempat Anda ingin membuat, menyimpan, dan memelihara salinan turunan tambahan dari data untuk dikonsumsi oleh pengguna akhir atau aplikasi hilir. Jika Anda menggunakan Aliran Data Amazon Kinesis atau memiliki kasus penggunaan tambahan di luar redaksi PII, lihat Terjemahkan, edit, dan analisis data streaming menggunakan fungsi SQL dengan Amazon Kinesis Data Analytics, Amazon Translate, dan Amazon Comprehend, di mana kami menunjukkan bagaimana Anda dapat menggunakan Studio Analisis Data Amazon Kinesis didukung oleh Apache Zeppelin dan Flash Apache untuk menganalisis, menerjemahkan, dan menyunting bidang teks secara interaktif dalam data streaming.

Ikhtisar solusi

Gambar berikut menunjukkan contoh arsitektur untuk melakukan redaksi PII streaming data secara real time, menggunakan Layanan Penyimpanan Sederhana Amazon (Amazon S3), Transformasi data Firehose Data Kinesis, Amazon Comprehend, dan AWS Lambda. Selain itu, kami menggunakan AWS SDK untuk Python (Boto3) untuk fungsi Lambda. Seperti yang ditunjukkan dalam diagram, bucket mentah S3 berisi data yang tidak diedit, dan bucket yang diedit S3 berisi data yang diedit setelah menggunakan Amazon Comprehend DetectPiiEntities API dalam fungsi Lambda.

Biaya yang terlibat

Selain biaya Kinesis Data Firehose, Amazon S3, dan Lambda, solusi ini akan dikenakan biaya penggunaan dari Amazon Comprehend. Jumlah yang Anda bayarkan merupakan faktor dari jumlah total catatan yang berisi PII dan karakter yang diproses oleh fungsi Lambda. Untuk informasi lebih lanjut, lihat Harga Amazon Kinesis Data Firehose, Harga Amazon Comprehend, dan Harga AWS Lambda.

Sebagai contoh, mari kita asumsikan Anda memiliki 10,000 catatan log, dan nilai kunci yang Anda inginkan untuk menyunting PII adalah 500 karakter. Dari 10,000 catatan log, 50 diidentifikasi mengandung PII. Rincian biayanya adalah sebagai berikut:

Berisi Biaya PII:

  • Ukuran setiap nilai kunci = 500 karakter (1 unit = 100 karakter)
  • Jumlah unit (100 karakter) per record (minimal 3 unit) = 5
  • Total unit = 10,000 (rekaman) x 5 (unit per rekaman) x 1 (Permintaan Amazon Comprehend per rekaman) = 50,000
  • Harga per unit = $ 0.000002
    • Total biaya untuk mengidentifikasi catatan log dengan PII menggunakan API BerisiPiiEntities = $0.1 [50,000 unit x $0.000002] 

Hapus Biaya PII:

  • Total unit yang berisi PII = 50 (catatan) x 5 (unit per catatan) x 1 (Permintaan Amazon Comprehend per catatan) = 250
  • Harga per unit = $ 0.0001
    • Total biaya untuk mengidentifikasi lokasi PII menggunakan DetectPiiEntities API = [jumlah unit] x [biaya per unit] = 250 x $0.0001 = $0.025

Total Biaya untuk identifikasi dan redaksi:

  • Biaya total: $0.1 (validasi jika bidang berisi PII) + $0.025 (edit bidang yang berisi PII) = $0.125

Terapkan solusi dengan AWS CloudFormation

Untuk postingan kali ini, kami menyediakan Formasi AWS Cloud streaming data redaksi Template, yang memberikan detail lengkap implementasi untuk memungkinkan penerapan berulang. Setelah penerapan, template ini membuat dua bucket S3: satu untuk menyimpan data sampel mentah yang diserap dari Amazon Kinesis Data Generator (KDG), dan satu lagi untuk menyimpan data yang telah diedit. Selain itu, ini menciptakan aliran pengiriman Kinesis Data Firehose dengan DirectPUT sebagai input, dan fungsi Lambda yang memanggil Amazon Comprehend BerisiPiiEntitas dan DeteksiPiiEntities API untuk mengidentifikasi dan menyunting data PII. Fungsi Lambda bergantung pada input pengguna dalam variabel lingkungan untuk menentukan nilai kunci apa yang perlu diperiksa untuk PII.

Fungsi Lambda dalam solusi ini memiliki ukuran muatan terbatas hingga 100 KB. Jika payload disediakan di mana teks lebih besar dari 100 KB, fungsi Lambda akan melewatinya.

Untuk menerapkan solusi, selesaikan langkah-langkah berikut:

  1. Luncurkan tumpukan CloudFormation di AS Timur (Virginia Utara) us-east-1:
    Menyusun data sensitif dari streaming data hampir secara real-time menggunakan Amazon Comprehend dan Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.
  2. Masukkan nama tumpukan, dan biarkan parameter lain tetap default
  3. Pilih Saya mengakui bahwa AWS CloudFormation dapat membuat sumber daya IAM dengan nama khusus.
  4. Pilih Buat tumpukan.

Terapkan sumber daya secara manual

Jika Anda lebih suka membangun arsitektur secara manual daripada menggunakan AWS CloudFormation, selesaikan langkah-langkah di bagian ini.

Buat ember S3

Buat bucket S3 Anda dengan langkah-langkah berikut:

  1. Pada konsol Amazon S3, pilih Ember di panel navigasi.
  2. Pilih Buat ember.
  3. Buat satu ember untuk data mentah Anda dan satu lagi untuk data Anda yang telah diedit.
  4. Catat nama-nama ember yang baru saja Anda buat.

Buat fungsi Lambda

Untuk membuat dan menerapkan fungsi Lambda, selesaikan langkah-langkah berikut:

  1. Pada konsol Lambda, pilih Buat fungsi.
  2. Pilih Penulis dari awal.
  3. Untuk Nama Fungsi, Masuk AmazonComprehendPII-Redact.
  4. Untuk Runtime, pilih Python 3.9.
  5. Untuk Arsitektur, pilih x86_64.
  6. Untuk Peran eksekusi, pilih Buat peran baru dengan izin Lambda.
  7. Setelah Anda membuat fungsi, masukkan kode berikut:
    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. Pilih Menyebarkan.
  9. Di panel navigasi, pilih Konfigurasi.
  10. Navigasi ke Variabel lingkungan.
  11. Pilih Edit.
  12. Untuk kunci, Masuk keys.
  13. Untuk Nilai, masukkan nilai kunci tempat Anda ingin menyunting PII, dipisahkan dengan koma dan spasi. Misalnya, masukkan Tweet1, Tweet2 jika Anda menggunakan data uji sampel yang disediakan di bagian selanjutnya dari posting ini.
  14. Pilih Save.
  15. Navigasi ke Konfigurasi umum.
  16. Pilih Edit.
  17. Ubah nilai dari batas waktu sampai 1 menit.
  18. Pilih Save.
  19. Navigasi ke izin.
  20. Pilih nama peran di bawah Peran Eksekusi.
    Anda dialihkan ke Identitas AWS dan Manajemen Akses (IAM) konsol.
  21. Untuk Tambahkan izin, pilih Lampirkan kebijakan.
  22. Enter Comprehend ke dalam bilah pencarian dan pilih kebijakan ComprehendFullAccess.
  23. Pilih Lampirkan kebijakan.

Buat aliran pengiriman Firehose

Untuk membuat aliran pengiriman Firehose Anda, selesaikan langkah-langkah berikut:

  1. Pada konsol Firehose Data Kinesis, pilih Buat aliran pengiriman.
  2. Untuk sumber, pilih PUT langsung.
  3. Untuk Tujuan, pilih Amazon S3.
  4. Untuk Nama aliran pengiriman, Masuk ComprehendRealTimeBlog.
  5. Bawah Transformasikan catatan sumber dengan AWS Lambda, pilih Enabled.
  6. Untuk Fungsi AWS Lambda, masukkan ARN untuk fungsi yang Anda buat, atau telusuri fungsi AmazonComprehendPII-Redact.
  7. Untuk Ukuran buffer, atur nilainya menjadi 1 MB.
  8. Untuk Interval Penyangga, biarkan selama 60 detik.
  9. Bawah Pengaturan Tujuan, pilih bucket S3 yang Anda buat untuk data yang diedit.
  10. Bawah Pengaturan Cadangan, pilih bucket S3 yang Anda buat untuk data mentah.
  11. Bawah izin, buat atau perbarui peran IAM, atau pilih peran yang ada dengan izin yang sesuai.
  12. Pilih Buat aliran pengiriman.

Terapkan solusi data streaming dengan Kinesis Data Generator

Anda dapat menggunakan Kinesis Data Generator (KDG) untuk menyerap data sampel ke Kinesis Data Firehose dan menguji solusinya. Untuk menyederhanakan proses ini, kami menyediakan fungsi Lambda dan template CloudFormation untuk membuat Amazon Kognito pengguna dan memberikan izin yang sesuai untuk menggunakan KDG.

  1. pada Halaman Generator Data Amazon Kinesis, pilih Buat Pengguna Cognito dengan CloudFormation.Anda dialihkan ke konsol AWS CloudFormation untuk membuat tumpukan Anda.
  2. Berikan nama pengguna dan kata sandi untuk pengguna yang Anda gunakan untuk masuk ke KDG.
  3. Biarkan pengaturan lain pada default dan buat tumpukan Anda.
  4. pada Output tab, pilih tautan KDG UI.
  5. Masukkan nama pengguna dan kata sandi Anda untuk masuk.

Kirim catatan pengujian dan validasi redaksi di Amazon S3

Untuk menguji solusi, selesaikan langkah-langkah berikut:

  1. Masuk ke URL KDG yang Anda buat di langkah sebelumnya.
  2. Pilih Wilayah tempat tumpukan AWS CloudFormation diterapkan.
  3. Untuk Aliran/aliran pengiriman, pilih aliran pengiriman yang Anda buat (jika Anda menggunakan templat, itu memiliki format accountnumber-awscomprehend-blog).
  4. Biarkan pengaturan lainnya pada defaultnya.
  5. Untuk templat rekaman, Anda dapat membuat pengujian sendiri, atau menggunakan templat berikut. Jika Anda menggunakan data sampel yang disediakan di bawah ini untuk pengujian, Anda harus memperbarui variabel lingkungan di AmazonComprehendPII-Redact Fungsi lambda untuk Tweet1, Tweet2. Jika digunakan melalui CloudFormation, perbarui variabel lingkungan ke Tweet1, Tweet2 dalam fungsi Lambda yang dibuat. Contoh data uji di bawah ini:
    {"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. Pilih Kirim Data, dan tunggu beberapa detik hingga rekaman dikirim ke aliran Anda.
  7. Setelah beberapa detik, hentikan generator KDG dan periksa bucket S3 Anda untuk file yang dikirimkan.

Berikut ini adalah contoh data mentah di keranjang S3 mentah:

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

Berikut ini adalah contoh data yang diedit di bucket S3 yang diedit:

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

Informasi sensitif telah dihapus dari pesan yang disunting, memberikan keyakinan bahwa Anda dapat membagikan data ini dengan sistem akhir.

Membersihkan

Setelah selesai bereksperimen dengan solusi ini, bersihkan sumber daya Anda dengan menggunakan konsol AWS CloudFormation untuk menghapus semua sumber daya yang diterapkan dalam contoh ini. Jika Anda mengikuti langkah-langkah manual, Anda harus menghapus kedua ember secara manual, AmazonComprehendPII-Redact fungsi, ComprehendRealTimeBlog aliran, grup log untuk ComprehendRealTimeBlog streaming, dan peran IAM apa pun yang dibuat.

Kesimpulan

Posting ini menunjukkan kepada Anda cara mengintegrasikan redaksi PII ke arsitektur streaming hampir real-time Anda dan mengurangi waktu pemrosesan data dengan melakukan redaksi dalam penerbangan. Dalam skenario ini, Anda memberikan data yang telah diedit ke pengguna akhir Anda dan administrator data lake mengamankan keranjang mentah untuk digunakan nanti. Anda juga dapat membangun pemrosesan tambahan dengan Amazon Comprehend untuk mengidentifikasi nada atau sentimen, mengidentifikasi entitas dalam data, dan mengklasifikasikan setiap pesan.

Kami menyediakan langkah-langkah individual untuk setiap layanan sebagai bagian dari posting ini, dan juga menyertakan template CloudFormation yang memungkinkan Anda untuk menyediakan sumber daya yang diperlukan di akun Anda. Template ini harus digunakan untuk bukti konsep atau skenario pengujian saja. Lihat panduan pengembang untuk Amazon Comprehend, Lambda, dan Firehose Data Kinesis untuk setiap batas layanan.

Untuk memulai dengan identifikasi dan redaksi PII, lihat Informasi identitas pribadi (PII). Dengan arsitektur contoh dalam posting ini, Anda dapat mengintegrasikan semua API Amazon Comprehend dengan data hampir real-time menggunakan transformasi data Kinesis Data Firehose. Untuk mempelajari lebih lanjut tentang apa yang dapat Anda bangun dengan data hampir real-time Anda dengan Kinesis Data Firehose, lihat Panduan Pengembang Amazon Kinesis Data Firehose. Solusi ini tersedia di semua Wilayah AWS tempat Amazon Comprehend dan Kinesis Data Firehose tersedia.


Tentang penulis

Menyusun data sensitif dari streaming data hampir secara real-time menggunakan Amazon Comprehend dan Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Joe Morotti adalah Arsitek Solusi di Amazon Web Services (AWS), membantu pelanggan Perusahaan di seluruh Midwest AS. Dia telah memegang berbagai peran teknis dan menikmati menunjukkan seni pelanggan yang mungkin. Di waktu luangnya, ia menikmati menghabiskan waktu berkualitas bersama keluarganya menjelajahi tempat-tempat baru dan menganalisis kinerja tim olahraganya secara berlebihan.

Menyusun data sensitif dari streaming data hampir secara real-time menggunakan Amazon Comprehend dan Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Sriharsh Adari adalah Arsitek Solusi Senior di Amazon Web Services (AWS), di mana dia membantu pelanggan bekerja mundur dari hasil bisnis untuk mengembangkan solusi inovatif di AWS. Selama bertahun-tahun, dia telah membantu banyak pelanggan dalam transformasi platform data di seluruh vertikal industri. Bidang keahlian utamanya meliputi Strategi Teknologi, Analisis Data, dan Ilmu Data. Di waktu luangnya, ia menikmati bermain tenis, menonton acara TV, dan bermain Tabla.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS