Azure SQL için Microsoft Entra'da yönetilen kimlikler

Şunlar için geçerlidir:Azure SQL Veritabanı Azure SQL Yönetilen Örneği

Microsoft Entra Id (eski adı Azure Active Directory), iki tür yönetilen kimliği destekler: sistem tarafından atanan yönetilen kimlik (SMI) ve kullanıcı tarafından atanan yönetilen kimlik (UMI). Daha fazla bilgi için bkz . Yönetilen kimlik türleri.

SMI, oluşturulduğunda Azure SQL Yönetilen Örneği otomatik olarak atanır. Azure SQL Veritabanı ile Microsoft Entra kimlik doğrulamasını kullanırken, SQL Veritabanı'da Microsoft Entra kullanıcıları oluşturmak için Azure hizmet sorumluları kullanıldığında bir SMI atamanız gerekir.

Daha önce, Azure SQL Yönetilen Örneği veya SQL Veritabanı sunucu kimliğine yalnızca bir SMI atanabiliyor. Artık örnek veya sunucu kimliği olarak SQL Yönetilen Örneği veya SQL Veritabanı bir UMI atanabilir.

Örnek veya sunucu kimliği olarak UMI ve SMI kullanmanın yanı sıra, SQL bağlantı dizesi seçeneğini Authentication=Active Directory Managed Identitykullanarak veritabanına erişmek için de kullanabilirsiniz. CREATE USER deyimini kullanarak hedef veritabanındaki yönetilen kimlikten bir SQL kullanıcısı oluşturmanız gerekir. Daha fazla bilgi için bkz . SqlClient ile Microsoft Entra kimlik doğrulamasını kullanma.

Azure SQL Yönetilen örneği veya Azure SQL Veritabanı için geçerli UMI'leri veya SMI'leri almak için bu makalenin devamında yer alan Mantıksal sunucu veya yönetilen örnek için yönetilen kimlik alma veya ayarlama bölümüne bakın.

Kullanıcı tarafından atanan yönetilen kimlikleri kullanmanın avantajları

UMI'nin sunucu kimliği olarak kullanılmasının çeşitli avantajları vardır:

  • Kullanıcılar, bir kiracı için kendi UMI'lerini oluşturma ve koruma esnekliğine sahiptir. UMI'leri Azure SQL için sunucu kimlikleri olarak kullanabilirsiniz. UMI kullanıcı tarafından yönetilirken, SMI sunucu başına benzersiz olarak tanımlanır ve sistem tarafından atanır.

  • Geçmişte, sunucu veya örnek kimliği olarak bir SMI kullanırken Microsoft Entra ID Dizin Okuyucuları rolüne ihtiyacınız vardı. Microsoft Graph aracılığıyla Microsoft Entra Id'ye erişmeye başlandığında, SMI veya UMI'ye Dizin Okuyucuları rolü gibi üst düzey izinler vermekle ilgilenen kullanıcılar alternatif olarak sunucu veya örnek kimliğinin Microsoft Graph'a erişebilmesi için daha düşük düzey izinler verebilir.

    Dizin Okuyucuları izinleri ve işlevi sağlama hakkında daha fazla bilgi için bkz . Azure SQL için Microsoft Entra Id'de Dizin Okuyucuları rolü.

  • Kullanıcılar, kiracıdaki tüm veritabanları veya yönetilen örnekler için sunucu veya örnek kimliği olarak belirli bir UMI seçebilir. Ya da farklı sunuculara veya örneklere atanmış birden çok UMI'ye sahip olabilirler.

    UMI'ler farklı özellikleri temsil etmek için farklı sunucularda kullanılabilir. Örneğin, UMI bir sunucuda saydam veri şifrelemesi (TDE) ve bir UMI başka bir sunucuda Microsoft Entra kimlik doğrulamasına hizmet edebilir.

  • Azure'da müşteri tarafından yönetilen anahtarlarla (CMK' ler) TDE ile yapılandırılmış bir mantıksal sunucu oluşturmak için UMI gerekir. Daha fazla bilgi için bkz . Kullanıcı tarafından atanan yönetilen kimlik kullanılarak müşteri tarafından yönetilen saydam veri şifrelemesi.

  • UMI'ler mantıksal sunuculardan veya yönetilen örneklerden bağımsızdır. Bir mantıksal sunucu veya örnek silindiğinde, SMI da silinir. UMI'ler sunucudan silinmez.

Not

SQL Yönetilen Örneği'de Microsoft Entra kimlik doğrulaması desteğine izin vermek için örnek kimliğini (SMI veya UMI) etkinleştirmeniz gerekir. SQL Veritabanı için, sunucu kimliğinin etkinleştirilmesi isteğe bağlıdır ve yalnızca bir Microsoft Entra hizmet sorumlusunun (Microsoft Entra uygulaması) sunucuda Microsoft Entra kullanıcılarını, gruplarını veya uygulamalarını oluşturma ve yönetmeyi denetlemesi durumunda gereklidir. Daha fazla bilgi için bkz . Azure SQL ile Microsoft Entra hizmet sorumlusu.

Kullanıcı tarafından atanan yönetilen kimlik oluşturma

UMI oluşturma hakkında bilgi için bkz . Kullanıcı tarafından atanan yönetilen kimlikleri yönetme.

İzinler

UMI oluşturulduktan sonra, UMI'nin sunucu kimliği olarak Microsoft Graph'ten okumasına izin vermek için bazı izinler gerekir. Aşağıdaki izinleri verin veya UMI'ye Dizin Okuyucuları rolünü verin.

Bu izinler, mantıksal sunucu veya yönetilen örnek sağlamadan önce verilmelidir. UMI'ye izin verdikten sonra, bunlar sunucu kimliği olarak atanan UMI ile oluşturulan tüm sunucular veya örnekler için etkinleştirilir.

Önemli

Yalnızca bir Genel Yönetici istrator veya Privileged Role Yönetici istrator bu izinleri verebilir.

İzinleri verme

Aşağıdaki örnek PowerShell betiği yönetilen kimlik için gerekli izinleri verir. Bu örnek, kullanıcı tarafından atanan yönetilen kimliğe umiservertestizinler atar.

Betiği çalıştırmak için Genel Yönetici istrator veya Privileged Role Yönetici istrator rolüne sahip bir kullanıcı olarak oturum açmanız gerekir.

Betik, yönetilen bir kimliğe Microsoft Graph'a erişmek için , GroupMember.Read.Allve Application.Read.ALL izinleri verirUser.Read.All.

# Script to assign permissions to an existing UMI 
# The following required Microsoft Graph permissions will be assigned: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.All

Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications

$tenantId = "<tenantId>"        # Your tenant ID
$MSIName = "<managedIdentity>"; # Name of your managed identity

# Log in as a user with the "Global Administrator" or "Privileged Role Administrator" role
Connect-MgGraph -TenantId $tenantId -Scopes "AppRoleAssignment.ReadWrite.All,Application.Read.All"

# Search for Microsoft Graph
$MSGraphSP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'";
$MSGraphSP

# Sample Output

# DisplayName     Id                                   AppId                                SignInAudience      ServicePrincipalType
# -----------     --                                   -----                                --------------      --------------------
# Microsoft Graph 47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 AzureADMultipleOrgs Application

$MSI = Get-MgServicePrincipal -Filter "DisplayName eq '$MSIName'" 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found with that name, please find your principal and copy its object ID. Replace the above line with the syntax $MSI = Get-MgServicePrincipal -ServicePrincipalId <your_object_id>"
Exit
}

# Get required permissions
$Permissions = @(
  "User.Read.All"
  "GroupMember.Read.All"
  "Application.Read.All"
)

# Find app permissions within Microsoft Graph application
$MSGraphAppRoles = $MSGraphSP.AppRoles | Where-Object {($_.Value -in $Permissions)}

# Assign the managed identity app roles for each permission
foreach($AppRole in $MSGraphAppRoles)
{
    $AppRoleAssignment = @{
	    principalId = $MSI.Id
	    resourceId = $MSGraphSP.Id
	    appRoleId = $AppRole.Id
    }

    New-MgServicePrincipalAppRoleAssignment `
    -ServicePrincipalId $AppRoleAssignment.PrincipalId `
    -BodyParameter $AppRoleAssignment -Verbose
}

