Azure SQL Database에서 서버에 대한 Virtual Network 서비스 엔드포인트 및 규칙 사용

적용 대상:Azure SQL 데이터베이스

가상 네트워크 규칙은 Azure SQL Database의 데이터베이스와 탄력적 풀에 대한 서버가 가상 네트워크 내 특정 서브넷에서 전송되는 통신을 허용하는지 여부를 제어하는 방화벽 보안 기능입니다. 이 글에서는 가상 네트워크 규칙이 SQL Database의 데이터베이스에 대한 통신을 안전하게 허용하는 데 때때로 가장 좋은 선택지인 이유를 설명합니다.

참고

이 글에서 서버는 Azure SQL Database 내 데이터베이스를 호스팅하는 논리적 서버를 의미합니다.

가상 네트워크 규칙을 만들려면 먼저 규칙이 참조할 가상 네트워크 서비스 엔드포인트가 있어야 합니다.

참고

Microsoft Entra ID는 이전에는 Azure Active Directory(Azure AD)로 알려졌습니다.

가상 네트워크 규칙 만들기

가상 네트워크 규칙만 생성하려는 경우 이 문서의 뒷부분에 있는 단계와 설명으로 바로 건너뛸 수 있습니다.

가상 네트워크 규칙에 대한 세부 정보

이 섹션에서는 가상 네트워크 규칙에 대한 여러 가지 세부 정보를 설명합니다.

단 하나의 지리적 지역

각 Virtual Network 서비스 엔드포인트는 하나의 Azure 지역에만 적용됩니다. 엔드포인트는 다른 지역이 서브넷의 통신을 수락하도록 허용하지 않습니다.

가상 네트워크 규칙은 기본 엔드포인트가 적용되는 지역으로 제한됩니다.

데이터베이스 수준이 아님, 서버 수준

각 가상 네트워크 규칙은 서버에 있는 하나의 특정 데이터베이스가 아니라 전체 서버에 적용됩니다. 즉, 가상 네트워크 규칙은 데이터베이스 수준이 아니라 서버 수준에서 적용됩니다.

반면, IP 규칙은 어느 수준에서든 적용될 수 있습니다.

보안 관리 역할

Virtual Network 서비스 엔드포인트 관리에는 보안 역할 분리가 있습니다. 다음 각 역할의 조치가 필요합니다.

  • 네트워크 관리자(네트워크 기여자 역할): 엔드포인트를 켭니다.
  • 데이터베이스 관리자(SQL Server 기여자 역할): ACL(액세스 제어 목록)을 업데이트하여 제공된 서브넷을 ACL에 추가합니다.

Azure RBAC 대안

네트워크 관리자 및 데이터베이스 관리자 역할에는 가상 네트워크 규칙을 관리하는 데 필요한 것보다 많은 기능이 포함됩니다. 그 기능 중 일부만 있으면 됩니다.

Azure에서 역할 기반 접근 제어(RBAC)를 사용해 필요한 기능만 가진 단일 커스텀 역할을 만들 수 있습니다. 네트워크 관리자나 데이터베이스 관리자를 참여시키는 대신 커스텀 역할을 사용할 수 있습니다. 사용자를 다른 두 주요 관리자 역할에 추가하는 것보다 커스텀 역할에 추가하는 경우 보안 노출 범위가 더 작습니다.

참고

일부 경우에 SQL Database의 데이터베이스 및 가상 네트워크 서브넷은 서로 다른 구독에 있습니다. 이러한 경우에는 다음과 같은 구성을 확실히 설정해야 합니다.

  • 서비스 엔드포인트를 사용하도록 설정하고 지정된 서버에 가상 네트워크 서브넷을 추가하는 등의 작업을 시작하는 데 필요한 권한이 사용자에게 있습니다.
  • 두 구독 모두에 Microsoft.Sql 공급자가 등록되어 있습니다.

제한 사항

