Tutorial: Mengamankan dengan login Microsoft Entra - Azure SQL Managed Instance

Berlaku untuk:Azure SQL Managed Instance

Dalam artikel ini, pelajari cara menggunakan prinsipal server (login) yang didukung oleh MICROSOFT Entra ID (sebelumnya Azure Active Directory) untuk mengamankan Azure SQL Managed Instance.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat login Microsoft Entra untuk instans terkelola
  • Memberikan izin untuk masuk dalam instans terkelola
  • Membuat pengguna Microsoft Entra dari login
  • Menetapkan izin kepada pengguna dan mengelola keamanan database
  • Menggunakan peniruan identitas dengan pengguna
  • Menggunakan kueri lintas database dengan pengguna
  • Pelajari tentang fitur keamanan, seperti perlindungan ancaman, audit, masking data, dan enkripsi

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

Prasyarat

Untuk menyelesaikan tutorial ini, pastikan prasyarat berikut dipenuhi:

Membatasi akses

Instans terkelola dapat diakses melalui alamat IP privat. Sama seperti lingkungan SQL Server yang terisolasi, aplikasi atau pengguna memerlukan akses ke jaringan SQL Managed Instance (VNet) sebelum koneksi dapat dibuat. Untuk informasi selengkapnya, lihat Menghubungkan aplikasi Anda ke SQL Managed Instance.

Dimungkinkan juga untuk mengonfigurasi titik akhir layanan pada instans terkelola, yang memungkinkan koneksi publik dengan cara yang sama seperti untuk Azure SQL Database. Untuk informasi selengkapnya, lihat Mengonfigurasi titik akhir publik di Azure SQL Managed Instance.

Membuat login Microsoft Entra menggunakan SSMS

Login Microsoft Entra pertama dapat dibuat oleh admin SQL, atau admin Microsoft Entra yang dibuat selama provisi. Untuk informasi selengkapnya, lihat Menyediakan administrator Microsoft Entra untuk SQL Managed Instance.

Lihat artikel berikut untuk contoh menyambungkan ke SQL Managed Instance:

  1. Koneksi ke instans terkelola sysadmin Anda dengan Masuk SQL atau admin Microsoft Entra dengan menggunakan SQL Server Management Studio (SSMS).

  2. Di Object Explorer, klik kanan server dan pilih Kueri Baru.

  3. Di jendela kueri, gunakan sintaks berikut untuk membuat login untuk akun Microsoft Entra lokal:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Contoh ini membuat info masuk untuk akun nativeuser@aadsqlmi.onmicrosoft.com.

    USE master
    GO
    CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Pada toolbar, pilih Eksekusi untuk membuat info masuk.

  5. Periksa info masuk yang baru ditambahkan, dengan menjalankan perintah T-SQL berikut:

    SELECT *  
    FROM sys.server_principals;  
    GO
    

    Screenshot of the Results tab in the S S M S Object Explorer showing the name, principal_id, sid, type, and type_desc of the newly added login.

Untuk informasi selengkapnya, lihat MEMBUAT INFO MASUK.

Memberikan izin untuk membuat info login

Login yang ada harus memiliki izin yang sesuai atau menjadi bagian dari peran server yang sesuai untuk membuat login Microsoft Entra lainnya.

Login autentikasi SQL

  • Jika login adalah prinsipal server berbasis autentikasi SQL, maka harus diberi sysadmin peran untuk membuat login untuk akun Microsoft Entra.

Masuk autentikasi Microsoft Entra

  • Jika login adalah prinsipal server Microsoft Entra, itu harus ditetapkan peran sysadmin atau securityadmin server untuk membuat login untuk pengguna, grup, dan aplikasi Microsoft Entra lainnya.
  • Minimal, izin UBAH LOGIN APA PUN harus diberikan untuk membuat login Microsoft Entra lainnya.
  • Secara default, izin standar yang diberikan untuk masuk master Microsoft Entra yang baru dibuat adalah: CONNECT SQL dan VIEW ANY DATABASE.
  • Peran sysadmin server dapat diberikan ke banyak login Microsoft Entra dalam instans terkelola.

Untuk menambahkan info masuk ke peran server sysadmin:

  1. Masuk ke instans terkelola lagi, atau gunakan koneksi yang ada dengan admin Microsoft Entra atau prinsipal SQL yang merupakan sysadmin.

  2. Di Object Explorer, klik kanan server dan pilih Kueri Baru.

  3. Berikan peran server masuk sysadmin Microsoft Entra dengan menggunakan sintaks T-SQL berikut:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    Contoh berikut memberikan sysadmin peran server ke info masuk nativeuser@aadsqlmi.onmicrosoft.com

    ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com]
    GO
    

Membuat login Microsoft Entra tambahan menggunakan SSMS

Setelah login Microsoft Entra dibuat dan diberikan sysadmin hak istimewa, login tersebut dapat membuat login tambahan menggunakan klausul FROM EXTERNAL PROVIDER dengan CREATE LOGIN.

  1. Koneksi ke instans terkelola dengan login Microsoft Entra dengan memilih Koneksi ke Server di SQL Server Management Studio (SSMS).

    1. Masukkan nama host SQL Managed Instance Anda di Nama server.
    2. Untuk Autentikasi, pilih Direktori Aktif - Universal dengan dukungan MFA untuk memunculkan jendela masuk autentikasi multifaktor. Masuk. Untuk informasi selengkapnya, lihat Autentikasi Universal (dukungan SSMS untuk autentikasi multifaktor).
  2. Di Object Explorer, klik kanan server dan pilih Kueri Baru.

  3. Di jendela kueri, gunakan sintaks berikut untuk membuat login untuk akun Microsoft Entra lain:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Contoh ini membuat login untuk pengguna bob@aadsqlmi.netMicrosoft Entra , yang domainnya aadsqlmi.net digabungkan dengan domain Microsoft Entra aadsqlmi.onmicrosoft.com.

    Jalankan perintah T-SQL berikut. Akun Microsoft Entra gabungan adalah pengganti SQL Managed Instance untuk login dan pengguna Windows lokal.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Membuat database dalam contoh terkelola menggunakan sintaks CREATE DATABASE. Database ini akan digunakan untuk menguji info masuk pengguna di bagian berikutnya.

    1. Di Object Explorer, klik kanan server dan pilih Kueri Baru.

    2. Di jendela kueri, gunakan sintaks berikut untuk membuat database bernama MyMITestDB.

      CREATE DATABASE MyMITestDB;
      GO
      
  5. Buat login SQL Managed Instance untuk grup di ID Microsoft Entra. Grup harus ada di ID Microsoft Entra sebelum menambahkan login ke SQL Managed Instance. Lihat Membuat grup dasar dan menambahkan anggota menggunakan ID Microsoft Entra. Buat grup grup saya dan tambahkan anggota ke grup ini.

  6. Buka jendela kueri baru di SQL Server Management Studio.

    Contoh ini mengasumsikan ada grup yang disebut mygroup di ID Microsoft Entra. Jalankan perintah berikut:

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  7. Sebagai pengujian, masuk ke instans terkelola dengan info masuk atau grup yang baru dibuat. Buka koneksi baru ke instans terkelola, dan gunakan info masuk baru saat mengautentikasi.

  8. Di Object Explorer, klik kanan server dan pilih Kueri Baru untuk koneksi baru.

  9. Periksa izin server untuk login Microsoft Entra yang baru dibuat dengan menjalankan perintah berikut:

    SELECT * FROM sys.fn_my_permissions (NULL, 'DATABASE')
    GO
    

Dukungan Azure SQL terhadap perwakilan Microsoft Entra saat pengguna dan login diperluas ke pengguna tamu internal dan tamu eksternal Microsoft Entra External ID . Pengguna tamu, baik secara individual maupun sebagai bagian dari grup, dapat digunakan sama dengan pengguna Microsoft Entra lainnya di Azure SQL. Jika Anda ingin pengguna tamu dapat membuat login server Microsoft Entra atau pengguna database lainnya, mereka harus memiliki izin untuk membaca identitas lain di direktori Microsoft Entra. Izin ini dikonfigurasi pada tingkat direktori. Untuk informasi selengkapnya, lihat izin akses tamu di ID Microsoft Entra.

Membuat pengguna Microsoft Entra dari login Microsoft Entra

Otorisasi ke database individual berfungsi dengan cara yang sama dalam SQL Managed Instance seperti halnya database di SQL Server. Anda bisa membuat pengguna dari login yang sudah ada dalam database yang diberikan izin ke database tersebut, atau ditambahkan ke peran database.

