다음을 통해 공유


Azure Database for PostgreSQL - 유연한 서버의 개인 액세스(가상 네트워크 통합)를 사용하는 네트워크

적용 대상: Azure Database for PostgreSQL - 유연한 서버

이 문서에서는 Azure Database for PostgreSQL - 유연한 서버에 대한 연결 및 네트워킹 개념을 설명합니다.

Azure Database for PostgreSQL 유연한 서버를 만들 때에는 다음 네트워킹 옵션 중 하나를 선택해야 합니다.

  • 프라이빗 액세스(가상 네트워크 통합)
  • 공용 액세스(허용된 IP 주소) 및 프라이빗 엔드포인트

이 문서에서는 개인 액세스(가상 네트워크 통합) 네트워킹 옵션에 대해 설명합니다.

프라이빗 액세스(가상 네트워크 통합)

가상 네트워크 삽입을 사용하여 Azure 가상 네트워크에 Azure Database for PostgreSQL 유연한 서버를 배포할 수 있습니다. Azure 가상 네트워크는 프라이빗하고 안전한 네트워크 통신을 제공합니다. 가상 네트워크의 리소스는 이 네트워크에 할당된 개인 IP 주소를 통해 통신할 수 있습니다.

다음 기능을 원하는 경우 이 네트워킹 옵션을 선택합니다.

  • 개인 IP 주소를 사용하여 동일한 가상 네트워크의 Azure 리소스에서 Azure Database for PostgreSQL 유연한 서버에 연결합니다.
  • VPN 또는 Azure ExpressRoute를 사용하여 비 Azure 리소스에서 Azure Database for PostgreSQL 유연한 서버에 연결합니다.
  • Azure Database for PostgreSQL 유연한 서버에 인터넷을 통해 액세스할 수 있는 공용 엔드포인트가 없는지 확인합니다.

가상 네트워크 간에 피어링이 작동하는 방식을 보여 주는 다이어그램으로, 이 중 하나에는 Azure Database for PostgreSQL 유연한 서버가 포함되어 있습니다.

위의 다이어그램에서:

  • Azure Database for PostgreSQL 유연한 서버는 VNet-1 가상 네트워크의 서브넷 10.0.1.0/24에 삽입됩니다.
  • 동일한 가상 네트워크 내의 다른 서브넷에 배포된 응용 프로그램은 Azure Database for PostgreSQL 유연한 서버에 직접 액세스할 수 있습니다.
  • 다른 가상 네트워크(VNet-2)에 배포된 응용 프로그램은 Azure Database for PostgreSQL 유연한 서버에 직접 액세스할 수 없습니다. 유연한 서버에 액세스하려면 먼저 프라이빗 DNS 영역에 대한 가상 네트워크 피어링을 수행해야 합니다.

가상 네트워크 개념

Azure Virtual Network에는 사용자가 사용하도록 구성된 개인 IP 주소 공간이 포함되어 있습니다. 가상 네트워크는 Azure Database for PostgreSQL 유연한 서버와 동일한 Azure 지역에 있어야 합니다. 가상 네트워크에 대한 자세한 내용은 Azure Virtual Network 개요를 참조하세요.

