Biên tập lại dữ liệu nhạy cảm từ truyền dữ liệu trong thời gian gần như thực bằng cách sử dụng Amazon Comprehend và Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Chỉnh sửa dữ liệu nhạy cảm khỏi dữ liệu truyền trực tuyến trong thời gian gần thực bằng Amazon Comprehend và Amazon Kinesis Data Firehose

Việc cung cấp dữ liệu và thông tin chi tiết theo thời gian thực cho phép các doanh nghiệp nhanh chóng đáp ứng nhu cầu của khách hàng. Dữ liệu thời gian thực có thể đến từ nhiều nguồn khác nhau, bao gồm truyền thông xã hội, thiết bị IoT, giám sát cơ sở hạ tầng, giám sát trung tâm cuộc gọi, v.v. Do chiều rộng và độ sâu của dữ liệu được nhập từ nhiều nguồn, các doanh nghiệp tìm kiếm các giải pháp để bảo vệ quyền riêng tư của khách hàng và giữ cho dữ liệu nhạy cảm không bị truy cập từ hệ thống cuối. Trước đây, bạn phải dựa vào các công cụ quy tắc thông tin nhận dạng cá nhân (PII) có thể gắn cờ xác thực sai hoặc bỏ sót dữ liệu hoặc bạn phải xây dựng và duy trì các mô hình học máy (ML) tùy chỉnh để xác định PII trong dữ liệu phát trực tuyến của mình. Bạn cũng cần triển khai và duy trì cơ sở hạ tầng cần thiết để hỗ trợ các động cơ hoặc mô hình này.

Để giúp hợp lý hóa quy trình này và giảm chi phí, bạn có thể sử dụng Amazon hiểu, một dịch vụ xử lý ngôn ngữ tự nhiên (NLP) sử dụng ML để tìm hiểu thông tin chi tiết và các mối quan hệ như con người, địa điểm, tình cảm và chủ đề trong văn bản không có cấu trúc. Giờ đây, bạn có thể sử dụng các khả năng ML của Amazon để phát hiện và xác định lại PII trong email của khách hàng, phiếu hỗ trợ, đánh giá sản phẩm, phương tiện truyền thông xã hội, v.v. Không yêu cầu kinh nghiệm ML. Ví dụ: bạn có thể phân tích phiếu hỗ trợ và bài báo kiến ​​thức để phát hiện các thực thể PII và biên tập lại văn bản trước khi bạn lập chỉ mục tài liệu. Sau đó, tài liệu không có thực thể PII và người dùng có thể sử dụng dữ liệu. Việc giao dịch lại các thực thể PII giúp bạn bảo vệ quyền riêng tư của khách hàng và tuân thủ luật pháp và quy định của địa phương.

Trong bài đăng này, bạn tìm hiểu cách triển khai Amazon Complusive vào kiến ​​trúc phát trực tuyến của mình để chỉnh sửa các thực thể PII trong thời gian gần thực bằng cách sử dụng Amazon Kinesis Dữ liệu Firehose với AWS Lambda.

Bài đăng này tập trung vào việc chỉnh sửa dữ liệu từ các trường được chọn được nhập vào kiến ​​trúc phát trực tuyến bằng Kinesis Data Firehose, nơi bạn muốn tạo, lưu trữ và duy trì các bản sao phái sinh bổ sung của dữ liệu để người dùng cuối hoặc các ứng dụng hạ lưu sử dụng. Nếu bạn đang sử dụng Luồng dữ liệu Amazon Kinesis hoặc có các trường hợp sử dụng bổ sung bên ngoài giao dịch PII, hãy tham khảo Dịch, biên soạn lại và phân tích dữ liệu phát trực tuyến bằng các hàm SQL với Amazon Kinesis Data Analytics, Amazon Translate và Amazon Comprehend, nơi chúng tôi chỉ cho bạn cách bạn có thể sử dụng Studio phân tích dữ liệu Amazon Kinesis được hỗ trợ bởi Khí cầu ApacheApache Flash để phân tích, dịch và biên tập lại các trường văn bản trong dữ liệu truyền trực tuyến một cách tương tác.

