Tutorial: Membuat dan menggunakan login server Microsoft Entra
Berlaku untuk: Azure SQL Database Azure SQL Managed InstanceAzure Synapse Analytics (hanya kumpulan SQL khusus)
Artikel ini memandu Anda membuat dan menggunakan login yang didukung oleh MICROSOFT Entra ID (sebelumnya Azure Active Directory) dalam database virtual master
Azure SQL.
Dalam tutorial ini, Anda akan mempelajari cara:
- Membuat login Microsoft Entra di database virtual
master
dengan ekstensi sintaks baru untuk Azure SQL Database - Membuat pengguna yang dipetakan ke login Microsoft Entra di database virtual
master
- Memberikan peran server kepada pengguna Microsoft Entra
- Menonaktifkan login Microsoft Entra
Catatan
Prinsipal server Microsoft Entra (login) saat ini berada dalam pratinjau publik untuk Azure SQL Database. Azure SQL Managed Instance sudah dapat menggunakan login Microsoft Entra.
Prasyarat
- SQL Database atau SQL Managed Instance dengan database. Lihat Mulai Cepat: Membuat database tunggal Azure SQL Database jika Anda belum membuat Azure SQL Database, atau Mulai Cepat: Membuat Azure SQL Managed Instance.
- Autentikasi Microsoft Entra disiapkan untuk SQL Database atau SQL Managed Instance. Untuk informasi selengkapnya, lihat Mengonfigurasi dan mengelola autentikasi Microsoft Entra dengan Azure SQL.
- Artikel ini menginstruksikan Anda untuk membuat login dan pengguna Microsoft Entra dalam database virtual
master
. Hanya admin Microsoft Entra yang dapat membuat pengguna dalam database virtualmaster
, jadi kami sarankan Anda menggunakan akun admin Microsoft Entra saat melalui tutorial ini. Perwakilan Microsoft Entra dengan peran dapatloginmanager
membuat login, tetapi bukan pengguna dalam database virtualmaster
.
Membuat login Microsoft Entra
Buat login Azure SQL Database untuk akun Microsoft Entra. Dalam contoh kami, kami akan menggunakan
bob@contoso.com
yang ada di domain Microsoft Entra kami yang disebutcontoso
. Login juga dapat dibuat dari grup Microsoft Entra atau perwakilan layanan (aplikasi). Misalnya,mygroup
itu adalah grup Microsoft Entra yang terdiri dari akun Microsoft Entra yang merupakan anggota grup tersebut. Untuk informasi selengkapnya, lihat MEMBUAT LOGIN (Transact-SQL).Catatan
Login Microsoft Entra pertama harus dibuat oleh admin Microsoft Entra. Admin Microsoft Entra dapat menjadi pengguna atau grup Microsoft Entra. Login SQL tidak dapat membuat login Microsoft Entra.
Menggunakan SQL Server Management Studio (SSMS), masuk ke SQL Database Anda dengan akun admin Microsoft Entra yang disiapkan untuk server.
Jalankan kueri berikut:
Use master CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GO
Periksa login yang dibuat di
sys.server_principals
. Jalankan perintah berikut:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'
Anda akan melihat output serupa dengan yang berikut ini:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0
Login
bob@contoso.com
telah dibuat dalam database virtualmaster
.
Membuat pengguna dari login Microsoft Entra
Sekarang setelah kita membuat login Microsoft Entra, kita dapat membuat pengguna Microsoft Entra tingkat database yang dipetakan ke login Microsoft Entra di database virtual
master
. Kami akan terus menggunakan contoh kami,bob@contoso.com
untuk membuat pengguna di database virtualmaster
, karena kami ingin menunjukkan menambahkan pengguna ke peran khusus. Hanya admin Microsoft Entra atau admin server SQL yang dapat membuat pengguna di database virtualmaster
.Kami menggunakan database virtual
master
, tetapi Anda dapat beralih ke database pilihan Anda jika Anda ingin membuat pengguna di database lain. Jalankan kueri berikut:Use master CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Tip
Meskipun tidak diharuskan untuk menggunakan alias pengguna Microsoft Entra (misalnya,
bob@contoso.com
), ini adalah praktik terbaik yang disarankan untuk menggunakan alias yang sama untuk pengguna Microsoft Entra dan login Microsoft Entra.Periksa pengguna yang dibuat di
sys.database_principals
. Jalankan perintah berikut:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'
Anda akan melihat output serupa dengan yang berikut ini:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Catatan
Sintaks yang ada untuk membuat pengguna Microsoft Entra tanpa login Microsoft Entra masih didukung. Menjalankan sintaks berikut membuat database berisi pengguna di dalam database tertentu yang anda sambungkan. Yang penting, pengguna ini tidak terkait dengan login apa pun, bahkan jika login dengan nama yang sama ada di database virtual master
.
Contohnya,CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
.
Anda dapat membuat login Microsoft Entra menggunakan perwakilan layanan dengan nama tampilan nonunique. Untuk informasi selengkapnya, lihat Login Microsoft Entra dan pengguna dengan nama tampilan nonunique
Memberikan peran tingkat server ke login Microsoft Entra
Anda dapat menambahkan login ke peran tingkat server tetap, seperti peran ##MS_DefinitionReader##, ##MS_ServerStateReader##, atau ##MS_ServerStateManager##.
Catatan
Peran tingkat server yang disebutkan di sini tidak didukung untuk grup Microsoft Entra.
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];
Izin tidak efektif hingga pengguna terhubung kembali. Hapus juga cache DBCC:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Untuk memeriksa login Microsoft Entra mana yang merupakan bagian dari peran tingkat server, jalankan kueri berikut:
SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members
ON server_role_members.member_principal_id = members.principal_id;
Memberikan peran khusus untuk pengguna Microsoft Entra
Peran khusus untuk SQL Database dapat ditetapkan kepada pengguna dalam database virtual master
.
Untuk memberikan salah satu peran database khusus kepada pengguna, pengguna harus ada di database virtual master
.
Untuk menambahkan pengguna ke peran, Anda dapat menjalankan kueri berikut:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Untuk menghapus pengguna dari peran, jalankan kueri berikut:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object
dapat menjadi pengguna, grup, atau perwakilan layanan Microsoft Entra di ID Microsoft Entra.
Dalam contoh kami, kami membuat pengguna bob@contoso.com
. Mari kita beri pengguna tersebut peran dbmanager dan loginmanager.
Jalankan kueri berikut:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
Periksa penetapan peran database dengan menjalankan kueri berikut:
SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id WHERE DP1.type = 'R'and DP2.name like 'bob%'
Anda akan melihat output serupa dengan yang berikut ini:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Opsional - Menonaktifkan login
Sintaks ALTER LOGIN (Transact-SQL) DDL dapat digunakan untuk mengaktifkan atau menonaktifkan login Microsoft Entra di Azure SQL Database.
ALTER LOGIN [bob@contoso.com] DISABLE
Agar perubahan DISABLE
atau ENABLE
segera berlaku, cache autentikasi dan cache TokenAndPermUserStore harus dihapus menggunakan perintah T-SQL berikut:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Periksa bahwa login telah dinonaktifkan dengan menjalankan kueri berikut:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1
Kasus penggunaan untuk ini adalah dengan mengizinkan baca-saja pada replika geografis, tetapi menolak koneksi pada server utama.