Menggunakan Microsoft SQL Server dengan aman dengan Power Apps

Ada berbagai cara untuk menyambungkan dan mengautentikasi ke SQL Server dengan Power Apps. Artikel ini menguraikan konsep yang dapat membantu dalam membuat pilihan tentang cara menyambungkan ke SQL Server dengan pendekatan keamanan yang cocok dengan persyaratan untuk aplikasi Anda.

Penting

Fitur koneksi implisit aman dirilis pada Januari 2024. Microsoft sangat mendorong semua aplikasi yang saat ini menggunakan koneksi implisit untuk dikonversi ke koneksi implisit yang aman dan untuk mencabut koneksi yang dibagikan dengan pengguna akhir.

Perbedaan antara koneksi implisit yang eksplisit, implisit, dan aman

Koneksi ke SQL Server dibuat setiap kali Anda membuat aplikasi menggunakan Power Apps yang tersambung ke SQL Server. Saat aplikasi tersebut diterbitkan dan dibagikan dengan orang lain, aplikasi dan koneksi disebarkan ke pengguna tersebut. Dengan kata lain, aplikasi dan koneksi—keduanya terlihat oleh pengguna yang dibagikan oleh aplikasi.

Metode autentikasi yang digunakan untuk koneksi tersebut dapat eksplisit atau implisit. Kita juga dapat mengatakan koneksi tersebut dibagikan secara eksplisit atau implisit.

  • Koneksi yang dibagikan secara eksplisit berarti bahwa pengguna akhir aplikasi harus mengautentikasi ke SQL Server dengan kredensial eksplisit mereka sendiri. Biasanya autentikasi ini terjadi di belakang layar sebagai bagian dari jabat tangan autentikasi Microsoft Entra atau Windows. Pengguna bahkan tidak melihat kapan autentikasi berlangsung.
  • Koneksi yang dibagikan secara implisit berarti bahwa pengguna secara implisit menggunakan kredensial akun yang digunakan pembuat aplikasi untuk menyambungkan dan mengautentikasi ke sumber data saat membuat aplikasi. Kredensial pengguna akhir tidak digunakan untuk mengautentikasi. Setiap kali pengguna akhir menjalankan aplikasi, mereka menggunakan kredensial yang dengannya dibuat oleh penulis.
  • Koneksi bersama implisit yang aman mengacu pada skenario di mana pengguna akhir aplikasi secara implisit menggunakan kredensial akun yang digunakan pembuat aplikasi untuk menyambungkan dan mengautentikasi ke sumber data saat membuat aplikasi. Ini berarti bahwa kredensial pengguna akhir sendiri tidak digunakan untuk mengautentikasi. Sebagai gantinya, saat pengguna menjalankan aplikasi, mereka menggunakan kredensial yang dibuat oleh penulis aplikasi. Penting untuk dicatat bahwa pengguna akhir tidak disediakan dengan akses langsung ke koneksi, dan aplikasi hanya mengizinkan akses ke serangkaian tindakan dan tabel terbatas.

Empat jenis autentikasi koneksi berikut dapat digunakan dengan SQL Server untuk Power Apps:

Jenis Autentikasi Metode koneksi Power Apps
Microsoft Entra Terintegrasi Eksplisit
Autentikasi pada SQL Server Implisit / Implisit Aman
Autentikasi Windows Implisit / Implisit Aman
Autentikasi Windows (nonshared) Eksplisit

Risiko berbagi koneksi implisit

Semua aplikasi baru secara otomatis menggunakan koneksi implisit aman baru. Namun, dengan aplikasi yang menggunakan 'koneksi implisit' yang lebih lama, aplikasi dan koneksinya disebarkan ke pengguna akhir, itu berarti bahwa pengguna akhir dapat menulis aplikasi baru berdasarkan koneksi tersebut.

Ketika penulis menggunakan koneksi implisit yang aman, itu berarti bahwa tidak ada koneksi yang dibagikan dan tidak ada pengguna akhir yang menerima objek koneksi. Ini menghilangkan risiko penulis pengguna akhir yang menggunakan kembali koneksi untuk membuat aplikasi baru. Sebaliknya, aplikasi ini berfungsi dengan koneksi proksi yang mengetahui aplikasi dan hanya berkomunikasi dengan aplikasi tertentu. Koneksi proksi memungkinkan tindakan terbatas (membuat, membaca, memperbarui, menghapus) dan akses ke tabel tertentu di aplikasi yang ditentukan saat aplikasi diterbitkan. Oleh karena itu, hanya tindakan dan akses resmi yang diberikan kepada pengguna akhir.

Koneksi implisit sederhana gaya lama benar-benar mendistribusikan objek koneksi ke pengguna akhir. Misalnya, jika Anda membuat aplikasi yang memfilter data yang tidak ingin dilihat pengguna. Tapi, data yang difilter ada di database. Tetapi Anda mengandalkan filter yang Dikonfigurasi untuk memastikan pengguna akhir tidak akan melihat data tertentu.

Sekali lagi, dengan koneksi implisit sederhana gaya yang lebih lama, setelah Anda menyebarkan aplikasi, pengguna akhir dapat menggunakan koneksi yang disebarkan dengan aplikasi Anda di aplikasi baru yang mereka buat. Di aplikasi baru, pengguna dapat melihat data yang Anda filter di aplikasi Anda. Penting untuk menggunakan koneksi implisit aman baru.

Penting

Setelah koneksi bersama implisit yang lebih lama disebarkan ke pengguna akhir, batasan yang mungkin Anda masukkan ke dalam aplikasi yang Anda bagikan (seperti filter atau akses baca-saja) tidak lagi valid untuk aplikasi baru yang dibuat pengguna akhir. Pengguna akhir akan memiliki hak apa pun yang diizinkan autentikasi sebagai bagian dari koneksi yang dibagikan secara implisit. Oleh karena itu, saat mengonversi aplikasi untuk menggunakan koneksi implisit yang aman, Anda juga harus mencabut koneksi yang Anda bagikan dengan aplikasi Anda. Admin bisa mendapatkan laporan aplikasi dengan koneksi yang dibagikan secara implisit dengan toolkit COE.

Keamanan klien dan server

Anda tidak dapat mengandalkan keamanan data melalui pemfilteran atau operasi sisi klien lainnya agar aman. Aplikasi yang memerlukan pemfilteran data yang aman harus memastikan bahwa identifikasi dan pemfilteran pengguna terjadi di server.

Gunakan layanan seperti ID Microsoft Entra alih-alih mengandalkan filter yang dirancang dalam aplikasi dalam hal identitas dan keamanan pengguna. Konfigurasi ini memastikan filter sisi server berfungsi seperti yang diharapkan.

Ilustrasi berikut menjelaskan bagaimana pola keamanan dalam aplikasi berbeda antara model keamanan sisi klien dan sisi server.

Pola keamanan sisi klien dalam aplikasi.

Dalam pola aplikasi keamanan klien, [1] pengguna hanya mengautentikasi ke aplikasi di sisi klien. Kemudian [2] aplikasi meminta informasi layanan, dan [3] layanan mengembalikan informasi hanya berdasarkan permintaan data.

Pola keamanan sisi server dalam aplikasi.

Dalam pola keamanan sisi server, pengguna terlebih dahulu mengautentikasi ke layanan sehingga pengguna diketahui oleh layanan. Kemudian, [2] ketika panggilan dilakukan dari aplikasi, layanan [3] menggunakan identitas pengguna saat ini untuk memfilter data dengan tepat dan [4] mengembalikan data.

Skenario berbagi departemen implisit yang dijelaskan di atas adalah kombinasi dari dua pola ini. Pengguna harus masuk ke layanan Power Apps menggunakan kredensial Microsoft Entra. Perilaku ini adalah pola aplikasi keamanan server. Pengguna diketahui menggunakan identitas Microsoft Entra pada layanan. Oleh karena itu, aplikasi dibatasi untuk sekumpulan pengguna di mana Power Apps telah secara resmi berbagi aplikasi.

Namun, koneksi bersama implisit ke SQL Server adalah pola aplikasi keamanan klien. SQL Server hanya tahu bahwa nama pengguna dan kata sandi tertentu digunakan. Pemfilteran sisi klien apa pun, misalnya, dapat dilewati dengan aplikasi baru menggunakan nama pengguna dan kata sandi yang sama.

Untuk memfilter data dengan aman di sisi server, gunakan fitur keamanan bawaan di SQL Server seperti keamanan tingkat baris untuk baris, dan izin tolak ke objek tertentu (seperti kolom) untuk pengguna tertentu. Pendekatan ini menggunakan identitas pengguna Microsoft Entra untuk memfilter data di server.

Beberapa layanan perusahaan yang ada telah menggunakan pendekatan di mana identitas pengguna diambil dalam lapisan data bisnis dengan cara yang sama seperti yang dilakukan Microsoft Dataverse. Dalam hal ini, lapisan bisnis mungkin atau mungkin tidak menggunakan keamanan tingkat baris SQL Server dan menolak fitur secara langsung. Jika tidak, sering kali keamanan diaktifkan menggunakan prosedur atau tampilan tersimpan.

Lapisan bisnis (di sisi server) menggunakan identitas Microsoft Entra pengguna yang diketahui untuk memanggil prosedur tersimpan sebagai prinsipal SQL Server dan memfilter data. Namun, Power Apps saat ini tidak tersambung ke prosedur tersimpan. Lapisan bisnis juga dapat memanggil tampilan yang menggunakan identitas Microsoft Entra sebagai prinsipal SQL Server. Dalam hal ini, gunakan Power Apps untuk menyambungkan ke tampilan sehingga data difilter di sisi server. Mengekspos hanya tampilan kepada pengguna mungkin memerlukan alur Power Automate untuk pembaruan.

Lihat juga

Gambaran umum konektor untuk aplikasi kanvas