Tổng quan về giải pháp

Hình sau cho thấy một kiến ​​trúc ví dụ để thực hiện thao tác lại PII của dữ liệu truyền trực tuyến trong thời gian thực, bằng cách sử dụng Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3), Chuyển đổi dữ liệu Kinesis Data Firehose, Amazon hiểuAWS Lambda. Ngoài ra, chúng tôi sử dụng AWS SDK cho Python (Boto3) cho các hàm Lambda. Như được chỉ ra trong biểu đồ, nhóm thô S3 chứa dữ liệu chưa được biên tập lại và nhóm đã biên tập lại S3 chứa dữ liệu đã được biên tập lại sau khi sử dụng Amazon Toàn diện DetectPiiEntities API trong một hàm Lambda.

Chi phí liên quan

Ngoài chi phí Kinesis Data Firehose, Amazon S3 và Lambda, giải pháp này sẽ phải chịu chi phí sử dụng từ Amazon Comprehend. Số tiền bạn phải trả là một hệ số của tổng số bản ghi có chứa PII và các ký tự được xử lý bởi hàm Lambda. Để biết thêm thông tin, hãy tham khảo Định giá Amazon Kinesis Data Firehose, Định giá toàn diện của AmazonĐịnh giá AWS Lambda.

Ví dụ: giả sử bạn có 10,000 bản ghi nhật ký và giá trị khóa bạn muốn biên soạn lại PII là 500 ký tự. Trong số 10,000 bản ghi nhật ký, 50 bản ghi được xác định là có chứa PII. Chi tiết chi phí như sau:

Chứa chi phí PII:

  • Kích thước của mỗi giá trị khóa = 500 ký tự (1 đơn vị = 100 ký tự)
  • Số đơn vị (100 ký tự) trên mỗi bản ghi (tối thiểu là 3 đơn vị) = 5
  • Tổng số đơn vị = 10,000 (bản ghi) x 5 (đơn vị trên mỗi bản ghi) x 1 (Yêu cầu hiểu của Amazon trên mỗi bản ghi) = 50,000
  • Giá mỗi đơn vị = $ 0.000002
    • Tổng chi phí để xác định bản ghi nhật ký với PII bằng API ContainsPiiEntities = 0.1 đô la [50,000 đơn vị x 0.000002 đô la] 

Chi phí PII Redact:

  • Tổng số đơn vị chứa PII = 50 (bản ghi) x 5 (đơn vị trên mỗi bản ghi) x 1 (Yêu cầu hiểu của Amazon trên mỗi bản ghi) = 250
  • Giá mỗi đơn vị = $ 0.0001
    • Tổng chi phí để xác định vị trí của PII bằng API DetectPiiEntities = [số đơn vị] x [giá mỗi đơn vị] = 250 x 0.0001 đô la = 0.025 đô la

Tổng chi phí cho việc xác định và xử lý lại:

  • Tổng chi phí: 0.1 đô la (xác thực nếu trường chứa PII) + 0.025 đô la (chỉnh sửa các trường có chứa PII) = 0.125 đô la

Triển khai giải pháp với AWS CloudFormation

Đối với bài đăng này, chúng tôi cung cấp một Hình thành đám mây AWS dữ liệu trực tuyến redaction mẫu, cung cấp chi tiết đầy đủ về việc triển khai để cho phép triển khai có thể lặp lại. Khi triển khai, mẫu này tạo hai nhóm S3: một để lưu trữ dữ liệu mẫu thô được nhập từ Amazon Kinesis Data Generator (KDG) và một để lưu trữ dữ liệu đã biên tập lại. Ngoài ra, nó tạo luồng phân phối Kinesis Data Firehose với DirectPUT dưới dạng đầu vào và một hàm Lambda gọi Amazon Toàn diện ChứaPiiEntitiesPhát hiện PiiThực thể API để xác định và biên tập lại dữ liệu PII. Hàm Lambda dựa vào đầu vào của người dùng trong các biến môi trường để xác định những giá trị chính nào cần được kiểm tra cho PII.

Hàm Lambda trong giải pháp này có kích thước tải trọng giới hạn đến 100 KB. Nếu một trọng tải được cung cấp trong đó văn bản lớn hơn 100 KB, thì hàm Lambda sẽ bỏ qua nó.

Để triển khai giải pháp, hãy hoàn thành các bước sau:

  1. Khởi chạy ngăn xếp CloudFormation ở phía Đông Hoa Kỳ (N. Virginia) us-east-1:
    Biên tập lại dữ liệu nhạy cảm từ truyền dữ liệu trong thời gian gần như thực bằng cách sử dụng Amazon Comprehend và Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.
  2. Nhập tên ngăn xếp và để các thông số khác ở chế độ mặc định
  3. Chọn Tôi xác nhận rằng AWS CloudFormation có thể tạo tài nguyên IAM với tên tùy chỉnh.
  4. Chọn Tạo ngăn xếp.

Triển khai tài nguyên theo cách thủ công

Nếu bạn muốn xây dựng kiến ​​trúc theo cách thủ công thay vì sử dụng AWS CloudFormation, hãy hoàn thành các bước trong phần này.

Tạo nhóm S3

Tạo nhóm S3 của bạn bằng các bước sau:

  1. Trên bảng điều khiển Amazon S3, chọn trong khung điều hướng.
  2. Chọn Tạo xô.
  3. Tạo một nhóm cho dữ liệu thô của bạn và một nhóm cho dữ liệu đã biên tập lại của bạn.
  4. Lưu ý tên của các nhóm bạn vừa tạo.

Tạo hàm Lambda

Để tạo và triển khai hàm Lambda, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển Lambda, chọn Tạo chức năng.
  2. Chọn Tác giả từ đầu.
  3. Trong Tên chức năng, đi vào AmazonComprehendPII-Redact.
  4. Trong Runtime, chọn Python 3.9.
  5. Trong Kiến trúc, lựa chọn x86_64.
  6. Trong Vai trò thực thi, lựa chọn Tạo vai trò mới với quyền Lambda.
  7. Sau khi bạn tạo hàm, hãy nhập mã sau:
    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. Chọn Triển khai.
  9. Trong ngăn dẫn hướng, chọn Cấu hình.
  10. Hướng đến Biến môi trường.
  11. Chọn Chỉnh sửa.
  12. Trong Key, đi vào keys.
  13. Trong Giá trị, hãy nhập các giá trị khóa mà bạn muốn biên tập lại PII, được phân tách bằng dấu phẩy và dấu cách. Ví dụ, nhập Tweet1, Tweet2 nếu bạn đang sử dụng dữ liệu thử nghiệm mẫu được cung cấp trong phần tiếp theo của bài đăng này.
  14. Chọn Lưu.
  15. Hướng đến Cấu hình chung.
  16. Chọn Chỉnh sửa.
  17. Thay đổi giá trị Timeout đến 1 phút.
  18. Chọn Lưu.
  19. Hướng đến Quyền.
  20. Chọn tên vai trò dưới Vai trò thực thi.
    Bạn được chuyển hướng đến Quản lý truy cập và nhận dạng AWS (IAM) bảng điều khiển.
  21. Trong Thêm quyền, chọn Đính kèm các chính sách.
  22. đăng ký hạng mục thi Comprehend vào thanh tìm kiếm và chọn chính sách ComprehendFullAccess.
  23. Chọn Đính kèm các chính sách.

Tạo luồng phân phối Firehose

Để tạo luồng phân phối Firehose của bạn, hãy hoàn thành các bước sau:

  1. Trên bảng điều khiển Kinesis Data Firehose, hãy chọn Tạo luồng phân phối.
  2. Trong nguồn, lựa chọn PUT trực tiếp.
  3. Trong Nơi đến, lựa chọn Amazon S3.
  4. Trong Tên luồng phân phối, đi vào ComprehendRealTimeBlog.
  5. Theo Chuyển đổi bản ghi nguồn với AWS Lambda, lựa chọn Kích hoạt.
  6. Trong Chức năng AWS Lambda, nhập ARN cho chức năng bạn đã tạo hoặc duyệt đến chức năng AmazonComprehendPII-Redact.
  7. Trong Kích thước bộ đệm, đặt giá trị thành 1 MB.
  8. Trong Khoảng đệm, giữ nguyên là 60 giây.
  9. Theo Cài đặt Đích, hãy chọn nhóm S3 mà bạn đã tạo cho dữ liệu được biên tập lại.
  10. Theo Cài đặt sao lưu, chọn nhóm S3 mà bạn đã tạo cho các bản ghi thô.
  11. Theo Sự cho phép, tạo hoặc cập nhật một vai trò IAM hoặc chọn một vai trò hiện có với các quyền thích hợp.
  12. Chọn Tạo luồng phân phối.

Triển khai giải pháp truyền dữ liệu trực tuyến với Kinesis Data Generator

Bạn có thể sử dụng Kinesis Data Generator (KDG) để nhập dữ liệu mẫu vào Kinesis Data Firehose và kiểm tra giải pháp. Để đơn giản hóa quy trình này, chúng tôi cung cấp hàm Lambda và mẫu CloudFormation để tạo Nhận thức về Amazon người dùng và chỉ định các quyền thích hợp để sử dụng KDG.

  1. trên Trang Trình tạo dữ liệu Amazon Kinesis, chọn Tạo người dùng ẩn danh với CloudFormation.Bạn được chuyển hướng đến bảng điều khiển AWS CloudFormation để tạo ngăn xếp của mình.
  2. Cung cấp tên người dùng và mật khẩu cho người dùng mà bạn đăng nhập vào KDG.
  3. Để các cài đặt khác ở mặc định và tạo ngăn xếp của bạn.
  4. trên Kết quả đầu ra , chọn liên kết KDG UI.
  5. Nhập tên người dùng và mật khẩu để đăng nhập.

Gửi hồ sơ kiểm tra và xác nhận giao dịch lại trong Amazon S3

