Pengguna Database Mandiri - Membuat Database Anda Portabel

Berlaku untuk: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Gunakan pengguna database mandiri untuk mengautentikasi koneksi SQL Server dan SQL Database di tingkat database. Database mandiri adalah database yang diisolasi dari database lain dan dari instans SQL Server/ SQL Database (dan database master) yang menghosting database. SQL Server mendukung pengguna database mandiri untuk autentikasi Windows dan SQL Server. Saat menggunakan SQL Database, gabungkan pengguna database mandiri dengan aturan firewall tingkat database. Topik ini meninjau perbedaan dan manfaat menggunakan model database mandiri dibandingkan dengan model login/pengguna tradisional dan windows atau aturan firewall tingkat server. Skenario tertentu, pengelolaan, atau logika bisnis aplikasi mungkin masih memerlukan penggunaan model login/pengguna tradisional dan aturan firewall tingkat server.

Catatan

Saat Microsoft mengembangkan layanan SQL Database dan bergerak menuju SLA yang dijamin lebih tinggi, Anda mungkin diharuskan untuk beralih ke model pengguna database mandiri dan aturan firewall lingkup database untuk mencapai SLA ketersediaan yang lebih tinggi dan tingkat login maks yang lebih tinggi untuk database tertentu. Microsoft mendorong Anda untuk mempertimbangkan perubahan tersebut hari ini.

Login Tradisional dan Model Pengguna

Dalam model koneksi tradisional, pengguna Windows atau anggota grup Windows tersambung ke Mesin Database dengan memberikan kredensial pengguna atau grup yang diautentikasi oleh Windows. Atau Anda dapat memberikan nama dan kata sandi serta menyambungkan dengan menggunakan autentikasi SQL Server. Dalam kedua kasus, database master harus memiliki login yang cocok dengan kredensial penghubung. Setelah Mesin Database mengonfirmasi kredensial autentikasi Windows atau mengautentikasi kredensial autentikasi SQL Server, koneksi biasanya mencoba menyambungkan ke database pengguna. Untuk menyambungkan ke database pengguna, login harus dipetakan ke (yaitu, terkait dengan) pengguna database dalam database pengguna. String koneksi juga dapat menentukan menyambungkan ke database tertentu yang opsional dalam SQL Server tetapi diperlukan dalam SQL Database.

Prinsip pentingnya adalah bahwa login (dalam database master) dan pengguna (dalam database pengguna) harus ada dan terkait satu sama lain. Ini berarti bahwa koneksi ke database pengguna memiliki dependensi saat masuk di database master, dan ini membatasi kemampuan database untuk dipindahkan ke hosting yang berbeda SQL Server atau server database Azure SQL. Dan jika, karena alasan apa pun, koneksi ke database master tidak tersedia (misalnya, failover sedang berlangsung), waktu koneksi keseluruhan akan ditingkatkan atau koneksi mungkin kehabisan waktu. Akibatnya ini dapat mengurangi skalabilitas koneksi.

Model Pengguna Database Mandiri

Dalam model pengguna database mandiri, login di database master tidak ada. Sebaliknya, proses autentikasi terjadi di database pengguna, dan pengguna database di database pengguna tidak memiliki login terkait di database master. Model pengguna database mandiri mendukung autentikasi Windows dan autentikasi SQL Server, dan dapat digunakan dalam SQL Server dan SQL Database. Untuk menyambungkan sebagai pengguna database mandiri, string koneksi harus selalu berisi parameter untuk database pengguna sehingga Mesin Database mengetahui database mana yang bertanggung jawab untuk mengelola proses autentikasi. Aktivitas pengguna database mandiri terbatas pada database autentikasi, jadi saat menyambungkan sebagai pengguna database mandiri, akun pengguna database harus dibuat secara independen di setiap database yang akan dibutuhkan pengguna. Untuk mengubah database, SQL Database pengguna harus membuat koneksi baru. Pengguna database mandiri di SQL Server dapat mengubah database jika pengguna yang identik ada di database lain.

Azure: SQL Database dan Azure Synapse Analytics mendukung identitas Azure Active Directory sebagai pengguna database mandiri. SQL Database mendukung pengguna database mandiri menggunakan autentikasi SQL Server, tetapi Azure Synapse Analytics tidak. Untuk informasi selengkapnya, lihat Menyambungkan ke SQL Database Dengan Menggunakan Autentikasi Azure Active Directory. Saat menggunakan autentikasi Azure Active Directory, koneksi dari SSMS dapat dibuat menggunakan Autentikasi Universal Direktori Aktif. Administrator dapat mengonfigurasi Autentikasi Universal untuk memerlukan Autentikasi Multifaktor, yang memverifikasi identitas dengan menggunakan panggilan telepon, pesan teks, kartu pintar dengan pin, atau pemberitahuan aplikasi seluler. Untuk informasi selengkapnya, lihat Dukungan SSMS untuk Azure AD MFA dengan SQL Database dan Azure Synapse Analytics.

Untuk SQL Database dan Azure Synapse Analytics, karena nama database selalu diperlukan dalam string koneksi, tidak ada perubahan yang diperlukan pada string koneksi saat beralih dari model tradisional ke model pengguna database mandiri. Untuk koneksi SQL Server, nama database harus ditambahkan ke string koneksi, jika belum ada.

Penting

Saat menggunakan model tradisional, peran tingkat server dan izin tingkat server dapat membatasi akses ke semua database. Saat menggunakan model database mandiri, pemilik database dan pengguna database dengan izin ALTER ANY USER dapat memberikan akses ke database. Ini mengurangi kontrol akses login server dengan hak istimewa tinggi dan memperluas kontrol akses untuk menyertakan pengguna database dengan hak istimewa tinggi.

Firewall

SQL Server

Aturan firewall Windows berlaku untuk semua koneksi dan memiliki efek yang sama pada login (koneksi model tradisional) dan pengguna database mandiri. Untuk informasi selengkapnya tentang firewall Windows, lihat Mengonfigurasi Firewall Windows untuk Akses Mesin Database.

Firewall SQL Database

SQL Database memungkinkan aturan firewall terpisah untuk koneksi tingkat server (masuk) dan untuk koneksi tingkat database (pengguna database mandiri). Saat menyambungkan ke database pengguna, aturan firewall database pertama diperiksa. Jika tidak ada aturan yang memungkinkan akses ke database, aturan firewall tingkat server diperiksa, yang memerlukan akses ke database master server SQL Database. Aturan firewall tingkat database yang dikombinasikan dengan pengguna database mandiri dapat menghilangkan kebutuhan untuk mengakses database master server selama koneksi memberikan skalabilitas koneksi yang ditingkatkan.

Untuk informasi selengkapnya tentang aturan firewall SQL Database, lihat topik berikut ini:

Perbedaan Sintaks

Model tradisional Model pengguna database mandiri
Saat tersambung ke database master:

CREATE LOGIN login_name WITH PASSWORD = 'strong_password';

Kemudian saat tersambung ke database pengguna:

CREATE USER 'user_name' FOR LOGIN 'login_name';
Saat tersambung ke database pengguna:

CREATE USER user_name WITH PASSWORD = 'strong_password';
Model tradisional Model pengguna database mandiri
Untuk mengubah kata sandi, dalam konteks master DB:

ALTER LOGIN login_name WITH PASSWORD = 'strong_password';
Untuk mengubah kata sandi, dalam konteks DB pengguna:

ALTER USER user_name WITH PASSWORD = 'strong_password';

Instans Terkelola

Azure SQL Managed Instance berperilaku seperti SQL Server lokal dalam konteks database mandiri. Pastikan untuk mengubah konteks database Anda dari database master ke database pengguna saat membuat pengguna mandiri Anda. Selain itu, seharusnya tidak ada koneksi aktif ke database pengguna saat mengatur opsi penahanan.

Contohnya:

Peringatan

Sebelum Anda menjalankan skrip berikut, pastikan tidak ada koneksi lain yang aktif di database Instans Terkelola Anda. Skrip mungkin mengganggu proses lain yang berjalan pada database.

Use MASTER;
GO 

ALTER DATABASE Test
SET RESTRICTED_USER
WITH ROLLBACK IMMEDIATE;

ALTER DATABASE Test
SET containment=partial;

ALTER DATABASE Test
SET MULTI_USER;

USE Test;  
GO 

CREATE USER Carlo  
WITH PASSWORD='Enterpwdhere*'  

SELECT containment_desc FROM sys.databases
WHERE name='Test'

Keterangan

  • Dalam SQL Server, pengguna database mandiri harus diaktifkan untuk instans SQL Server. Untuk informasi selengkapnya, lihat Opsi Konfigurasi Server autentikasi database mandiri.
  • Pengguna database mandiri dan login dengan nama yang tidak tumpang tindih dapat berdampingan di aplikasi Anda.
  • Jika ada login dalam database master dengan nama1 dan Anda membuat pengguna database mandiri bernama name1, ketika nama database disediakan dalam string koneksi, konteks pengguna database akan dipilih melalui konteks login saat menyambungkan ke database. Artinya, pengguna database mandiri akan lebih diutamakan daripada login dengan nama yang sama.
  • Dalam SQL Database nama pengguna database mandiri tidak boleh sama dengan nama akun admin server.
  • Akun admin server SQL Database tidak pernah bisa menjadi pengguna database mandiri. Admin server memiliki izin yang memadai untuk membuat dan mengelola pengguna database mandiri. Admin server dapat memberikan izin kepada pengguna database mandiri pada database pengguna.
  • Karena pengguna database mandiri adalah prinsip tingkat database, Anda perlu membuat pengguna database mandiri di setiap database yang akan Anda gunakan. Identitas terbatas pada database dan independen dalam semua aspek dari pengguna dengan nama yang sama dan kata sandi yang sama di database lain di server yang sama.
  • Gunakan kata sandi kekuatan yang sama dengan yang biasanya Anda gunakan untuk masuk.

Lihat juga

Database Mandiri
Praktik Terbaik Keamanan dengan Database Mandiri
CREATE USER (Transact-SQL)
Menyambungkan ke SQL Database Menggunakan Autentikasi Azure Active Directory