Informations d'identification personnelle

Le langage détecte, classe et fournit des options pour dépersonnaliser les informations personnelles identifiables (IPI) dans du texte non structuré.

Cas d'emploi

Détecter et organiser les informations privées dans les commentaires des utilisateurs

De nombreuses organisations collectent les commentaires des utilisateurs via divers canaux tels que les évaluations de produits, les demandes de retour, les tickets d'assistance et les forums de commentaires. Vous pouvez utiliser le service de détection des informations d'identification personnelle de langue pour la détection automatique des entités d'informations d'identification personnelle afin non seulement d'avertir de manière proactive, mais également d'anonymiser avant de stocker les commentaires postés. En utilisant la détection automatique des entités d'informations d'identification personnelle, vous pouvez avertir les utilisateurs de manière proactive du partage de données privées et les applications pour implémenter des mesures telles que le stockage de données masquées.

Analyse du stockage d'objets pour détecter la présence de données sensibles

Les solutions de stockage cloud telles qu'OCI Object Storage sont largement utilisées par les employés pour stocker des documents commerciaux dans des emplacements contrôlés localement ou partagés par de nombreuses équipes. Pour s'assurer que ces emplacements partagés ne stockent pas d'informations privées telles que les noms des employés, les données démographiques et les informations de paie, il est nécessaire de scanner automatiquement tous les documents pour détecter la présence d'informations d'identification personnelle. Le modèle OCI Language PII fournit une API par lots pour traiter de nombreux documents texte à grande échelle afin de traiter les données à grande échelle.

Entités prises en charge

Le tableau suivant décrit les différentes entités que les informations d'identification personnelle peuvent extraire.

Type d'entité Description
PERSON Nom de la personne
ADDRESS Adresse
AGE Âge
DATE_TIME Date ou heure
SSN_OR_TAXPAYER Numéro de sécurité sociale ou ID contribuable (Etats-Unis)
EMAIL courriel
PASSPORT_NUMBER_US Numéro de passeport (États-Unis)
TELEPHONE_NUMBER Téléphone ou fax (US)
DRIVER_ID_US Numéro d'identification du conducteur (US)
BANK_ACCOUNT_NUMBER Numéro du compte bancaire (États-Unis)
BANK_SWIFT Compte bancaire (SWIFT)
BANK_ROUTING Numéro d'acheminement de la banque
CREDIT_DEBIT_NUMBER Numéro de carte de paiement
IP_ADDRESS Adresse IP, IPV4 et IPV6
MAC_ADDRESS Adresse MAC

Voici les types de clé secrète :

COOKIE Cookie du site
XSRF TOKEN Jeton de falsification de demande intersite (XSRF)
AUTH_BASIC Authentification de base
AUTH_BEARER Authentification du porteur
JSON_WEB_TOKEN Jeton Web JSON
PRIVATE_KEY Clé privée cryptographique
PUBLIC_KEY Clé publique cryptographique

Voici les informations d'identification de compte OCI qui sont les informations d'authentification requises pour accéder aux ressources et les gérer dans OCI. Ces informations d'identification ont pour but de garantir une authentification sécurisée des utilisateurs, des applications et des services afin d'interagir avec les services et les ressources OCI.

OCI_OCID_USER Utilisateur OCI
OCI_OCID_TENANCY OCID (identificateur Oracle Cloud) de location
OCI_SMTP_USERNAME Nom d'utilisateur SMTP (Simple Mail Transfer Protocol)
OCI_OCID_REFERENCE Référence OCID
OCI_FINGERPRINT Empreinte OCI
OCI_CREDENTIAL Ce type couvre le jeton d'authentification OCI, les informations d'identification OAuth et les informations d'identification SMTP
OCI_PRE_AUTH_REQUEST Demande préauthentifiée OCI
OCI_STORAGE_SIGNED_URL URL unique OCI Storage
OCI_CUSTOMER_SECRET_KEY Clé secrète client OCI
OCI_ACCESS_KEY Clés d'accès OCI ou informations d'identification de sécurité

Exemples

Texte saisi Texte de sortie masqué par "*"

Hello Support Team,

I am reaching out to seek help with my credit card number 5111 1111 1111 1118 expiring on 11/23. There was a suspicious transaction on 12-Aug-2022 which I reported by calling from my mobile number +1 (650) 555-0190 also I emailed from my email id sarah.jones1234@hotmail.com. Would you please let me know the refund status?

Regards,

Sarah

Hello Support Team, I am reaching out to seek help with my credit card number ******************* expiring on ***** . There was a suspicious transaction on *********** which I reported by calling from my mobile number ** ************** also I emailed from my email id *************************** . Would you please let me know the refund status? Regards, *****

Le JSON de l'exemple est :

Exemple de demande
POST https://<region-url>/20210101/actions/batchDetectLanguagePiiEntities
Format de demande d'API :
{
  "documents": [
    {
      "languageCode": "en",
      "key": "1",
      "text": "Hello Support Team, I am reaching out to seek help with my credit card number 5111 1111 1111 1118 expiring on 11/23. There was a suspicious transaction on 12-Aug-2022 which I reported by calling from my mobile number +1 (650) 555-0190 also I emailed from my email id sarah.jones1234@hotmail.com. Would you please let me know the refund status? Regards, Sarah"
    }
  ],
  "compartmentId": "ocid1.tenancy.oc1..aaaaaaaadany3y6wdh3u3jcodcmm42ehsdno525pzyavtjbpy72eyxcu5f7q",
  "masking": {
    "ALL": {
      "mode": "MASK",
      "isUnmaskedFromEnd": true,
      "leaveCharactersUnmasked": 4
    }
  }
}
Contenu JSON de la réponse :
{
    "documents": [
        {
            "key": "1",
            "entities": [
                {
                    "offset": 79,
                    "length": 19,
                    "type": "CREDIT_DEBIT_NUMBER",
                    "text": "5111 1111 1111 1118",
                    "score": 0.75,
                    "isCustom": false
                },
                {
                    "offset": 111,
                    "length": 5,
                    "type": "DATE_TIME",
                    "text": "11/23",
                    "score": 0.9992455840110779,
                    "isCustom": false
                },
                {
                    "offset": 156,
                    "length": 11,
                    "type": "DATE_TIME",
                    "text": "12-Aug-2022",
                    "score": 0.998766303062439,
                    "isCustom": false
                },
                {
                    "offset": 218,
                    "length": 2,
                    "type": "TELEPHONE_NUMBER",
                    "text": "+1",
                    "score": 0.6941494941711426,
                    "isCustom": false
                },
                {
                    "offset": 221,
                    "length": 14,
                    "type": "TELEPHONE_NUMBER",
                    "text": "(650) 555-0190",
                    "score": 0.9527066349983215,
                    "isCustom": false
                },
                {
                    "offset": 268,
                    "length": 27,
                    "type": "EMAIL",
                    "text": "sarah.jones1234@hotmail.com",
                    "score": 0.95,
                    "isCustom": false
                },
                {
                    "offset": 354,
                    "length": 5,
                    "type": "PERSON",
                    "text": "Sarah",
                    "score": 0.9918518662452698,
                    "isCustom": false
                }
            ],
            "languageCode": "en",
            "maskedText": "Hello Support Team, \nI am reaching out to seek help with my credit card number ***************2345 expiring on *1/23. There was a suspicious transaction on *******2022 which I reported by calling from my mobile number +1 **********9999 also I emailed from my email id ***********************.com. Would you please let me know the refund status?\nRegards,\n*arah"
        }
    ],
    "errors": []
}

Configuration de la sortie de texte d'informations d'identification personnelle ou d'informations de santé protégées

Dans le service Language, vous pouvez configurer la sortie PII/PHI lors de l'analyse du texte.

  1. Renseignez Analyse du texte.
  2. Dans la section Informations d'identification personnelle ou Informations de santé protégées, cliquez sur Configurer dans la section Sortie.
  3. Sélectionnez PII dans la liste déroulante.
  4. Sélectionnez l'une des options suivantes :
    • Masque : sélectionnez cette option pour inclure ou exclure des entités.
      1. Liste d'exclusion d'anonymisation : entrez les entités à exclure de la sortie d'interface utilisateur et de la sortie de kit SDK.
      2. Inclure les entités exclues du masquage dans les entités détectées : sélectionnez cette option pour inclure l'entité qui a été exclue de la sortie dans l'interface utilisateur, mais pour continuer à inclure l'entité dans la sortie du kit SDK.
      3. Caractère de masquage : caractère de masquage permettant de masquer le texte d'entrée.
    • Remplacer : remplace les entités d'informations d'identification personnelle par une séquence de caractères donnée.
    • Enlever : enlevez les entités d'informations d'identification personnelle de la sortie.
  5. Cliquez sur Enregistrer les modifications.