다음은 리소스가 Azure Database for PostgreSQL 유연한 서버를 사용하여 가상 네트워크와 통합되는 가상 네트워크를 사용할 때 숙지해야 할 개념입니다.

  • 위임된 서브넷: 가상 네트워크에는 서브넷(서브네트워크)이 포함됩니다. 서브넷을 사용하면 가상 네트워크를 더 작은 주소 공간으로 분할할 수 있습니다. Azure 리소스는 가상 네트워크 내의 특정 서브넷에 배포됩니다.

    가상 네트워크에 통합된 Azure Database for PostgreSQL 유연한 서버는 위임된 서브넷에 있어야 합니다. 즉, Azure Database for PostgreSQL 유연한 서버만 해당 서브넷을 사용할 수 있습니다. 다른 Azure 리소스 유형은 위임된 서브넷에 있을 수 없습니다. 서브넷의 위임 속성을 Microsoft.DBforPostgreSQL/flexibleServers로 할당하여 서브넷을 위임합니다.

    서브넷에 지정할 수 있는 최소 CIDR 범위는 /28로, 16개의 IP 주소를 제공합니다. 네트워크 또는 서브넷의 첫 번째 주소와 마지막 주소는 개별 호스트에 할당할 수 없습니다. Azure는 위에서 언급한 호스트에 할당할 수 없는 2개의 IP를 포함하여 Azure 네트워킹에서 내부적으로 활용할 5개의 IP를 예약합니다. 그러면 /28 CIDR 범위에서 사용할 수 있는 IP 주소는 11개가 됩니다. 고가용성 기능을 갖춘 단일 Azure Database for PostgreSQL 유연한 서버는 네 개의 주소를 활용합니다.

    복제 및 Microsoft Entra 연결의 경우, 경로 테이블이 트래픽에 영향을 미치지 않는지 확인합니다. 일반적인 패턴은 Azure Firewall 또는 사용자 지정 온-프레미스 네트워크 필터링 어플라이언스를 통해 모든 아웃바운드 트래픽을 라우팅하는 것입니다.

    서브넷에 모든 트래픽을 가상 어플라이언스로 라우팅하는 규칙과 연결된 경로 테이블이 있는 경우:

    • 대상 서비스 태그 AzureActiveDirectory 와 다음 홉 Internet을(를) 사용하여 규칙을 추가합니다.
    • 대상 IP 범위가 Azure Database for PostgreSQL - 유연한 서버 서브넷 범위와 동일하고 다음 홉 Virtual Network이(가) 있는 규칙을 추가합니다.

    Important

    AzureFirewallSubnet, AzureFirewallManagementSubnet, AzureBastionSubnetGatewaySubnet 이름은 Azure 내에 예약되어 있습니다. 이들 중 어느 것도 서브넷 이름으로 사용하지 마세요. 또한 가상 네트워크에는 지역 간 복제본을 만들기 위한 겹치는 주소 공간이 없어야 합니다.

  • NSG(네트워크 보안 그룹): NSG의 보안 규칙을 사용하면 가상 네트워크 서브넷 및 네트워크 인터페이스 내외부로 이동할 수 있는 네트워크 트래픽 유형을 필터링할 수 있습니다. 자세한 내용은 NSG 개요를 참조하세요.

    ASG(애플리케이션 보안 그룹)를 사용하면 플랫 네트워크에 NSG를 사용하여 Layer-4 보안을 쉽게 제어할 수 있습니다. 다음 작업을 빠르게 수행할 수 있습니다.

    • 가상 머신을 ASG에 조인시키거나 ASG에서 가상 머신을 제거합니다.
    • 해당 가상 머신에 규칙을 동적으로 적용하거나 해당 가상 머신에서 규칙을 제거합니다.

    자세한 내용은 ASG 개요를 참조하세요.

    현재 ASG가 Azure Database for PostgreSQL - 유연한 서버를 사용한 규칙의 일부인 NSG는 지원하지 않습니다. 현재 NSG에서 IP 기반 원본 또는 대상 필터링을 사용하는 것이 좋습니다.

    Azure Database for PostgreSQL - 유연한 서버의 고가용성 기능 및 다른 기능을 사용하려면 Azure Database for PostgreSQL - 유연한 서버가 배포된 Azure 가상 네트워크 서브넷 내의 대상 포트 5432와 로그 보관용 Azure Storage로 트래픽을 송수신할 수 있어야 합니다. Azure Database for PostgreSQL 유연한 서버가 배포된 서브넷 내에서 들어오고 나가는 트래픽 흐름을 거부하는 NSG를 만드는 경우, 대상 포트 5432에 대한 트래픽을 허용하고 서비스 태그 Storage를 대상으로 사용하여 저장소에 대한 트래픽도 함께 허용해야 합니다.

    us-east.storage와(과) 같은 레이블에 Azure 지역을 추가하여 이 예외 규칙을 추가로 필터링할 수 있습니다. 또한 Microsoft Entra 인증을 사용하여 Azure Database for PostgreSQL 유연한 서버에 대한 로그인을 인증하고자 하는 경우, Microsoft Entra 서비스 태그를 사용하여 Microsoft Entra ID에 대한 아웃바운드 트래픽을 허용하세요.

    Azure 지역 전반에서 읽기 복제본을 설정할 때 Azure Database for PostgreSQL - 유연한 서버에는 기본 및 복제본 모두에 대해 대상 포트 5432로 송신 또는 수신할 수 있어야 하며, 기본 및 복제본 서버 모두에서 기본 지역 및 복제본 지역의 Azure Storage로 트래픽을 송신 또는 수신할 수 있어야 합니다. Storage에 필요한 대상 TCP 포트는 443입니다.

  • 프라이빗 DNS 통합: Azure 프라이빗 DNS 영역 통합을 통해 프라이빗 DNS 영역이 연결된 모든 지역 내 피어링된 가상 네트워크 또는 현재 가상 네트워크 내의 프라이빗 DNS를 확인할 수 있습니다.

프라이빗 DNS 영역 사용

Azure Private DNS는 가상 네트워크에 안정적이고 안전한 DNS 서비스를 제공합니다. Azure Private DNS는 사용자 지정 DNS 솔루션을 구성할 필요 없이 가상 네트워크의 도메인 이름을 관리하고 확인합니다.

Azure 가상 네트워크에서 개인 네트워크 액세스를 사용하는 경우 DNS 확인을 수행하려면 프라이빗 DNS 영역 정보를 반드시 제공해야 합니다. 개인 네트워크 액세스를 사용하여 새로운 Azure Database for PostgreSQL 유연한 서버를 만들려면 개인 액세스로 Azure Database for PostgreSQL 유연한 서버를 구성하는 동안 프라이빗 DNS 영역을 사용해야 합니다.

Important

다른 구독에서 프라이빗 DNS 영역을 사용하는 경우 해당 구독에는 반드시 Microsoft.DBforPostgreSQL 리소스 공급자도 등록되어 있어야 하며, 그렇지 않을 경우 Azure Database for PostgreSQL 유연한 서버 배포가 완료되지 않습니다.

API, ARM 템플릿(Azure Resource Manager 템플릿) 또는 Terraform을 사용하여 개인 네트워크 액세스로 새 Azure Database for PostgreSQL 유연한 서버를 만들려면 프라이빗 DNS 영역을 만듭니다. 이후 개인 액세스로 Azure Database for PostgreSQL 유연한 서버를 구성하는 동안 해당 영역을 사용합니다. 자세한 내용은 Azure용 REST API 사양을 참조하세요.

Azure Portal 또는 Azure CLI를 사용하여 Azure Database for PostgreSQL 유연한 서버를 만드는 경우 이전과 동일한 구독 또는 다른 구독에서 만든 프라이빗 DNS 영역 이름을 제공할 수 있으며, 또는 기본 프라이빗 DNS 영역이 구독에 자동으로 만들어집니다.

Azure API, ARM 템플릿 또는 Terraform을 사용하는 경우 .postgres.database.azure.com(으)로 끝나는 프라이빗 DNS 영역을 만듭니다. 개인 액세스로 Azure Database for PostgreSQL 유연한 서버를 구성하는 동안 해당 영역을 사용합니다. 예를 들어, [name1].[name2].postgres.database.azure.com 또는 [name].postgres.database.azure.com 형식을 사용합니다. [name].postgres.database.azure.com 형식을 사용하고자 하는 경우 이름은 Azure Database for PostgreSQL 유연한 서버 중 하나에 해당하는 이름을 사용할 수 없으며, 해당 이름을 사용할 경우 프로비전 중에 오류 메시지가 표시됩니다. 자세한 내용은 프라이빗 DNS 영역 개요를 참조하세요.

Azure Portal, API, Azure CLI 또는 ARM 템플릿을 사용하는 경우 프라이빗 DNS 영역을 Azure Database for PostgreSQL 유연한 서버를 만들 때 제공한 영역을 동일한 구독 또는 다른 구독이 있는 다른 프라이빗 DNS 영역으로 변경할 수도 있습니다.

Important

현재 고가용성 기능아 활성화된 서버에서는 Azure Database for PostgreSQL 유연한 서버를 만들 때 제공한 프라이빗 DNS 영역을 다른 프라이빗 DNS 영역으로 변경하는 기능은 사용할 수 없습니다.