SQL Database의 경우 가상 네트워크 규칙 기능에는 다음과 같은 제한 사항이 있습니다.

  • SQL Database에 대한 방화벽에서 각 가상 네트워크 규칙은 서브넷을 참조합니다. 이 참조된 모든 서브넷을 데이터베이스가 호스팅되는 동일한 지리적 영역 내에 호스팅해야 합니다.
  • 각 서버에는 가상 네트워크에 대해 최대 128개 ACL 항목이 포함될 수 있습니다.
  • 가상 네트워크 규칙은 Azure Resource Manager 가상 네트워크에만 적용되고 클래식 배포 모델 네트워크에는 적용되지 않습니다.
  • 방화벽에서는 IP 주소 범위가 다음 네트워킹 항목에 적용되지만, 가상 네트워크 규칙은 적용되지 않습니다:
  • 두 구독 모두 동일한 Microsoft Entra 테넌트에 있어야 합니다.

서비스 엔드포인트 사용 시 고려할 사항

SQL Database에 대한 서비스 엔드포인트를 사용하는 경우 다음 고려 사항을 검토합니다.

  • Azure SQL Database 공용 IP에 대한 아웃바운드 연결이 필요합니다. 연결을 허용하려면 SQL 데이터베이스 IP에 대해 네트워크 보안 그룹(NSG)을 열어야 합니다. SQL Database에 대한 NSG 서비스 태그를 사용하면 됩니다.

ExpressRoute

온-프레미스에서 ExpressRoute를 공용 피어링이나 Microsoft 피어링용으로 사용할 경우, 사용되는 NAT IP 주소를 식별해야 합니다. 공용 피어링의 경우 기본값으로 각 ExpressRoute 회로는 트래픽이 Microsoft Azure 네트워크 백본으로 들어갈 때 Azure 서비스 트래픽에 적용되는 두 개의 NAT IP 주소를 사용합니다. Microsoft 피어링의 경우, 고객 또는 서비스 제공자가 사용되는 NAT IP 주소를 제공합니다. 서비스 리소스에 대한 액세스를 허용하려면 리소스 IP 방화벽 설정에서 이러한 공용 IP 주소를 허용해야 합니다. 공용 피어링 ExpressRoute 회로 IP 주소를 찾으려면 Azure 포털을 통해 ExpressRoute에 지원 티켓을 엽니다. ExpressRoute 공용 피어링 및 Microsoft 피어링을 위한 NAT에 대한 자세한 내용은 Azure 퍼블릭 피어링에 대한 NAT 요구 사항을 참조하세요.

회로에서 SQL Database로의 통신을 허용하려면 NAT의 공용 IP 주소에 대한 IP 네트워크 규칙을 생성해야 합니다.

Azure Storage에서 가상 네트워크 서비스 엔드포인트 사용의 영향

Azure Storage는 스토리지 계정과의 연결을 제한하는 가상 네트워크 서비스 엔드포인트를 지원합니다. SQL 데이터베이스가 이 구성을 가진 계정을 사용한다면, 블롭 감사에 미치는 영향을 검토하세요.

Azure SQL Database의 blob storage 감사

Azure SQL 감사는 사용자 소유의 스토리지 계정에 SQL 감사 로그를 작성할 수 있습니다. 이 스토리지 계정이 가상 네트워크 서비스 엔드포인트 기능을 사용하는 경우 VNet 및 방화벽 뒤에 있는 스토리지 계정에 감사 로그를 쓰는 방법을(를) 참조하세요.

서버에 가상 네트워크 방화벽 규칙 추가

이 기능이 강화되기 전에는 방화벽에 활성 가상 네트워크 규칙을 구현하기 전에 가상 네트워크 서비스 엔드포인트를 켜야 했습니다. 엔드포인트는 지정된 가상 네트워크 서브넷을 SQL Database의 데이터베이스에 연결합니다. 2018년 1월 기준으로는 IgnoreMissingVNetServiceEndpoint 플래그를 설정하면 이 요구를 우회할 수 있습니다. 이제 가상 네트워크 서비스 엔드포인트를 설정하지 않고 서버에 가상 네트워크 방화벽 규칙을 추가할 수 있습니다.

