Masking data dinamis di pergudangan data Fabric

Berlaku untuk: Titik akhir analitik SQL dan Gudang di Microsoft Fabric

Masking data dinamis membatasi paparan data sensitif dengan menutupinya kepada pengguna yang tidak memiliki hak istimewa. Ia dapat digunakan untuk menyederhanakan desain dan pengodean keamanan dalam aplikasi Anda.

Masking data dinamis membantu mencegah tampilan data sensitif yang tidak sah dengan memungkinkan administrator menentukan berapa banyak data sensitif yang akan diungkapkan, dengan efek minimal pada lapisan aplikasi. Masking data dinamis dapat dikonfigurasi pada bidang database yang ditunjuk untuk menyembunyikan data sensitif dalam kumpulan hasil kueri. Dengan masking data dinamis, data dalam database tidak diubah, sehingga dapat digunakan dengan aplikasi yang ada karena aturan masking diterapkan ke hasil kueri. Banyak aplikasi dapat menutupi data sensitif tanpa memodifikasi kueri yang ada.

  • Kebijakan masking data pusat bertindak langsung pada bidang sensitif dalam database.
  • Menunjuk pengguna atau peran istimewa yang memang memiliki akses ke data sensitif.
  • Fitur masking data dinamis memiliki fungsi masking penuh dan masking parsial, dan masker acak untuk data numerik.
  • Perintah Transact-SQL sederhana menentukan dan mengelola masker.

Tujuan masking data dinamis adalah untuk membatasi paparan data sensitif, mencegah pengguna yang seharusnya tidak memiliki akses ke data untuk melihatnya. Masking data dinamis tidak bertujuan untuk mencegah pengguna database terhubung langsung ke database dan menjalankan kueri lengkap yang mengekspos potongan data sensitif.

Masking data dinamis melengkapi fitur keamanan Fabric lainnya seperti keamanan tingkat kolom dan keamanan tingkat baris. Sangat disarankan untuk menggunakan fitur perlindungan data ini bersama-sama untuk melindungi data sensitif dalam database.

Menentukan masker data dinamis

Aturan masking dapat ditentukan pada kolom dalam tabel, untuk mengaburkan data di kolom tersebut. Tersedia lima jenis masker.

Function Deskripsi Contoh
Default Masking penuh sesuai dengan jenis data bidang yang ditunjuk.

Untuk jenis data string, gunakan XXXX (atau kurang) jika ukuran bidang kurang dari 4 karakter (karakter, nchar, varchar, nvarchar, teks, ntext).

Untuk jenis data numerik, gunakan nilai nol (bigint, bit, desimal, int, uang, numerik, smallint, smallmoney, tinyint, float, real).

Untuk jenis data tanggal dan waktu, gunakan 1900-01-01 00:00:00.0000000 (tanggal, tanggalwaktu2, tanggalwaktu, datetimeoffset, smalldatetime, waktu).

Untuk jenis data biner, gunakan satu byte nilai ASCII 0 (biner, varbinary, image).
Contoh sintaks definisi kolom: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Contoh sintaksis perubahan: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
email Metode masking yang mengekspos huruf pertama alamat email dan akhiran konstanta ".com", dalam bentuk alamat email. aXXX@XXXX.com. Contoh sintaks definisi: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Contoh sintaksis perubahan: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Acak Fungsi masking acak untuk digunakan pada jenis numerik apa pun untuk menutupi nilai asli dengan nilai acak dalam rentang tertentu. Contoh sintaks definisi: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Contoh sintaksis perubahan: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
String Kustom Metode masking yang mengekspos huruf pertama dan terakhir dan menambahkan string padding kustom di tengah. prefix,[padding],suffix

Jika nilai asli terlalu pendek untuk menyelesaikan seluruh masker, bagian dari awalan atau akhiran tidak terekspos.
Contoh sintaks definisi: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Contoh sintaksis perubahan: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Ini mengubah nomor telepon seperti 555.123.1234 menjadi 5XXXXXXX.

Contoh tambahan:

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

Ini mengubah nomor telepon seperti 555.123.1234 menjadi 555.1XXXXXXX.

Untuk contoh selengkapnya, lihat Cara menerapkan masking data dinamis di Gudang Data Synapse.

Izin

Pengguna tanpa hak Administrator, Anggota, atau Kontributor di ruang kerja, dan tanpa izin yang ditinggikan di Gudang, akan melihat data yang ditutupi.

Anda tidak memerlukan izin khusus untuk membuat tabel dengan masker data dinamis, hanya izin standar CREATE TABLE dan ALTER pada skema.

Menambahkan, mengganti, atau menghapus masker kolom, memerlukan ALTER ANY MASK izin dan ALTER izin pada tabel. Ini tepat untuk diberikan ALTER ANY MASK kepada petugas keamanan.

Pengguna dengan SELECT izin pada tabel dapat melihat data tabel. Kolom yang didefinisikan sebagai ditutupi akan menampilkan data bertopeng. UNMASK Berikan izin kepada pengguna untuk memungkinkan mereka mengambil data yang tidak dimasak dari kolom yang maskingnya ditentukan.

Izin CONTROL pada database menyertakan ALTER ANY MASK izin dan UNMASK yang memungkinkan pengguna untuk melihat data yang tidak dimasak. Pengguna atau peran administratif seperti Admin, Anggota, atau Kontributor memiliki izin CONTROL pada database berdasarkan desain dan dapat melihat data yang tidak dimasak secara default. Izin yang ditingkatkan pada Gudang menyertakan CONTROL izin.

Pertimbangan keamanan: melewati masking menggunakan teknik inferensi atau brute-force

Masking data dinamis dirancang untuk menyederhanakan pengembangan aplikasi dengan membatasi paparan data dalam sekumpulan kueri yang telah ditentukan sebelumnya yang digunakan oleh aplikasi. Meskipun Masking Data Dinamis juga dapat berguna untuk mencegah paparan data sensitif yang tidak disengaja saat mengakses data secara langsung, penting untuk dicatat bahwa pengguna yang tidak memiliki hak istimewa dengan izin kueri dapat menerapkan teknik untuk mendapatkan akses ke data aktual.

Sebagai contoh, pertimbangkan pengguna yang memiliki hak istimewa yang memadai untuk menjalankan kueri di Gudang, dan mencoba 'menebak' data yang mendasarinya dan pada akhirnya menyimpulkan nilai aktual. Asumsikan bahwa kita memiliki masker yang ditentukan pada [Employee].[Salary] kolom, dan pengguna ini terhubung langsung ke database dan mulai menebak nilai, akhirnya menyimpulkan [Salary] nilai dalam Employees tabel:

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

Menghasilkan:

ID Nama Gaji
62543 Jane Doe 0
91245 John Smith 0

Ini menunjukkan bahwa masking data dinamis tidak boleh digunakan sendiri untuk sepenuhnya mengamankan data sensitif dari pengguna dengan akses kueri ke titik akhir analitik Gudang atau SQL. Ini sesuai untuk mencegah paparan data sensitif, tetapi tidak melindungi dari niat jahat untuk menyimpulkan data yang mendasar.

Penting untuk mengelola keamanan tingkat objek dengan benar dengan izin terperinci SQL, dan untuk selalu mengikuti prinsip izin minimal yang diperlukan.

Langkah selanjutnya