Peran Aplikasi
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Peran aplikasi adalah prinsipal database yang memungkinkan aplikasi berjalan dengan izinnya sendiri yang mirip pengguna. Anda dapat menggunakan peran aplikasi untuk memungkinkan akses ke data tertentu hanya untuk pengguna yang terhubung melalui aplikasi tertentu. Tidak seperti peran database, peran aplikasi tidak berisi anggota dan tidak aktif secara default. Peran aplikasi diaktifkan dengan menggunakan sp_setapprole, yang memerlukan kata sandi. Karena peran aplikasi adalah prinsipal tingkat database, mereka hanya dapat mengakses database lain melalui izin yang diberikan dalam database tersebut kepada tamu. Oleh karena itu, database apa pun di mana tamu telah dinonaktifkan tidak dapat diakses oleh peran aplikasi di database lain.
Di SQL Server, peran aplikasi tidak dapat mengakses metadata tingkat server karena tidak terkait dengan prinsipal tingkat server. Untuk menonaktifkan pembatasan ini dan dengan demikian memungkinkan peran aplikasi untuk mengakses metadata tingkat server, atur bendera pelacakan global 4616 menggunakan -T4616 atau DBCC TRACEON (4616, -1)
. Jika Anda lebih suka tidak mengaktifkan bendera pelacakan ini, Anda dapat menggunakan prosedur tersimpan yang ditandatangani sertifikat untuk memungkinkan peran aplikasi melihat status server. Untuk kode sampel, lihat contoh skrip ini di GitHub.
Menyambungkan dengan Peran Aplikasi
Langkah-langkah berikut membentuk proses di mana peran aplikasi mengalihkan konteks keamanan:
Pengguna menjalankan aplikasi klien.
Aplikasi klien terhubung ke instans SQL Server sebagai pengguna.
Aplikasi kemudian menjalankan prosedur tersimpan
sp_setapprole
dengan kata sandi yang hanya diketahui oleh aplikasi.Jika nama peran aplikasi dan kata sandi valid, peran aplikasi diaktifkan.
Pada titik ini, koneksi kehilangan izin pengguna dan mengasumsikan izin peran aplikasi.
Izin yang diperoleh melalui peran aplikasi tetap berlaku selama durasi koneksi.
Dalam versi SQL Server sebelumnya, satu-satunya cara bagi pengguna untuk memperoleh kembali konteks keamanan aslinya setelah memulai peran aplikasi adalah dengan memutuskan dan menyambungkan kembali ke SQL Server. Dimulai dengan SQL Server 2005 (9.x), sp_setapprole
memiliki opsi yang membuat cookie. Cookie berisi informasi konteks sebelum peran aplikasi diaktifkan. Prosedur sp_unsetapprole
tersimpan kemudian menggunakan cookie untuk mengembalikan sesi ke konteks aslinya. Untuk informasi tentang opsi baru ini dan contohnya, lihat sp_setapprole (Transact-SQL) dan sp_unsetapprole (Transaction-SQL).
Penting
Opsi enkripsi ODBC tidak didukung oleh SqlClient. Saat Anda mengirimkan informasi rahasia melalui jaringan, gunakan Keamanan Lapisan Transportasi (TLS), yang sebelumnya dikenal sebagai Secure Sockets Layer (SSL), atau IPsec untuk mengenkripsi saluran. Jika Anda harus mempertahankan kredensial di aplikasi klien, enkripsi kredensial dengan menggunakan fungsi API kripto. Di SQL Server 2005 (9.x) dan versi yang lebih baru, kata sandi parameter disimpan sebagai hash satu arah.
Tugas Terkait
Tugas | Jenis |
---|---|
Buat peran aplikasi. | Membuat Peran Aplikasi dan MEMBUAT PERAN APLIKASI (Transact-SQL) |
Mengubah peran aplikasi. | MENGUBAH PERAN APLIKASI (Transact-SQL) |
Menghapus peran aplikasi. | DROP APPLICATION ROLE (Transact-SQL) |
Menggunakan peran aplikasi. | sp_setapprole (T-SQL) |