방화벽 규칙을 설정하는 것만으로는 서버를 보호하는 데 도움이 되지 않습니다. 또한 보안을 적용하려면 가상 네트워크 서비스 엔드포인트를 활성화해야 합니다. 서비스 엔드포인트를 사용하도록 설정하면 전환을 끈 상태에서 켠 상태로 완료할 때까지 가상 네트워크 서브넷에서 가동 중지 시간이 발생합니다. 이 가동 중지 시간은 특히 대규모 가상 네트워크 환경에서 두드러집니다. 전환 중 다운타임을 줄이거나 없애기 위해 IgnoreMissingVNetServiceEndpoint 플래그를 사용할 수 있습니다.

PowerShell을 사용해 IgnoreMissingVNetServiceEndpoint 플래그를 설정할 수 있습니다. 자세한 내용은 PowerShell을 사용하여 SQL Database에 대한 가상 네트워크 서비스 엔드포인트 및 규칙 만들기를 참조하세요.

Azure Portal을 사용하여 가상 네트워크 규칙 만들기

이 섹션에서는 Azure Portal을 사용하여 SQL Database의 데이터베이스에 가상 네트워크 규칙을 생성하는 방법을 보여줍니다. 이 규칙은 데이터베이스가 가상 네트워크 서비스 엔드포인트로 태그한 특정 서브넷의 통신을 허용하도록 지시합니다.

참고

서버의 가상 네트워크 방화벽 규칙에 서비스 엔드포인트를 추가하려면, 먼저 서브넷에 서비스 엔드포인트가 활성화되어 있는지 확인하세요.

서브넷에 대해 서비스 엔드포인트가 설정되지 않은 경우 포털에서 해당 엔드포인트를 사용하도록 설정하라는 메시지가 표시됩니다. 규칙을 추가하는 동일한 창에서 사용 설정 버튼을 선택합니다.

필수 조건

SQL Database와 관련된 특정 가상 네트워크 서비스 엔드포인트 유형 이름으로 태그가 지정된 서브넷이 이미 있어야 합니다.

  • 관련 엔드포인트 유형 이름은 Microsoft.Sql입니다.
  • 서브넷이 형식 이름으로 태그되지 않았을 수 있는 경우에는 서브넷이 엔드포인트인지 확인을 참조하세요.

Azure portal에서의 단계

  1. Azure portal에 로그인하세요.

  2. SQL Server를 검색하여 선택한 다음, 서버를 선택합니다. 보안에서 네트워킹을 선택합니다.

  3. 퍼블릭 액세스 탭에서 공용 네트워크 액세스가 네트워크 선택으로 설정되어 있는지 확인합니다. 그렇지 않으면 가상 네트워크 설정이 숨겨집니다. 가상 네트워크 섹션에서 + 기존 가상 네트워크 추가를 선택합니다.

    네트워킹을 위한 논리 서버 속성을 보여 주는 스크린샷

  4. 새 만들기/업데이트 창에서 Azure 리소스 이름으로 상자를 채웁니다.

    팁

    서브넷의 정확한 주소 접두사를 포함해야 합니다. Portal에서 주소 접두사 값을 찾을 수 있습니다. 모든 리소스>모든 유형>가상 네트워크로 이동합니다. 필터는 가상 네트워크를 표시합니다. 가상 네트워크를 선택한 다음, 서브넷을 선택합니다. ADDRESS RANGE 열에 필요한 주소 접두사가 있습니다.

    새 규칙의 상자 채우기를 보여 주는 스크린샷.

  5. 방화벽 창에서 결과로 생성된 가상 네트워크 규칙을 참조하세요.

    방화벽 창에서 새 규칙을 보여 주는 스크린샷.

  6. Azure 서비스 및 리소스가 이 서버에 액세스하도록 허용을 아니요로 설정합니다.

    중요

    Azure 서비스 및 리소스가 이 서버에 액세스하도록 허용을 선택한 상태로 두면 서버는 Azure 경계 내의 모든 서브넷에서 통신을 수락합니다. 그 통신은 Azure 데이터센터용으로 정의된 범위에 속하는 것으로 인식되는 IP 주소 중 하나에서 시작됩니다. 컨트롤을 활성화된 상태로 두면 보안 관점에서 과도한 액세스가 발생할 수 있습니다. Microsoft Azure Virtual Network 서비스 엔드포인트 기능을 SQL Database의 가상 네트워크 규칙 기능과 함께 사용하여 보안 노출 영역을 줄일 수 있습니다.

  7. 창 아래쪽에 있는 확인 단추를 선택합니다.

