Amankan kumpulan SQL khusus (sebelumnya SQL DW) di Azure Synapse Analytics

Artikel ini akan memandu Anda melalui dasar-dasar mengamankan kumpulan SQL khusus Anda (sebelumnya SQL DW). Secara khusus, artikel ini membantu Anda memulai dengan sumber daya untuk membatasi akses, melindungi data, dan memantau aktivitas menggunakan kumpulan SQL khusus (sebelumnya SQL DW).

Keamanan koneksi

Keamanan Koneksi mengacu pada bagaimana Anda membatasi dan mengamankan koneksi ke database Anda menggunakan aturan firewall dan enkripsi koneksi.

Aturan firewall digunakan oleh server SQL logis dan databasenya untuk menolak upaya koneksi dari alamat IP yang belum disetujui secara eksplisit. Untuk mengizinkan koneksi dari alamat IP publik aplikasi atau mesin klien Anda, Anda harus terlebih dahulu membuat aturan firewall tingkat server menggunakan portal Microsoft Azure, REST API, atau PowerShell.

Sebagai praktik terbaik, Anda harus membatasi rentang alamat IP yang diizinkan melalui firewall tingkat server Anda sebanyak mungkin. Untuk mengakses kumpulan SQL khusus Anda (sebelumnya SQL DW) dari komputer lokal Anda, pastikan firewall di jaringan Anda dan komputer lokal memungkinkan komunikasi keluar pada port TCP 1433.

Kumpulan SQL khusus (sebelumnya SQL DW) menggunakan aturan firewall IP tingkat server. Itu tidak mendukung aturan firewall IP tingkat basis data. Untuk informasi selengkapnya, lihat Aturan firewall Azure SQL Database

Koneksi ke kumpulan SQL khusus Anda (sebelumnya SQL DW) dienkripsi secara default. Memodifikasi pengaturan koneksi untuk menonaktifkan enkripsi diabaikan.

Autentikasi

Autentikasi mengacu pada bagaimana Anda membuktikan identitas Anda saat menghubungkan ke database. Kumpulan SQL khusus (sebelumnya SQL DW) saat ini mendukung Autentikasi SQL Server dengan nama pengguna dan kata sandi, dan dengan ID Microsoft Entra.

Saat Anda membuat server untuk database Anda, Anda menentukan login "admin server" dengan nama pengguna dan kata sandi. Dengan menggunakan kredensial ini, Anda dapat mengautentikasi ke database mana pun di server tersebut sebagai pemilik database, atau "dbo" melalui Autentikasi SQL Server.

Namun, sebagai praktik terbaik, pengguna organisasi Anda harus menggunakan akun yang berbeda untuk mengautentikasi. Dengan cara ini Anda dapat membatasi izin yang diberikan ke aplikasi dan mengurangi risiko aktivitas berbahaya jika kode aplikasi Anda rentan terhadap serangan injeksi SQL.

Untuk membuat pengguna SQL Server Authenticated, sambungkan ke database master di server Anda dengan login admin server Anda dan buat login server baru. Merupakan ide bagus untuk juga membuat pengguna di database master. Membuat pengguna di master memungkinkan pengguna untuk masuk menggunakan alat seperti SQL Server Management Studio tanpa menentukan nama basis data. Ini juga memungkinkan mereka untuk menggunakan penjelajah objek untuk melihat semua database di server.

-- Connect to master database and create a login
CREATE LOGIN ApplicationLogin WITH PASSWORD = 'Str0ng_password';
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;

Kemudian, sambungkan ke kolam SQL khusus Anda (sebelumnya SQL DW) dengan login admin server Anda dan buat pengguna database berdasarkan login server yang Anda buat.

-- Connect to the database and create a database user
CREATE USER ApplicationUser FOR LOGIN ApplicationLogin;

Untuk memberikan izin kepada pengguna untuk melakukan operasi tambahan seperti membuat info masuk atau membuat basis data baru, tetapkan pengguna ke peran Loginmanager dan dbmanager dalam basis data master.

