• Akademia
  • Blog
  • O Serverless
  • O stronie

Amazon Comprehend - wykrywanie wra┼╝liwych danych


Amazon Comprehend - detekcja wra┼╝liwych danych

  • Aktualnie detekcja wra┼╝liwych danych za pomoc─ů Amazon Comprehend jest mo┼╝liwa tylko w j─Özyku angielskim. J─Özyk polski nie jest wspierany w przypadku wykrywania wra┼╝liwych danych.
  • Na potrzeby tego artyku┼éu, poj─Öcie wra┼╝liwych danych b─Ödziemy u┼╝ywa─ç jako dane PII.

W dzisiejszym ┼Ťwiecie, bezpiecze┼ästwo danych u┼╝ytkownik├│w jest bardzo wa┼╝ne. Nale┼╝y je trzyma─ç w bezpiecznym miejscu, i nie wystawia─ç je na widok publiczny. Niestety, nie zawsze jest to takie proste, albo cz─Östo wynika to z lenistwa u┼╝ytkownik├│w (kilka lat temu, wielu pracownik├│w trzyma┼éo wa┼╝ne informacje na karteczkach samoprzylepnych).

Dzisiaj w erze digitalizacji, karteczki samoprzylepne zosta┼éy zast─ůpione wirtualnymi notatkami w aplikacjach internetowych. Cz─Östo wynika to z braku odpowiedniego miejsca, gdzie takie dane mo┼╝na trzyma─ç.

Czym s─ů wra┼╝liwe dane?

Z angielskiego personally identifiable information (PII). Skr├│t PII oznacza informacje umo┼╝liwiaj─ůce identyfikacj─Ö osoby, s─ů to wszelkie dane, kt├│re mog─ů by─ç u┼╝yte do zidentyfikowania konkretnej osoby. Na potrzeby dalszej cz─Ö┼Ťci tego artyku┼éu, poj─Öcie wra┼╝liwych danych b─Ödziemy u┼╝ywa─ç jako dane PII.

Istniej─ů r├│┼╝ne rodzaje danych PII, mo┼╝emy je podzieli─ç na kilka g┼é├│wnych kategorii:

  • personalne, kt├│re zawieraj─ů dane jak imi─Ö, nazwisko, adresy zamieszkania, telefony kontaktowe, e-maile, jak i daty urodzenia.
  • finansowe, zwi─ůzane z informacjami bankowymi (np. dane kart kredytowych).
  • techniczne, czyli zwi─ůzane np. z nazw─ů u┼╝ytkownika, has┼éami, linkami, czy r├│wnie┼╝ z adresami IP.
  • obywatelskie, np. dane zwi─ůzane z prawem jazdy, z paszportami, czy te┼╝ z numerami ubezpiecze┼ä (np. SSN), czyli niepowtarzalne identyfikatory.

Jak wykrywa─ç wra┼╝liwe dane w aplikacjach?

Zdarza si─Ö, i┼╝ w niekt├│rych cz─Ö┼Ťciach aplikacji internetowych dla firm, dost─Öp do niekt├│rych niekt├│rych z nich maj─ů nie tylko pracownicy, ale te┼╝ klienci. Na przyk┼éad komentarze lub notatki do zam├│wie┼ä, dost─Öp do tego typu danych jest mo┼╝liwy przez pracownik├│w wewn─ůtrz firmy, przez co wiele os├│b niekoniecznie potrzebuj─ůcych tych danych, mo┼╝e mie─ç do nich dost─Öp.

W przypadku z g├│ry okre┼Ťlonej struktury danych np. w formularzach wiemy, jakie dane s─ů (lub te┼╝ powinny si─Ö tam znajdowa─ç), jednak w przypadku niestrukturyzowanej formy (np. notatki), ju┼╝ niekoniecznie. Przez co, nie wiemy, co faktycznie znajduje si─Ö w danej tre┼Ťci, bez zrozumienia kontekstu zda┼ä zawartych w tre┼Ťci.

