Rédigez les données sensibles issues du streaming en temps quasi réel à l'aide d'Amazon Comprehend et d'Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Masquez les données sensibles des données de diffusion en temps quasi réel à l'aide d'Amazon Comprehend et d'Amazon Kinesis Data Firehose

La fourniture de données et d'informations en temps quasi réel permet aux entreprises de répondre rapidement aux besoins de leurs clients. Les données en temps réel peuvent provenir de diverses sources, notamment les médias sociaux, les appareils IoT, la surveillance des infrastructures, la surveillance des centres d'appels, etc. En raison de l'étendue et de la profondeur des données ingérées à partir de plusieurs sources, les entreprises recherchent des solutions pour protéger la confidentialité de leurs clients et empêcher l'accès aux données sensibles à partir des systèmes finaux. Auparavant, vous deviez vous fier à des moteurs de règles d'informations personnelles identifiables (PII) qui pouvaient signaler les faux positifs ou manquer des données, ou vous deviez créer et maintenir des modèles d'apprentissage automatique (ML) personnalisés pour identifier les PII dans vos données de streaming. Vous deviez également implémenter et maintenir l'infrastructure nécessaire pour prendre en charge ces moteurs ou modèles.

Pour simplifier ce processus et réduire les coûts, vous pouvez utiliser Amazon comprendre, un service de traitement du langage naturel (TAL) qui utilise le ML pour rechercher des informations et des relations telles que des personnes, des lieux, des sentiments et des sujets dans du texte non structuré. Vous pouvez désormais utiliser les fonctionnalités d'Amazon Comprehend ML pour détecter et supprimer les PII dans les e-mails des clients, les tickets d'assistance, les avis sur les produits, les réseaux sociaux, etc. Aucune expérience en ML n'est requise. Par exemple, vous pouvez analyser les tickets de support et les articles de la base de connaissances pour détecter les entités PII et biffer le texte avant d'indexer les documents. Après cela, les documents sont exempts d'entités PII et les utilisateurs peuvent consommer les données. Le masquage des entités PII vous aide à protéger la confidentialité de vos clients et à vous conformer aux lois et réglementations locales.

Dans cet article, vous apprendrez à implémenter Amazon Comprehend dans vos architectures de streaming pour masquer les entités PII en temps quasi réel à l'aide Firehose de données Amazon Kinesis comprenant AWS Lambda.

Cet article se concentre sur la suppression des données de certains champs qui sont ingérés dans une architecture de diffusion en continu à l'aide de Kinesis Data Firehose, où vous souhaitez créer, stocker et conserver des copies dérivées supplémentaires des données pour la consommation par les utilisateurs finaux ou les applications en aval. Si vous utilisez Flux de données Amazon Kinesis ou si vous avez des cas d'utilisation supplémentaires en dehors de la rédaction des informations personnelles, reportez-vous à Traduire, rédiger et analyser les données de diffusion en continu à l'aide de fonctions SQL avec Amazon Kinesis Data Analytics, Amazon Translate et Amazon Comprehend, où nous montrons comment vous pouvez utiliser Studio d'analyse de données Amazon Kinesis grâce à Apache Zeppelin ainsi que le Apache Flink pour analyser, traduire et rédiger de manière interactive les champs de texte dans les données en continu.

Vue d'ensemble de la solution

La figure suivante montre un exemple d'architecture pour effectuer le masquage PII des données de streaming en temps réel, à l'aide de Service de stockage simple Amazon (Amazon S3), Transformation des données Kinesis Data Firehose, Amazon comprendreet AWS Lambda. De plus, nous utilisons le AWS SDK pour Python (Boto3) pour les fonctions Lambda. Comme indiqué dans le diagramme, le compartiment brut S3 contient des données non expurgées et le compartiment expurgé S3 contient des données expurgées après l'utilisation d'Amazon Comprehend DetectPiiEntities API dans une fonction Lambda.

Coûts impliqués

En plus des coûts Kinesis Data Firehose, Amazon S3 et Lambda, cette solution entraînera des coûts d'utilisation d'Amazon Comprehend. Le montant que vous payez est un facteur du nombre total d'enregistrements contenant des PII et des caractères traités par la fonction Lambda. Pour plus d'informations, reportez-vous à Tarification Amazon Kinesis Data Firehose, Amazon comprendre les prixet Tarification AWS Lambda.

