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

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

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

    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.

  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]
    

    İpucu

    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
    

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

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

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

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.