Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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_IDuntuk 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 virtualmaster, jadi kami sarankan Anda menggunakan akun admin Microsoft Entra saat melalui tutorial ini. Prinsipal Microsoft Entra dengan peranloginmanagerdapat membuat login, tetapi tidak dapat membuat pengguna di dalam database virtualmaster.
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
Buat login untuk akun Microsoft Entra. Dalam contoh ini, gunakan
bob@contoso.comyang ada di domain Microsoft Entra yang disebutcontoso. 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.
Menggunakan SQL Server Management Studio (SSMS), masuk ke pool SQL khusus Anda dengan akun administrator Microsoft Entra.
Perluas Basis Data>Basis Data Sistem. Klik kanan database
masterdan pilih Kueri Baru untuk membuka jendela kueri baru dalam konteks databasemaster.Jalankan kueri berikut:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOPeriksa 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 0Login
bob@contoso.comdibuat di database virtualmaster.
Membuat pengguna dari login Microsoft Entra
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 virtualmaster. Hanya admin Microsoft Entra atau admin server SQL yang dapat membuat pengguna di database virtualmaster.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'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.
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 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
Konten terkait
- Prinsipal server Microsoft Entra
- Pertimbangan nama untuk prinsipal Microsoft Entra
- BUAT LOGIN (Transact-SQL)
- Membuat Pengguna (Transact-SQL)