Microsoft Entra oturum açma bilgileri ve nonunique görünen adları olan kullanıcılar

Şunlar için geçerlidir:Azure SQL Veritabanı Azure SQL Yönetilen Örneği

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 T-SQL deyimini yürütürken aşağıdaki hatayla karşılaşabilirsiniz:

CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER 
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. 

Uzantı WITH OBJECT_ID

Microsoft Entra Kimliği, Microsoft Entra uygulaması (hizmet sorumlusu) için yinelenen görünen adlara izin verdiğinden, Azure SQL'in Microsoft Entra oturum açma bilgileri ve kullanıcıları oluşturmak için benzersiz adlar gerektirmesi nedeniyle bu hata 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. Bunu benzersiz bir hizmet sorumlusuyla kullanmak gerekli değildir. 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ğine sahip oturum açma bilgileri veya kullanıcılar oluşturmak için T-SQL DDL uzantısıyla 33131 hatasını önleyebilir ve ayrıca nesne kimliğiyle 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-xxxxxxxxxxxxkullanarak 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ırken CREATE 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ği 2ba6c0a3-cda4-4878-a5ca-xxxxxxxxxxxxiç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 sysnameT-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:

  1. 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ış:

      Screenshot of SSMS output for the Application ID.

      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ış:

      Screenshot of SSMS output for the SID of the application.

    • 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ış:

      Screenshot of SSMS output for the Object ID of the Microsoft Entra group.

      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ış:

      Screenshot of SSMS output for the SID of the group.

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