다음을 통해 공유


Azure Arc 사용하도록 설정된 SQL Server 대한 관리 ID 및 Microsoft Entra 인증 설정

: SQL Server 2025에 적용(17.x)

이 문서에서는 Azure Arc 사용하도록 설정된 SQL Server Microsoft Entra ID 관리 ID를 설정하고 구성하는 단계별 지침을 제공합니다.

SQL Server의 관리형 ID에 대한 개요는 Azure Arc에 의해 활성화된 SQL Server의 관리형 ID를 참조하세요.

필수 조건

Azure Arc SQL Server 사용하도록 설정된 관리 ID를 사용하려면 다음 필수 조건을 충족하는지 확인합니다.

  • Windows 실행되는 SQL Server 2025 이상에서 지원됩니다.
  • SQL Server Azure Arc 연결합니다.
  • SQL Server용 Azure 확장의 최신 버전.

기본 관리 ID 사용

서버에 SQL Server Azure 확장을 설치한 경우 Azure 포털에서 직접 SQL Server 인스턴스에 대한 기본 관리 ID를 사용하도록 설정할 수 있습니다. 레지스트리를 업데이트하여 기본 관리 ID를 수동으로 사용하도록 설정할 수도 있지만 주의해야 합니다.

Azure 포털에서 기본 관리 ID를 사용하도록 설정하려면 다음 단계를 수행합니다.

  1. Azure Arc로 사용하도록 설정된 SQL Server 리소스를 Azure 포털에서 찾으세요.

  2. Settings에서 Microsoft Entra ID 및 Purview를 선택하여 Microsoft Entra ID 및 Purview 페이지를 엽니다.

    비고

    Enable Microsoft Entra ID Authentication 옵션이 표시되지 않으면 SQL Server 인스턴스가 Azure Arc 연결되어 있고 최신 SQL 확장이 설치되어 있는지 확인합니다.

  3. Microsoft Entra ID 및 Purview 페이지에서 주 관리 ID 사용 옆의 확인란을 선택하고 저장을 클릭하여 구성을 적용합니다.

    Azure portal의 Microsoft Entra 옵션 스크린샷.

ID에 애플리케이션 사용 권한 부여

중요합니다

권한 있는 역할 관리자 이상의 역할만 이러한 권한을 부여할 수 있습니다.

SQL Server 인스턴스에 대해 Microsoft Entra 인증을 사용하도록 설정하려면 각 시스템 할당 관리 ID에 User.Read.All, GroupMember.Read.AllApplication.Read.All 권한이 있어야 Microsoft Graph 쿼리할 수 있습니다. 이러한 권한에 대한 자세한 내용은 다음을 참조하세요.

  • User.Read.All: Microsoft Entra 사용자 정보에 액세스할 수 있습니다.
  • GroupMember.Read.All: Microsoft Entra 그룹 정보에 액세스할 수 있습니다.
  • Application.Read.All: Microsoft Entra 서비스 주체(애플리케이션) 정보에 액세스할 수 있습니다.

이러한 권한은 애플리케이션 수준 권한(앱 역할)이며 각 관리 ID에 직접 할당되어야 합니다. Microsoft Entra 보안 그룹에 수동으로 할당하고 그룹 멤버 자격을 통해 구성원에게 부여할 수 없습니다. 컴퓨터가 많은 환경의 경우 디렉터리 읽기 권한자 역할을 할당 가능한 Microsoft Entra 보안 그룹에 할당하고 관리 ID를 멤버로 추가하는 것입니다. 앱 역할 권한과 달리 이 Microsoft Entra 역할을 그룹 수준에서 부여하여 대규모 관리를 간소화할 수 있습니다. 그러나 디렉터리 읽기 권한자는 모든 디렉터리 개체에서 광범위한 읽기 권한을 부여하여 대상 Graph API 세 가지 권한을 크게 초과합니다. 최소 권한 액세스가 필요한 프로덕션 환경에는 디렉터리 읽기 권한자 역할이 권장되지 않습니다.

다음 PowerShell 스크립트는 관리 ID에 필요한 권한을 부여합니다. 이 스크립트가 PowerShell 7.5 이상 버전에서 실행되고 Microsoft.Graph 모듈 2.28 이상이 설치되어 있는지 확인합니다.

# 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."
    }
}

로그인 및 사용자 만들기

Microsoft Entra 자습서 단계에 따라 관리 ID에 대한 로그인 및 사용자를 만듭니다.