Kullanıcı tarafından atanan yönetilen kimlik için izinleri denetleme

UMI izinlerini denetlemek için Azure portalına gidin. Microsoft Entra Id kaynağında Kurumsal uygulamalar'a gidin. Uygulama türü için Tüm Uygulamalar'ı seçin ve oluşturulan UMI'yi arayın.

Screenshot of enterprise application settings in the Azure portal.

UMI'yi seçin ve Güvenlik altındaki İzinler ayarlarına gidin.

Screenshot of user-assigned managed identity permissions.

Mantıksal sunucu veya yönetilen örnek için yönetilen kimlik alma veya ayarlama

UMI kullanarak sunucu oluşturmak için şu kılavuza bakın: Kullanıcı tarafından atanan yönetilen kimliği kullanarak Azure SQL mantıksal sunucusu oluşturma.

Azure SQL Veritabanı mantıksal sunucusu için SMI alma

Azure portalı, Azure SQL Veritabanı mantıksal sunucusunun Özellikler menüsünde sistem tarafından atanan yönetilen kimlik (SMI) kimliğini görüntüler.

Screenshot of the Azure portal page for an Azure SQL Database logical server. In the Properties menu, the System Assigned Managed Identity is highlighted.

  • Azure SQL Yönetilen Örneği veya Azure SQL Veritabanı için UMI'leri almak için aşağıdaki PowerShell veya Azure CLI örneklerini kullanın.
  • Azure SQL Yönetilen Örneği için SMI almak için aşağıdaki PowerShell veya Azure CLI örneklerini kullanın.

Azure portalında yönetilen kimlik ayarlama

Azure portalında Azure SQL Veritabanı mantıksal sunucusu veya Azure SQL Yönetilen Örneği için kullanıcı tarafından yönetilen kimliği ayarlamak için:

  1. SQL sunucunuza veya SQL yönetilen örnek kaynağınıza gidin.
  2. Güvenlik'in altında Kimlik ayarını seçin.
  3. Kullanıcı tarafından atanan yönetilen kimlik'in altında Ekle'yi seçin.
  4. Bir abonelik seçin ve ardından Birincil kimlik için abonelik için bir yönetilen kimlik seçin. Ardından Seç düğmesini seçin.

Azure portal screenshot of selecting a user-assigned managed identity when configuring an existing server identity.

Azure CLI kullanarak yönetilen kimlik oluşturma veya ayarlama

Bu komutları UMI ile çalıştırmak için Azure CLI 2.26.0 (veya üzeri) gerekir.

Azure CLI kullanarak yönetilen kimliği Azure SQL Veritabanı

  • Kullanıcı tarafından atanan yönetilen kimlikle yeni bir sunucu sağlamak için az sql server create komutunu kullanın.

  • Mantıksal sunucunun yönetilen kimliklerini almak için az sql server show komutunu kullanın.

    • Örneğin, bir mantıksal sunucunun kullanıcı tarafından atanan yönetilen kimliklerini almak için aşağıdakilerden birini arayın principalId :

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
      
    • Azure SQL Veritabanı mantıksal sunucusunun sistem tarafından atanan yönetilen kimliğini almak için:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • UMI'nin sunucu ayarını güncelleştirmek için az sql server update komutunu kullanın.

Azure CLI kullanarak yönetilen kimliği Azure SQL Yönetilen Örneği

  • UMI ile yeni bir yönetilen örnek sağlamak için az sql mi create komutunu kullanın.

  • Yönetilen örnekler için sistem tarafından atanan ve kullanıcı tarafından atanan yönetilen kimlikleri almak için az sql mi show komutunu kullanın.

    • Örneğin, yönetilen örneğin UMI'lerini almak için aşağıdakilerden birini arayın principalId :

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Yönetilen örneğin SMI'sini almak için:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
      
  • UMI'nin yönetilen örnek ayarını güncelleştirmek için az sql mi update komutunu kullanın.

PowerShell kullanarak yönetilen kimlik oluşturma veya ayarlama

PowerShell'i UMI ile kullanmak için Az.Sql modülü 3.4 veya üzeri gereklidir. PowerShell'in en son sürümü önerilir veya Azure portalda Azure Cloud Shell'i kullanın.

PowerShell kullanarak yönetilen kimliği Azure SQL Veritabanı

  • UMI ile yeni bir sunucu sağlamak için New-AzSqlServer komutunu kullanın.

  • Mantıksal sunucunun yönetilen kimliklerini almak için Get-AzSqlServer komutunu kullanın.

    • Örneğin, bir mantıksal sunucunun UMI'lerini almak için her birinin öğesini principalId arayın:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Azure SQL Veritabanı mantıksal sunucusunun SMI'sini almak için:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • UMI'nin sunucu ayarını güncelleştirmek için Set-AzSqlServer komutunu kullanın.

PowerShell kullanarak yönetilen kimliği Azure SQL Yönetilen Örneği

  • UMI ile yeni bir yönetilen örnek sağlamak için New-AzSqlInstance komutunu kullanın.

  • Yönetilen örneğin yönetilen kimliklerini almak için Get-AzSqlInstance komutunu kullanın.

    • Örneğin, yönetilen örneğin UMI'lerini almak için aşağıdakilerden birini arayın principalId :

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Yönetilen örneğin SMI'sini almak için:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.principalId
      
  • UMI'nin yönetilen örnek ayarını güncelleştirmek için Set-AzSqlInstance komutunu kullanın.

REST API kullanarak yönetilen kimlik oluşturma veya ayarlama

Sunucunun UMI ayarlarını güncelleştirmek için Kullanıcı tarafından atanan yönetilen kimlik kullanarak mantıksal sunucu oluşturma veya Kullanıcı tarafından atanan yönetilen kimlik kullanarak yönetilen örnek oluşturma bölümünde kullanılan REST API sağlama betiğini de kullanabilirsiniz. Güncelleştirmek istediğiniz güncelleştirilmiş kullanıcı tarafından atanan yönetilen kimlik özelliğiyle kılavuzdaki sağlama komutunu yeniden çalıştırın.

ARM şablonu kullanarak yönetilen kimlik oluşturma veya ayarlama

Sunucunun UMI ayarlarını güncelleştirmek için Kullanıcı tarafından atanan yönetilen kimlik kullanarak mantıksal sunucu oluşturma veya Kullanıcı tarafından atanan yönetilen kimlik kullanarak yönetilen örnek oluşturma bölümünde kullanılan Azure Resource Manager şablonunu (ARM şablonu) da kullanabilirsiniz. Güncelleştirmek istediğiniz güncelleştirilmiş kullanıcı tarafından atanan yönetilen kimlik özelliğiyle kılavuzdaki sağlama komutunu yeniden çalıştırın.

Not

ARM şablonu için sağlama komutunu yeniden çalıştırarak sunucu yöneticisini veya parolayı değiştiremez veya Microsoft Entra yöneticisini değiştiremezsiniz.

Sınırlamalar ve bilinen sorunlar

  • Yönetilen örneği oluşturduktan sonra, Azure portalındaki yönetilen örneğinizin Microsoft Entra yönetici sayfasında bir uyarı gösterilir: Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance. UMI'ye bu makalenin önceki bölümlerinde açıklanan uygun izinleri verdiyseniz, bu uyarıyı yoksayabilirsiniz.
  • Sunucu veya örnek kimliği olarak SMI veya UMI kullanırsanız, kimliğin silinmesi sunucunun veya örneğin Microsoft Graph'a erişememesine neden olur. Microsoft Entra kimlik doğrulaması ve diğer işlevler başarısız olur. Microsoft Entra işlevselliğini geri yüklemek için sunucuya uygun izinlere sahip yeni bir SMI veya UMI atayın.
  • SMI veya UMI aracılığıyla Microsoft Graph'a erişim izinleri vermek için PowerShell'i kullanmanız gerekir. Azure portalını kullanarak bu izinleri veremezsiniz.