Par exemple, supposons que vous disposiez de 10,000 500 enregistrements de journaux et que la valeur de clé à partir de laquelle vous souhaitez masquer les informations personnelles comporte 10,000 caractères. Sur les 50 XNUMX enregistrements de journal, XNUMX sont identifiés comme contenant des PII. Le détail des coûts est le suivant :

Contient PII Coût :

  • Taille de chaque valeur de clé = 500 caractères (1 unité = 100 caractères)
  • Nombre d'unités (100 caractères) par enregistrement (le minimum est de 3 unités) = 5
  • Unités totales = 10,000 5 (enregistrements) x 1 (unités par enregistrement) x 50,000 (requêtes Amazon Comprehend par enregistrement) = XNUMX XNUMX
  • Prix ​​par unité = 0.000002 USD
    • Coût total pour identifier les enregistrements de journal avec PII à l'aide de l'API ContientPiiEntities = 0.1 $ [50,000 0.000002 unités x XNUMX $] 

Coût de la suppression des informations personnelles :

  • Nombre total d'unités contenant des PII = 50 (enregistrements) x 5 (unités par enregistrement) x 1 (requêtes Amazon Comprehend par enregistrement) = 250
  • Prix ​​par unité = 0.0001 USD
    • Coût total pour identifier l'emplacement des PII à l'aide de l'API DetectPiiEntities = [nombre d'unités] x [coût par unité] = 250 x 0.0001 $ = 0.025 $

Coût total pour l'identification et la rédaction :

  • Coût total : 0.1 $ (validation si le champ contient des PII) + 0.025 $ (champs masqués contenant des PII) = 0.125 $

Déployez la solution avec AWS CloudFormation

Pour ce poste, nous fournissons un AWS CloudFormation suppression de données en continu modèle, qui fournit tous les détails de l'implémentation pour permettre des déploiements reproductibles. Lors du déploiement, ce modèle crée deux compartiments S3 : un pour stocker les exemples de données brutes ingérées à partir du générateur de données Amazon Kinesis (KDG) et un pour stocker les données expurgées. De plus, il crée un flux de diffusion Kinesis Data Firehose avec DirectPUT comme entrée, et une fonction Lambda qui appelle Amazon Comprehend ContientPiiEntities ainsi que le Détecter les entités Pii API pour identifier et supprimer les données PII. La fonction Lambda s'appuie sur l'entrée de l'utilisateur dans les variables d'environnement pour déterminer quelles valeurs de clé doivent être inspectées pour les PII.

La fonction Lambda de cette solution a des tailles de charge utile limitées à 100 Ko. Si une charge utile est fournie où le texte est supérieur à 100 Ko, la fonction Lambda l'ignorera.

Pour déployer la solution, procédez comme suit :

  1. Lancer la pile CloudFormation dans USA Est (Virginie du Nord) us-east-1:
    Rédigez les données sensibles issues du streaming en temps quasi réel à l'aide d'Amazon Comprehend et d'Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Recherche verticale. Aï.
  2. Entrez un nom de pile et laissez les autres paramètres à leur valeur par défaut
  3. Sélectionnez Je reconnais qu'AWS CloudFormation peut créer des ressources IAM avec des noms personnalisés.
  4. Selectionnez Créer une pile.

Déployer les ressources manuellement

Si vous préférez créer l'architecture manuellement au lieu d'utiliser AWS CloudFormation, suivez les étapes de cette section.

Créer les compartiments S3

Créez vos buckets S3 en procédant comme suit :

  1. Sur la console Amazon S3, choisissez Chapeaux cloche dans le volet de navigation.
  2. Selectionnez Créer un seau.
  3. Créez un bucket pour vos données brutes et un pour vos données expurgées.
  4. Notez les noms des compartiments que vous venez de créer.

Créer la fonction Lambda