Sekarang kami telah membuat database yang disebut MyMITestDB, dan login yang hanya memiliki izin default, langkah selanjutnya adalah membuat pengguna dari info masuk tersebut. Saat ini, info masuk dapat terhubung ke instans terkelola, dan melihat semua database, tetapi tidak dapat berinteraksi dengan database. Jika Anda masuk dengan akun Microsoft Entra yang memiliki izin default, dan mencoba memperluas database yang baru dibuat, Anda akan melihat kesalahan berikut:

Screenshot of an error message from the the S S M S Object Explorer that reads

Untuk informasi selengkapnya tentang pemberian izin database, lihat Memulai dengan Izin Mesin Database.

Membuat pengguna Microsoft Entra dan membuat tabel sampel

Catatan

Ada beberapa batasan saat pengguna masuk sebagai bagian dari grup Microsoft Entra. Misalnya, panggilan untuk SUSER_SID mengembalikan NULL, karena pengguna Microsoft Entra yang diberikan bukan bagian sys.server_principals dari tabel. Oleh karena itu, akses ke prosedur tersimpan tertentu atau daftar izin yang diberikan dapat dibatasi dalam kasus ini.

  1. Masuk ke instans terkelola Anda menggunakan akun sysadmin menggunakan SQL Server Management Studio.

  2. Di Object Explorer, klik kanan server dan pilih Kueri Baru.

  3. Di jendela kueri, gunakan sintaks berikut untuk membuat pengguna dari login Microsoft Entra:

    USE <Database Name> -- provide your database name
    GO
    CREATE USER user_name FROM LOGIN login_name
    GO
    

    Contoh berikut membuat pengguna bob@aadsqlmi.net dari info masuk bob@aadsqlmi.net:

    USE MyMITestDB
    GO
    CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net]
    GO
    
  4. Ini juga didukung untuk membuat pengguna Microsoft Entra dari login Microsoft Entra yang merupakan grup.

    Contoh berikut membuat login untuk grup Microsoft Entra mygroup yang ada di penyewa Microsoft Entra Anda.

    USE MyMITestDB
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    

    Semua pengguna yang termasuk dalam grup saya dapat mengakses database MyMITestDB.

    Penting

    Saat membuat PENGGUNA dari login Microsoft Entra, tentukan user_name sebagai login_name yang sama dari LOGIN.

    Untuk informasi selengkapnya, lihat MEMBUAT PENGGUNA.

  5. Di jendela kueri baru, buat tabel uji menggunakan perintah T-SQL berikut ini:

    USE MyMITestDB
    GO
    CREATE TABLE TestTable
    (
    AccountNum varchar(10),
    City varchar(255),
    Name varchar(255),
    State varchar(2)
    );
    
  6. Buat koneksi di SSMS dengan pengguna yang dibuat. Anda akan melihat bahwa Anda tidak bisa melihat tabel TestTable yang dibuat oleh sysadmin yang lebih lama. Kita perlu memberi pengguna izin untuk membaca data dari database.

  7. Anda bisa memeriksa izin saat ini yang dimiliki pengguna dengan menjalankan perintah berikut:

    SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE')
    GO
    

Tambahkan pengguna ke peran tingkat database

Agar pengguna dapat melihat data dalam database, kami dapat memberikan peran tingkat database kepada pengguna.

  1. Masuk ke instans terkelola Anda menggunakan akun sysadmin menggunakan SQL Server Management Studio.

  2. Di Object Explorer, klik kanan server dan pilih Kueri Baru.

  3. Berikan peran database kepada db_datareader pengguna Microsoft Entra dengan menggunakan sintaks T-SQL berikut:

    Use <Database Name> -- provide your database name
    ALTER ROLE db_datareader ADD MEMBER user_name
    GO
    

    Contoh berikut ini menyediakan pengguna bob@aadsqlmi.net dan grup grup saya dengan db_datareader izin pada database MyMITestDB:

    USE MyMITestDB
    GO
    ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net]
    GO
    ALTER ROLE db_datareader ADD MEMBER [mygroup]
    GO
    
  4. Periksa pengguna Microsoft Entra yang dibuat dalam database ada dengan menjalankan perintah berikut:

    SELECT * FROM sys.database_principals
    GO
    
  5. Buat koneksi baru ke instans terkelola dengan pengguna yang telah ditambahkan ke peran db_datareader.

  6. Perluas database di Object Explorer untuk melihat tabel.

    Screenshot from Object Explorer in S S M S showing the folder structure for Tables in MyMITestDB. The dbo.TestTable folder is highlighted.

  7. Buka jendela kueri baru dan jalankan pernyataan SELECT berikut:

    SELECT *
    FROM TestTable
    

    Apakah Anda dapat melihat data dari tabel? Anda akan melihat kolom yang dikembalikan.

    Screenshot of the Results tab in the S S M S Object Explorer showing the table column headers AccountNum, City, Name, and State.

