Azure Arc tarafından etkinleştirilen SQL Server için yönetilen kimlik ve Microsoft Entra kimlik doğrulamasını ayarlama

Şunun için geçerlidir: SQL Server 2025 (17.x)

Bu makalede, Azure Arc tarafından etkinleştirilen SQL Server için Microsoft Entra ID yönetilen kimliği ayarlamaya ve yapılandırmaya yönelik adım adım yönergeler sağlanır.

SQL Server yönetilen kimlik hakkında genel bakış için bkz. Azure Arc tarafından etkinleştirilen SQL Server için Yönetilen kimlik.

Önkoşullar

Azure Arc tarafından etkinleştirilen SQL Server ile yönetilen kimlik kullanabilmeniz için aşağıdaki önkoşulları karşıladığınızdan emin olun:

  • Windows üzerinde çalışan SQL Server 2025 ve üzeri için desteklenir.
  • SQL Server Azure Arc bağlayın.
  • SQL Server için Azure Uzantısı'nın en son sürümü.

Birincil yönetilen kimliği etkinleştirme

Sunucunuza SQL Server için Azure Uzantısı'nı yüklediyseniz, doğrudan Azure portalından SQL Server örneğiniz için birincil yönetilen kimliği etkinleştirebilirsiniz. Ayrıca, kayıt defterini güncelleştirerek birincil yönetilen kimliği el ile etkinleştirmek de mümkündür, ancak çok dikkatli olunmalıdır.

Azure portalında birincil yönetilen kimliği etkinleştirmek için şu adımları izleyin:

  1. Azure portalında Azure Arc ile etkinleştirilen SQL Server kaynağınıza gidin.

  2. Settings altında Microsoft Entra ID ve Purview'ı seçerek Microsoft Entra ID ve Purview sayfasını açın.

    Uyarı

    Enable Microsoft Entra ID authentication seçeneğini görmüyorsanız, SQL Server örneğinizin Azure Arc bağlı olduğundan ve en son SQL uzantısının yüklü olduğundan emin olun.

  3. Microsoft Entra ID ve Purview sayfasında, Birincil yönetilen kimlik kullan seçeneğinin yanındaki kutuyu işaretleyin ve ardından yapılandırmanızı uygulamak için Kaydet kullanın.

     Azure portalında Microsoft Entra seçeneğinin ekran görüntüsü.

Kimliğe uygulama izinleri tanımak

Önemli

Bu izinleri yalnızca Ayrıcalıklı Rol Yöneticisi veya daha yüksek bir rol verebilir.

SQL Server örneklerde Microsoft Entra kimlik doğrulamasını etkinleştirmek için, sistem tarafından atanan her yönetilen kimlik için Microsoft Graph sorgulamak için User.Read.All, GroupMember.Read.All ve Application.Read.All izinleri gerekir. Bu izinler hakkında daha fazla bilgi için bkz:

Bu izinler uygulama düzeyinde izinlerdir (uygulama rolleri) ve yönetilen her kimliğe doğrudan atanmalıdır. Microsoft Entra güvenlik grubuna el ile atanamaz ve grup üyeliği aracılığıyla üyelere sağlanamaz. Birçok makineye sahip ortamlarda alternatif olarak Directory Readers rolünü role atanabilir Microsoft Entra güvenlik grubuna atamak ve yönetilen kimlikleri üye olarak eklemektir. Uygulama rolü izinlerinden farklı olarak, bu Microsoft Entra rolü grup düzeyinde verilebilir ve bu da yönetimi büyük ölçekte basitleştirir. Ancak Directory Readers tüm dizin nesneleri arasında geniş okuma erişimi verir ve hedeflenen üç Graph API iznini önemli ölçüde aşıyor. Dizin Okuyucuları rolü, en az ayrıcalıklı erişimin gerekli olduğu üretim ortamları için önerilmez.

Aşağıdaki PowerShell betiği yönetilen kimliğe gerekli izinleri verir. Bu betiğin PowerShell 7.5 veya sonraki bir sürümde çalıştırıldığından ve Microsoft.Graph modülü 2.28 veya üzerinin yüklü olduğundan emin olun.

# Set your Azure tenant and managed identity name
$tenantID = '<Enter-Your-Azure-Tenant-Id>'
$managedIdentityName = '<Enter-Your-Arc-HostMachine-Name>'

# Connect to Microsoft Graph
try {
    Connect-MgGraph -TenantId $tenantID -ErrorAction Stop
    Write-Output "Connected to Microsoft Graph successfully."
}
catch {
    Write-Error "Failed to connect to Microsoft Graph: $_"
    return
}

# Get Microsoft Graph service principal
$graphAppId = '00000003-0000-0000-c000-000000000000'
$graphSP = Get-MgServicePrincipal -Filter "appId eq '$graphAppId'"
if (-not $graphSP) {
    Write-Error "Microsoft Graph service principal not found."
    return
}

# Get the managed identity service principal
$managedIdentity = Get-MgServicePrincipal -Filter "displayName eq '$managedIdentityName'"
if (-not $managedIdentity) {
    Write-Error "Managed identity '$managedIdentityName' not found."
    return
}

# Define roles to assign
$requiredRoles = @(
    "User.Read.All",
    "GroupMember.Read.All",
    "Application.Read.All"
)

# Assign roles using scoped syntax
foreach ($roleValue in $requiredRoles) {
    $appRole = $graphSP.AppRoles | Where-Object {
        $_.Value -eq $roleValue -and $_.AllowedMemberTypes -contains "Application"
    }

    if ($appRole) {
        try {
            New-MgServicePrincipalAppRoleAssignment   -ServicePrincipalId $managedIdentity.Id `
                -PrincipalId $managedIdentity.Id `
                -ResourceId $graphSP.Id `
                -AppRoleId $appRole.Id `
                -ErrorAction Stop

            Write-Output "Successfully assigned role '$roleValue' to '$managedIdentityName'."
        }
        catch {
            Write-Warning "Failed to assign role '$roleValue': $_"
        }
    }
    else {
        Write-Warning "Role '$roleValue' not found in Microsoft Graph AppRoles."
    }
}

Oturumlar ve kullanıcılar oluşturma

Yönetilen kimlik için oturum açma bilgileri ve kullanıcılar oluşturmak için Microsoft Entra öğreticisi bölümündeki adımları izleyin.