Autentikasi SQL di Azure Synapse Analytics

Azure Synapse Analytics memiliki dua faktor bentuk SQL yang memungkinkan Anda mengontrol konsumsi sumber daya. Artikel ini menjelaskan bagaimana dua faktor bentuk mengontrol autentikasi pengguna.

Untuk mengotorisasi ke Synapse SQL, Anda dapat menggunakan dua jenis otorisasi:

  • Otorisasi Microsoft Entra
  • Otorisasi SQL

Otorisasi SQL memungkinkan aplikasi lama tersambung ke Azure Synapse SQL dengan cara yang sudah dikenal. Namun, autentikasi Microsoft Entra memungkinkan Anda mengelola akses ke sumber daya Azure Synapse secara terpusat, seperti kumpulan SQL. Azure Synapse Analytics mendukung penonaktifan autentikasi lokal, seperti autentikasi SQL, baik selama dan setelah pembuatan ruang kerja. Setelah dinonaktifkan, autentikasi lokal dapat diaktifkan kapan saja oleh pengguna yang berwenang. Untuk informasi selengkapnya tentang autentikasi khusus Microsoft Entra, lihat Menonaktifkan autentikasi lokal di Azure Synapse Analytics.

Akun administratif

Terdapat dua akun administratif (nama pengguna administrator SQL and administrator Active Directory SQL) yang bertindak sebagai administrator. Untuk mengidentifikasi kedua akun administrator ini untuk kumpulan SQL Anda, buka portal Azure, lalu buka tab Properti ruang kerja Synapse.

SQL Server Admins

  • nama pengguna administrator SQL

    Saat membuat Azure Synapse Analytics, Anda harus memberi nama Data masuk admin server. Server SQL membuat akun itu sebagai data masuk di database master. Akun ini tersambung menggunakan autentikasi SQL Server (nama pengguna dan kata sandi). Hanya satu dari akun ini yang bisa ada.

  • administrator Active Directory SQL

    Satu akun Microsoft Entra, baik akun individu atau grup keamanan, juga dapat dikonfigurasi sebagai administrator. Ini opsional untuk mengonfigurasi administrator Microsoft Entra, tetapi administrator Microsoft Entra harus dikonfigurasi jika Anda ingin menggunakan akun Microsoft Entra untuk menyambungkan ke Synapse SQL.

    • Akun admin Microsoft Entra mengontrol akses ke kumpulan SQL khusus, sementara peran RBAC Synapse dapat digunakan untuk mengontrol akses ke kumpulan tanpa server, misalnya, dengan peran Administrator Synapse dan Administrator Synapse SQL.

nama pengguna administrator SQL dan akun administrator Active Directory SQL memiliki karakteristik berikut:

  • Merupakan satu-satunya akun yang dapat secara otomatis terhubung ke SQL Database apa pun di server. (Untuk menyambungkan ke database pengguna, akun lain harus menjadi pemilik database, atau memiliki akun pengguna di database pengguna.)
  • Akun-akun ini memasukkan database pengguna sebagai pengguna dbo dan memiliki semua izin dalam database pengguna. (Pemilik database pengguna juga memasukkan database sebagai pengguna dbo.)
  • Jangan masukkan database master sebagai pengguna dbo, dan miliki izin terbatas di databasea master.
  • Bukan merupakan anggota dari peran server tetap sysadmin SQL Server standar, yang tidak tersedia di SQL Database.
  • Dapat membuat, mengubah, dan menghilangkan database, info masuk, pengguna di database master, dan aturan firewall IP tingkat server.
  • Dapat menambahkan dan menghapus anggota ke dbmanager peran dan loginmanager .
  • Dapat melihat tabel sistem sys.sql_logins.

Catatan

Jika pengguna dikonfigurasi sebagai admin Direktori Aktif dan Administrator Synapse, lalu dihapus dari peran admin Direktori Aktif, maka pengguna akan kehilangan akses ke kumpulan SQL khusus di Synapse. Mereka harus dihapus dan kemudian ditambahkan ke peran Administrator Synapse untuk mendapatkan kembali akses ke kumpulan SQL khusus.

Untuk mengelola pengguna yang memiliki akses ke kumpulan SQL tanpa server, Anda dapat menggunakan instruksi di bawah ini.

Untuk membuat data masuk ke kumpulan SQL tanpa server, gunakan sintaks berikut:

CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;

Setelah data masuk tersedia, Anda dapat membuat pengguna di database individual dalam titik akhir kumpulan SQL tanpa server dan memberikan izin yang diperlukan kepada pengguna ini. Untuk membuat pengguna, Anda dapat menggunakan sintaks berikut:

CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

Setelah data masuk dan pengguna dibuat, Anda dapat menggunakan sintaks SQL Server reguler untuk memberikan hak.

Pengguna non-administrator

Umumnya, akun non-administrator tidak memerlukan akses ke database master. Membuat pengguna database mandiri di tingkat database menggunakan pernyataan CREATE USER (Transact-SQL).

Pengguna dapat menjadi pengguna database mandiri autentikasi Microsoft Entra (jika Anda telah mengonfigurasi lingkungan Anda untuk autentikasi Microsoft Entra), atau pengguna database yang terkandung autentikasi SQL Server, atau pengguna autentikasi SQL Server berdasarkan login autentikasi SQL Server (dibuat pada langkah sebelumnya.)

Untuk membuat pengguna, sambungkan ke database, dan jalankan pernyataan yang mirip dengan contoh berikut:

CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;

Awalnya, hanya salah satu admin atau pemilik database yang dapat membuat pengguna. Untuk mengotorisasi pengguna tambahan guna membuat pengguna baru, berikan izin ALTER ANY USER kepada pengguna yang dipilih tersebut, dengan menggunakan pernyataan seperti:

GRANT ALTER ANY USER TO Mary;

Untuk memberi pengguna tambahan kontrol penuh atas database, jadikan mereka anggota db_owner peran database tetap.

Di Azure SQL Database atau synapse tanpa server, gunakan pernyataan ALTER ROLE.

ALTER ROLE db_owner ADD MEMBER Mary;

Dalam kumpulan SQL khusus gunakan EXEC sp_addrolemember.

EXEC sp_addrolemember 'db_owner', 'Mary';

Catatan

Salah satu alasan umum untuk membuat pengguna database berdasarkan data masuk server adalah untuk pengguna yang membutuhkan akses ke beberapa database. Karena pengguna database mandiri adalah entitas individual, setiap database menyimpan penggunanya sendiri dan kata sandinya sendiri. Ini dapat menyebabkan overhead karena pengguna kemudian harus mengingat setiap kata sandi untuk setiap database, dan dapat menyebabkan masalah ketika harus mengubah beberapa kata sandi untuk banyak database.

Grup dan peran

Manajemen akses yang efisien menggunakan izin yang ditetapkan untuk grup dan peran, bukan pengguna individual.

  • Saat menggunakan autentikasi Microsoft Entra, masukkan pengguna Microsoft Entra ke dalam grup Microsoft Entra. Membuat pengguna database yang termuat untuk grup. Tempatkan satu atau beberapa pengguna database ke dalam peran database, lalu tetapkan izin ke peran database.

  • Saat menggunakan autentikasi SQL Server, buat pengguna database mandiri dalam database. Tempatkan satu atau beberapa pengguna database ke dalam peran database, lalu tetapkan izin ke peran database.

Peran basis data dapat berupa peran bawaan seperti db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter, dan db_denydatareader. db_owner biasanya digunakan untuk memberikan izin penuh hanya ke beberapa pengguna. Peran database tetap lainnya berguna untuk mendapatkan database sederhana dalam pengembangan dengan cepat, tetapi tidak direkomendasikan untuk sebagian besar database produksi.

Misalnya, peran database tetap db_datareader memberikan akses baca ke setiap tabel dalam database, yang biasanya lebih dari yang diperlukan.

