Penyelubungan data dinamis
Berlaku untuk: Azure SQL Database Azure SQL Managed InstanceAzure Synapse Analytics (hanya kumpulan SQL khusus)
Azure SQL Database, Azure SQL Managed Instance, dan Azure Synapse Analytics mendukung masking data dinamis (DDM). Masking data dinamis membatasi paparan data sensitif dengan menutupinya kepada pengguna yang tidak memiliki hak istimewa.
Masking data dinamis membantu mencegah akses tidak sah ke data sensitif dengan memungkinkan pelanggan untuk menunjuk berapa banyak data sensitif untuk diungkapkan dengan efek minimal pada lapisan aplikasi. Ini adalah fitur keamanan berbasis kebijakan yang menyembunyikan data sensitif dalam kumpulan hasil kueri di atas bidang database yang ditunjuk, sementara data dalam database tidak diubah.
Misalnya, perwakilan layanan di pusat panggilan dapat mengidentifikasi penelepon dengan mengonfirmasi beberapa karakter alamat email mereka, tetapi alamat email lengkap tidak boleh diungkapkan kepada perwakilan layanan. Aturan masking dapat didefinisikan yang menutupi semua alamat email dalam kumpulan hasil kueri apa pun. Sebagai contoh lain, masking data yang sesuai dapat didefinisikan untuk melindungi data pribadi, sehingga pengembang dapat meminta lingkungan produksi untuk tujuan pemecahan masalah tanpa melanggar peraturan kepatuhan.
Dasar-dasar masking data dinamis
Anda menyiapkan kebijakan masking data dinamis di portal Azure dengan memilih panel Masking Data Dinamis di bawah Keamanan di panel konfigurasi SQL Database Anda. Fitur ini tidak dapat diatur menggunakan portal untuk SQL Managed Instance. Untuk informasi selengkapnya, lihat Masking Data Dinamis.
Kebijakan Masking Data Dinamis
- Pengguna SQL dikecualikan dari masking: Sekumpulan pengguna SQL, yang dapat menyertakan identitas dari ID Microsoft Entra (sebelumnya Azure Active Directory), yang mendapatkan data yang tidak dimasak dalam hasil kueri SQL. Pengguna dengan hak administratif seperti admin server, admin Microsoft Entra, dan peran db_owner dapat melihat data asli tanpa masker apa pun. (Catatan: Ini juga berlaku untuk peran sysadmin di SQL Server)
- Aturan masking: Sekumpulan aturan yang menentukan bidang yang ditunjuk untuk diselubungi dan fungsi masking yang digunakan. Bidang yang ditunjuk dapat didefinisikan menggunakan nama skema database, nama tabel, dan nama kolom.
- Fungsi masking: Sekumpulan metode yang mengontrol paparan data untuk skenario yang berbeda.
Fungsi masking | Logika masking |
---|---|
Default | Masking penuh sesuai dengan jenis data bidang yang ditunjuk * Gunakan XXXX (atau kurang) jika ukuran bidang kurang dari 4 karakter untuk jenis data string (nchar, ntext, nvarchar).* Gunakan nilai nol untuk jenis data numerik (bigint, bit, desimal, int, uang, numerik, smallint, smallmoney, tinyint, float, real). * Gunakan 1900-01-01 untuk jenis data tanggal/waktu (tanggal, tanggalwaktu2, tanggalwaktu, datetimeoffset, smalldatetime, waktu).* Untuk sql_variant, nilai default dari jenis saat ini digunakan. * Untuk XML, dokumen <masked /> digunakan.* Gunakan nilai kosong untuk jenis data khusus (tanda waktu, tabel, HierarchyID, uniqueidentifier, biner, gambar, varbinary, dan jenis spasial). |
Kartu kredit | Metode masking, yang memaparkan empat digit terakhir dari bidang yang ditunjuk dan menambahkan string konstanta sebagai awalan dalam bentuk kartu kredit.XXXX-XXXX-XXXX-1234 |
Metode masking, yang memaparkan huruf pertama dan mengganti domain dengan XXX.com menggunakan awalan string konstan dalam bentuk alamat email.aXX@XXXX.com |
|
Angka Acak | Metode masking, yang menghasilkan angka acak sesuai dengan batas yang dipilih dan tipe data aktual. Jika batas yang ditentukan sama, maka fungsi masking adalah angka konstan. |
Teks kustom | Metode masking, yang mengekspos karakter pertama dan terakhir dan menambahkan string padding kustom di tengah. Jika string asli lebih pendek dari awalan dan akhiran yang terbuka, hanya string padding yang digunakan.prefix[padding]suffix |
Bidang yang direkomendasikan untuk masking
Mesin rekomendasi DDM menandai bidang tertentu dari database Anda sebagai bidang yang berpotensi sensitif, yang mungkin merupakan kandidat yang baik untuk masking. Di panel Masking Data Dinamis di portal, Anda akan melihat kolom yang direkomendasikan untuk database Anda. Pilih Tambahkan Masker untuk satu atau beberapa kolom, lalu pilih fungsi masking yang sesuai dan pilih Simpan, untuk menerapkan masker untuk bidang ini.
Mengelola penyamaran data dinamis menggunakan T-SQL
- Untuk membuat penyamaran data dinamis, lihat Membuat Penyamaran Data Dinamis.
- Untuk menambahkan atau mengedit penyamaran pada kolom yang sudah ada, lihat Menambahkan atau Mengedit Penyamaran di Kolom yang Sudah Ada.
- Untuk memberikan izin untuk menampilkan data yang tidak disamarkan, lihat Memberikan Izin untuk Menampilkan Data yang Tidak Disamarkan.
- Untuk membuat penyamaran data dinamis, lihat Membuat Penyamaran Data Dinamis.
Menyiapkan masking data dinamis untuk database Anda menggunakan cmdlet PowerShell
Kebijakan masking data
Aturan masking data
- Get-AzSqlDatabaseMaskingRule
- Get-AzSqlDatabaseMaskingRule
- Get-AzSqlDatabaseMaskingRule
- Get-AzSqlDatabaseMaskingRule
Menyiapkan masking data dinamis untuk database Anda menggunakan API
Anda dapat menggunakan REST API untuk mengelola kebijakan dan aturan masking data secara terprogram. REST API yang dipublikasikan mendukung operasi berikut:
Kebijakan masking data
- Buat Atau Perbarui: Membuat atau memperbarui kebijakan masking data database.
- Dapatkan: Mendapatkan kebijakan masking data database.
Aturan masking data
- Buat Atau Perbarui: Membuat atau memperbarui kebijakan masking data database.
- Daftar Menurut Database: Mendapatkan daftar aturan masking data database.
Izin
Ini adalah peran bawaan untuk mengonfigurasi penyamaran data dinamis adalah:
Ini adalah tindakan yang diperlukan untuk menggunakan penyamaran data dinamis:
Baca/Tulis:
Microsoft.Sql/servers/databases/dataMaskingPolicies/*
Membaca:
Microsoft.Sql/servers/databases/dataMaskingPolicies/read
Menulis:
Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Untuk mempelajari selengkapnya tentang izin saat menggunakan masking data dinamis dengan perintah T-SQL, lihat Izin.
Contoh izin granular
Cegah akses tidak sah ke data sensitif dan dapatkan kontrol dengan menutupinya ke pengguna yang tidak sah di berbagai tingkat database. Anda dapat memberikan atau mencabut izin UNMASK di tingkat database, tingkat skema, tingkat tabel, atau di tingkat kolom untuk pengguna atau peran database apa pun. Dikombinasikan dengan autentikasi Microsoft Entra, izin UNMASK dapat dikelola untuk pengguna, grup, dan aplikasi yang dikelola dalam lingkungan Azure Anda. Izin UNMASK menyediakan cara terperinci untuk mengontrol dan membatasi akses tidak sah ke data yang disimpan dalam database dan meningkatkan manajemen keamanan data.
Buat skema untuk berisi tabel pengguna:
CREATE SCHEMA Data; GO
Buat tabel dengan kolom bertopeng:
CREATE TABLE Data.Membership ( MemberID INT IDENTITY(1, 1) NOT NULL, FirstName VARCHAR(100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL, LastName VARCHAR(100) NOT NULL, Phone VARCHAR(12) MASKED WITH (FUNCTION = 'default()') NULL, Email VARCHAR(100) MASKED WITH (FUNCTION = 'email()') NOT NULL, DiscountCode SMALLINT MASKED WITH (FUNCTION = 'random(1, 100)') NULL, BirthDay DATETIME MASKED WITH (FUNCTION = 'default()') NULL );
Sisipkan data sampel:
INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode, BirthDay) VALUES ('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10, '1985-01-25 03:25:05'), ('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5, '1990-05-14 11:30:00'), ('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50, '2004-02-29 14:20:10'), ('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40, '1990-03-01 06:00:00');
Buat skema untuk berisi tabel layanan:
CREATE SCHEMA Service; GO
Buat tabel layanan dengan kolom bertopeng:
CREATE TABLE Service.Feedback ( MemberID INT IDENTITY(1, 1) NOT NULL, Feedback VARCHAR(100) MASKED WITH (FUNCTION = 'default()') NULL, Rating INT MASKED WITH (FUNCTION = 'default()'), Received_On DATETIME );
Sisipkan data sampel:
INSERT INTO Service.Feedback (Feedback, Rating, Received_On) VALUES ('Good', 4, '2022-01-25 11:25:05'), ('Excellent', 5, '2021-12-22 08:10:07'), ('Average', 3, '2021-09-15 09:00:00');
Buat pengguna yang berbeda dalam database:
CREATE USER ServiceAttendant WITHOUT LOGIN; GO CREATE USER ServiceLead WITHOUT LOGIN; GO CREATE USER ServiceManager WITHOUT LOGIN; GO CREATE USER ServiceHead WITHOUT LOGIN; GO
Berikan izin baca kepada pengguna dalam database:
ALTER ROLE db_datareader ADD MEMBER ServiceAttendant; ALTER ROLE db_datareader ADD MEMBER ServiceLead; ALTER ROLE db_datareader ADD MEMBER ServiceManager; ALTER ROLE db_datareader ADD MEMBER ServiceHead;
Berikan izin UNMASK yang berbeda kepada pengguna:
--Grant column level UNMASK permission to ServiceAttendant GRANT UNMASK ON Data.Membership(FirstName) TO ServiceAttendant; -- Grant table level UNMASK permission to ServiceLead GRANT UNMASK ON Data.Membership TO ServiceLead; -- Grant schema level UNMASK permission to ServiceManager GRANT UNMASK ON SCHEMA::Data TO ServiceManager; GRANT UNMASK ON SCHEMA::Service TO ServiceManager; --Grant database level UNMASK permission to ServiceHead; GRANT UNMASK TO ServiceHead;
Kueri data di bawah konteks pengguna
ServiceAttendant
:EXECUTE AS USER = 'ServiceAttendant'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;
Kueri data di bawah konteks pengguna
ServiceLead
:EXECUTE AS USER = 'ServiceLead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;
Kueri data di bawah konteks pengguna
ServiceManager
:EXECUTE AS USER = 'ServiceManager'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;
Mengkueri data di bawah konteks pengguna
ServiceHead
EXECUTE AS USER = 'ServiceHead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;
Untuk mencabut izin UNMASK, gunakan pernyataan T-SQL berikut:
REVOKE UNMASK ON Data.Membership(FirstName) FROM ServiceAttendant; REVOKE UNMASK ON Data.Membership FROM ServiceLead; REVOKE UNMASK ON SCHEMA::Data FROM ServiceManager; REVOKE UNMASK ON SCHEMA::Service FROM ServiceManager; REVOKE UNMASK FROM ServiceHead;