Menerapkan kontrol kepatuhan untuk data sensitif

Selesai

Menerapkan kontrol kepatuhan setelah memigrasikan database Anda penting untuk memastikan bahwa data Anda tetap aman dan sesuai dengan peraturan yang relevan. Bermigrasi ke lingkungan baru, seperti Azure SQL, memperkenalkan kemampuan dan fitur keamanan baru.

Menjelajahi audit server dan database

Audit Azure SQL melacak peristiwa database, merekamnya dalam log audit yang disimpan dalam akun Azure Storage, ruang kerja Analitik Log, atau Azure Event Hubs Anda. Selain itu, memfasilitasi pemeliharaan kepatuhan terhadap peraturan, analisis pola aktivitas, dan deteksi penyimpangan yang berpotensi menunjukkan pelanggaran keamanan.

Anda dapat menentukan kebijakan tingkat server dan tingkat database. Kebijakan server secara otomatis mencakup database baru dan yang sudah ada di Azure.

  • Mengaktifkan audit server memicu audit untuk database, terlepas dari pengaturan audit individualnya.
  • Anda dapat mengaktifkan audit di tingkat database, memungkinkan kebijakan server dan database berdampingan secara bersamaan.
  • Pengauditan pada replika hanya-baca dinyalakan secara otomatis.

Sebaiknya jangan aktifkan audit server dan audit database bersama-sama, kecuali dalam skenario berikut.

  • Anda memerlukan akun penyimpanan, periode retensi, atau ruang kerja Analitik Log yang berbeda untuk database tertentu.

  • Audit diperlukan untuk database tertentu dengan jenis peristiwa atau kategori unik yang berbeda dari yang lain di server.

Dalam semua kasus lain, kami sarankan Anda hanya mengaktifkan audit tingkat server dan menjaga audit tingkat database dinonaktifkan untuk semua database.

Kebijakan pengauditan default untuk SQL Database mencakup kumpulan grup tindakan berikut:

Grup tindakan Definisi
BATCH_COMPLETED_GROUP Mengaudit semua kueri dan prosedur tersimpan yang dijalankan terhadap database.
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP Hal ini menunjukkan bahwa prinsipal berhasil masuk ke database.
KELOMPOK_AUTENTIKASI_DATABASE_GAGAL Hal ini menunjukkan bahwa prinsipal gagal masuk ke database.

Untuk mengaktifkan audit untuk semua database di server Azure SQL, pilih Audit di bagian Keamanan dari bilah utama untuk server Anda.

Cuplikan layar opsi audit di bagian Keamanan server SQL.

Halaman Audit memungkinkan Anda mengatur tujuan log audit dan juga memilih apakah akan melacak operasi teknisi dukungan Microsoft pada tujuan log yang sama dengan Audit Azure SQL atau memilih yang berbeda.

Cuplikan layar halaman Audit server SQL.

Anda dapat meninjau log audit operasi Dukungan Microsoft di ruang kerja Analitik Log Anda dengan menjalankan kueri berikut:

AzureDiagnostics
| where Category == "DevOpsOperationsAudit"

Penting

Layanan audit Azure SQL Database dan Azure SQL Managed Instance telah disempurnakan untuk ketersediaan dan performa optimal. Namun, perlu dicatat bahwa dalam kondisi aktivitas yang sangat tinggi atau kemacetan jaringan yang signifikan, peristiwa tertentu yang diaudit mungkin tidak dicatat.

Mengaudit label sensitif

Saat digabungkan dengan klasifikasi data, Anda juga dapat memantau akses ke data sensitif. Audit Azure SQL telah ditingkatkan untuk menyertakan bidang baru dalam log audit yang disebut data_sensitivity_information.

Dengan mencatat label sensitivitas data yang dikembalikan oleh kueri, bidang ini menyediakan cara yang lebih mudah untuk melacak akses ke kolom yang diklasifikasikan.

Cuplikan layar halaman Perlindungan Informasi dari portal Microsoft Azure.

Pengauditan terdiri dari melacak dan mencatat peristiwa yang terjadi di mesin database. Pengauditan Azure SQL menyederhanakan langkah-langkah konfigurasi yang diperlukan untuk mengaktifkannya, membuatnya lebih mudah untuk melacak aktivitas database untuk SQL Database dan SQL Managed Instance.

Penyelubungan data dinamis

Masking Data Dinamis bekerja dengan mengaburkan data untuk membatasi paparannya. Ini memungkinkan pengguna yang tidak memerlukan akses ke informasi sensitif untuk melihat kolom tetapi bukan data aktual. Masking Data Dinamis bekerja di lapisan presentasi, dan data yang tidak dimasak tetap terlihat oleh pengguna yang sangat istimewa.

