Faker ile veri maskeleme ve veri üretimi

Python ile Veri Gizliliği ve Anonimleştirme

Rebeca Gonzalez

Data engineer

Yarı tanımlayıcılar

Duyarlı olmayan kişisel veriler de yarı tanımlayıcı olabilir. “Avrupa’da hükümet başkanı” yazısı ve bir doğum tarihi; Angela Merkel’in yüzünü işaret eden çizgiler

1 Angela Merkel fotoğrafı: Wikimedia Commons
Python ile Veri Gizliliği ve Anonimleştirme

Yarı tanımlayıcılar

Diğer yarı tanımlayıcılarla birleşince tanımlayıcı olur.

  • Yaş
  • Cinsiyet
  • Meslek
  • Kişisel tarihler: doğum, ölüm, hastaneye yatış, ziyaret vb.

Bir erkeğin çizimi ve etrafında kişisel bilgi gibi görünen açılır kutular

Python ile Veri Gizliliği ve Anonimleştirme

Yarı tanımlayıcılar ve yeniden tanımlama saldırıları

İki veri kümesinin (tıbbi veriler ve seçmen listesi) kesişimini gösteren diyagram; kesişim posta kodu, doğum tarihi ve cinsiyet

Python ile Veri Gizliliği ve Anonimleştirme

Daha fazla anonimleştirme tekniği

Veri ifşası riskini azaltmak için yarı tanımlayıcılara yönelik anonimleştirme teknikleri. Tıbbi ve kişisel verileri içeren iki tablo. Solda orijinal veri, sağda ad özniteliği bastırılmış sonuç veri kümesi

Python ile Veri Gizliliği ve Anonimleştirme

Veri maskeleme

Orijinal DataFrame

     name                phone
0    Cassandra Nelson    4399406975395
1    Brian Moss          0389407128613
2    Melody Gill         8283308773967
3    Sandra Huber        4366608954250
4    Patricia Webster    4466462475574

İsimleri maskelenmiş DataFrame

     name    phone
0    xxxx    4399406975395
1    xxxx    0389407128613
2    xxxx    8283308773967
3    xxxx    4366608954250
4    xxxx    4466462475574

Hassas değerleri "x" gibi karakterlerle değiştirmeye veri maskeleme denir.

Python ile Veri Gizliliği ve Anonimleştirme

Veri maskeleme

# Explore the DataFrame
df.head()
     country         card_number           email
0    Finland         3546746666030419      [email protected]
1    Belarus         4303032415762821      [email protected]
2    Turkmenistan    4536883671157         [email protected]
3    Puerto Rico     3568819286614160      [email protected]
4    Angola          2514167462583016      [email protected]
Python ile Veri Gizliliği ve Anonimleştirme

Veri maskeleme

# Kart numarası sütununu tek tip maskele
df['card_number'] = '****'


# Ortaya çıkan DataFrame'i gör df.head()
     country         card_number     email
0    Finland         ****            [email protected]
1    Belarus         ****            [email protected]
2    Turkmenistan    ****            [email protected]
3    Puerto Rico     ****            [email protected]
4    Angola          ****            [email protected]
Python ile Veri Gizliliği ve Anonimleştirme

Kısmi veri maskeleme

Facebook şifre sıfırlama sayfasının bölümü; e-postanın kısmi maskeli hali gösteriliyor

Python ile Veri Gizliliği ve Anonimleştirme

Kısmi veri maskeleme

# E-postada kullanıcı adını maskele
df2['email'] = df2['email'].apply(lambda s: s[0] + '****' + s[s.find('@'):] )


# Ortaya çıkan takma adlı veriyi gör df2.head()
     country         card_number           email
0    Finland         3546746666030419      f****@gmail.com
1    Belarus         4303032415762821      m****@gmail.com
2    Turkmenistan    4536883671157         a****@gmail.com
3    Puerto Rico     3568819286614160      k****@gmail.com
4    Angola          2514167462583016      d****@gmail.com
Python ile Veri Gizliliği ve Anonimleştirme

Sentetik veri üretimi

Solda, orijinal verileri içeren (kart numaraları dahil) bir tablo; sağda sentetik olarak üretilmiş yeni kredi kartı numaraları.

  • Hassas bilgileri, asıllarına benzer şekilde yeni üretilen verilerle değiştirme.
Python ile Veri Gizliliği ve Anonimleştirme

Sentetik veri üretimi

# Faker sınıfını içe aktar
from faker import Faker


# Sahte veri üreteci oluştur fake_data = Faker()
# Kredi kartı numarası üret fake_data.credit_card_number()
3542216874440804
Python ile Veri Gizliliği ve Anonimleştirme

Sentetik veri üretimi

# Lambda ile yeni üretilen verilerle kart numarasını maskele
df['card_number'] = df['card_number'].apply(lambda x: fake_data.credit_card_number())

# Ortaya çıkan takma adlı veriyi gör df.head()
     country         card_number            email
0    Finland         3596625386355448       [email protected]
1    Belarus         376297265347524        [email protected]
2    Turkmenistan    4377494880888682       [email protected]
3    Puerto Rico     30553931809810         [email protected]
4    Angola          4241735748382          [email protected]
Python ile Veri Gizliliği ve Anonimleştirme

Diğer veri türleri üretme

fake_data.name()
'Kelly Clark'
fake_data.name_male()
'Antonio Henderson'
fake_data.name_female()
'Jennifer Ortega'
Python ile Veri Gizliliği ve Anonimleştirme

Haydi pratik yapalım!

Python ile Veri Gizliliği ve Anonimleştirme

Preparing Video For Download...