sp_setapprole (T-SQL)
Berlaku untuk: SQL ServerAzure SQL Database
Mengaktifkan izin yang terkait dengan peran aplikasi dalam database saat ini.
Sintaks
sp_setapprole
[ @rolename = ] N'rolename'
, [ @password = ] N'password'
[ , [ @encrypt = ] 'encrypt' ]
[ , [ @fCreateCookie = ] fCreateCookie ]
[ , [ @cookie = ] cookie OUTPUT ]
[ ; ]
Argumen
[ @rolename = ] N'rolename'
Nama peran aplikasi yang ditentukan dalam database saat ini. @rolename adalah sysname, tanpa default. @rolename harus ada di database saat ini.
[ @password = ] { encrypt N'password' }
Kata sandi yang diperlukan untuk mengaktifkan peran aplikasi. @password adalah sysname, tanpa default. @password dapat dikaburkan dengan menggunakan fungsi ODBCencrypt
. Saat Anda menggunakan encrypt
fungsi , kata sandi harus dikonversi ke string Unicode dengan menempatkan N
sebelum tanda kutip pertama.
Opsi enkripsi tidak didukung pada koneksi yang menggunakan SqlClient.
Penting
Fungsi ODBC encrypt
tidak menyediakan enkripsi. Anda tidak boleh mengandalkan fungsi ini untuk melindungi kata sandi yang dikirimkan melalui jaringan. Jika informasi ini akan dikirimkan di seluruh jaringan, gunakan TLS atau IPSec.
[ @encrypt = ] { 'none' | 'odbc' }
Menentukan jenis enkripsi sebelum mengirim kata sandi ke Mesin Database SQL Server. @encrypt adalah varchar(10), dan bisa menjadi salah satu nilai ini.
Nilai | Deskripsi |
---|---|
none (default) |
Menentukan bahwa tidak ada obfuscation yang digunakan. Kata sandi diteruskan ke SQL Server sebagai teks biasa. |
odbc |
Menentukan bahwa ODBC mengaburkan kata sandi dengan menggunakan fungsi ODBC encrypt sebelum mengirim kata sandi ke Mesin Database SQL Server. Nilai ini hanya dapat ditentukan saat Anda menggunakan klien ODBC atau Penyedia OLE DB untuk SQL Server. |
[ @fCreateCookie = ] { 'true' | 'false' }
Menentukan apakah cookie akan dibuat. @fCreateCookie adalah bit, dengan default .0
true
secara implisit dikonversi ke 1
. false
secara implisit dikonversi ke 0
.
[ @cookie = ] OUTPUT cookie
Menentukan parameter output untuk memuat cookie. @cookie adalah parameter OUTPUT dari jenis varbinary(8000). Cookie dihasilkan hanya jika nilai @fCreateCookie adalah true
.
Catatan
Meskipun implementasi saat ini mengembalikan varbinary(50), aplikasi harus memesan varbinary (8000) yang didokumenkan, sehingga aplikasi terus beroperasi dengan benar jika ukuran pengembalian cookie meningkat dalam rilis mendatang.
Mengembalikan nilai kode
0
(berhasil) dan 1
(kegagalan).
Keterangan
Setelah peran aplikasi diaktifkan dengan menggunakan sp_setapprole
, peran tetap aktif sampai pengguna memutuskan sambungan dari server atau menjalankan sp_unsetapprole
. Anda tidak dapat menggunakan sp_setapprole
dalam prosedur tersimpan lain, pemicu, atau dalam transaksi yang ditentukan pengguna. Ini hanya dapat dijalankan sebagai pernyataan Transact-SQL langsung.
Untuk gambaran umum peran aplikasi, lihat Peran Aplikasi.
Anda harus selalu menggunakan koneksi terenkripsi saat mengaktifkan peran aplikasi, untuk melindungi kata sandi peran aplikasi saat Anda mengirimkannya melalui jaringan.
Opsi Microsoft ODBC encrypt
tidak didukung oleh SqlClient. Jika Anda harus menyimpan kredensial, enkripsi dengan fungsi API kripto. Parameter @password disimpan sebagai hash satu arah. Untuk mempertahankan kompatibilitas dengan versi SQL Server yang lebih lama, sp_addapprole
jangan terapkan kebijakan kompleksitas kata sandi. Untuk menerapkan kebijakan kompleksitas kata sandi, gunakan CREATE APPLICATION ROLE.
Izin
Memerlukan keanggotaan di publik dan pengetahuan tentang kata sandi untuk peran tersebut.
Contoh
J. Mengaktifkan peran aplikasi tanpa opsi enkripsi
Contoh berikut mengaktifkan peran aplikasi bernama SalesAppRole
, dengan kata sandi AsDeF00MbXX
teks biasa , dibuat dengan izin yang dirancang untuk aplikasi yang digunakan oleh pengguna saat ini.
EXEC sys.sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO
B. Mengaktifkan peran aplikasi dengan cookie lalu kembali ke konteks asli
Contoh berikut mengaktifkan Sales11
peran aplikasi dengan kata sandi fdsd896#gfdbfdkjgh700mM
, dan membuat cookie. Contoh mengembalikan nama pengguna saat ini, lalu kembali ke konteks asli dengan mengeksekusi sp_unsetapprole
.
DECLARE @cookie VARBINARY(8000);
EXEC sys.sp_setapprole 'Sales11',
'fdsd896#gfdbfdkjgh700mM',
@fCreateCookie = true,
@cookie = @cookie OUTPUT;
Peran aplikasi sekarang aktif. USER_NAME()
mengembalikan nama peran aplikasi, Sales11
.
SELECT USER_NAME();
Batalkan set peran aplikasi.
EXEC sys.sp_unsetapprole @cookie;
GO
Peran aplikasi tidak lagi aktif. Konteks asli dipulihkan. USER_NAME()
mengembalikan nama pengguna asli.
SELECT USER_NAME();
GO