Azure VM 기반 SQL Server에 대한 Microsoft Entra 인증 사용 설정

적용 대상:Azure VM 기반 SQL Server

이 문서에서는 Azure VM(가상 머신) 기반 SQL Server에 대해 Microsoft Entra ID(이전의 Azure Active Directory)로 인증을 사용하도록 설정하는 방법을 설명합니다.

개요

SQL Server 2022부터 다음 Microsoft Entra 인증 방법 중 하나를 사용하여 Azure VM 기반 SQL Server에 연결할 수 있습니다.

  • 암호는 Microsoft Entra 자격 증명을 사용하여 인증을 제공합니다.
  • MFA가 지원되는 유니버설에서 다단계 인증 추가
  • 통합에서 ADFS(Active Directory Federation Services)와 같은 페더레이션 공급자로 SSO(Single Sign-On) 환경 사용 설정
  • 서비스 주체로 Azure 애플리케이션에서 인증 가능
  • 관리 ID를 사용하면 Microsoft Entra ID가 할당된 애플리케이션에서 인증할 수 있습니다.

SQL Server용 Microsoft Entra 로그인을 만들 때와 사용자가 해당 로그인을 사용하여 연결할 때 SQL Server는 관리 ID를 사용하여 Microsoft Graph를 쿼리합니다. Azure VM 기반 SQL Server에 대해 Microsoft Entra 인증을 사용하도록 설정할 때 SQL Server가 Microsoft Entra ID와 통신하는 데 사용할 수 있는 관리 ID를 제공해야 합니다. 이 관리 ID에는 Microsoft Graph를 쿼리할 수 있는 권한이 있어야 합니다.

Azure에서 리소스에 대해 관리 ID를 사용하도록 설정하는 경우 ID의 보안 경계는 ID가 연결된 리소스입니다. 예를 들어, Azure 리소스에 대한 관리 ID를 갖는 가상 머신의 보안 경계는 바로 가상 머신입니다. 해당 VM에서 실행되는 모든 코드는 관리 ID 엔드포인트를 호출하고 토큰을 요청할 수 있습니다. Azure VM 기반 SQL Server에 대해 관리 ID를 사용하도록 설정하면 ID가 가상 머신에 연결되므로 보안 경계는 가상 머신입니다. 이 환경은 관리 ID를 지원하는 다른 리소스로 작업할 때와 비슷합니다. 자세한 내용은 관리 ID FAQ를 참조하세요.

Azure VM 기반 SQL Server를 통한 Microsoft Entra 인증에 사용되는 시스템이 할당한 관리 ID와 사용자가 할당한 관리 ID는 다음과 같은 이점을 제공합니다.

  • 시스템이 할당한 관리 ID는 기본 구성 프로세스를 제공합니다. 관리 ID는 가상 머신과 수명이 동일하므로 가상 머신을 삭제할 때 별도로 삭제할 필요가 없습니다.
  • 사용자가 할당한 관리 ID는 Azure VM의 여러 SQL Server에 대해 Microsoft Entra 인증에 연결하고 사용할 수 있으므로 확장성을 제공합니다.

관리 ID를 시작하려면Azure Portal을 사용하여 관리 ID 구성을 검토하세요.

필수 조건

다음은 SQL Server에서 Microsoft Entra 인증을 사용하도록 설정하려는 경우 필수 조건입니다.

권한 부여

SQL Server와 Microsoft Entra ID 간의 인증을 용이하게 하기 위해 선택하는 관리 ID에는 User.Read.All, GroupMember.Read.AllApplication.Read.All의 세 가지 Microsoft Graph 애플리케이션 권한(앱 역할)이 있어야 합니다.

또는 Microsoft Entra 디렉터리 읽기 권한자 역할에 관리 ID를 추가하면 충분한 권한이 부여됩니다. 관리 ID에 디렉터리 읽기 권한자 역할을 할당하는 또 다른 방법은 Microsoft Entra ID의 그룹에 디렉터리 읽기 권한자 역할을 할당하는 것입니다. 그러면 그룹 소유자는 가상 머신 관리 ID를 이 그룹의 구성원으로 추가할 수 있습니다. 이렇게 하면 Microsoft Entra 전역 관리자의 개입이 최소화되고 그룹 소유자에게 책임이 위임됩니다.

역할에 관리 ID 추가

이 섹션에서는 Microsoft Entra ID의 디렉터리 읽기 권한자 역할에 관리 ID를 추가하는 방법을 설명합니다. 디렉터리 읽기 권한자 역할 할당을 변경하려면 전역 관리자 권한이 있어야 합니다. 충분한 권한이 없는 경우 Microsoft Entra 관리자와 협력하여 다음 단계를 수행합니다.

관리 ID에 디렉터리 읽기 권한자 역할을 부여하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 Microsoft Entra ID 역할 및 관리자를 엽니다.

  2. 검색 상자에 디렉터리 읽기 권한자를 입력한 다음 디렉터리 읽기 권한자 역할을 선택하여 디렉터리 읽기 권한자 | 할당 페이지를 엽니다.

    디렉터리 디렉터리 읽기 권한자 역할을 검색하고 선택하는 Azure Portal의 역할 및 관리자 페이지 스크린샷

  3. 디렉터리 읽기 권한자 | 할당 페이지에서 + 할당 추가를 선택하여 할당 추가 페이지를 엽니다.

    Azure Portal의 디렉터리 읽기 권한자 페이지 스크린샷

  4. 할당 추가 페이지의 구성원 선택 아래에서 구성원 미선택을 선택하여 구성원 선택 페이지를 엽니다.

    구성원 미선택이 강조 표시된 Azure Portal의 할당 추가 페이지 스크린샷

  5. 구성원 선택 페이지에서 SQL Server VM에 사용하려는 관리 ID의 이름을 검색하여 디렉터리 읽기 권한자 역할에 추가합니다. 시스템이 할당한 관리 ID의 경우 VM의 이름을 검색합니다. 선택을 사용하여 ID를 확인하고 할당 추가 페이지로 돌아갑니다.

    Azure Portal에서 선택할 구성원 검색 스크린샷

  6. 구성원 선택 아래에 선택한 ID가 표시되는지 확인하고 다음을 선택합니다.

    VM2가 할당으로 추가된 Azure Portal의 할당 추가 페이지 스크린샷

  7. 할당 유형이 활성으로 설정되어 있고 영구 할당 옆의 확인란이 선택되어 있는지 확인합니다. VM2에 대해 시스템이 할당한 ID에 디렉터리 읽기 권한자 역할 권한 추가와 같은 비즈니스 타당성을 입력한 다음 할당을 선택하여 설정을 저장하고 디렉터리 읽기 권한자 | 할당 페이지로 돌아갑니다.

    Azure Portal의 할당 추가 설정 스크린샷

  8. 디렉터리 읽기 권한자 | 할당 페이지에서 디렉터리 읽기 권한자 아래에 새로 추가된 ID가 표시되는지 확인합니다.

    역할에 추가된 VM 할당을 보여주는 Azure Portal의 디렉터리 읽기 권한자 페이지 스크린샷

앱 역할 사용 권한 추가

Azure PowerShell을 사용하여 관리 ID에 앱 역할을 부여할 수 있습니다. 이렇게 하려면 다음 단계를 수행합니다.

참고 항목

Azure AD 및 MSOnline PowerShell 모듈은 2024년 3월 30일부터 더 이상 사용되지 않습니다. 자세히 알아보려면 사용 중단 업데이트를 참조하세요. 이 날짜 이후에는 이러한 모듈에 대한 지원이 Microsoft Graph PowerShell SDK 및 보안 수정 사항에 대한 마이그레이션 지원으로 제한됩니다. 사용되지 않는 모듈은 2025년 3월 30일까지 계속 작동합니다.

Microsoft Entra ID(마이그레이션의 Azure AD)와 상호 작용하려면 Microsoft Graph PowerShell으로 마이그레이션하는 것이 좋습니다. 일반적인 마이그레이션 관련 질문은 마이그레이션 FAQ를 참조하세요. 참고: MSOnline 버전 1.0.x는 2024년 6월 30일 이후 중단될 수 있습니다.

  1. Microsoft Graph 검색

    $AAD_SP = Get-AzureADServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'"
    
  2. 관리 ID를 검색합니다.

    $MSI = Get-AzureADServicePrincipal -Filter "DisplayName eq '<your managed identity display name>'"
    
  3. ID에 User.Read.All 역할을 할당합니다.

    $AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "User.Read.All"}
    New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  
    -ResourceId $AAD_SP.ObjectId  -Id $AAD_AppRole.Id
    
  4. ID에 GroupMember.Read.All 역할을 할당합니다.

    $AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "GroupMember.Read.All"}  
    New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  
    -ResourceId $AAD_SP.ObjectId  -Id $AAD_AppRole.Id 
    
  5. ID에 Application.Read.All 역할을 할당합니다.

    $AAD_AppRole = $AAD_SP.AppRoles | Where-Object {$_.Value -eq "Application.Read.All"}  
    New-AzureADServiceAppRoleAssignment -ObjectId $MSI.ObjectId  -PrincipalId $MSI.ObjectId  
    -ResourceId $AAD_SP.ObjectId  -Id $AAD_AppRole.Id 
    

다음을 수행하여 관리 ID에 권한이 할당되었는지 확인할 수 있습니다.

  1. Azure Portal에서 Microsoft Entra ID로 이동합니다.
  2. 엔터프라이즈 애플리케이션을 선택하고 관리에서 모든 애플리케이션을 선택합니다.
  3. Managed identities애플리케이션 유형을 필터링합니다.
  4. 관리 ID를 선택한 다음 보안에서 권한을 선택합니다. User.Read.All, GroupMember.Read.All, Application.Read.All 권한이 표시되어야 합니다.

아웃바운드 통신 사용

Microsoft Entra 인증이 작동하려면 다음이 필요합니다.

  • SQL Server에서 Microsoft Entra ID 및 Microsoft Graph 엔드포인트로의 아웃바운드 통신
  • SQL 클라이언트에서 Microsoft Entra ID로의 아웃바운드 통신

기본 Azure VM 구성은 Microsoft Graph 엔드포인트와 Microsoft Entra ID에 대한 아웃바운드 통신을 허용하지만 일부 사용자는 OS 수준 방화벽 또는 Azure VNet NSG(네트워크 보안 그룹)를 사용하여 아웃바운드 통신을 제한하도록 선택합니다.

SQL Server VM과 SQL 클라이언트의 방화벽은 포트 80 및 443에서 아웃바운드 트래픽을 허용해야 합니다.

SQL Server VM을 호스트하는 VNet에 대한 Azure VNet NSG 규칙에는 다음이 있어야 합니다.

  • AzureActiveDirectory의 서비스 태그
  • 대상 포트 범위: 80, 443
  • 허용으로 설정된 작업
  • 높은 우선 순위(낮은 숫자)

Microsoft Entra 인증 사용

Azure Portal 또는 Azure CLI를 사용하여 SQL Server VM에 Microsoft Entra 인증을 사용하도록 설정할 수 있습니다.

참고 항목

Microsoft Entra 인증을 사용하도록 설정한 후에는 이 섹션의 동일한 단계에 따라 다른 관리 ID를 사용하도록 구성을 변경할 수 있습니다.

SQL Server VM에 Microsoft Entra 인증을 사용하도록 설정하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 SQL 가상 머신 리소스로 이동합니다.

  2. 보안에서 보안 구성을 선택합니다.

  3. Microsoft Entra 인증에서 사용을 선택합니다.

  4. 드롭다운에서 관리 ID 유형(시스템 할당 또는 사용자 할당)을 선택합니다. 사용자 할당을 선택하는 경우 표시되는 사용자가 할당한 관리 ID 드롭다운에서 Azure VM 기반 SQL Server에 인증하는 데 사용할 ID를 선택합니다.

    Microsoft Entra 인증이 선택된 Azure Portal의 SQL VM에 대한 보안 구성 페이지 스크린샷

Microsoft Entra 인증을 사용하도록 설정한 후에는 동일한 단계에 따라 SQL Server VM에 인증할 수 있는 관리 ID를 변경할 수 있습니다.

참고 항목

The selected managed identity does not have enough permissions for Microsoft Entra authentication 오류는 선택한 ID에 권한이 제대로 할당되지 않았음을 나타냅니다. 권한 부여 섹션을 확인하여 적절한 권한을 할당합니다.

제한 사항

다음 제한 사항을 고려하세요.

  • Microsoft Entra 인증은 SQL IaaS 에이전트 익스텐션에 등록되고 퍼블릭 클라우드에 배포된 Windows VM에서 실행되는 SQL Server 2022에서만 지원됩니다. 기본 인스턴스 또는 단일 명명된 인스턴스와 같이 SQL IaaS 에이전트 익스텐션의 지원되는 시나리오만 지원됩니다.
  • SQL Server에 인증하도록 선택하는 ID에는 Microsoft Entra ID의 디렉터리 읽기 권한자 역할 또는 User.Read.All, GroupMember.Read.AllApplication.Read.All이라는 세 가지 Microsoft Graph 애플리케이션 권한(앱 역할)이 있어야 합니다.
  • Microsoft Entra 인증을 사용하도록 설정하면 이를 사용하지 않도록 설정할 방법이 없습니다.
  • 현재 FIDO2 메서드를 사용하여 Microsoft Entra 인증을 통해 Azure VM 기반 SQL Server에 인증하는 것은 지원되지 않습니다.

다음 단계

SQL Server에 대한 보안 모범 사례를 검토합니다.

Azure VM 기반 SQL Server 실행과 관련된 다른 문서는 Azure 가상 머신 기반 SQL Server 개요를 참조하세요. SQL Server 가상 머신에 대한 질문이 있으면 질문과 대답을 참조하세요.

자세한 내용은 이 모범 사례 시리즈의 다른 문서를 참조하세요.