Meniru login Microsoft Entra

SQL Managed Instance mendukung peniruan login Microsoft Entra.

Menguji peniruan

  1. Masuk ke instans terkelola Anda menggunakan akun sysadmin menggunakan SQL Server Management Studio.

  2. Di Object Explorer, klik kanan server dan pilih Kueri Baru.

  3. Di jendela kueri, gunakan perintah berikut ini untuk membuat prosedur baru yang disimpan:

    USE MyMITestDB
    GO  
    CREATE PROCEDURE dbo.usp_Demo  
    WITH EXECUTE AS 'bob@aadsqlmi.net'  
    AS  
    SELECT user_name();  
    GO
    
  4. Gunakan perintah berikut untuk melihat bahwa pengguna yang Anda tirukan saat menjalankan prosedur tersimpan adalah bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Uji peniruan dengan menggunakan pernyataan EXECUTE AS LOGIN:

    EXECUTE AS LOGIN = 'bob@aadsqlmi.net'
    GO
    SELECT SUSER_SNAME()
    REVERT
    GO
    

Catatan

Hanya login tingkat server SQL yang merupakan bagian sysadmin dari peran yang dapat menjalankan operasi berikut yang menargetkan perwakilan Microsoft Entra:

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Menggunakan kueri lintas database

Kueri lintas database didukung untuk akun Microsoft Entra dengan login Microsoft Entra. Untuk menguji kueri lintas database dengan grup Microsoft Entra, kita perlu membuat database dan tabel lain. Anda dapat melewatkan pembuatan database dan tabel lain jika database dan tabel sudah ada.

  1. Masuk ke instans terkelola Anda menggunakan akun sysadmin menggunakan SQL Server Management Studio.

  2. Di Object Explorer, klik kanan server dan pilih Kueri Baru.

  3. Di jendela kueri, gunakan perintah berikut ini untuk membuat database bernama MyMITestDB2 dan tabel bernama TestTable2:

    CREATE DATABASE MyMITestDB2;
    GO
    USE MyMITestDB2
    GO
    CREATE TABLE TestTable2
    (
    EmpId varchar(10),
    FirstName varchar(255),
    LastName varchar(255),
    Status varchar(10)
    );
    
  4. Di jendela kueri baru, jalankan perintah berikut untuk membuat grup saya pengguna di database baru MyMITestDB2, dan berikan izin SELECT pada database tersebut ke grup saya:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Masuk ke instans terkelola menggunakan SQL Server Management Studio sebagai anggota grup Microsoft Entra mygroup. Buka jendela kueri baru dan jalankan pernyataan SELECT lintas database:

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Anda akan melihat hasil tabel dari TestTable2.

Skenario tambahan yang didukung

  • Manajemen Agen SQL dan eksekusi pekerjaan didukung untuk login Microsoft Entra.
  • Operasi pencadangan dan pemulihan database dapat dijalankan oleh login Microsoft Entra.
  • Audit semua pernyataan yang terkait dengan peristiwa masuk dan autentikasi Microsoft Entra.
  • Koneksi administrator khusus untuk login Microsoft Entra yang merupakan anggota sysadmin peran server.
  • Login Microsoft Entra didukung dengan menggunakan utilitas sqlcmd dan alat SQL Server Management Studio .
  • Pemicu masuk didukung untuk peristiwa masuk yang berasal dari login Microsoft Entra.
  • Service Broker dan DB mail dapat disiapkan menggunakan login Microsoft Entra.

Langkah berikutnya

Mengaktifkan fitur keamanan

Lihat artikel fitur keamanan Instans Terkelola SQL untuk daftar cara komprehensif untuk mengamankan database Anda. Fitur keamanan berikut dibahas:

Kemampuan SQL Managed Instance

Untuk gambaran umum lengkap kemampuan SQL Managed Instance, lihat: