Öğretici: Microsoft Entra sunucusu oturum açma bilgilerini oluşturma ve kullanma
Ş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 bilgilerinimaster
konusunda 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
master
veritabanında bir Microsoft Entra oturumu oluşturma - Sanal
master
veritabanında Microsoft Entra oturum açma bilgilerine eşlenmiş bir kullanıcı oluşturma - 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 Microsoft Entra oturum açma bilgilerini 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
master
veritabanında Microsoft Entra oturum açma bilgileri ve kullanıcı oluşturma hakkında bilgi verilmektedir. Yalnızca bir Microsoft Entra yöneticisi sanalmaster
veritabanında bir kullanıcı oluşturabilir, bu nedenle bu öğreticiyi tamamlarken Microsoft Entra yönetici hesabını kullanmanızı öneririz. Rolüneloginmanager
sahip bir Microsoft Entra sorumlusu oturum açma bilgisi oluşturabilir, ancak sanalmaster
veritabanında bir kullanıcı oluşturamayabilir.
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.com
Microsoft 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,mygroup
bu 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.
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 GO
içinde
sys.server_principals
oluş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 0
Oturum açma bilgileri
bob@contoso.com
sanalmaster
veritabanı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
master
veritabanı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.com
veritabanında bir kullanıcı oluşturmak için örneğimizimaster
kullanmaya devam edeceğiz. Sanalmaster
veritabanında yalnızca bir Microsoft Entra yöneticisi veya SQL server yöneticisi kullanıcı oluşturabilir.Sanal
master
veritabanı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, ) kullanılması gerekli olmasa da,
bob@contoso.com
Microsoft Entra kullanıcıları ve Microsoft Entra oturum açma bilgileri için aynı diğer adın kullanılması önerilir.içinde
sys.database_principals
oluş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 veritabanının içinde bir veritabanı içeren kullanıcı oluşturur. Önemli olan, sanal master
veritabanında aynı ada sahip bir oturum açma bilgisi olsa bile bu kullanıcı hiçbir oturum açma işlemiyle ilişkilendirilmemiştir.
Ö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.com
oluş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.