Masking Data Dinamis menawarkan keuntungan membutuhkan modifikasi minimal pada aplikasi atau database Anda. Anda dapat mengonfigurasinya dengan mudah melalui portal Microsoft Azure atau dengan menggunakan T-SQL.

Cuplikan layar pemadaman data dinamis perintah T-SQL.

Kolom PhoneNumber dan EmailAddress disembunyikan dari pengguna DDMDemo , yang hanya memiliki SELECT izin pada tabel. Pengguna diizinkan untuk melihat empat digit terakhir nomor telepon karena ditutupi menggunakan fungsi parsial yang menggantikan semua kecuali empat digit terakhir di kolom. Masking ini dianggap sebagai fungsi kustom. Selain T-SQL, jika Anda menggunakan Azure SQL Database, Anda dapat membuat aturan masking dinamis di portal Microsoft Azure.

Cuplikan layar cara menambahkan aturan masking di portal Microsoft Azure.

Untuk menambahkan aturan masking, navigasikan ke database Anda di portal Microsoft Azure dan pilih Masking Data Dinamis di bagian Keamanan dari bilah utama untuk database Anda.

Masking Data Dinamis mendukung pola masking berikut yang dapat digunakan:

Fungsi masking Definisi Contoh T-SQL
Default Menyamarkan data dalam kolom tanpa memperlihatkan bagian mana pun dari nilai kepada pengguna. Pengguna akan melihat XXXX untuk nilai string, 0 untuk angka, dan 01.01.1900 untuk nilai tanggal. ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()')
Kartu kredit Menyamarkan semua kecuali empat karakter terakhir, memungkinkan pengguna melihat empat digit terakhir. Masking ini dapat berguna untuk agen layanan pelanggan yang perlu melihat empat digit terakhir dari nomor kartu kredit tetapi yang tidak perlu melihat seluruh nomor. Data ditampilkan dalam format biasa dari nomor kartu kredit XXXX-XXXX-XXXX-1234. ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)')
Email Hanya huruf pertama dan akhiran domain berikutnya yang tidak ditutupi; misalnya, "aXXX@XXXXXXX.com" ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Angka Format masking ini harus digunakan pada kolom numerik. Hal ini menunjukkan nomor acak sebagai nilai yang ditutupi daripada nilai aktual. Dengan setiap kueri, nomor yang berbeda ditampilkan. ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
String khusus Opsi ini memungkinkan teks untuk ditutupi dengan nilai apa pun, dan untuk menampilkan jumlah karakter kustom di kedua ujung nilai yang ditutupi. Jika panjang nilai yang diselubungi sama dengan atau kurang dari jumlah karakter, yang ditentukan masker akan ditampilkan, maka hanya karakter bertopeng yang ditampilkan. ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Untuk memungkinkan pengguna mengambil data yang tidak dimasak dari kolom yang penyelubungannya ditentukan, Anda perlu secara eksplisit memberikan izin UNMASK.

Nota

Terdapat kemungkinan untuk mengidentifikasi data yang disamarkan menggunakan inferensi berdasarkan hasil. Jika Anda menggunakan masking data, Anda juga harus membatasi kemampuan pengguna untuk menjalankan kueri ad hoc.

Untuk alasan itu, sebaiknya gabungkan masking data dinamis dengan fitur keamanan lain seperti audit, enkripsi, dan keamanan tingkat baris untuk meningkatkan perlindungan data sensitif.

Studi kasus

Masking data adalah fitur sederhana dan ringan, dan ideal untuk banyak skenario, termasuk:

  • Menyamarkan data dari pengguna aplikasi yang tidak memiliki akses langsung ke database.

  • Membatasi informasi pribadi untuk sekelompok pengguna.

  • Memberikan data yang disamarkan ke vendor eksternal, tempat Anda perlu melindungi informasi sensitif sambil tetap menjaga hubungan antar item dalam data.

  • Ekspor salinan database produksi Anda ke lingkungan yang lebih rendah untuk tujuan pengembangan, menggunakan pengguna yang tidak memiliki izin UNMASK. Data yang diekspor dalam format bertopeng.

Mengimpor dan mengekspor data

Menyalin data dari kolom yang disamarkan ke tabel lain menggunakan SELECT INTO atau INSERT INTO menghasilkan data yang disamarkan di tabel target.

Ketika pengguna tanpa hak istimewa UNMASK menjalankan Impor dan Ekspor SQL Server, file data yang diekspor berisi data yang disembunyikan, dan database yang diimpor akan berisi data yang ditutupi secara tidak aktif.