Pour créer et déployer la fonction Lambda, procédez comme suit :

  1. Sur la console Lambda, choisissez Créer une fonction.
  2. Selectionnez Auteur à partir de zéro.
  3. Pour Nom de la fonction, Entrer AmazonComprehendPII-Redact.
  4. Pour Runtime, choisissez Python 3.9.
  5. Pour Architecture, sélectionnez x86_64.
  6. Pour Rôle d'exécution, sélectionnez Créer un nouveau rôle avec des autorisations Lambda.
  7. Après avoir créé la fonction, saisissez le code suivant :
    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. Selectionnez Déployer.
  9. Dans le volet de navigation, choisissez Configuration.
  10. Accédez à Variables d'environnement.
  11. Selectionnez Modifier.
  12. Pour ACTIVITES, Entrer keys.
  13. Pour Valeur, saisissez les valeurs clés à partir desquelles vous souhaitez masquer les informations personnelles, séparées par une virgule et un espace. Par exemple, entrez Tweet1, Tweet2 si vous utilisez les exemples de données de test fournis dans la section suivante de cet article.
  14. Selectionnez Épargnez.
  15. Accédez à Configuration générale.
  16. Selectionnez Modifier.
  17. Changer la valeur de Temps mort à 1 minute.
  18. Selectionnez Épargnez.
  19. Accédez à Permissions.
  20. Choisissez le nom du rôle sous Rôle d'exécution.
    Vous êtes redirigé vers le Gestion des identités et des accès AWS (IAM).
  21. Pour Ajouter des autorisations, choisissez Joindre des politiques.
  22. Entrer Comprehend dans la barre de recherche et choisissez la politique ComprehendFullAccess.
  23. Selectionnez Joindre des politiques.

Créer le flux de diffusion Firehose

Pour créer votre flux de diffusion Firehose, procédez comme suit :

  1. Sur la console Kinesis Data Firehose, choisissez Créer un flux de diffusion.
  2. Pour Identifier, sélectionnez PUT direct.
  3. Pour dentaire, sélectionnez Amazon S3.
  4. Pour Nom du flux de diffusion, Entrer ComprehendRealTimeBlog.
  5. Sous Transformer les enregistrements source avec AWS Lambda, sélectionnez Activé.
  6. Pour Fonction AWS Lambda, entrez l'ARN de la fonction que vous avez créée ou naviguez jusqu'à la fonction AmazonComprehendPII-Redact.
  7. Pour Taille du tampon, définissez la valeur sur 1 Mo.
  8. Pour Intervalle tampon, laissez-le pendant 60 secondes.
  9. Sous Paramètres de destination, sélectionnez le compartiment S3 que vous avez créé pour les données masquées.
  10. Sous Paramètres de sauvegarde, sélectionnez le compartiment S3 que vous avez créé pour les enregistrements bruts.
  11. Sous Autorisation, créez ou mettez à jour un rôle IAM, ou choisissez un rôle existant avec les autorisations appropriées.
  12. Selectionnez Créer un flux de diffusion.

Déployez la solution de diffusion de données avec Kinesis Data Generator

Vous pouvez utiliser le générateur de données Kinesis (KDG) pour ingérer des exemples de données dans Kinesis Data Firehose et tester la solution. Pour simplifier ce processus, nous fournissons une fonction Lambda et un modèle CloudFormation pour créer un Amazon Cognito utilisateur et attribuez les autorisations appropriées pour utiliser le KDG.

  1. Sur le Page Générateur de données Amazon Kinesis, choisissez Créer un utilisateur Cognito avec CloudFormation.Vous êtes redirigé vers la console AWS CloudFormation pour créer votre pile.
  2. Fournissez un nom d'utilisateur et un mot de passe pour l'utilisateur avec lequel vous vous connectez au KDG.
  3. Laissez les autres paramètres à leurs valeurs par défaut et créez votre pile.
  4. Sur le Sortie onglet, choisissez le lien KDG UI.
  5. Entrez votre nom d'utilisateur et mot de passe pour vous connecter.

Envoyer des enregistrements de test et valider la rédaction dans Amazon S3