참고

다음과 같은 하나 이상의 상태가 규칙에 적용됩니다.

  • 준비: 시작한 작업이 성공했음을 나타냅니다.
  • 실패: 시작한 작업이 실패했음을 나타냅니다.
  • 삭제됨: Delete 연산에만 적용되며 규칙이 삭제되어 더 이상 적용되지 않음을 나타냅니다.
  • InProgress: 작업이 진행 중임을 나타냅니다. 작업이 이 상태인 동안에는 이전 규칙이 적용됩니다.

PowerShell을 사용하여 가상 네트워크 규칙 만들기

스크립트를 사용하여 PowerShell cmdlet New-AzSqlServerVirtualNetworkRule이나 az network vnet create를 사용해 가상 네트워크 규칙을 만들 수 있습니다. 자세한 내용은 PowerShell을 사용하여 SQL Database에 대한 가상 네트워크 서비스 엔드포인트 및 규칙 만들기를 참조하세요.

REST API를 사용하여 가상 네트워크 규칙 만들기

내부적으로 SQL 가상 네트워크 작업에 대한 PowerShell cmdlet은 REST API를 호출합니다. REST API를 직접 호출할 수 있습니다. 자세한 내용은 가상 네트워크 규칙: 작업을 참조하세요.

오류 40914 및 40615 문제 해결

연결 오류 40914는 Azure Portal의 방화벽 창에서 지정한 대로 가상 네트워크 규칙과 관련이 있습니다.
오류 40615도 비슷하지만, 방화벽의 IP 주소 규칙 과 관련이 있습니다.

오류 40914

메시지 텍스트: "로그인에서 요청한 '[server-name]' 서버를 열 수 없습니다. 클라이언트는 서버에 액세스할 권한이 없습니다.

오류 설명: 클라이언트가 가상 네트워크 서버 엔드포인트가 있는 서브넷에 있습니다. 하지만 서버에는 서브넷이 데이터베이스와 통신할 권한을 부여하는 가상 네트워크 규칙이 없습니다.

오류 해결 방법: Azure Portal의 방화벽 창에서 가상 네트워크 규칙 제어를 사용하여 서브넷에 대한 가상 네트워크 규칙을 추가합니다.

오류 40615

메시지 텍스트: "로그인에서 요청된 서버 '{0}'을(를) 열 수 없습니다. IP 주소가 '{1}'인 클라이언트는 서버에 액세스할 수 없습니다."

오류 설명: 클라이언트가 서버에 연결할 권한이 없는 IP 주소에서 연결을 시도합니다. 서버 방화벽에 클라이언트가 주어진 IP 주소에서 데이터베이스로 통신하도록 허용하는 IP 주소 규칙이 없습니다.

오류 해결: 클라이언트의 IP 주소를 IP 규칙으로 입력합니다. 이 단계를 완료하려면 Azure 포털의 방화벽 창을 사용하세요.

Virtual Network service endpoints for Azure Synapse Analytics

자세한 내용은 Azure Synapse Analytics의 가상 네트워크 서비스 엔드포인트 및 규칙을 참조하세요.