Masking Data Dinamis

BERLAKU UNTUK: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

Azure SQL Database,Azure SQL Managed Instance, dan Azure Synapse Analytics mendukung masking data dinamis. Masking data dinamis membatasi paparan data sensitif dengan menutupinya kepada pengguna tanpa hak istimewa.

Masking data dinamis membantu mencegah akses tidak sah ke data sensitif dengan memungkinkan Anda menentukan berapa banyak data sensitif untuk diungkapkan dengan dampak 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 Microsoft Azure dengan memilih bilah Masking Data Dinamis di bawah Keamanan di panel konfigurasi Database SQL 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 atau identitas Azure Active Directory yang mendapatkan data tanpa masking dalam hasil kueri SQL. Pengguna dengan hak istimewa administrator selalu dikecualikan dari masking, dan dapat melihat data asli tanpa masking.
  • Aturan masking - Seperangkat aturan yang menentukan bidang yang ditunjuk untuk di-masking dan fungsi masking yang digunakan. Bidang yang ditunjuk dapat didefinisikan menggunakan nama skema database, nama tabel, dan nama kolom.
  • Fungsi masking - Serangkaian 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 lebih sedikit X jika ukuran bidang kurang dari 4 karakter untuk tipe data string (nchar, ntext, nvarchar).
• Gunakan nilai nol untuk jenis data numerik (bigint, bit, desimal, int, uang, numerik, smallint, smallmoney, tinyint, float, nyata).
• Gunakan 01-01-1900 untuk jenis data tanggal/waktu (tanggal, datetime2, datetime, datetimeoffset, smalldatetime, waktu).
• Untuk varian SQL, nilai default dari jenis saat ini digunakan.
• Untuk XML, dokumen <di-masking/> digunakan.
• Gunakan nilai kosong untuk tipe data khusus (tabel cap waktu, hierarchyid, GUID, biner, gambar, tipe spasial varbinary).
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
Email 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.

Screenshot that shows the masking method for generating a random number.
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.
awalan[padding]akhiran

Navigation pane

Mesin rekomendasi DDM, menandai bidang tertentu dari database Anda sebagai bidang yang berpotensi sensitif, yang mungkin merupakan kandidat yang baik untuk menutupi. Di bilah Masking Data Dinamis di portal, Anda akan melihat kolom yang direkomendasikan untuk database Anda. Yang perlu Anda lakukan adalah mengklik Tambahkan Masking untuk satu kolom atau lebih lalu Simpan untuk menerapkan masking untuk bidang ini.

Mengelola penyamaran data dinamis menggunakan T-SQL

Menyiapkan masking data dinamis untuk database Anda menggunakan cmdlet PowerShell

Kebijakan masking data

Aturan masking data

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

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/* Read:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/read Write:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/write

Untuk mempelajari selengkapnya tentang perizinan saat menggunakan penyamaran 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 kepada pengguna. Menggunakan izin UNMASK menyediakan cara yang lebih terperinci untuk mengontrol dan membatasi akses tidak sah ke data yang disimpan dalam database dan meningkatkan manajemen keamanan data.

  1. Membuat skema untuk memuat tabel pengguna

    CREATE SCHEMA Data; 
    GO 
    
  2. Membuat tabel dengan kolom bertopeng

    CREATE TABLE Data.Membership (
      MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
      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
    ); 
    
  3. Menyisipkan sampel data

    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'); 
    
  4. Membuat skema untuk memuat tabel layanan

    CREATE SCHEMA Service; 
    GO 
    
  5. Membuat tabel layanan dengan kolom bertopeng

    CREATE TABLE Service.Feedback ( 
        MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 
        Feedback varchar(100) MASKED WITH (FUNCTION = 'default()') NULL, 
        Rating int MASKED WITH (FUNCTION='default()'), 
        Received_On datetime) 
        );
    
  6. Menyisipkan sampel data

    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'); 
    
  7. Membuat 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
    
  8. Memberikan 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; 
    
  9. Memberikan 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;
    
  10. Mengkueri 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; 
    
  11. Mengkueri 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; 
    
  12. Mengkueri data di bawah konteks pengguna ServiceManager

    EXECUTE AS USER='ServiceManager';  
    SELECT MemberID,FirstName,LastName,Phone,Email FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  13. 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;  
    
  14. 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; 
    

Lihat juga