Masuk dan pengguna Microsoft Entra dengan nama tampilan nonunique (pratinjau)
Berlaku untuk: Azure SQL Database Azure SQL Managed Instance
Artikel ini mengajarkan anda cara menggunakan sintaks T-SQL Object_ID untuk membuat login Microsoft Entra dan pengguna dengan nama tampilan nonunique di Azure SQL Database dan Azure SQL Managed Instance.
Catatan
Menggunakan WITH OBJECT_ID
untuk membuat pengguna dan login di Azure SQL saat ini dalam pratinjau.
Gambaran Umum
MICROSOFT Entra ID mendukung autentikasi untuk perwakilan layanan. Namun, menggunakan perwakilan layanan dengan nama tampilan yang tidak unik di MICROSOFT Entra ID menyebabkan kesalahan saat membuat login atau pengguna di Azure SQL.
Misalnya, jika aplikasi myapp
tidak unik, Anda mungkin mengalami kesalahan berikut:
Msg 33131, Level 16, State 1, Line 4
Principal 'myapp' has a duplicate display name. Make the display name unique in Azure Active Directory and execute this statement again.
Saat mencoba menjalankan pernyataan T-SQL berikut:
CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER
WITH OBJECT_ID
Ekstensi
Kesalahan nama tampilan duplikat terjadi karena MICROSOFT Entra ID memungkinkan nama tampilan duplikat untuk aplikasi Microsoft Entra (perwakilan layanan), sementara Azure SQL memerlukan nama unik untuk membuat login dan pengguna Microsoft Entra. Untuk mengurangi masalah ini, pernyataan Bahasa Definisi Data (DDL) untuk membuat login dan pengguna telah diperluas untuk menyertakan ID Objek sumber daya Azure dengan WITH OBJECT_ID
klausa.
Catatan
WITH OBJECT_ID
Ekstensi saat ini dalam pratinjau publik.
Sebagian besar nama tampilan nonunique di MICROSOFT Entra ID terkait dengan perwakilan layanan, meskipun kadang-kadang nama grup juga dapat tidak menyatu. Nama prinsipal pengguna Microsoft Entra unik, karena dua pengguna tidak dapat memiliki prinsipal pengguna yang sama. Namun, pendaftaran aplikasi (perwakilan layanan) dapat dibuat dengan nama tampilan yang sama dengan nama prinsipal pengguna.
Jika nama tampilan perwakilan layanan bukan duplikat, default CREATE LOGIN
atau CREATE USER
pernyataan harus digunakan. WITH OBJECT_ID
Ekstensi berada dalam pratinjau publik, dan merupakan item perbaikan pemecahan masalah yang diterapkan untuk digunakan dengan perwakilan layanan nonunique. Menggunakannya dengan perwakilan layanan unik tidak disarankan. WITH OBJECT_ID
Menggunakan ekstensi untuk perwakilan layanan tanpa menambahkan akhiran akan berjalan dengan sukses, tetapi tidak akan jelas perwakilan layanan mana yang dibuat oleh login atau pengguna. Disarankan untuk membuat alias menggunakan akhiran untuk mengidentifikasi perwakilan layanan secara unik. WITH OBJECT_ID
Ekstensi tidak didukung untuk SQL Server.
T-SQL membuat sintaks masuk/pengguna untuk nama tampilan nonunique
CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
CREATE USER [user_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
Dengan ekstensi dukungan T-SQL DDL untuk membuat login atau pengguna dengan ID Objek, Anda dapat menghindari kesalahan 33131 dan juga menentukan alias untuk login atau pengguna yang dibuat dengan ID Objek. Misalnya, berikut ini akan membuat login myapp4466e
menggunakan ID 4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx
Objek aplikasi .
CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = '4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx'
- Untuk menjalankan kueri di atas, ID Objek yang ditentukan harus ada di penyewa Microsoft Entra tempat sumber daya Azure SQL berada. Jika tidak,
CREATE
perintah akan gagal dengan pesan kesalahan:Msg 37545, Level 16, State 1, Line 1 '' is not a valid object id for '' or you do not have permission.
- Login atau nama pengguna harus berisi nama perwakilan layanan asli yang diperluas oleh akhiran yang ditentukan pengguna saat menggunakan
CREATE LOGIN
pernyataan atauCREATE USER
. Sebagai praktik terbaik, akhiran dapat menyertakan bagian awal dari ID Objeknya. Misalnya,myapp2ba6c
untuk ID2ba6c0a3-cda4-4878-a5ca-xxxxxxxxxxxx
Objek . Namun, Anda juga dapat menentukan akhiran kustom. Membentuk akhiran dari ID Objek tidak diperlukan.
Konvensi penamaan ini disarankan untuk secara eksplisit mengaitkan pengguna database atau masuk kembali ke objeknya di ID Microsoft Entra.
Catatan
Alias mematuhi spesifikasi T-SQL untuk sysname
, termasuk panjang maksimum 128 karakter. Sebaiknya batasi akhiran ke 5 karakter pertama ID Objek.
Nama tampilan perwakilan layanan di MICROSOFT Entra ID tidak disinkronkan ke login database atau alias pengguna. Menjalankan CREATE LOGIN
atau CREATE USER
tidak akan memengaruhi nama tampilan di Portal Microsoft Azure. Demikian pula, memodifikasi nama tampilan ID Microsoft Entra tidak akan memengaruhi login database atau alias pengguna.
Mengidentifikasi pengguna yang dibuat untuk aplikasi
Untuk perwakilan layanan nonunique, penting untuk memverifikasi alias Microsoft Entra terkait dengan aplikasi yang benar. Untuk memeriksa apakah pengguna dibuat untuk perwakilan layanan (aplikasi) yang benar:
Dapatkan ID Aplikasi aplikasi, atau ID Objek grup Microsoft Entra dari pengguna yang dibuat di SQL Database. Lihat kueri berikut:
Untuk mendapatkan ID Aplikasi perwakilan layanan dari pengguna yang dibuat, jalankan kueri berikut:
SELECT CAST(sid as uniqueidentifier) ApplicationID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Contoh output:
ID Aplikasi dikonversi dari nomor identifikasi keamanan (SID) untuk login atau nama pengguna yang ditentukan, yang dapat kami konfirmasi dengan menjalankan kueri di bawah ini dan membandingkan beberapa digit terakhir dan membuat tanggal:
SELECT SID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Contoh output:
Untuk mendapatkan ID Objek grup Microsoft Entra dari pengguna yang dibuat, jalankan kueri berikut:
SELECT CAST(sid as uniqueidentifier) ObjectID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Contoh output:
Untuk memeriksa SID grup Microsoft Entra dari pengguna yang dibuat, jalankan kueri berikut:
SELECT SID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Contoh output:
Untuk mendapatkan ID Objek dan ID Aplikasi aplikasi menggunakan PowerShell jalankan perintah berikut:
Get-AzADApplication -DisplayName "myapp2ba6c"
Buka portal Azure, dan di aplikasi Enterprise atau sumber daya grup Microsoft Entra Anda, periksa ID Aplikasi atau ID Objek masing-masing. Lihat apakah cocok dengan yang diperoleh dari kueri di atas.
Catatan
Saat membuat pengguna dari perwakilan layanan, ID Objek diperlukan saat menggunakan WITH OBJECT_ID
klausa dengan CREATE
pernyataan T-SQL. Ini berbeda dari ID Aplikasi yang dikembalikan saat Anda mencoba memverifikasi alias di Azure SQL. Dengan menggunakan proses verifikasi ini, Anda dapat mengidentifikasi perwakilan layanan atau grup yang terkait dengan alias SQL di ID Microsoft Entra, dan mencegah kemungkinan kesalahan saat membuat login atau pengguna dengan ID Objek.
Menemukan ID Objek yang tepat
Untuk informasi tentang ID Objek perwakilan layanan, lihat Objek perwakilan layanan. Anda dapat menemukan ID Objek dari perwakilan layanan yang tercantum di samping nama aplikasi di portal Azure di bawah aplikasi Perusahaan.
Peringatan
ID Objek yang diperoleh di halaman Gambaran Umum pendaftaran aplikasi berbeda dari ID Objek yang diperoleh di halaman Gambaran Umum aplikasi Perusahaan. Jika Anda berada di halaman Gambaran Umum Pendaftaran aplikasi, pilih aplikasi Terkelola yang ditautkan di nama aplikasi direktori lokal untuk menavigasi ke ID Objek yang tepat di halaman Gambaran Umum aplikasi Perusahaan.