Aracılığıyla paylaş


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

      Uygulama Kimliği için SSMS çıkışının ekran görüntüsü.

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

      Uygulamanın SID'sinin SSMS çıktısının ekran görüntüsü.

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

      Microsoft Entra grubunun Nesne Kimliği için SSMS çıktısının ekran görüntüsü.

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

      Grubun SID'sinin SSMS çıktısının ekran görüntüsü.

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