Để kiểm tra giải pháp, hãy hoàn thành các bước sau:

  1. Đăng nhập vào URL KDG mà bạn đã tạo ở bước trước.
  2. Chọn Khu vực đã triển khai ngăn xếp AWS CloudFormation.
  3. Trong Luồng / luồng phân phối, hãy chọn luồng phân phối bạn đã tạo (nếu bạn đã sử dụng mẫu, thì mẫu đó có định dạng accountnumber-awscomprehend-blog).
  4. Để các cài đặt khác ở chế độ mặc định.
  5. Đối với mẫu bản ghi, bạn có thể tạo các thử nghiệm của riêng mình hoặc sử dụng mẫu sau. Nếu bạn đang sử dụng dữ liệu mẫu được cung cấp bên dưới để thử nghiệm, bạn nên có các biến môi trường được cập nhật trong AmazonComprehendPII-Redact Hàm lambda để Tweet1, Tweet2. Nếu được triển khai qua CloudFormation, hãy cập nhật các biến môi trường thành Tweet1, Tweet2 trong hàm Lambda đã tạo. Dữ liệu thử nghiệm mẫu dưới đây:
    {"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. Chọn Gửi dữ liệuvà đợi một vài giây để các bản ghi được gửi đến luồng của bạn.
  7. Sau vài giây, dừng trình tạo KDG và kiểm tra nhóm S3 của bạn để tìm các tệp đã phân phối.

Sau đây là ví dụ về dữ liệu thô trong nhóm S3 thô:

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

Sau đây là một ví dụ về dữ liệu được biên tập lại trong nhóm S3 đã biên tập lại:

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

Thông tin nhạy cảm đã bị xóa khỏi các thư được biên tập lại, mang lại sự tin tưởng rằng bạn có thể chia sẻ dữ liệu này với hệ thống cuối.

Dọn dẹp

Khi bạn hoàn thành thử nghiệm với giải pháp này, hãy dọn dẹp tài nguyên của bạn bằng cách sử dụng bảng điều khiển AWS CloudFormation để xóa tất cả tài nguyên được triển khai trong ví dụ này. Nếu bạn đã làm theo các bước thủ công, bạn sẽ cần xóa hai nhóm theo cách thủ công, AmazonComprehendPII-Redact chức năng, ComprehendRealTimeBlog luồng, nhóm nhật ký cho ComprehendRealTimeBlog luồng và bất kỳ vai trò IAM nào đã được tạo.

Kết luận

Bài đăng này đã chỉ cho bạn cách tích hợp PII redaction vào kiến ​​trúc phát trực tuyến gần thời gian thực của bạn và giảm thời gian xử lý dữ liệu bằng cách thực hiện redaction trong chuyến bay. Trong trường hợp này, bạn cung cấp dữ liệu đã biên tập lại cho người dùng cuối của mình và quản trị viên hồ dữ liệu sẽ bảo mật nhóm thô để sử dụng sau này. Bạn cũng có thể xây dựng quá trình xử lý bổ sung với Amazon Toàn diện để xác định giọng điệu hoặc cảm xúc, xác định các thực thể trong dữ liệu và phân loại từng thông báo.

Chúng tôi đã cung cấp các bước riêng lẻ cho từng dịch vụ như một phần của bài đăng này và cũng bao gồm mẫu CloudFormation cho phép bạn cung cấp các tài nguyên cần thiết trong tài khoản của mình. Mẫu này chỉ nên được sử dụng cho các tình huống bằng chứng về khái niệm hoặc thử nghiệm. Tham khảo hướng dẫn dành cho nhà phát triển cho Amazon hiểu, LambdaVòi cứu hỏa dữ liệu Kinesis cho bất kỳ giới hạn dịch vụ nào.

Để bắt đầu với nhận dạng PII và xử lý lại, hãy xem Thông tin nhận dạng cá nhân (PII). Với kiến ​​trúc ví dụ trong bài đăng này, bạn có thể tích hợp bất kỳ API nào trong số các API của Amazon với dữ liệu gần thời gian thực bằng cách sử dụng chuyển đổi dữ liệu Kinesis Data Firehose. Để tìm hiểu thêm về những gì bạn có thể xây dựng với dữ liệu gần thời gian thực của mình với Kinesis Data Firehose, hãy tham khảo Hướng dẫn dành cho nhà phát triển Amazon Kinesis Data Firehose. Giải pháp này khả dụng ở tất cả các Khu vực AWS nơi Amazon Computing và Kinesis Data Firehose khả dụng.


Giới thiệu về tác giả

Biên tập lại dữ liệu nhạy cảm từ truyền dữ liệu trong thời gian gần như thực bằng cách sử dụng Amazon Comprehend và Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái. Joe Morotti là Kiến trúc sư Giải pháp tại Amazon Web Services (AWS), giúp đỡ các khách hàng Doanh nghiệp trên khắp Trung Tây Hoa Kỳ. Anh ấy đã nắm giữ một loạt các vai trò kỹ thuật và thích thể hiện nghệ thuật có thể của khách hàng. Khi rảnh rỗi, anh ấy thích dành thời gian chất lượng cùng gia đình khám phá những địa điểm mới và phân tích tổng thể thành tích của đội thể thao của mình

Biên tập lại dữ liệu nhạy cảm từ truyền dữ liệu trong thời gian gần như thực bằng cách sử dụng Amazon Comprehend và Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Sriharsh Adari là Kiến trúc sư giải pháp cao cấp tại Amazon Web Services (AWS), nơi anh ấy giúp khách hàng làm việc ngược lại từ kết quả kinh doanh để phát triển các giải pháp sáng tạo trên AWS. Trong những năm qua, anh ấy đã giúp nhiều khách hàng về việc chuyển đổi nền tảng dữ liệu trên các ngành dọc của ngành. Lĩnh vực chuyên môn cốt lõi của ông bao gồm Chiến lược Công nghệ, Phân tích Dữ liệu và Khoa học Dữ liệu. Trong thời gian rảnh rỗi, anh ấy thích chơi Tennis, say sưa xem các chương trình truyền hình và chơi Tabla.

Dấu thời gian:

Thêm từ Học máy AWS