다음을 통해 공유


Azure Cosmos DB for PostgreSQL의 퍼블릭 액세스

적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)

Azure Cosmos DB for PostgreSQL은 세 가지 네트워킹 옵션을 지원합니다.

  • 액세스 권한 없음
    • 퍼블릭 또는 프라이빗 액세스가 사용하도록 설정되지 않은 경우 새로 만들어진 클러스터의 기본값입니다. Azure 내부 또는 외부에 있는지에 관계없이 어떤 컴퓨터도 데이터베이스 노드에 연결할 수 없습니다.
  • 공용 액세스
    • 공용 IP 주소가 코디네이터 노드에 할당됩니다.
    • 코디네이터 노드에 대한 액세스는 방화벽으로 보호됩니다.
    • 필요에 따라 모든 작업자 노드에 대한 액세스를 사용하도록 설정할 수 있습니다. 이 경우 공용 IP 주소가 작업자 노드에 할당되고 동일한 방화벽으로 보호됩니다.
  • 프라이빗 액세스
    • 개인 IP 주소만 클러스터의 노드에 할당됩니다.
    • 각 노드에는 선택한 가상 네트워크의 호스트가 노드에 액세스할 수 있도록 프라이빗 엔드포인트가 필요합니다.
    • 네트워크 보안 그룹과 같은 Azure 가상 네트워크의 보안 기능을 액세스 제어에 사용할 수 있습니다.

클러스터를 만들 때 퍼블릭 또는 프라이빗 액세스를 사용하도록 설정하거나 기본값인 액세스 없음을 선택할 수 있습니다. 클러스터가 만들어지면 퍼블릭 또는 프라이빗 액세스 간에 전환하도록 선택하거나 한 번에 둘 다 활성화할 수 있습니다.

이 페이지에서는 퍼블릭 액세스 옵션에 대해 설명합니다. 프라이빗 액세스는 Azure Cosmos DB for PostgreSQL의 프라이빗 액세스를 참조하세요.

방화벽 개요

Azure Cosmos DB for PostgreSQL 서버 방화벽은 사용 권한이 있는 컴퓨터를 지정할 때까지 코디네이터 노드에 대한 모든 액세스를 차단합니다. 방화벽은 각 요청이 시작된 IP 주소의 서버에 대한 액세스를 허용합니다. 방화벽을 구성하려면 허용 가능한 IP 주소 범위를 지정하는 방화벽 규칙을 생성해야 합니다. 서버 수준의 방화벽 규칙을 만들 수 있습니다.

방화벽 규칙: 이 규칙을 사용하면 클라이언트가 코디네이터 노드, 즉 동일한 논리 서버 내의 모든 데이터베이스에 액세스할 수 있습니다. Azure Portal을 사용하여 서버 수준 방화벽 규칙을 구성할 수 있습니다. 서버 수준 방화벽 규칙을 만들려면 구독 소유자 또는 구독 참가자여야 합니다.

코디네이터 노드에 대한 모든 데이터베이스 액세스는 기본적으로 방화벽에서 차단됩니다. 다른 컴퓨터에서 서버를 사용하려면 해당 서버에 대한 액세스를 허용하는 하나 이상의 서버 수준 방화벽 규칙을 지정해야 합니다. 방화벽 규칙을 사용하여 허용할 인터넷에서의 IP 주소 범위를 지정합니다. Azure Portal 웹 사이트 자체에 대한 액세스는 이 방화벽 규칙의 영향을 받지 않습니다. 인터넷과 Azure로부터의 연결 시도를 하려면 다음 다이어그램과 같이 PostgreSQL Database에 연결하기 전에 먼저 방화벽을 통과해야 합니다.

원격 시스템과 로컬 시스템 간의 서버 수준 방화벽 규칙과 연결 실패를 보여 주는 다이어그램

인터넷 및 Azure에서 연결

클러스터 방화벽은 그룹의 코디네이터 노드에 연결할 수 있는 사용자를 제어합니다. 이 방화벽은 구성 가능한 규칙 목록을 참조하여 액세스 권한을 결정합니다. 각 규칙은 허용되는 IP 주소 또는 주소 범위입니다.

방화벽에서 연결을 차단하는 경우 애플리케이션 오류가 발생할 수 있습니다. 예를 들어 PostgreSQL JDBC 드라이버를 사용하면 다음과 같은 오류가 발생합니다.

java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: no pg\_hba.conf entry for host "123.45.67.890", user "citus", database "citus", SSL

규칙 정의 방법을 알아보려면 방화벽 규칙 만들기 및 관리를 참조하세요.

데이터베이스 서버 방화벽 문제 해결

Microsoft Azure Cosmos DB for PostgreSQL 서비스에 대한 액세스가 예상대로 동작하지 않는 경우 다음 사항을 고려합니다.

  • 허용 목록의 변경 내용이 아직 적용되지 않음: Azure Cosmos DB for PostgreSQL 방화벽 구성에 변경 내용이 적용되려면 최대 5분 정도 걸릴 수 있습니다.

  • 사용자에게 권한이 없거나 잘못된 암호가 사용됨: 사용자에게 서버에 대한 사용 권한이 없거나 잘못된 암호가 사용되어 서버 연결이 거부되었습니다. 방화벽 설정은 클라이언트에게 서버에 연결을 시도할 수 있는 기회를 제공합니다. 각 클라이언트는 꼭 필요한 보안 자격 증명을 제공해야 합니다.

    예를 들어 JDBC 클라이언트를 사용하는 경우 다음 오류가 나타날 수 있습니다.

    java.util.concurrent.ExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "yourusername"

  • 동적 IP 주소: 동적 IP 주소를 통해 인터넷에 연결되어 있고 방화벽을 통과하는 데 문제가 있는 경우 다음 해결 방법 중 하나를 시도할 수 있습니다.

    • 코디네이터 노드에 액세스하는 클라이언트 컴퓨터에 할당된 IP 주소 범위를 ISP(인터넷 서비스 공급자)에 문의한 다음, 해당 IP 주소 범위를 방화벽 규칙으로 추가합니다.

    • 클라이언트 컴퓨터 대신 고정 IP 지정을 가져온 다음 고정 IP 주소를 방화벽 규칙으로 추가합니다.

다음 단계

서버 수준 및 데이터베이스 수준 방화벽 규칙 만들기에 대한 문서를 보려면 다음을 참조하세요.