Pour tester la solution, procédez comme suit :

  1. Connectez-vous à l'URL KDG que vous avez créée à l'étape précédente.
  2. Choisissez la région dans laquelle la pile AWS CloudFormation a été déployée.
  3. Pour Flux/flux de diffusion, choisissez le flux de diffusion que vous avez créé (si vous avez utilisé le modèle, il a le format accountnumber-awscomprehend-blog).
  4. Laissez les autres paramètres à leurs valeurs par défaut.
  5. Pour le modèle d'enregistrement, vous pouvez créer vos propres tests ou utiliser le modèle suivant. Si vous utilisez les exemples de données fournis ci-dessous pour les tests, vous devez avoir mis à jour les variables d'environnement dans le AmazonComprehendPII-Redact Fonction lambda à Tweet1, Tweet2. Si déployé via CloudFormation, mettez à jour les variables d'environnement pour Tweet1, Tweet2 dans la fonction Lambda créée. Les exemples de données de test sont ci-dessous :
    {"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. Selectionnez Envoyer des données, et attendez quelques secondes pour que les enregistrements soient envoyés à votre flux.
  7. Après quelques secondes, arrêtez le générateur KDG et vérifiez vos compartiments S3 pour les fichiers livrés.

Voici un exemple de données brutes dans le compartiment S3 brut :

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

Voici un exemple des données masquées dans le compartiment S3 masqué :

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

Les informations sensibles ont été supprimées des messages expurgés, ce qui vous donne l'assurance que vous pouvez partager ces données avec les systèmes finaux.

Nettoyer

Lorsque vous avez terminé d'expérimenter cette solution, nettoyez vos ressources à l'aide de la console AWS CloudFormation pour supprimer toutes les ressources déployées dans cet exemple. Si vous avez suivi les étapes manuelles, vous devrez supprimer manuellement les deux compartiments, le AmazonComprehendPII-Redact fonction, le ComprehendRealTimeBlog stream, le groupe de journaux pour le ComprehendRealTimeBlog stream et tous les rôles IAM qui ont été créés.

Conclusion

Cet article vous a montré comment intégrer la rédaction PII dans votre architecture de streaming en temps quasi réel et réduire le temps de traitement des données en effectuant la rédaction en vol. Dans ce scénario, vous fournissez les données expurgées à vos utilisateurs finaux et un administrateur de lac de données sécurise le bucket brut pour une utilisation ultérieure. Vous pouvez également créer un traitement supplémentaire avec Amazon Comprehend pour identifier le ton ou le sentiment, identifier les entités dans les données et classer chaque message.

Nous avons fourni des étapes individuelles pour chaque service dans le cadre de cet article, et avons également inclus un modèle CloudFormation qui vous permet de provisionner les ressources requises dans votre compte. Ce modèle doit être utilisé uniquement pour la preuve de concept ou les scénarios de test. Reportez-vous aux guides du développeur pour Amazon comprendre, Lambdaet Firehose de données Kinesis pour toute limite de service.

Pour commencer avec l'identification et le masquage des PII, voir Informations personnelles identifiables (PII). Avec l'exemple d'architecture de cet article, vous pouvez intégrer n'importe quelle API Amazon Comprehend avec des données en temps quasi réel à l'aide de la transformation de données Kinesis Data Firehose. Pour en savoir plus sur ce que vous pouvez créer avec vos données en temps quasi réel avec Kinesis Data Firehose, reportez-vous au Guide du développeur Amazon Kinesis Data Firehose. Cette solution est disponible dans toutes les régions AWS où Amazon Comprehend et Kinesis Data Firehose sont disponibles.


À propos des auteurs

Rédigez les données sensibles issues du streaming en temps quasi réel à l'aide d'Amazon Comprehend et d'Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Recherche verticale. Aï. Joe Morotti est un architecte de solutions chez Amazon Web Services (AWS), aidant les clients d'entreprise à travers le Midwest américain. Il a occupé un large éventail de rôles techniques et aime montrer l'art du possible du client. Pendant son temps libre, il aime passer du temps de qualité avec sa famille à explorer de nouveaux endroits et à suranalyser les performances de son équipe sportive.

Rédigez les données sensibles issues du streaming en temps quasi réel à l'aide d'Amazon Comprehend et d'Amazon Kinesis Data Firehose PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Sriharsh Adari est architecte de solutions senior chez Amazon Web Services (AWS), où il aide les clients à travailler à rebours des résultats commerciaux pour développer des solutions innovantes sur AWS. Au fil des ans, il a aidé plusieurs clients à transformer des plateformes de données dans des secteurs verticaux de l'industrie. Son domaine d'expertise principal comprend la stratégie technologique, l'analyse de données et la science des données. Dans ses temps libres, il aime jouer au tennis, regarder des émissions de télévision et jouer au tabla.

Horodatage:

Plus de Apprentissage automatique AWS