Latihan - Membatasi akses jaringan

Selesai

Pengguna terhubung ke server aplikasi Anda untuk memasukkan pesanan, memperbarui akun mereka, dan melakukan aktivitas serupa. Server aplikasi pada gilirannya memperbarui database dengan perubahan ini. Karena pengguna memiliki data pribadi yang disimpan dalam database, sangat penting untuk memastikan bahwa Anda hanya mengizinkan akses dari sumber daya tepercaya dan yang diperlukan. Ada beberapa cara agar Anda dapat mengontrol akses ke database SQL Anda melalui jaringan.

Aturan firewall

Azure SQL Database memiliki firewall bawaan yang memungkinkan dan menolak akses jaringan ke server database itu sendiri dan database individual. Awalnya, firewall SQL Database memblokir semua akses publik ke Azure SQL Database Anda. Untuk mengakses server database, Anda harus menentukan satu atau beberapa aturan firewall IP tingkat server yang memungkinkan akses ke Azure SQL Database Anda. Anda menggunakan aturan firewall IP untuk menentukan rentang alamat IP mana dari Internet yang diizinkan, dan apakah aplikasi Azure dapat mencoba menyambungkan ke Azure SQL Database Anda.

Aturan firewall dikonfigurasi di tingkat server atau database. Aturan secara khusus menyatakan sumber daya jaringan mana yang diizinkan untuk membuat koneksi ke database. Tergantung pada tingkatnya, aturan yang dapat Anda terapkan adalah sebagai berikut:

  • Aturan firewall tingkat server
    • Perbolehkan akses ke layanan Azure
    • Aturan alamat IP
    • Aturan jaringan virtual
  • Aturan firewall tingkat database
    • Aturan alamat IP

Catatan

Gudang Data SQL hanya mendukung aturan firewall IP tingkat server, dan bukan aturan firewall IP tingkat database.

Lihat lebih dekat cara kerja aturan ini.

Aturan firewall tingkat server

Aturan ini memungkinkan klien untuk mengakses seluruh server Azure SQL Anda, yaitu semua database dalam server logika yang sama. Ada tiga jenis aturan yang dapat diterapkan di tingkat server.

Aturan Izinkan akses ke layanan Azure memungkinkan layanan di Azure tersambung ke Azure SQL Database Anda. Saat diaktifkan, pengaturan ini memungkinkan komunikasi dari semua alamat IP publik Azure. Komunikasi ini mencakup semua layanan Azure Platform as a Service (PaaS), seperti Azure App Service dan Azure Container Service, dan Azure VM yang memiliki akses Internet keluar. Aturan ini dapat dikonfigurasi melalui opsi AKTIF/NONAKTIF di panel firewall di portal, atau dengan aturan IP yang memiliki 0.0.0.0 sebagai alamat IP awal dan akhir.

Diagram shows how to allow access to Azure services network.

Aturan ini digunakan saat Anda memiliki aplikasi yang berjalan pada layanan PaaS di Azure, seperti Azure Logic Apps atau Azure Functions yang perlu mengakses Azure SQL Database Anda. Banyak dari layanan ini tidak memiliki alamat IP statis, sehingga aturan ini memastikan bahwa mereka dapat tersambung ke database.

Penting

Opsi ini mengonfigurasi firewall untuk memungkinkan semua koneksi dari Azure, termasuk koneksi dari langganan pelanggan lain. Saat memilih opsi ini, pastikan izin masuk dan pengguna Anda membatasi akses hanya untuk pengguna yang berwenang.

Aturan alamat IP adalah aturan yang didasarkan pada rentang alamat IP publik tertentu. Alamat IP yang tersambung dari rentang IP publik yang diizinkan diizinkan untuk menyambungkan ke database.

Diagram represents an IP address rule.

Anda dapat menggunakan aturan ini saat Anda memiliki alamat IP publik statis yang perlu mengakses database Anda.

Aturan jaringan virtual memungkinkan Anda untuk secara eksplisit mengizinkan koneksi dari subnet tertentu di dalam satu atau beberapa jaringan virtual Azure. Aturan jaringan virtual dapat memberikan kontrol akses yang lebih besar ke database Anda dan dapat menjadi opsi pilihan. Karena ruang alamat jaringan virtual Azure bersifat privat, Anda dapat secara efektif menghilangkan paparan alamat IP publik dan mengamankan konektivitas ke alamat yang Anda kontrol.

