Tutorial: Membuat dan menggunakan login server Microsoft Entra

Berlaku untuk:Azure SQL DatabaseAzure 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

Membuat login Microsoft Entra

  1. 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 disebut contoso. 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.

  2. Menggunakan SQL Server Management Studio (SSMS), masuk ke SQL Database Anda dengan akun admin Microsoft Entra yang disiapkan untuk server.

  3. Jalankan kueri berikut:

    Use master
    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  4. 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 
    
  5. Login bob@contoso.com telah dibuat dalam database virtual master .

Membuat pengguna dari login Microsoft Entra

  1. 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 virtual master , karena kami ingin menunjukkan menambahkan pengguna ke peran khusus. Hanya admin Microsoft Entra atau admin server SQL yang dapat membuat pengguna di database virtual master .

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

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

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.

  1. Jalankan kueri berikut:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] 
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com] 
    
  2. 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.

Baca juga

Untuk informasi dan contoh selengkapnya, lihat: