Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics (yalnızca ayrılmış SQL havuzları)
Bu makale, Azure SQL'in sanal veritabanında Microsoft Entra Id (eski adıYla Azure Active Directory) tarafından yedeklenen oturum açma bilgilerinimasterkonusunda size yol gösterir.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure SQL Veritabanı için yeni söz dizimi uzantısıyla sanal
masterveritabanında bir Microsoft Entra oturumu oluşturma - Sanal
masterveritabanında Microsoft Entra oturum açma bilgilerine eşlenmiş bir kullanıcı oluşturma - Nonunique görünen adlar için
WITH OBJECT_IDsöz dizimini kullanın - Microsoft Entra kullanıcısına sunucu rolleri verme
- Microsoft Entra oturum açma bilgilerini devre dışı bırakma
Not
Microsoft Entra sunucu sorumluları (oturum açma bilgileri) şu anda Azure SQL Veritabanı için genel önizleme aşamasındadır. Azure SQL Yönetilen Örneği ve SQL Server 2022 ve üzeri, Microsoft Entra oturum açma bilgilerini genel kullanıma sunulan bir özellik olarak zaten kullanabilir.
Önkoşullar
- Veritabanı olan bir SQL Veritabanı veya SQL Yönetilen Örneği. Bkz. Hızlı Başlangıç: Azure SQL Veritabanı oluşturmadıysanız tek Azure SQL Veritabanı veritabanı oluşturma veya Hızlı Başlangıç: Azure SQL Yönetilen Örneği oluşturma.
- SQL Veritabanı veya SQL Yönetilen Örneği için Microsoft Entra kimlik doğrulaması ayarlanır. Daha fazla bilgi için bkz. Azure SQL ile Microsoft Entra kimlik doğrulamasını yapılandırma ve yönetme.
- Bu makalede, sanal
masterveritabanında Microsoft Entra oturum açma bilgileri ve kullanıcı oluşturma hakkında bilgi verilmektedir. Yalnızca bir Microsoft Entra yöneticisi sanalmasterveritabanında bir kullanıcı oluşturabilir, bu nedenle bu öğreticiyi tamamlarken Microsoft Entra yönetici hesabını kullanmanızı öneririz. Rolüneloginmanagersahip bir Microsoft Entra sorumlusu oturum açma bilgisi oluşturabilir, ancak sanalmasterveritabanında bir kullanıcı oluşturamayabilir.
Not
Microsoft Entra ID'de benzersiz olmayan görünen adlarla ilgilenen kuruluşlar (özellikle hizmet ilkesileri için), oturum açmayı planladığınız hizmet ilkesileriyle ilgili Nesne Kimliği bilgilerine sahip olduğunuzdan emin olun. Söz WITH OBJECT_ID dizimi uzantısı bu senaryoların çözülmesine yardımcı olabilir.
Microsoft Entra oturum açma bilgileri oluşturma
Microsoft Entra hesabı için Azure SQL Veritabanı oturum açma bilgileri oluşturun. Örneğimizde, adlı
bob@contoso.comMicrosoft Entra etki alanımızda var olan öğesini kullanacağızcontoso. Oturum açma bilgileri bir Microsoft Entra grubundan veya hizmet sorumlusundan (uygulamalar) da oluşturulabilir. Örneğin,mygroupbu grubun üyesi olan Microsoft Entra hesaplarından oluşan bir Microsoft Entra grubudur. Daha fazla bilgi için bkz . CREATE LOGIN (Transact-SQL).Not
İlk Microsoft Entra oturum açma bilgileri Microsoft Entra yöneticisi tarafından oluşturulmalıdır. Microsoft Entra yöneticisi bir Microsoft Entra kullanıcısı veya grubu olabilir. SQL oturum açma bilgileri Microsoft Entra oturum açma bilgileri oluşturamaz.
İpucu
Microsoft Entra ID'de benzersiz olmayan görünen adlarla ilgili sorunlarla karşılaşırsanız
sözdizimi uzantısını kullanabilirsiniz. Bu özellik, yinelenen görünen adlara sahip hizmet sorumluları için özellikle kullanışlıdır. Örneğin: CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Daha fazla bilgi için bkz Microsoft Entra oturum açma bilgileri ve benzersiz olmayan görünen adlara sahip kullanıcılar.
SQL Server Management Studio'yu (SSMS) kullanarak, sunucu için ayarlanmış Microsoft Entra yönetici hesabıyla SQL Veritabanı oturum açın.
Genişletin Veritabanları>Sistem Veritabanları.
veritabanına sağ tıklayın ve veritabanı bağlamında yeni bir sorgu penceresi açmak için Yeni Sorgu seçin. Aşağıdaki sorguyu çalıştırın:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOiçinde
sys.server_principalsoluşturulan oturum açma bilgilerini denetleyin. Aşağıdaki sorguyu yürütür:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'Aşağıdakine benzer bir çıkış görürsünüz:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0Oturum açma bilgileri
bob@contoso.comsanalmasterveritabanında oluşturulmuştur.
Microsoft Entra oturumundan kullanıcı oluşturma
Artık bir Microsoft Entra oturum açma bilgisi oluşturduğumuza göre, sanal
masterveritabanındaki Microsoft Entra oturum açma bilgilerine eşlenmiş veritabanı düzeyinde bir Microsoft Entra kullanıcısı oluşturabiliriz. Kullanıcıyı özel rollere eklemeyi göstermek istediğimizden, sanalbob@contoso.comveritabanında bir kullanıcı oluşturmak için örneğimizimasterkullanmaya devam edeceğiz. Sanalmasterveritabanında yalnızca bir Microsoft Entra yöneticisi veya SQL server yöneticisi kullanıcı oluşturabilir.Sanal
masterveritabanını kullanmaya devam ediyoruz, ancak diğer veritabanlarında kullanıcı oluşturmak istiyorsanız istediğiniz bir veritabanına yeniden bağlanabilirsiniz. Aşağıdaki sorguyu çalıştırın.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]İpucu
Microsoft Entra kullanıcı diğer adlarının (örneğin,
bob@contoso.com) kullanılması gerekli olmasa da, Microsoft Entra kullanıcıları ve Microsoft Entra oturumları için aynı diğer adı kullanmak önerilen bir en iyi uygulamadır.Belirli bir Nesne Kimliğine sahip bir dış sağlayıcıdan doğrudan kullanıcı oluşturmanız gerekiyorsa (örneğin, eşsiz olmayan görünen ad sorunlarını çözmek için), şunları da kullanabilirsiniz:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'içinde
sys.database_principalsoluşturulan kullanıcıyı denetleyin. Aşağıdaki sorguyu yürütür:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'Aşağıdakine benzer bir çıkış görürsünüz:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Not
Microsoft Entra oturum açma bilgisi olmayan bir Microsoft Entra kullanıcısı oluşturmak için mevcut söz dizimi hala desteklenmektedir. Aşağıdaki söz diziminin yürütülmesi, bağlı olduğunuz belirli veritabanının içinde yer alan bir kullanıcı oluşturur. Önemli olan, sanal master veritabanında aynı ada sahip bir oturum açma bilgisi bulunsa bile bu kullanıcının herhangi bir oturum açma işlemiyle ilişkili olmamasıdır.
Örneğin, CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Nonunique görünen adına sahip bir hizmet sorumlusu kullanarak Microsoft Entra oturum açma bilgileri oluşturabilirsiniz. Daha fazla bilgi için bkz . Microsoft Entra oturum açma bilgileri ve görünen adları olmayan kullanıcılar
Microsoft Entra oturum açma bilgilerine sunucu düzeyinde roller verme
Not
Burada bahsedilen sunucu düzeyindeki roller Microsoft Entra grupları için desteklenmez.
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];
kullanıcı yeniden bağlanana kadar izinler geçerli olmaz. DBCC önbelleğini de temizleyin:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Hangi Microsoft Entra oturum açma bilgilerinin sunucu düzeyindeki rollerin parçası olduğunu denetlemek için aşağıdaki sorguyu çalıştırın:
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;
Microsoft Entra kullanıcıları için özel roller verme
Kullanıcıya özel veritabanı rollerinden birini vermek için kullanıcının sanal master veritabanında mevcut olması gerekir.
Bir role kullanıcı eklemek için aşağıdaki sorguyu çalıştırabilirsiniz:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Bir kullanıcıyı rolden kaldırmak için aşağıdaki sorguyu çalıştırın:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object Microsoft Entra kimliğinde bir Microsoft Entra kullanıcısı, grubu veya hizmet sorumlusu olabilir.
Örneğimizde kullanıcısını bob@contoso.comoluşturduk. Kullanıcıya dbmanager ve loginmanager rollerini verelim.
Aşağıdaki sorguyu çalıştırın:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]Aşağıdaki sorguyu çalıştırarak veritabanı rolü atamasını denetleyin:
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%'Aşağıdakine benzer bir çıkış görürsünüz:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
İsteğe bağlı - Oturum açmayı devre dışı bırakma
ALTER LOGIN (Transact-SQL) DDL söz dizimi, Azure SQL Veritabanı bir Microsoft Entra oturum açma özelliğini etkinleştirmek veya devre dışı bırakmak için kullanılabilir.
ALTER LOGIN [bob@contoso.com] DISABLE
veya DISABLE değişikliklerinin ENABLE hemen etkili olması için kimlik doğrulama önbelleği ve TokenAndPermUserStore önbelleği aşağıdaki T-SQL komutları kullanılarak temizlenmelidir:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Aşağıdaki sorguyu yürüterek oturum açmanın devre dışı bırakıldığını denetleyin:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1
Bunun için bir kullanım örneği, coğrafi çoğaltmalarda salt okunura izin vermek, ancak birincil sunucuda bağlantıyı reddetmektir.