Diagram represents a virtual network rule.

Gunakan aturan jaringan virtual saat Anda memiliki Azure VM yang perlu mengakses database Anda.

Untuk aturan tingkat server, semua aturan ini dapat dibuat dan dimanipulasi melalui portal, PowerShell, CLI, dan melalui Transact-SQL (T-SQL).

Aturan firewall tingkat database

Aturan ini memungkinkan akses ke database individual di server logis dan disimpan dalam database itu sendiri. Untuk aturan tingkat database, Anda hanya dapat mengonfigurasi aturan alamat IP. Fungsinya sama seperti ketika diterapkan di tingkat server, tetapi hanya dicakup ke database.

Diagram represents a database IP address network rule.

Manfaat aturan tingkat database adalah portabilitasnya. Saat Anda mereplikasi database ke server lain, aturan tingkat database direplikasi, karena disimpan dalam database itu sendiri.

Kelemahan aturan tingkat database adalah Anda hanya dapat menggunakan aturan alamat IP. Aturan ini mungkin membatasi fleksibilitas yang Anda miliki dan dapat meningkatkan biaya administrasi.

Aturan firewall tingkat database hanya dapat dibuat dan dimanipulasi melalui T-SQL.

Membatasi akses jaringan dalam praktiknya

Sebagai praktik terbaik, gunakan aturan firewall IP tingkat database untuk meningkatkan keamanan dan membuat database Anda lebih portabel. Gunakan aturan firewall IP tingkat server untuk administrator dan ketika Anda memiliki beberapa database dengan persyaratan akses yang sama sehingga Anda tidak ingin menghabiskan waktu untuk mengonfigurasi setiap database satu per satu.

Lihat cara kerja aturan ini dalam praktiknya, dan bagaimana Anda dapat mengamankan akses jaringan untuk hanya mengizinkan apa yang diperlukan. Ingat bahwa Anda membuat server logis Azure SQL Database, database, dan VM Linux appServer yang bertindak sebagai server aplikasi. Skenario ini sering terlihat ketika database telah dimigrasikan ke Azure SQL Database dan sumber daya di dalam jaringan virtual perlu mengaksesnya. Fitur firewall Azure SQL Database dapat digunakan dalam banyak skenario, tetapi contoh ini memiliki penerapan praktis dan menunjukkan bagaimana masing-masing aturan berfungsi.

Buka pengaturan firewall dan lihat cara kerjanya. Anda menggunakan portal dan Cloud Shell untuk latihan ini.

Database yang Anda buat saat ini tidak mengizinkan akses dari koneksi apa pun. Akses terbatas ini dirancang dan berdasarkan perintah yang Anda jalankan untuk membuat server logis dan database. Konfirmasikan bahwa tidak ada akses.

  1. Di Cloud Shell, SSH ke VM Linux Anda jika Anda belum tersambung. Ganti nnn.nnn.nnn.nnn dengan nilai dari publicIpAddress di unit sebelumnya.

    ssh nnn.nnn.nnn.nnn
    
  2. Jalankan sqlcmd ulang perintah yang Anda ambil sebelumnya untuk mencoba menyambungkan ke database. Pastikan Anda mengganti [username] dan [password] dengan kredensial ADMINUSER yang Anda tentukan di unit sebelumnya. Pastikan untuk menyimpan tanda kutip tunggal di sekitar nama pengguna dan kata sandi sehingga shell tidak salah menafsirkan karakter khusus apa pun.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Anda akan melihat kesalahan yang mirip dengan output berikut saat mencoba menyambungkan. Output ini diharapkan karena akses ke database tidak diizinkan.

    Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
    Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Error code 0x2AF9.
    Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible.Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
    

Berikan akses sehingga Anda dapat terhubung.

Menggunakan aturan Izinkan akses ke layanan Azure tingkat server