Untuk informasi selengkapnya tentang peran tambahan ini dan mengautentikasi ke Database SQL, lihat Mengelola database dan login di Azure SQL Database. Untuk informasi selengkapnya tentang menyambungkan menggunakan ID Microsoft Entra, lihat Koneksi dengan menggunakan autentikasi Microsoft Entra.

Authorization

Otorisasi mengacu pada apa yang dapat Anda lakukan dalam database setelah Anda diautentikasi dan terhubung. Hak otorisasi ditentukan oleh keanggotaan peran dan izin. Sebagai praktik terbaik, Anda harus memberi pengguna hak istimewa paling sedikit yang diperlukan. Untuk mengelola peran, Anda dapat menggunakan prosedur tersimpan berikut:

EXEC sp_addrolemember 'db_datareader', 'ApplicationUser'; -- allows ApplicationUser to read data
EXEC sp_addrolemember 'db_datawriter', 'ApplicationUser'; -- allows ApplicationUser to write data

Akun admin server yang Anda hubungkan adalah anggota db_owner, yang memiliki wewenang untuk melakukan apa pun di dalam database. Simpan akun ini untuk menerapkan peningkatan skema dan operasi manajemen lainnya. Gunakan akun "ApplicationUser" dengan izin yang lebih terbatas untuk terhubung dari aplikasi Anda ke database dengan hak istimewa paling sedikit yang dibutuhkan oleh aplikasi Anda.

Ada beberapa cara untuk lebih membatasi apa yang dapat dilakukan pengguna dalam database:

  • Izin granular memungkinkan Anda mengontrol operasi mana yang dapat Anda lakukan pada masing-masing kolom, tabel, tampilan, skema, prosedur, dan objek lain dalam database. Gunakan izin terperinci untuk memiliki kontrol paling besar dan memberikan izin minimum yang diperlukan.
  • Peran basis data selain db_datareader dan db_datawriter dapat digunakan untuk membuat akun pengguna aplikasi yang lebih andal atau akun manajemen yang kurang andal. Peran database tetap bawaan menyediakan cara mudah untuk memberikan izin, tetapi dapat mengakibatkan pemberian izin lebih dari yang diperlukan.
  • Prosedur yang disimpan dapat digunakan untuk membatasi tindakan yang dapat dilakukan pada database.

Contoh berikut memberikan akses baca ke skema yang ditentukan pengguna.

--CREATE SCHEMA Test
GRANT SELECT ON SCHEMA::Test to ApplicationUser

Mengelola database dan server dari portal Microsoft Azure atau menggunakan API Azure Resource Manager dikendalikan oleh penetapan peran akun pengguna portal Anda. Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Microsoft Azure.

Enkripsi

Transparent Data Encription (TDE) membantu melindungi terhadap ancaman aktivitas berbahaya dengan mengenkripsi dan mendekripsi data Anda saat tidak aktif. Saat Anda mengenkripsi database Anda, cadangan terkait dan file log transaksi dienkripsi tanpa memerlukan perubahan apa pun pada aplikasi Anda. TDE mengenkripsi penyimpanan seluruh database dengan menggunakan kunci simetris yang disebut kunci enkripsi database.

Di Database SQL, kunci enkripsi database dilindungi oleh sertifikat server bawaan. Sertifikat server internal bersifat unik untuk setiap server. Microsoft secara otomatis merotasi sertifikat ini setidaknya setiap 90 hari. Algoritma enkripsi yang digunakan adalah AES-256. Untuk deskripsi umum TDE, lihat Transparent Data Encryption.

Anda dapat mengenkripsi basis data menggunakan portal Microsoft Azure atau T-SQL.

Langkah berikutnya

Untuk detail dan contoh tentang menghubungkan ke gudang Anda dengan protokol yang berbeda, lihat Menghubungkan ke kumpulan SQL khusus (sebelumnya SQL DW).