Microsoft Entra oturum açma bilgileri ve görünen adları olmayan kullanıcılar (önizleme)
Şunlar için geçerlidir: Azure SQL Veritabanı Azure SQL Yönetilen Örneği
Bu makalede, T-SQL Object_ID söz dizimini kullanarak Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'de microsoft Entra oturum açma bilgileri ve benzersiz görünen adlara sahip kullanıcılar oluşturmayı öğreneceksiniz.
Not
WITH OBJECT_ID
Azure SQL'de kullanıcı ve oturum açma bilgileri oluşturmak için kullanmak şu anda önizleme aşamasındadır.
Genel bakış
Microsoft Entra ID, hizmet sorumluları için kimlik doğrulamasını destekler. Ancak, Microsoft Entra Id'de benzersiz olmayan bir görünen ada sahip bir hizmet sorumlusu kullanmak, Azure SQL'de oturum açma veya kullanıcı oluştururken hatalara neden olur.
Örneğin, uygulama myapp
benzersiz değilse aşağıdaki hatayla karşılaşabilirsiniz:
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.
Aşağıdaki T-SQL deyimini çalıştırmaya çalışırken:
CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER
Uzantı WITH OBJECT_ID
Yinelenen görünen ad hatası, Microsoft Entra kimliği Microsoft Entra uygulaması (hizmet sorumlusu) için yinelenen görünen adlara izin verdiğinden, Azure SQL ise Microsoft Entra oturum açma bilgileri ve kullanıcıları oluşturmak için benzersiz adlar gerektirdiğinden oluşur. Bu sorunu azaltmak için oturum açma bilgileri ve kullanıcılar oluşturmaya yönelik Veri Tanımı Dili (DDL) deyimi, Yan tümcesiyle Azure kaynağının WITH OBJECT_ID
Nesne Kimliğini içerecek şekilde genişletilmiştir.
Not
Uzantı WITH OBJECT_ID
şu anda genel önizleme aşamasındadır.
Microsoft Entra Id'deki çoğu tek görünen ad hizmet sorumlularıyla ilgilidir, ancak bazen grup adları da tekil olmayabilir. Microsoft Entra kullanıcı asıl adları benzersizdir çünkü iki kullanıcı aynı kullanıcı sorumlusuna sahip olamaz. Ancak, kullanıcı asıl adıyla aynı görünen adla bir uygulama kaydı (hizmet sorumlusu) oluşturulabilir.
Hizmet sorumlusu görünen adı yinelenen değilse, varsayılan CREATE LOGIN
veya CREATE USER
deyimi kullanılmalıdır. Uzantı WITH OBJECT_ID
genel önizleme aşamasındadır ve nonunique hizmet sorumlularıyla kullanılmak üzere uygulanan bir sorun giderme onarım öğesidir. Benzersiz bir hizmet sorumlusuyla kullanılması önerilmez. WITH OBJECT_ID
Sonek eklemeden hizmet sorumlusunun uzantısını kullanmak başarıyla çalıştırılır, ancak oturum açma veya kullanıcının hangi hizmet sorumlusu için oluşturulduğu açıkça belli olmaz. Hizmet sorumlusunu benzersiz bir şekilde tanımlamak için sonek kullanarak bir diğer ad oluşturmanız önerilir. WITH OBJECT_ID
Uzantı SQL Server için desteklenmez.
T-SQL, tek görünen adlar için oturum açma/kullanıcı söz dizimi oluşturma
CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
CREATE USER [user_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
Nesne Kimliği ile oturum açma bilgileri veya kullanıcılar oluşturmak için T-SQL DDL desteklenebilirlik uzantısıyla 33131 hatasını önleyebilir ve ayrıca Nesne Kimliği ile oluşturulan oturum açma veya kullanıcı için bir diğer ad belirtebilirsiniz. Örneğin, aşağıdakiler uygulama Nesne Kimliği'ni 4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx
kullanarak bir oturum açma bilgisi myapp4466e
oluşturur.
CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = '4466e2f8-0fea-4c61-a470-xxxxxxxxxxxx'
- Yukarıdaki sorguyu yürütmek için belirtilen Nesne Kimliği, Azure SQL kaynağının bulunduğu Microsoft Entra kiracısında bulunmalıdır. Aksi takdirde komut
CREATE
şu hata iletisiyle başarısız olur:Msg 37545, Level 16, State 1, Line 1 '' is not a valid object id for '' or you do not have permission.
- oturum açma veya kullanıcı adı, veya
CREATE USER
deyimi kullanılırkenCREATE LOGIN
kullanıcı tanımlı bir sonek tarafından genişletilmiş özgün hizmet asıl adını içermelidir. En iyi yöntem olarak, sonek Nesne Kimliğinin ilk bölümünü içerebilir. Örneğin,myapp2ba6c
Nesne Kimliği2ba6c0a3-cda4-4878-a5ca-xxxxxxxxxxxx
için . Ancak, özel bir sonek de tanımlayabilirsiniz. Nesne Kimliği'nden soneki oluşturmak gerekli değildir.
Bu adlandırma kuralının, veritabanı kullanıcısını açıkça ilişkilendirmesi veya Microsoft Entra Id'deki nesnesiyle yeniden oturum açması önerilir.
Not
Diğer ad, en fazla 128 karakter uzunluğunda olmak üzere için sysname
T-SQL belirtimine bağlıdır. Son eki Nesne Kimliği'nin ilk 5 karakteriyle sınırlamanızı öneririz.
Microsoft Entra Id içindeki hizmet sorumlusunun görünen adı, veritabanı oturum açma veya kullanıcı diğer adıyla eşitlenmez. Çalıştırma CREATE LOGIN
veya CREATE USER
Azure Portal'da görünen adı etkilemez. Benzer şekilde, Microsoft Entra Id görünen adını değiştirmek veritabanı oturum açma bilgilerini veya kullanıcı diğer adını etkilemez.
Uygulama için oluşturulan kullanıcıyı belirleme
Nonunique hizmet sorumluları için Microsoft Entra diğer adının doğru uygulamaya bağlı olduğunu doğrulamak önemlidir. Kullanıcının doğru hizmet sorumlusu (uygulama) için oluşturulduğunu denetlemek için:
uygulamanın Uygulama Kimliğini veya SQL Veritabanı'de oluşturulan kullanıcıdan Microsoft Entra grubunun Nesne Kimliğini alın. Aşağıdaki sorgulara bakın:
Hizmet sorumlusunun Uygulama Kimliğini oluşturulan kullanıcıdan almak için aşağıdaki sorguyu yürütür:
SELECT CAST(sid as uniqueidentifier) ApplicationID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Örnek çıkış:
Uygulama Kimliği, belirtilen oturum açma veya kullanıcı adı için güvenlik kimlik numarasından (SID) dönüştürülür. Bu, aşağıdaki sorguyu yürüterek ve son birkaç rakamı karşılaştırarak ve tarih oluşturarak onaylayabiliriz:
SELECT SID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'
Örnek çıkış:
Oluşturulan kullanıcıdan Microsoft Entra grubunun Nesne Kimliğini almak için aşağıdaki sorguyu yürütür:
SELECT CAST(sid as uniqueidentifier) ObjectID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Örnek çıkış:
Oluşturulan kullanıcıdan Microsoft Entra grubunun SID'sini denetlemek için aşağıdaki sorguyu yürütür:
SELECT SID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'
Örnek çıkış:
PowerShell kullanarak uygulamanın Nesne Kimliğini ve Uygulama Kimliğini almak için aşağıdaki komutu çalıştırın:
Get-AzADApplication -DisplayName "myapp2ba6c"
Azure portalına gidin ve Kurumsal uygulamanızda veya Microsoft Entra grup kaynağınızda sırasıyla Uygulama Kimliği veya Nesne Kimliği'ni denetleyin. Yukarıdaki sorgudan elde edilen sorguyla eşleşip eşleşmediğini görün.
Not
Hizmet sorumlusundan kullanıcı oluştururken, T-SQL deyimiyle CREATE
yan tümcesi WITH OBJECT_ID
kullanılırken Nesne Kimliği gerekir. Bu, Azure SQL'de diğer adı doğrulamaya çalışırken döndürülen Uygulama Kimliği'nden farklıdır. Bu doğrulama işlemini kullanarak, Microsoft Entra Id'de SQL diğer adıyla ilişkili hizmet sorumlusunu veya grubu tanımlayabilir ve nesne kimliğine sahip oturum açma bilgileri veya kullanıcılar oluştururken olası hataları önleyebilirsiniz.
Doğru Nesne Kimliğini bulma
Hizmet sorumlusunun Nesne Kimliği hakkında bilgi için bkz . Hizmet sorumlusu nesnesi. Azure portalında , Kurumsal uygulamalar altında uygulama adının yanında listelenen hizmet sorumlusunun Nesne Kimliğini bulabilirsiniz.
Uyarı
Uygulama kaydına Genel Bakış sayfasında elde edilen Nesne Kimliği, Kurumsal uygulamalara Genel Bakış sayfasında elde edilen Nesne Kimliği'nden farklıdır. Uygulama kaydına Genel Bakış sayfasındaysanız, Kurumsal uygulamalara Genel Bakış sayfasında doğru Nesne Kimliği'ne gitmek için yerel dizin uygulama adında bağlı Yönetilen uygulamayı seçin.