Karena VM Anda memiliki akses internet keluar, Anda dapat menggunakan aturan Izinkan akses ke layanan Azure untuk mengizinkan akses dari VM Anda.

  1. Masuk ke portal Azure menggunakan akun yang sama dengan yang Anda aktifkan kotak pasirnya.

  2. Dalam kotak Cari sumber daya, layanan, dan dokumen di bagian atas, cari nama server database Anda, serverNNNNN. Pilih server SQL.

  3. Di panel server SQL, di panel menu sebelah kiri, di bawah Keamanan, pilih Firewall dan jaringan virtual.

  4. Gulir ke bawah ke Pengecualian, pilih kotak centang untuk Izinkan layanan dan sumber daya Azure mengakses server ini, lalu pilih Simpan. Tunggu sampai sistem mengakui perubahan ini.

  5. Kembali ke sesi SSH Anda, coba sambungkan lagi ke database Anda.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Pada titik ini, Anda seharusnya dapat tersambung. Jika berhasil, Anda seharusnya melihat perintah sqlcmd.

    1>
    

Anda membuka konektivitas, tetapi pengaturan ini saat ini memungkinkan akses dari sumber daya Azure apa pun , termasuk sumber daya di luar langganan Anda. Batasi akses ini lebih jauh untuk membatasi akses jaringan hanya ke sumber daya yang berada dalam kontrol Anda.

Menggunakan aturan alamat IP tingkat database

Ingat bahwa aturan alamat IP tingkat database hanya mengizinkan akses ke database individual di server logika. Gunakan salah satu di sini untuk memberikan akses ke IP statis VM appServer Anda.

Untuk membuat aturan IP tingkat database, Anda perlu menjalankan beberapa perintah T-SQL. Buat aturan database menggunakan konvensi berikut, di mana Anda meneruskan nama aturan, alamat IP awal, dan alamat IP akhir. Dengan menentukan alamat IP awal dan akhir agar sama, Anda membatasi akses ke satu IP. Anda dapat memperluas rentang jika Anda memiliki blok alamat yang lebih besar yang memerlukan akses.

EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '40.112.128.214', '40.112.128.214'
  1. Saat masih berada di prompt sqlcmd, jalankan perintah berikut. Ganti alamat IP publik appServer VM Anda di kedua lokasi.

    Tip

    Saat Anda menjalankan perintah T-SQL seperti berikut ini, GO pada baris kedua mungkin tidak disalin ke sqlcmd perintah . Anda mungkin perlu mengetik bagian ini. Perintah T-SQL tidak akan berjalan tanpanya, jadi pastikan untuk menjalankan GO perintah.

    EXECUTE sp_set_database_firewall_rule N'My Firewall Rule', '[From IP Address]', '[To IP Address]';
    GO
    

    Setelah perintah selesai, masukkan exit untuk keluar dari sqlcmd. Tetap terhubung melalui SSH.

  2. Di portal Azure, pada panel Jaringan untuk server SQL Anda, batal pilih Izinkan layanan dan sumber daya Azure untuk mengakses server ini, lalu pilih Simpan. Perubahan ini menonaktifkan akses dari semua layanan Azure, tetapi Anda dapat tersambung karena Anda memiliki aturan IP tingkat database untuk server Anda.

  3. Kembali ke Cloud Shell, di VM yang tersambung dengan Anda melalui SSH, coba sambungkan lagi ke database Anda.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Pada titik ini, Anda seharusnya dapat tersambung. Jika berhasil, Anda akan melihat perintah sqlcmd.

    1>
    

Menggunakan aturan tingkat database memungkinkan akses untuk diisolasi secara khusus ke database. Aturan ini dapat berguna jika Anda ingin menjaga akses jaringan Anda tetap dikonfigurasi per database. Jika beberapa database memiliki tingkat akses jaringan yang sama, Anda bisa menyederhanakan administrasi dengan menggunakan aturan tingkat server untuk menerapkan akses yang sama ke semua database di server.

Menggunakan aturan alamat IP tingkat server

Aturan tingkat database adalah opsi yang bagus, tetapi bagaimana jika Anda memiliki beberapa database di server yang sama dengan yang perlu disambungkan oleh VM appServer Anda? Anda bisa menambahkan aturan tingkat database ke setiap database, tetapi bisa membutuhkan lebih banyak pekerjaan saat Anda menambahkan lebih banyak database. Untuk mengurangi upaya administrasi Anda, izinkan akses dengan aturan tingkat server, yang akan berlaku untuk semua database di server.