Règles d'informations d'identification personnelle

Règles d'informations d'identification personnelle personnalisées
Clés Type Description
ruleId Chaîne (String) Identifiant unique de la règle.
regex Chaîne (String) Modèle d'expression régulière correspondant aux types de données personnalisés. Par exemple, ([A-Z]{5}[0-9]{4}[A-Z]{1}) pour faire correspondre la carte Pan.
type Chaîne (String) Nom du type d'entité à mettre en correspondance. Par exemple, PAN_CARD.
prefix Liste<String> Mots ou expressions à rechercher dans maxDistance du mot détecté par regex.
suffix Liste<String> Mots ou expressions à rechercher dans maxDistance du mot détecté par regex.
isCaseSensitive Boolean Détermine si le processus de mise en correspondance doit considérer les lettres majuscules et minuscules comme distinctes, avec la valeur true indiquant la sensibilité à la casse et false indiquant l'insensibilité à la casse.
maxDistance Integer Définit la distance maximale autorisée en caractères entre prefix/suffix et le modèle mis en correspondance, ce qui garantit que le modèle se trouve à une certaine proximité de prefix/suffix.
priority Integer Priorité des règles. Fourchettes comprises entre 1 et 50, la priorité 1 étant la plus élevée. Par exemple, s'il existe deux règles avec la même valeur regex mais des valeurs prefix et suffix différentes, la règle avec la priorité la plus élevée est prise en compte
regexOnly Boolean

Si la valeur est True, le modèle enlève les entités détectées qui ont la même valeur regex que la règle regex.

Exemples :

Dans la phrase, "J'ai 25 ans et il a 11 mois", avec le suffixe défini sur ["années"] :

  • Si regexOnly a la valeur True, seul 25 est détecté car le suffixe "months" ne correspond pas au suffixe "years" indiqué.
  • Si regexOnly a la valeur False, les valeurs 25 et 11 sont détectées, à savoir 25 dans la règle (en raison du suffixe "years") et 11 dans le modèle.
filterEntityTypes Liste<String>

Types d'entité OCI à filtrer. Par exemple, [PERSON, AGE] pour filtrer les types d'entité PERSON et AGE à partir des détections de modèle. Si le filtre est défini sur [ALL], toutes les entités détectées par le modèle sont filtrées.

Lorsque vous répertoriez [All], la détection est basée sur regex et ignore les entités de modèle prédéfinies.

disable Boolean Affectez la valeur True pour désactiver cette règle.

Exemples de fichiers de règles

[
          {
          "ruleId": "rule 1",
          "regex": "([A-Z]{2}[0-9]{2}-[0-9]{3}-[0-9]{3}-[0-9]{3}\/[0-9]{3})",
          "type": "NAREGA_ID",
          "isCaseSensitive": true,
          "suffix": ["id", "narega"],
          "regexOnly": true,
          "maxDistance": 10,
          "priority": 2
          },
          {
          "ruleId": "rule 2",
          "regex": "([A-Z]{5}[0-9]{4}[A-Z]{3})",
          "type": "PAN_CARD",
          "prefix": ["pan", "pancard"],
          "isCaseSensitive": false,
          "regexOnly": false,
          "maxDistance": 10,
          "priority": 2,
          "filterEntityTypes": ["PERSON"]
          },
          {
          "ruleId": "rule 3",
          "regex": "([A-Z]{4}[0-9]{7})",
          "type": "IFSC_CODE",
          "prefix": ["IFSC"],
          "isCaseSensitive": false,
          "regexOnly":false,
          "maxDistance": 20,
          "priority": 2,
          "disable": false
          },
          {
          "ruleId": "rule 4",
          "regex": "([A-Z]{2}[0-9]{2}-[0-9]{3}-[0-9]{3}-[0-9]{3}\/[0-9]{3})",
          "type": "TIRA_ID",
          "isCaseSensitive": false,
          "prefix": ["Narega"],
          "regexOnly": false,
          "maxDistance": 10,
          "priority": 1
          }
          ]