Mengotorisasi akses database ke SQL Database, SQL Managed Instance, dan Azure Synapse Analytics

BERLAKU UNTUK: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

Dalam artikel ini, Anda mempelajari tentang:

  • Opsi untuk mengonfigurasi Azure SQL Database, Azure SQL Managed Instance, dan Azure Synapse Analytics untuk memungkinkan pengguna melakukan tugas administratif dan mengakses data yang disimpan dalam database ini.
  • Konfigurasi akses dan otorisasi setelah membuat server baru.
  • Cara menambahkan login dan akun pengguna di database master dan akun pengguna lalu memberikan izin administratif pada akun tersebut.
  • 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 artikel ini sebagai database, dan server merujuk ke server yang mengelola database untuk Azure SQL Database dan Azure Synapse.

Autentikasi dan Otorisasi

Autentikasi adalah proses membuktikan pengguna sesuai yang mereka klaim. 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:

  • Autentikasi SQL.

    Dengan metode autentikasi ini, pengguna mengirimkan nama akun pengguna dan kata sandi terkait untuk membuat koneksi. Kata sandi ini disimpan dalam database master untuk akun pengguna yang ditautkan ke login atau disimpan dalam database yang berisi akun pengguna yang tidak ditautkan ke login.

  • Autentikasi Azure Active Directory

    Dengan metode autentikasi ini, pengguna mengirimkan nama akun pengguna dan meminta agar layanan menggunakan informasi mandat yang disimpan di Microsoft Azure Active Directory (Microsoft Azure AD).

Login dan pengguna: Akun pengguna dalam database dapat dikaitkan dengan login yang disimpan dalam database master atau bisa menjadi nama pengguna yang disimpan dalam database individual.

  • Login adalah akun individual dalam database master, 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 yang 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 seminimal yang diperlukan.

Login dan akun pengguna yang sudah ada setelah membuat database baru

Ketika Anda pertama kali menyebarkan Azure SQL, Anda menentukan login admin dan kata sandi terkait untuk login tersebut. Akun administratif ini disebut 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 pengguna 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).
  • Akun pengguna yang disebut dbo dibuat untuk login ini di setiap database pengguna. Pengguna dbo memiliki semua izin database dalam database dan dipetakan ke peran database tetap db_owner. Peran database tetap tambahan dibahas nanti di artikel ini.

Untuk mengidentifikasi akun administrator untuk database, buka portal Microsoft Azure, dan navigasi ke tab Properti di server atau instans terkelola Anda.

SQL Server Admins

Screenshot that highlights the Properties menu option.

Penting

Nama untuk login admin tidak dapat diubah setelah dibuat. Untuk mengatur ulang kata sandi untuk admin server, masuk ke portal Microsoft Azure, klik SQL Server, pilih server dari daftar, lalu klik Atur Ulang Kata Sandi. Untuk mengatur ulang kata sandi untuk SQL Managed Instance, buka portal Microsoft Azure, klik instans, dan klik Atur ulang 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 Azure Active Directory dengan izin administratif penuh

    Aktifkan autentikasi Azure Active Directory dan buat login administrator Microsoft Azure AD. Satu akun Azure Active Directory dapat dikonfigurasi sebagai administrator penyebaran Azure SQL dengan izin administratif penuh. Akun ini dapat berupa akun individual atau akun grup keamanan. Administrator Microsoft Azure AD harus dikonfigurasi jika Anda ingin menggunakan akun Microsoft Azure AD untuk menyambungkan ke SQL Database, Azure SQL Managed Instance, atau Azure Synapse. Untuk informasi mendetail tentang mengaktifkan autentikasi Microsoft Azure AD untuk semua jenis penyebaran Azure SQL, lihat artikel berikut ini:

  • Dalam SQL Managed Instance, membuat login SQL dengan izin administratif penuh

  • Di SQL Database, buatlah login SQL dengan izin administratif terbatas

    • Membuat login SQL tambahan di database master.
    • Buatlah akun pengguna di database master yang terkait dengan login baru ini.
    • Tambahkan akun pengguna ke dbmanager, peran loginmanager, atau keduanya dalam database master menggunakan pernyataan ALTER ROLE (untuk Azure Synapse, gunakan pernyataan sp_addrolemember).

    Catatan

    Peran dbmanager dan loginmanagertidak berkaitan dengan penyebaran SQL Managed Instance.

    Anggota peran database master khusus ini 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 peran dbmanager, anggota dipetakan ke peran database tetap db_owner dan dapat masuk dan mengelola database tersebut menggunakan akun pengguna dbo. Peran ini tidak memiliki izin eksplisit di luar database master.

    Penting

    Anda tidak dapat membuat login SQL tambahan dengan izin administratif penuh di SQL Database.

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 database master. 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.

  • Membuat akun pengguna baru

    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 Azure AD, Anda dapat membuat akun pengguna untuk mengautentikasi ke SQL Managed Instance tanpa membuat pengguna database sebagai pengguna database yang termuat.

    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 Azure SQL, Anda harus tetap menyinkronkan kata sandi 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 termuat yang dipetakan ke identitas Microsoft Azure AD, Anda harus masuk menggunakan akun Microsoft Azure AD yang merupakan administrator dalam database di Azure SQL Database. Dalam SQL Managed Instance, login SQL dengan izin sysadmin juga dapat membuat login atau pengguna Microsoft Azure AD.

Untuk contoh yang memperlihatkan cara membuat login dan pengguna, lihat:

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.

  • 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 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. 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.

  • Ketika menggunakan autentikasi Azure Active Directory, masukkan pengguna Azure Active Directory ke dalam grup keamanan Azure Active Directory. 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:

Langkah berikutnya

Untuk gambaran umum semua Azure SQL Database dan fitur keamanan SQL Managed Instance, lihat Gambaran umum keamanan.