Rozwi─ůzania typu regex, s─ů dobre dla powtarzalnych schemat├│w w tek┼Ťcie, mo┼╝emy z ┼éatwo┼Ťci─ů napisa─ç regex do r├│┼╝nego rodzaju identyfikator├│w, kt├│re zawieraj─ů okre┼Ťlon─ů ilo┼Ť─ç znak├│w (prosty przyk┼éad kod Social Security Number (SSN) zawiera 9 znak├│w, ma on sw├│j algorytm, a tak┼╝e bazuj─ůc na tym, w jaki spos├│b pracownicy tworz─ů tre┼Ťci, kilka schemat├│w mo┼╝na z tego zbudowa─ç). Niekoniecznie sprawdzi si─Ö to np. dla adres├│w zamieszkania.

Dla tego typu problem├│w warto u┼╝y─ç rozwi─ůza┼ä typu ML, kt├│re bazuj─ůc na dobrym zasobie danych do nauczenia, mog─ů uwzgl─Ödnia─ç kontekst wypowiedzi.

Jednak nie zawsze mamy dost─Öp w firmie do zespo┼éu Data Science, sami nie jeste┼Ťmy specjalistami w tej dziedzinie, lub te┼╝ nie mo┼╝emy po┼Ťwi─Öci─ç wystarczaj─ůcej ilo┼Ťci czasu, aby si─Ö nimi sta─ç.

Optymalnym rozwi─ůzaniem by┼éoby mie─ç rozwi─ůzanie, kt├│re ma:

  • wyuczone modele ML
  • nie jest trudne do obs┼éugi
  • jest przyst─Öpne cenowo.

Na szcz─Ö┼Ťcie chmura AWS oferuje nam gotowe rozwi─ůzanie typu pay-per-use, i nie wymaga znajomo┼Ťci ML. Us┼éuga ta nosi nazw─Ö Amazon Comprehend.

Amazon Comprehend

Amazon-comprehend-logo

Amazon Comprehend to usługa przetwarzania języka naturalnego (skrót NLP z ang. natural-language processing), która wykorzystuje uczenie maszynowe do odkrywania istotnych informacji w nieustrukturyzowanych zbiorach danych. Usługa ma gotowe wyuczone mechanizmy do tych zadań.

Usługa pozwala na między inni:

  • wyodr─Öbnianie fraz kluczowych w tek┼Ťcie
  • badanie sentymentu tekstu (pozytywny, negatywny, neutralny lub mieszany)
  • wykrywania, w jakim j─Özyku jest napisany tekst (ponad 100 j─Özyk├│w, polski jest r├│wnie┼╝ dost─Öpny)
  • budowanie w┼éasnych modeli klasyfikacji tekstu
  • wykrywanie oraz redagowanie wra┼╝liwych danych (PII)
  • oraz znacznie wi─Öcej.

Aktualnie wykrywanie wra┼╝liwych danych jest mo┼╝liwa tylko w j─Özyku angielskim. J─Özyk polski nie jest wspierany w tym przypadku.

Jak odnale┼║─ç dane wra┼╝liwe u┼╝ywaj─ůc Amazon Comprehend?

Amazon Comprehend umo┼╝liwia wykrywanie wra┼╝liwych danych od 17 sierpnia 2020, wi─Öc ca┼ékiem od niedawna. Obecnie Amazon Comprehend wspiera nast─Öpuj─ůce typy wra┼╝liwych danych.

Us┼éuga pozwala zar├│wno na wykrywanie wra┼╝liwych danych, etykietowanie wykrytych wra┼╝liwych danych, jak i redagowanie tych┼╝e danych (czyli usuwanie wra┼╝liwych danych z tekstu, i zast─ůpienia ich np. ci─ůgiem znak├│w typu *, lub te┼╝ nazw─ů etykiety rodzaju wra┼╝liwych danych).

W przypadku, gdy chcemy zaj─ů─ç si─Ö redagowaniem danych poprzez Amazon Comprehend, dane wej┼Ťciowe, kt├│re chcemy zredagowa─ç, musz─ů znajdowa─ç si─Ö jako plik z rozszerzeniem txt w bucket w us┼éudze S3, a na wyj┼Ťciu otrzymamy zredagowany plik r├│wnie┼╝ z rozszerzeniem txt.

Jednak w przypadku gdy chcieliby┼Ťmy w┼éasnor─Öcznie zredagowa─ç dane, np. w aplikacji, nie ma z tym najmniejszego problemu. Rezultat wykrywania wra┼╝liwych danych dostarczy nam wszystkich potrzebnych informacji.

U┼╝ycie Amazon Comprehend

Amazon Comprehend, mo┼╝emy u┼╝y─ç zar├│wno w dashboardzie AWS:
Amazon-comprehend-logo

Jak i poprzez klienta Comprehend z AWS SDK, np. wystarczy wyszuka─ç biblioteki dla naszego j─Özyka programowania (np. dla AWS SDK Javascript, znajdziemy go tutaj), aby u┼╝y─ç Comprehend w naszej aplikacji internetowej.

Do wykrywania wra┼╝liwych danych mo┼╝emy u┼╝y─ç poni┼╝ej opisanych metod.

Metoda: ContainsPiiEntities

Analizuje tekst wej┼Ťciowy pod k─ůtem obecno┼Ťci informacji umo┼╝liwiaj─ůcych wykrywania wra┼╝liwych danych i zwraca etykiety zidentyfikowanych typ├│w wra┼╝liwych danych.

Przykład odpowiedzi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"message": {
"Labels": [
...
{
"Name": "EMAIL",
"Score": 1
},
{
"Name": "DATE_TIME",
"Score": 0.9984612464904785
}
...
]
}
}

Dostajemy w odpowiedzi etykiety zwi─ůzane z danymi wra┼╝liwymi, Nazw─Ö typu wra┼╝liwych danych, oraz scoring, czyli jak bardzo Amazon Comprehend jest pewny wyniku pod wzgl─Ödem wykrywania wra┼╝liwych danych (im bli┼╝szy warto┼Ťci 1, tym wi─Öksza pewno┼Ť─ç).

W przypadku, gdyby┼Ťmy chcieli r├│wnie┼╝ zaj─ů─ç si─Ö redagowaniem wra┼╝liwych danych (czyli usuni─Öciem wra┼╝liwych fraz z tekstu), powy┼╝sza metoda za wiele nam nie pomo┼╝e. Nie wiemy dok┼éadnie jaka fraza w tek┼Ťcie zosta┼éa wykryta jako wra┼╝liwa.

Na szcz─Ö┼Ťcie mo┼╝emy temu zaradzi─ç poprzez u┼╝ycie innej metody.

Metoda: DetectsPiiEntities

Załóżmy przykładowy tekst:

1
2
3
const text = ÔÇśMy name is Joe Smith and I was born in 1988 and I am 33 years old. I
work at Predictive Hacks and my email is test@gmail.com I live in Athens, Greece. My
phone number is 623 12 34 567 and my bank account is 123ÔÇô123ÔÇô567ÔÇô888.'

Kod:

1
2
3
const comprehend = new AWS.Comprehend();
const params = { LanguageCode: 'en', Text: text }; // definiujemy j─Özyk oraz tekst do analizowania
const result = await comprehend.detectPiiEntities(params).promise();

Odpowied┼║:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"message": {
"Entities": [
...
{
"Score": 0.9999836087226868,
"Type": "NAME",
"BeginOffset": 11,
"EndOffset": 20
},
{
"Score": 0.9999861717224121,
"Type": "DATE_TIME",
"BeginOffset": 39,
"EndOffset": 43
},
{
"Score": 0.9999574422836304,
"Type": "BANK_ACCOUNT_NUMBER",
"BeginOffset": 207,
"EndOffset": 222
}
]
}
}

Por├│wnuj─ůc ContainsPiiEntities oraz DetectsPiiEntities mo┼╝emy zauwa┼╝y─ç r├│┼╝nic─Ö w postaci dw├│ch dodatkowych atrybut├│w:

  • beginOffset, kt├│ry jest pocz─ůtkiem offsetu frazy, kt├│ra zosta┼éa uznana Amazon Comprehend za wra┼╝liw─ů,
  • EndOffset, kt├│ra jest ko┼äcem offsetu frazy, kt├│ra zosta┼é─ů uznana Amazon Comprehend za wra┼╝liw─ů.

Dzi─Öki tym dw├│m dodatkowym argumentom mo┼╝emy wewn─ůtrz naszej aplikacji usun─ů─ç/zmodyfikowa─ç dan─ů fraz─Ö samodzielnie, bez pomocy Amazon Comprehend.

Ograniczenia

Należy pamiętać, iż w pojedynczym wywołaniu metody do wykrywania wrażliwych danych jest limit znaków (5000).

W przypadku gdy potrzebujemy na raz sprawdzi─ç wi─Öksz─ů ilo┼Ťci znak├│w (lub wi─Öksze ilo┼Ťci dokument├│w), jest to mo┼╝liwe np. poprzez:

  • zastosowaniu podej┼Ťcia z umieszczeniem tekstu w formie pliku txt na S3, oraz u┼╝yciu metody StartPiiEntitiesDetectionJob, kt├│ra tworzy asynchroniczne zadanie s┼éu┼╝─ůce wykrywaniu wra┼╝liwych danych dla kolekcji dokument├│w.
  • rozdzielenia tekstu na mniejsze cz─Ö┼Ťci (o ile to mo┼╝liwe, czasami jest to jednak nie mo┼╝liwe, poniewa┼╝ przy rozdzieleniu tekstu ┼éatwo o zgubienie kontekstu zdania).

Nasuwa si─Ö nam tutaj dodatkowe pytanie, co w przypadku, je┼╝eli jakiego┼Ť typu danych wra┼╝liwych nie ma obecnie w us┼éudze Amazon Comprehend?

  • Dla danych maj─ůcych jaki┼Ť konkretny, ┼éatwy schemat do odnalezienia, mo┼╝emy u┼╝y─ç rozwi─ůza┼ä regexowych.
  • W przypadku gdy chcieliby┼Ťmy, aby Amazon Comprehend nauczy┼é si─Ö wykrywania konkretnego rodzaju danych, oraz mamy wystarczaj─ůc─ů ilo┼Ť─ç danych do nauki, jest to jak najbardziej mo┼╝liwe. Amazon Comprehend zbuduje nasze w┼éasne modele do niestandardowej klasyfikacji danych.

Istniej─ů dwie metody do tego: Annotations i Entitity lists. Wi─Öcej informacji znajdziesz tutaj. W ogromnym skr├│cie wystarczy dostarczy─ç plik CSV z danymi, dzi─Öki kt├│rym Amazon Comprehend nauczy si─Ö je rozpoznawa─ç.

Koszty

Na stronie us┼éugi mo┼╝emy zapozna─ç si─Ö z przyk┼éadowymi cennikami (polecam zapozna─ç si─Ö z przyk┼éadem 7 oraz 8, kt├│re dotycz─ů wra┼╝liwych danych). W projekcie, w kt├│rym u┼╝y┼éem metody DetectsPiiEntities na wi─Ökszym zbiorze danych, cena za oko┼éo 500 tysi─Öcy zapyta┼ä do Amazon Comprehend wynios┼éa 250 dolar├│w.

Podsumowanie

W artykule przedstawiłem:

  • czym s─ů wra┼╝liwe dane,
  • w jaki spos├│b mo┼╝emy podej┼Ť─ç do ich wykrywania w tek┼Ťcie,
  • poznali┼Ťmy us┼éug─Ö Amazon Comprehend, oraz w jaki spos├│b mo┼╝e ona nam pom├│c zar├│wno w przypadku wykrywania, jak i w redakcji wra┼╝liwych danych,
  • poznali┼Ťmy przyk┼éady u┼╝ycia,
  • a na ko┼äcu poznali┼Ťmy ograniczenia us┼éugi.
Autor: Daniel Aniszkiewicz
Programista w bran┼╝y od 2016. G┼é├│wnie Ruby (on Rails), React, a od 3 lat zafascynowany podej┼Ťciem Serverless z chmur─ů AWS. W wolnym czasie wsp├│┼éorganizowa┼é konferencje GrillRB, GrillJS, GrillOps, a w czasach studenckich Sesje Linuksowe. Od czasu do czasu pisze bloga (danielaniszkiewicz.com) o podej┼Ťciu Serverless z Ruby.