Azure에서 프라이빗 DNS 영역을 만든 후에는 가상 네트워크를 연결해야 합니다. 연결되면 해당 가상 네트워크에 호스트된 리소스는 프라이빗 DNS 영역에 액세스할 수 있습니다.

Important

프라이빗 네트워킹을 사용하여 Azure Database for PostgreSQL - 유연한 서버에 대한 서버를 만들 때 가상 네트워크 링크 존재의 유효성을 더 이상 검사하지 않습니다. 포털을 통해 서버를 만들 때, Azure Portal의 가상 네트워크에 프라이빗 DNS 영역 연결 확인란을 통해 서버 생성 시 고객에게 링크를 만들 수 있는 선택권을 제공합니다.

영역 데이터를 전역적으로 사용할 수 있으므로 DNS 프라이빗 영역은 지역 가동 중단에 복원력이 있습니다. 프라이빗 영역의 리소스 레코드는 지역 간에 자동으로 복제됩니다. Azure 프라이빗 DNS는 가용성 영역의 기본 영역인 영역 중복 서비스입니다. 자세한 내용은 가용성 영역이 지원되는 Azure 서비스를 참조하세요.

사용자 지정 DNS 서버와 통합

사용자 지정 DNS 서버를 사용하는 경우에는 DNS 전달자를 사용하여 Azure Database for PostgreSQL - 유연한 서버의 FQDN을 확인해야 합니다. 전달자 IP 주소는 168.63.129.16이어야 합니다.

사용자 지정 DNS 서버는 가상 네트워크 내부에 있거나 가상 네트워크의 DNS 서버 설정을 통해 연결할 수 있어야 합니다. 자세한 내용은 자체 DNS 서버를 사용하는 이름 확인을 참조하세요.

프라이빗 DNS 영역 및 가상 네트워크 피어링

프라이빗 DNS 영역 설정과 가상 네트워크 피어링은 서로 독립적입니다. 동일한 지역 또는 다른 지역의 다른 가상 네트워크에 프로비전된 클라이언트에서 Azure Database for PostgreSQL 유연한 서버에 연결하려면 프라이빗 DNS 영역을 가상 네트워크와 연결해야 합니다. 자세한 내용은 가상 네트워크 연결을 참조하세요.

참고 항목

postgres.database.azure.com(으)로 끝나는 프라이빗 DNS 영역 이름만 연결할 수 있습니다. DNS 영역 이름은 Azure Database for PostgreSQL 유연한 서버와 동일할 수 없습니다. 그렇지 않을 경우 이름 확인이 실패합니다.

서버 이름을 DNS 레코드에 매핑하려면 Azure PowerShell 또는 Bash를 사용하여 Azure Cloud Shell에서 nslookup 명령을 실행합니다. 다음 예제에서 <server_name> 매개 변수를 서버 이름으로 바꿔 입력합니다.

nslookup -debug <server_name>.postgres.database.azure.com | grep 'canonical name'

허브 및 스포크 개인 네트워킹 디자인 사용

허브 앤 스포크는 일반적인 통신 또는 보안 요구 사항을 효율적으로 관리하기 위한 널리 사용되는 네트워킹 모델입니다.

허브는 외부 연결을 관리하기 위한 중앙 위치의 역할을 하는 가상 네트워크입니다. 또한 여러 워크로드에서 사용하는 서비스를 호스팅합니다. 허브는 스포크와의 모든 통신을 조정합니다. 보안과 같은 IT 규칙 또는 프로세스는 트래픽을 검사하고, 라우팅하며 중앙에서 관리할 수 있습니다. 스포크는 워크로드를 호스트하고 가상 네트워크 피어링을 통해 중앙 허브에 연결되는 가상 네트워크입니다. 공유 서비스는 스포크 공유를 위한 자체 서브넷에서 호스팅됩니다. 경계 서브넷은 보안 어플라이언스 역할을 합니다.

스포크는 Azure에서 개별 워크로드를 격리하는 데 사용되는 가상 네트워크이기도 합니다. 온-프레미스 본사와 Azure 간의 트래픽 흐름은 허브 가상 네트워크에 연결된 Azure ExpressRoute 또는 사이트 간 VPN을 통해 연결됩니다. 스포크에서 허브로의 가상 네트워크는 피어링되어 온-프레미스 리소스와 통신합니다. 허브 및 각 스포크를 별도 구독 또는 리소스 그룹에서 구현할 수 있습니다.

