Tutorial: Buat dan gunakan login server Microsoft Entra

Artikel ini membimbing Anda dalam membuat dan menggunakan login yang didukung oleh Microsoft Entra ID (sebelumnya Azure Active Directory) dalam database virtual master dari pool SQL khusus Azure Synapse Analytics (sebelumnya SQL DW). Pool SQL khusus di workspace Azure Synapse Analytics tidak menggunakan server SQL logis.

Catatan

prinsipal server Microsoft Entra saat ini sedang dalam pratinjau untuk Azure Synapse Analytics.

Dalam tutorial ini, Anda akan belajar cara:

  • Buat login Microsoft Entra di database virtual master
  • Buat pengguna yang terkait dengan login Microsoft Entra di database virtual master
  • Gunakan sintaks WITH OBJECT_ID untuk nama tampilan tidak unik
  • Memberikan peran server kepada pengguna Microsoft Entra
  • Menonaktifkan login Microsoft Entra

Prerequisites

  • Sebuah pool SQL khusus Azure Synapse Analytics dan sebuah basis data.
  • Otentikasi Microsoft Entra dikonfigurasi untuk Azure Synapse Analytics. Untuk informasi lebih lanjut, lihat Konfigurasikan dan kelola autentikasi Microsoft Entra dengan Azure Synapse Analytics.
  • 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 virtual master , jadi kami sarankan Anda menggunakan akun admin Microsoft Entra saat melalui tutorial ini. Prinsipal Microsoft Entra dengan peran loginmanager dapat membuat login, tetapi tidak dapat membuat pengguna di dalam database virtual master.

Catatan

Untuk organisasi yang berurusan dengan nama tampilan yang tidak unik di ID Microsoft Entra (terutama untuk prinsipal layanan), pastikan Anda memiliki informasi ID Objek yang tersedia untuk prinsipal layanan apa pun yang Anda rencanakan untuk membuat login. WITH OBJECT_ID Ekstensi sintaks dapat membantu menyelesaikan skenario ini.

Membuat login Microsoft Entra

  1. Buat login untuk akun Microsoft Entra. Dalam contoh ini, gunakan bob@contoso.com yang ada di domain Microsoft Entra yang disebut contoso. Anda juga dapat membuat login dari grup Microsoft Entra atau service principal (aplikasi). 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 autentikasi SQL tidak dapat membuat login Microsoft Entra.

    Tip

    Jika Anda mengalami masalah dengan nama tampilan nonunik di Microsoft Entra ID, gunakan ekstensi sintaks WITH OBJECT_ID. Fitur ini sangat berguna untuk perwakilan layanan dengan nama tampilan duplikat. Contohnya:

    CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
      WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'
    

    Untuk informasi lebih lanjut, lihat Pertimbangan nama.

  2. Menggunakan SQL Server Management Studio (SSMS), masuk ke pool SQL khusus Anda dengan akun administrator Microsoft Entra.

  3. Perluas Basis Data>Basis Data Sistem. Klik kanan database master dan pilih Kueri Baru untuk membuka jendela kueri baru dalam konteks database master.

  4. Jalankan kueri berikut:

    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  5. 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 melihat output yang mirip dengan berikut:

    Name                            type_desc       type   is_disabled
    bob@contoso.com                 EXTERNAL_LOGIN  E      0
    
  6. Login bob@contoso.com dibuat di database virtual master .

Membuat pengguna dari login Microsoft Entra

  1. Setelah Anda membuat login Microsoft Entra, buat pengguna Microsoft Entra tingkat database yang dipetakan ke login Microsoft Entra di database virtual master. Untuk menunjukkan cara menambahkan pengguna ke peran khusus, gunakan contoh kami, bob@contoso.com, untuk membuat pengguna di database virtual master . Hanya admin Microsoft Entra atau admin server SQL yang dapat membuat pengguna di database virtual master .

  2. Gunakan database virtual master , tetapi Anda dapat terhubung kembali ke database pilihan Anda jika ingin membuat pengguna di database lain. Jalankan kueri berikut:

    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.

    Jika Anda perlu membuat pengguna langsung dari penyedia eksternal dengan ID Objek tertentu (misalnya, untuk mengatasi masalah nama tampilan nonunik), gunakan sintaks berikut:

    CREATE USER [user_name] FROM EXTERNAL PROVIDER
      WITH OBJECT_ID = 'objectid'
    
  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 melihat output yang mirip dengan berikut:

    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. Jika Anda menjalankan sintaks berikut, Anda membuat pengguna yang tercakup dalam database di database spesifik yang sedang Anda sambungkan. Pengguna ini tidak terkait dengan login manapun, 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 dengan menggunakan prinsipal layanan dengan nama tampilan yang tidak unik. Untuk informasi lebih lanjut, lihat Pertimbangan nama.

Memberikan peran tingkat server ke login Microsoft Entra

Anda dapat menambahkan login ke peran server tetap, seperti ##MS_DefinitionReader##, ##MS_ServerStateReader##, atau ##MS_ServerStateManager## dalam database master.

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

Anda dapat menetapkan peran khusus untuk Azure Synapse Analytics kepada pengguna di masterdatabase virtual.

Untuk memberikan salah satu peran database khusus kepada pengguna, pengguna harus ada di database virtual master .

Untuk menambahkan pengguna ke peran, jalankan 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 berikut, Anda membuat pengguna bob@contoso.com. Tetapkan peran dbmanager dan loginmanager kepada pengguna.

  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 melihat output yang mirip dengan berikut:

    DatabaseRoleName       DatabaseUserName
    dbmanager              bob@contoso.com
    loginmanager           bob@contoso.com
    

Opsional - Menonaktifkan login

Gunakan sintaks DDL ALTER LOGIN (Transact-SQL) untuk mengaktifkan atau menonaktifkan login Microsoft Entra dalam pool SQL khusus.

ALTER LOGIN [bob@contoso.com] DISABLE

Agar perubahan DISABLE atau ENABLE segera berlaku, bersihkan cache autentikasi dan cache TokenAndPermUserStore dengan menggunakan perintah T-SQL berikut:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Periksa bahwa login dinonaktifkan dengan menjalankan kueri berikut:

SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1