Akan jauh lebih baik untuk menggunakan pernyataan CREATE ROLE guna membuat peran database yang ditentukan pengguna Anda sendiri dan dengan teliti memberikan setiap peran izin paling sedikit yang diperlukan untuk kebutuhan bisnis. Ketika pengguna adalah anggota dari beberapa peran, mereka menggabungkan izin dari mereka semua.

Izin

Ada lebih dari 100 izin yang dapat diberikan atau ditolak secara individual dalam SQL Database. Izin-izin ini banyak yang berlapis. Misalnya, izin UPDATE pada skema menyertakan izin UPDATE pada setiap tabel dalam skema tersebut. Seperti pada kebanyakan sistem izin, penolakan mengambil alih pemberian izin.

Karena sifatnya berlapis dan banyaknya jumlah izin, perlu adanya studi yang cermat untuk merancang sistem izin yang sesuai untuk melindungi database Anda dengan benar.

Mulailah dengan daftar izin di Izin (Mesin Database) dan tinjau grafik ukuran poster izin mesin database.

Pertimbangan dan pembatasan

Saat mengelola data masuk dan pengguna di SQL Database, pertimbangkan poin berikut:

  • Anda harus tersambung ke database master saat menjalankan pernyataan CREATE/ALTER/DROP DATABASE.
  • Pengguna database yang terkait dengan data masuk admin Server tidak dapat diubah atau dihilangkan.
  • Admin server akan dinonaktifkan jika autentikasi khusus Microsoft Entra diaktifkan.
  • AS-Inggris adalah bahasa default untuk data masuk Admin server.
  • Hanya administrator (Login admin server atau administrator Microsoft Entra) dan anggota peran database dbmanager dalam database yang master memiliki izin untuk menjalankan CREATE DATABASE pernyataan dan DROP DATABASE .
  • Anda harus tersambung ke database master saat menjalankan pernyataan CREATE/ALTER/DROP LOGIN. Namun, tidak disarankan untuk menggunakan data masuk. Gunakan pengguna database mandiri sebagai gantinya. Untuk informasi selengkapnya, lihat Pengguna Database Mandiri - Membuat Database Anda Portabel.
  • Untuk menyambungkan ke database pengguna, Anda harus memberikan nama database dalam string koneksi.
  • Hanya login utama tingkat server dan anggota peran database loginmanager dalam master database yang memiliki izin untuk menjalankan CREATE LOGINpernyataan , , ALTER LOGINdan DROP LOGIN .
  • Saat menjalankan pernyataan CREATE/ALTER/DROP LOGIN dan CREATE/ALTER/DROP DATABASE dalam aplikasi ADO.NET, penggunaan perintah parameter tidak diizinkan. Untuk mengetahui informasi selengkapnya, lihat Perintah dan Parameter.
  • Ketika menjalankan pernyataan CREATE USER dengan opsi FOR/FROM LOGIN, ia harus menjadi satu-satunya pernyataan dalam batch Transact-SQL.
  • Ketika menjalankan pernyataan ALTER USER dengan opsi WITH LOGIN, ia harus menjadi satu-satunya pernyataan dalam batch Transact-SQL.
  • CREATE/ALTER/DROP LOGIN pernyataan dan CREATE/ALTER/DROP USER tidak didukung saat autentikasi khusus Microsoft Entra diaktifkan untuk ruang kerja Azure Synapse.
  • Untuk CREATE/ALTER/DROP pengguna memerlukan izin ALTER ANY USER pada database.
  • Saat pemilik peran database mencoba menambahkan atau menghapus pengguna database lain ke atau dari peran database tersebut, kesalahan berikut mungkin terjadi: Pengguna atau peran 'Nama' tidak ada dalam database ini. Kesalahan ini terjadi karena pengguna tidak terlihat oleh pemiliknya. Untuk mengatasi masalah ini, beri pemilik peran izin VIEW DEFINITION pada pengguna.

Langkah berikutnya

Untuk informasi selengkapnya, lihat Pengguna Database Mandiri - Membuat Database Anda Portabel.