Aracılığıyla paylaş


Öğ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 master veritabanında Microsoft Entra Id (eski adıYla Azure Active Directory) tarafından yedeklenen oturum açma bilgilerini oluşturma ve kullanma 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

Dekont

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

Microsoft Entra oturum açma bilgileri oluşturma

  1. Microsoft Entra hesabı için Azure SQL Veritabanı oturum açma bilgileri oluşturun. Örneğimizde, adlı contosoMicrosoft Entra etki alanımızda var olan öğesini kullanacağızbob@contoso.com. 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).

    Dekont

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

  2. SQL Server Management Studio'yu (SSMS) kullanarak, sunucu için ayarlanmış Microsoft Entra yönetici hesabıyla SQL Veritabanı oturum açın.

  3. Aşağıdaki sorguyu çalıştırın:

    Use master
    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  4. iç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      0 
    
  5. Oturum açma bilgileri bob@contoso.com sanal master veritabanında oluşturulmuştur.

Microsoft Entra oturumundan kullanıcı oluşturma

  1. 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, sanal master veritabanında bir kullanıcı oluşturmak için örneğimizi bob@contoso.com kullanmaya devam edeceğiz. Sanal master veritabanında yalnızca bir Microsoft Entra yöneticisi veya SQL server yöneticisi kullanıcı oluşturabilir.

  2. Sanal master veritabanını kullanıyoruz, ancak diğer veritabanlarında kullanıcı oluşturmak istiyorsanız istediğiniz bir veritabanına geçebilirsiniz. Aşağıdaki sorguyu çalıştırın.

    Use master
    CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
    

    Bahşiş

    Microsoft Entra kullanıcı diğer adlarının (örneğin, ) kullanılması gerekli olmasa da, bob@contoso.comMicrosoft Entra kullanıcıları ve Microsoft Entra oturum açma bilgileri için aynı diğer adın kullanılması önerilir.

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

Dekont

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.

Microsoft Entra oturum açma bilgilerine sunucu düzeyinde roller verme

##MS_DefinitionReader##, ##MS_ServerStateReader## veya ##MS_ServerStateManager## rolü gibi sabit sunucu düzeyindeki rollere oturum açma bilgileri ekleyebilirsiniz.

Dekont

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

sanal veritabanındaki master kullanıcılara SQL Veritabanı için özel roller atanabilir.

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.

  1. Aşağıdaki sorguyu çalıştırın:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] 
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com] 
    
  2. 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 ENABLE değişikliklerinin DISABLE 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.

Ayrıca bkz.

Daha fazla bilgi ve örnek için bkz: