Genel
PostgreSQL ile Açık Kaynak Veri Maskeleme
Veritabanlarındaki veri maskeleme, hassas verileri yetkisiz kullanıcıların erişiminden gizleyerek (maskeliyerek) korumak için kullanılan bir tekniktir; veritabanının bu kullanıcılar için normal bir şekilde çalışmasına olanak tanırken. Veri gizliliğinin korunmasına yardımcı olur ve GDPR, HIPAA vb. düzenlemelere uyum sağlar.
Açık kaynak PostgreSQL Anonymizer'ı, bir Postgres veritabanındaki hassas verileri maskelemek için bir uzantı olarak kullanabilirsiniz.
5 farklı maskeleme yöntemi sunar:
Anonim Dökümler: Maskelenmiş verileri basitçe bir SQL dosyasına aktarın
Statik Maskeleme: Kurallara göre KİK'yi kaldırın
Dinamik Maskeleme: Maskelenmiş kullanıcılar için yalnızca KİK'yi gizleyin
Maskeleme Görünümleri: Maskelenmiş kullanıcılar için özel görünümler oluşturun
Maskeleme Veri Sarıcıları: Harici verilere maskeleme kuralları uygulayın
Bu blogda, postgresql anonimleştirici uzantısını nasıl kuracağınızı ve yapılandıracağınızı ve basit bir dinamik maskeleme örneğini göstereceğim.
Rocky Linux 8 ve PostgreSQL 17 için kurulum talimatları
PGDG RPM deposu tarafından sağlanan paketi kullanMAYIN. Bu paket eski.
Depo ekle
sudo dnf install https://yum.dalibo.org/labs/dalibo-labs-4-1.noarch.rpm
2. rpm'i root kullanıcı olarak yükleyin
sudo yum install postgresql_anonymizer_17 -y
3. Veritabanı için uzantıyı yükleyin
[postgres@postgres01 ~]$ psql
psql (17.5)
Yardım için “help” yazın.
postgres=# alter database demodb SET session_preload_libraries = ‘anon’;
ALTER DATABASE
postgres=#
4. Uzantıyı oluştur
postgres=# \c demodb
Artık “demodb” veritabanına “postgres” kullanıcısı olarak bağlısınız.
demodb=# CREATE EXTENSION anon;
CREATE EXTENSION
demodb=# SELECT anon.init();
Dinamik Maskeleme Örneği
CREATE TABLE people ( id TEXT, firstname TEXT, lastname TEXT, phone TEXT);
INSERT INTO people VALUES (‘T1’,’Sarah’, ‘Conor’,’0609110911');

1. Adım : Dinamik maskeleme motorunu etkinleştirin
ALTER DATABASE demodb SET anon.transparent_dynamic_masking TO true;
2. Adım : Maskeleme kurallarını ilan edin
SECURITY LABEL FOR anon ON COLUMN people.phone
IS ‘MASKED WITH FUNCTION anon.partial(phone,2,$$******$$,2)’;
SECURITY LABEL FOR anon ON COLUMN people.lastname
IS ‘MASKED WITH FUNCTION anon.dummy_last_name()’;

3. Adım : Okuma erişimine sahip maskelenmiş bir kullanıcı ilan edin
CREATE ROLE skynet LOGIN;
SECURITY LABEL FOR anon ON ROLE skynet IS ‘MASKED’;
GRANT pg_read_all_data to skynet;

4. Adım : Maskelenmiş kullanıcı ile bağlanın
\c — skynet
SELECT * FROM people;

Gördüğünüz gibi telefon sütunu değerleri maskelenmiş ve soyad sütunu değerleri anonim hale getirilmiştir.
Geliniz postgres kullanıcısı ile bağlanalım ve asıl tablo değerlerini görelim.

Dinamik maskeleme anlık olarak maskeleme yaptığından, yalnızca verileri maskelemek istediğiniz roller maskelenmiş verileri görür. Diğer kullanıcılar gerçek değerleri görecektir.
PostgreSQL Anonymizer, veri maskeleme için kapsamlı ve güçlü bir uzantıdır. Hassas verilerinizi korumanıza ve anonimleştirmenize yardımcı olacak geniş bir özellik yelpazesi sunar. Aşağıdaki bağlantıda daha detaylı bilgi bulabilirsiniz.






