Mengotorisasi akses database ke SQL Database, SQL Managed Instance, dan Azure Synapse Analytics
Berlaku untuk: Azure SQL Database Azure SQL Managed InstanceAzure Synapse Analytics
Dalam artikel ini, Anda mempelajari tentang:
- Opsi konfigurasi untuk Azure SQL Database, Azure SQL Managed Instance, dan Azure Synapse Analytics yang memungkinkan pengguna melakukan tugas administratif dan mengakses data yang disimpan dalam database ini.
- Konfigurasi akses dan otorisasi setelah server baru awalnya dibuat.
- Cara menambahkan login dan akun pengguna dalam
master
database lalu memberikan izin administratif akun ini. - Cara menambahkan akun pengguna dalam database pengguna, baik yang terkait dengan login atau sebagai akun pengguna yang termuat.
- Mengonfigurasikan akun pengguna dengan izin dalam database pengguna dengan menggunakan peran database dan izin eksplisit.
Penting
Database di Azure SQL Database, Azure SQL Managed Instance, dan Azure Synapse disebut secara kolektif di sisa artikel ini sebagai database, dan server mengacu pada server logis yang mengelola database untuk Azure SQL Database dan Azure Synapse.
Catatan
ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).
Autentikasi dan otorisasi
Autentikasi adalah proses untuk membuktikan bahwa pengguna adalah orang yang sesuai. Pengguna tersambung ke database menggunakan akun pengguna. Saat pengguna mencoba menyambungkan ke database, mereka menyediakan akun pengguna dan informasi autentikasi. Pengguna diautentikasi menggunakan salah satu dari dua metode autentikasi berikut:
-
Dengan metode autentikasi ini, pengguna mengirimkan nama akun pengguna dan kata sandi terkait untuk membuat koneksi. Kata sandi ini disimpan dalam
master
database untuk akun pengguna yang ditautkan ke login atau disimpan dalam database yang berisi akun pengguna yang tidak ditautkan ke login.Catatan
Azure SQL Database hanya memberlakukan kompleksitas kata sandi untuk kebijakan kata sandi. Untuk kebijakan kata sandi di Azure SQL Managed Instance, lihat Tanya Jawab Umum (FAQ) Azure SQL Managed Instance.
-
Dengan metode autentikasi ini, pengguna mengirimkan nama akun pengguna dan meminta agar layanan menggunakan informasi kredensial yang disimpan di ID Microsoft Entra (sebelumnya Azure Active Directory).
Login dan pengguna: Akun pengguna dalam database dapat dikaitkan dengan login yang disimpan dalam master
database atau bisa menjadi nama pengguna yang disimpan dalam database individual.
- Login adalah akun individual dalam
master
database, di mana akun pengguna dalam satu atau beberapa database dapat ditautkan. Dengan login, informasi kredensial untuk akun pengguna disimpan dengan login. - Akun pengguna adalah akun individual dalam database apa pun yang mungkin, tetapi tidak harus, ditautkan ke login. Dengan akun pengguna yang tidak ditautkan ke login, informasi kredensial disimpan di akun pengguna.
Otorisasi untuk mengakses data dan melakukan berbagai tindakan dikelola menggunakan peran database dan izin eksplisit. Otorisasi mengacu pada izin yang ditetapkan untuk pengguna, dan menentukan izin yang boleh dilakukan oleh pengguna. Otorisasi dikendalikan oleh keanggotaan peran database akun pengguna Anda dan izin tingkat objek. Sebagai praktik terbaik, Anda harus memberi pengguna hak istimewa paling sedikit yang diperlukan.
Login dan akun pengguna yang sudah ada setelah membuat database baru
Saat pertama kali menyebarkan Azure SQL, Anda dapat menentukan nama login dan kata sandi untuk jenis login administratif khusus, admin Server. Konfigurasi login dan pengguna berikut dalam database master dan pengguna terjadi selama penyebaran:
- Login SQL dengan hak administratif dibuat menggunakan nama login yang Anda tentukan. Login adalah akun individual untuk masuk ke SQL Database, SQL Managed Instance, dan Azure Synapse.
- Login ini diberikan izin administratif penuh pada semua database sebagai prinsipal tingkat server. Login memiliki semua izin yang tersedia dan tidak dapat dibatasi. Dalam SQL Managed Instance, login ini ditambahkan ke peran server tetap sysadmin (peran ini tidak ada di Azure SQL Database).
- Ketika akun ini masuk ke database, akun tersebut cocok dengan akun
dbo
pengguna khusus (akun pengguna, yang ada di setiap database pengguna. Pengguna dbo memiliki semua izin database dalam database dan merupakan anggotadb_owner
peran database tetap. Peran database tetap tambahan dibahas nanti di artikel ini.
Untuk mengidentifikasi akun admin Server, buka portal Azure, dan navigasikan ke tab Properti server logis atau instans terkelola Anda:
Penting
Nama akun admin Server tidak dapat diubah setelah dibuat. Untuk mengatur ulang kata sandi untuk admin server, buka portal Azure, pilih SQL Server, pilih server dari daftar, lalu pilih Atur Ulang Kata Sandi. Untuk mengatur ulang kata sandi untuk SQL Managed Instance, buka portal Azure, pilih instans, dan pilih Reset kata sandi. Anda juga dapat menggunakan PowerShell atau Azure CLI.
Membuat login dan pengguna tambahan yang memiliki izin administratif
Pada titik ini, server atau instans terkelola Anda hanya dikonfigurasi untuk akses menggunakan satu login SQL dan akun pengguna. Untuk membuat login tambahan dengan izin administratif penuh atau parsial, Anda memiliki opsi berikut (tergantung pada mode penyebaran Anda):
Membuat akun administrator Microsoft Entra dengan izin administratif penuh
Aktifkan autentikasi Microsoft Entra dan tambahkan admin Microsoft Entra. Satu akun Microsoft Entra dapat dikonfigurasi sebagai administrator penyebaran Azure SQL dengan izin administratif penuh. Akun ini dapat berupa akun individual atau akun grup keamanan. Admin Microsoft Entra harus dikonfigurasi jika Anda ingin menggunakan akun Microsoft Entra untuk menyambungkan ke SQL Database, SQL Managed Instance, atau Azure Synapse. Untuk informasi terperinci tentang mengaktifkan autentikasi Microsoft Entra untuk semua jenis penyebaran Azure SQL, lihat artikel berikut ini:
Dalam SQL Managed Instance, membuat login SQL dengan izin administratif penuh
- Buat login SQL tambahan di
master
database. - Tambahkan login ke peran server tetap sysadmin menggunakan pernyataan ALTER SERVER ROLE. Login ini akan memiliki izin administratif penuh.
- Atau, buat login Microsoft Entra menggunakan sintaks CREATE LOGIN .
Catatan
Peran
dbmanager
danloginmanager
tidak berkaitan dengan penyebaran Azure SQL Managed Instance.- Buat login SQL tambahan di
Di SQL Database, buatlah login SQL dengan izin administratif terbatas
- Buat login SQL tambahan di
master
database. - Tambahkan peran Masuk ke
##MS_DatabaseManager##
tingkat server ,##MS_LoginManager##
dan##MS_DatabaseConnector##
menggunakan pernyataan ALTER SERVER ROLE.
Anggota peran database khusus
master
untuk Azure SQL Database memiliki wewenang untuk membuat dan mengelola database atau untuk membuat dan mengelola login. Dalam database yang dibuat oleh pengguna yang merupakan anggota perandbmanager
, anggota dipetakan ke peran database tetapdb_owner
dan dapat masuk dan mengelola database tersebut menggunakan akun penggunadbo
. Peran ini tidak memiliki izin eksplisit di luarmaster
database.Penting
Anda tidak dapat membuat login SQL tambahan dengan izin administratif penuh di Azure SQL Database. Hanya akun admin server atau akun admin Microsoft Entra (yang dapat menjadi grup Microsoft Entra) yang dapat menambahkan atau menghapus login lain ke atau dari peran server. Ini khusus untuk Azure SQL Database.
- Buat login SQL tambahan di
Di kumpulan SQL khusus Azure Synapse, buat login SQL dengan izin administratif terbatas
- Buat login SQL tambahan di
master
database. - Buat akun pengguna di database yang
master
terkait dengan login baru ini. - Tambahkan akun pengguna ke
dbmanager
,loginmanager
peran, atau keduanya dalammaster
database menggunakan pernyataan sp_addrolemember .
- Buat login SQL tambahan di
Di kumpulan SQL tanpa server Azure Synapse, buat login SQL dengan izin administratif terbatas
- Buat login SQL tambahan di
master
database. - Tambahkan login SQL ke peran server tetap sysadmin menggunakan pernyataan ALTER SERVER ROLE .
- Atau, buat login Microsoft Entra menggunakan sintaks CREATE LOGIN .
- Buat login SQL tambahan di
Membuat akun untuk pengguna non-administrator
Anda dapat membuat akun untuk pengguna non-administratif menggunakan salah satu dari dua metode berikut:
Membuat login
Buat login SQL di
master
database. Kemudian buatlah akun pengguna di setiap database yang penggunanya membutuhkan akses dan kaitkan akun pengguna dengan login tersebut. Pendekatan ini lebih disukai ketika pengguna harus mengakses beberapa database dan Anda ingin membuat kata sandi tetap sinkron. Namun, pendekatan ini memiliki kompleksitas ketika digunakan dengan replikasi geografis karena login harus dibuat di server utama dan server sekunder. Untuk informasi lebih lanjut, lihat Mengonfigurasi dan mengelola keamanan Azure SQL Database untuk pemulihan lokasi geografis atau kegagalan.Buat akun pengguna
Membuat akun pengguna di database tempat pengguna membutuhkan akses (disebut juga pengguna yang termuat).
- Dengan SQL Database, Anda selalu dapat membuat akun pengguna jenis ini.
- Dengan SQL Managed Instance yang mendukung prinsipal server Microsoft Entra, Anda dapat membuat akun pengguna untuk mengautentikasi ke SQL Managed Instance tanpa mengharuskan pengguna database dibuat sebagai pengguna database mandiri.
Dengan pendekatan ini, informasi autentikasi pengguna disimpan di setiap database, dan direplikasi lokasi geografisnya ke database secara otomatis. Namun, jika akun yang sama ada di beberapa database dan Anda menggunakan autentikasi SQL, Anda harus menjaga kata sandi tetap disinkronkan secara manual. Selain itu, jika pengguna memiliki akun di database yang berbeda dengan kata sandi yang berbeda, mengingat kata sandi tersebut dapat menjadi masalah.
Penting
Untuk membuat pengguna mandiri yang dipetakan ke identitas Microsoft Entra, Anda harus masuk menggunakan akun Microsoft Entra dalam database di Azure SQL Database. Di SQL Managed Instance, login SQL dengan sysadmin
izin juga dapat membuat login atau pengguna Microsoft Entra.
Untuk contoh yang memperlihatkan cara membuat login dan pengguna, lihat:
- Membuat login untuk Azure SQL Database
- Membuat login untuk Azure SQL Managed Instance
- Membuat login untuk Azure Synapse
- Membuat pengguna
- Membuat pengguna mandiri Microsoft Entra
Tip
Untuk tutorial keamanan yang menyertakan pembuatan pengguna di Azure SQL Database, lihat Tutorial: Mengamankan Azure SQL Database.
Menggunakan peran database tetap dan kustom
Setelah membuat akun pengguna dalam database, baik berdasarkan login atau sebagai pengguna yang termuat, Anda dapat mengotorisasi pengguna tersebut untuk melakukan berbagai tindakan dan mengakses data dalam database tertentu. Anda bisa menggunakan metode berikut untuk mengotorisasi akses:
Peran database tetap
Tambahkan akun pengguna ke peran database tetap. Ada 9 peran database tetap, masing-masing dengan sekumpulan izin yang ditentukan. Peran database tetap yang paling umum adalah: 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 mana lebih dari yang diperlukan.
Untuk menambahkan pengguna ke peran database tetap:
- Di Kumpulan SQL tanpa server Azure SQL Database dan Azure Synapse, gunakan pernyataan ALTER ROLE . Misalnya, lihat Contoh ALTER ROLE
- Di kumpulan SQL khusus Azure Synapse, gunakan pernyataan sp_addrolemember . Misalnya, lihat contoh sp_addrolemember.
Peran database kustom
Buat peran database kustom menggunakan pernyataan CREATE ROLE. Peran kustom memungkinkan Anda membuat peran database yang ditentukan pengguna sendiri dan dengan hati-hati memberikan izin pada setiap peran seminimal yang diperlukan untuk kebutuhan bisnis. Kemudian Anda dapat menambahkan pengguna ke peran kustom. Ketika pengguna adalah anggota dari beberapa peran, mereka menggabungkan izin dari mereka semua.
Memberikan izin secara langsung
Beri izin akun pengguna secara langsung. 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 izinUPDATE
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. Mulai dengan daftar izin di Izin (Mesin Database) dan tinjau grafik ukuran poster dari izin tersebut.
Menggunakan grup
Manajemen akses yang efisien menggunakan izin yang ditetapkan untuk grup keamanan Direktori Aktif dan peran tetap atau kustom, bukan untuk pengguna individual.
Saat menggunakan autentikasi Microsoft Entra, masukkan pengguna Microsoft Entra ke dalam grup keamanan Microsoft Entra. Membuat pengguna database yang termuat untuk grup. Tambahkan satu atau beberapa pengguna database sebagai anggota ke peran database kustom atau bawaan dengan izin khusus yang sesuai dengan grup pengguna tersebut.
Saat menggunakan autentikasi SQL, buatlah pengguna database yang termuat dalam database. Tempatkan satu atau beberapa pengguna database ke dalam peran database kustom dengan izin tertentu yang sesuai dengan grup pengguna tersebut.
Catatan
Anda juga bisa menggunakan grup untuk pengguna database yang tidak termuat.
Anda harus membiasakan diri dengan fitur berikut yang bisa digunakan untuk membatasi atau meningkatkan izin:
- Peniruan dan penandatanganan modul dapat digunakan untuk meningkatkan izin dengan aman untuk sementara.
- Keamanan Tingkat Baris dapat digunakan untuk membatasi baris mana yang dapat diakses pengguna.
- Data Masking dapat digunakan untuk membatasi paparan data sensitif.
- Prosedur yang disimpan dapat digunakan untuk membatasi tindakan yang dapat dilakukan pada database.