스포크 가상 네트워크를 서로 연결하는 데는 세 가지 주요 패턴이 있습니다.

  • 스포크는 서로 직접 연결됩니다: 허브 가상 네트워크를 트래버스하지 않고 직접 연결하기 위해 스포크 가상 네트워크 간에 가상 네트워크 피어링 또는 VPN 터널을 만듭니다.
  • 스포크는 네트워크 어플라이언스를 통해 통신합니다: 각 스포크 가상 네트워크에는 가상 WAN 또는 허브 가상 네트워크에 대한 피어링이 있습니다. 어플라이언스가 트래픽을 스포크로 라우팅합니다. 어플라이언스는 가상 WAN과 마찬가지로 Microsoft에서 관리하거나 사용자가 관리할 수 있습니다.
  • 가상 네트워크 게이트웨이가 허브 네트워크에 연결되며 사용자 정의 경로를 사용합니다: 스포크 간 통신을 활성화합니다.

Express 허브를 통한 하이브리드 연결이 포함된 기본 허브 및 스포크 아키텍처를 보여주는 다이어그램

Azure Virtual Network Manager를 사용하여 연결 및 보안 제어의 중앙 관리를 위해 새로운(기존 온보딩 포함) 허브 및 스포크 가상 네트워크 토폴로지를 만듭니다.

다른 지역의 개인 네트워크 클라이언트와의 통신

고객이 서로 다른 Azure 지역의 클라이언트에 연결해야 하는 경우가 많습니다. 구체적으로 이 질문은 일반적으로 서로 다른 지역에 있는 두 개의 가상 네트워크(하나는 Azure Database for PostgreSQL - 유연한 서버 포함, 다른 하나는 다른 응용 프로그램 클라이언트 포함)을 연결하는 방법으로 좁혀집니다.

이러한 연결을 달성하는 방법에는 다음과 같이 여러 가지가 있습니다.

  • 글로벌 가상 네트워크 피어링. 서로 다른 지역의 네트워크를 서로 연결하는 가장 쉬운 방법으로, 가장 일반적으로 사용됩니다. 글로벌 가상 네트워크 피어링에서는 두 개의 피어링된 가상 네트워크 간에 Azure 백본을 통해 직접 연결을 만듭니다. 이러한 방식으로 연결에 가장 적합한 네트워크 처리량과 가장 낮은 대기 시간을 제공합니다. 가상 네트워크가 피어링되면 Azure는 자동으로 라우팅도 처리합니다. 이러한 가상 네트워크는 VPN 게이트웨이에 설정된 피어된 가상 네트워크의 모든 리소스와 통신할 수 있습니다.
  • 네트워크 간 연결. 가상 네트워크 간 연결(네트워크 간 연결)은 기본적으로 두 Azure 위치 간의 VPN입니다. 네트워크 간 연결은 VPN 게이트웨이에 설정됩니다. 글로벌 가상 네트워크 피어링과 달리 트래픽으로 인해 트래픽 홉 두 번 더 발생합니다. 또한 해당 방법에 비해 대기 시간이 늘어나고 대역폭이 낮아집니다.
  • 허브 및 스포크 아키텍처에서 네트워크 어플라이언스를 통한 통신. 스포크 가상 네트워크를 서로 직접 연결하는 대신 네트워크 어플라이언스를 사용하여 스포크 간에 트래픽을 전달할 수 있습니다. 네트워크 어플라이언스는 딥 패킷 검사 및 트래픽 구분 또는 모니터링과 같은 추가 네트워크 서비스를 제공하지만, 크기를 적절하게 조정하지 않으면 대기 시간 및 성능 병목 현상이 발생할 수 있습니다.

프라이빗 네트워킹을 사용하여 Azure 지역 및 가상 네트워크 간 복제

데이터베이스 복제는 중앙 또는 주 서버에서 복제본으로 알려진 여러 서버로 데이터를 복사하는 프로세스입니다. 주 서버는 읽기 및 쓰기 작업을 허용하지만 복제본은 읽기 전용 트랜잭션을 제공합니다. 주 서버와 복제본이 합쳐져서 데이터베이스 클러스터를 형성합니다. 데이터베이스 복제의 목표는 특히 트래픽이 많은 중요 업무용 애플리케이션에서 데이터의 중복성, 일관성, 고가용성 및 액세스 가능성을 보장하는 것입니다.