Gunakan aturan IP tingkat server untuk membatasi sistem yang dapat tersambung.

  1. Saat masih menjalankan perintah sqlcmd, jalankan perintah berikut untuk menghapus aturan alamat IP tingkat database.

    EXECUTE sp_delete_database_firewall_rule N'My Firewall Rule';
    GO
    

    Setelah perintah selesai, masukkan exit untuk keluar dari sqlcmd. Tetap terhubung melalui SSH.

  2. Kembali ke portal Azure, pada panel Jaringan untuk server SQL Anda, di bawah Aturan firewall, pilih tambahkan aturan firewall. Beri nama aturan Izinkan appServer, masukkan alamat IP publik appServer VM untuk IP Mulai dan IP Akhir, lalu pilih OK.

  3. Pilih Simpan.

    Screenshot of the Azure portal showing the server firewall rule creation.

  4. Kembali ke Cloud Shell, di VM appServer Anda, coba sambungkan lagi ke database Anda.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Pada titik ini, Anda seharusnya dapat tersambung. Aturan tingkat server memungkinkan akses berdasarkan alamat IP publik appServer VM. Jika berhasil, Anda seharusnya melihat perintah sqlcmd.

    1>
    

    Masukkan exit untuk keluar dari sqlcmd. Tetap terhubung melalui SSH.

Anda hanya mengisolasi konektivitas ke alamat IP yang Anda tentukan dalam aturan. Isolasi ini berfungsi dengan baik, tetapi masih dapat menjadi tantangan administratif saat Anda menambahkan lebih banyak sistem yang perlu terhubung. Ini juga memerlukan IP statis atau IP dari rentang alamat IP yang ditentukan.

Jika alamat IP bersifat dinamis dan berubah, Anda harus memperbarui aturan untuk memastikan konektivitas. VM appServer saat ini dikonfigurasi dengan alamat IP dinamis. Alamat IP ini kemungkinan akan berubah pada titik tertentu, merusak akses Anda segera setelah itu terjadi. Sekarang lihat bagaimana aturan jaringan virtual dapat bermanfaat dalam konfigurasi Anda.

Menggunakan aturan jaringan virtual tingkat server

Dalam hal ini, karena VM Anda berjalan di Azure, Anda dapat menggunakan aturan jaringan virtual tingkat server untuk mengisolasi akses, dan memudahkan untuk mengaktifkan layanan di masa mendatang untuk mendapatkan akses ke database.

  1. Kembali ke portal Azure dan masih di panel Jaringan, di bawah Jaringan virtual, pilih Tambahkan aturan jaringan virtual.

  2. Kotak dialog Buat/Perbarui aturan jaringan virtual muncul. Atur nilai berikut.

    Pengaturan Nilai
    Nama Gunakan nilai default
    Langganan Langganan Concierge
    Jaringan virtual appServerVNET
    Awalan nama subnet/Alamat appServerSubnet/10.0.0.0/24
  3. Pilih Aktifkan untuk mengaktifkan titik akhir layanan pada subnet, lalu pilih OK setelah titik akhir diaktifkan untuk membuat aturan.

  4. Hapus aturan alamat IP. Pilih ... di samping aturan Izinkan appServer Anda, pilih Hapus, lalu pilih Simpan.

  5. Kembali ke Cloud Shell, di VM appServer Anda, coba sambungkan lagi ke database Anda.

    sqlcmd -S tcp:serverNNNNN.database.windows.net,1433 -d marketplaceDb -U '[username]' -P '[password]' -N -l 30
    

    Pada titik ini, Anda seharusnya dapat tersambung. Jika berhasil, Anda akan melihat perintah sqlcmd.

    1>
    

Apa yang Anda lakukan di sini secara efektif menghapus akses publik apa pun ke server SQL. Ini hanya mengizinkan akses dari subnet tertentu di jaringan virtual Azure yang Anda tentukan. Jika Anda menambahkan lebih banyak server aplikasi di subnet tersebut, tidak ada konfigurasi tambahan yang diperlukan. Server apa pun di subnet tersebut akan memiliki kemampuan untuk terhubung ke server SQL.

Konfigurasi ini membatasi paparan Anda terhadap layanan di luar lingkup kontrol Anda, dan memudahkan administrasi jika Anda menambahkan lebih banyak server. Metode ini efektif untuk mengamankan akses jaringan ke Database Azure SQL.