Azure Database for PostgreSQL - 유연한 서버는 기본 제공 읽기 복제본 기능을 통한 물리적 복제(예: 스트리밍)와 논리적 복제라는 두 가지 복제 방법을 제공합니다. 둘 다 서로 다른 사용 사례에 이상적이며 사용자는 최종 목표에 따라 다른 하나를 선택할 수 있습니다.

각 지역에 별도의 가상 네트워크가 있는 Azure 지역에서 복제하려면 가상 네트워크 피어링을 통해 또는 네트워크 어플라이언스를 통해 허브 및 스포크 아키텍처에서 제공할 수 있는 지역 가상 네트워크 경계 간 연결이 필요합니다.

기본적으로 DNS 이름 확인은 가상 네트워크로 범위가 지정됩니다. 하나의 가상 네트워크(VNET1)의 클라이언트는 다른 가상 네트워크(VNET2)의 Azure Database for PostgreSQL - 유연한 서버 FQDN을 확인할 수 없습니다.

이 문제를 해결하려면 VNET1의 클라이언트가 Azure Database for PostgreSQL - 유연한 서버 프라이빗 DNS 영역에 액세스할 수 있는지 확인해야 합니다. Azure Database for PostgreSQL 유연한 서버의 프라이빗 DNS 영역에 가상 네트워크 링크를 추가합니다.

지원되지 않는 가상 네트워크 시나리오

다음은 가상 네트워크 통합을 통해 만든 가상 네트워크 작업에 대한 몇 가지 제한 사항입니다.

  • Azure Database for PostgreSQL 유연한 서버를 가상 네트워크 및 서브넷에 배포한 후에는 다른 가상 네트워크 또는 서브넷으로 이동할 수 없습니다. 가상 네트워크를 다른 리소스 그룹 또는 구독으로 이동할 수 없습니다.
  • 서브넷에 리소스가 있으면 서브넷 크기(주소 공간)를 늘릴 수 없습니다.
  • 가상 네트워크 삽입 리소스는 기본적으로 Private Link와 상호 작용할 수 없습니다. 개인 네트워킹에 프라이빗 링크를 사용하려면 프라이빗 링크를 사용한 Azure Database for PostgreSQL - 유연한 서버 네트워킹을 참조하세요.

Important

Azure Resource Manager는 보안 제어로 리소스를 잠그는 기능을 지원합니다. 리소스 잠금은 리소스에 적용되며 모든 사용자 및 역할에 적용됩니다. 리소스 잠금에는 두 가지 유형으로 CanNotDelete와(과) ReadOnly이(가) 있습니다. 이러한 잠금 유형은 프라이빗 DNS 영역 또는 개별 레코드 집합에 적용할 수 있습니다.

프라이빗 DNS 영역 또는 개별 레코드 집합에 어떤 잠금 형식을 적용하더라도 Azure Database for PostgreSQL - 유연한 서버가 DNS 레코드를 업데이트하는 기능을 방해할 수 있습니다. 또한 기본에서 보조로의 고가용성 장애 조치(failover) 등 DNS에서 중요한 작업 중에 문제가 발생할 수 있습니다. 이러한 이유로, Azure Database for PostgreSQL - 유연한 서버에서 고가용성 기능을 사용할 때 DNS 프라이빗 영역 또는 레코드 잠금을 사용하고 있지 않은지 확인합니다.

호스트 이름

선택한 네트워킹 옵션에 관계없이 Azure Database for PostgreSQL 유연한 서버에 연결할 때는 항상 FQDN을 호스트 이름으로 사용하는 것이 좋습니다. 서버의 IP 주소는 고정적으로 유지된다는 보장이 없습니다. FQDN을 사용하면 연결 문자열을 변경하지 않아도 됩니다.

FQDN을 호스트 이름으로 사용하는 예는 hostname = servername.postgres.database.azure.com입니다. 가능하면 hostname = 10.0.0.4(프라이빗 주소) 또는 hostname = 40.2.45.67(퍼블릭 주소)은 사용하지 않습니다.