다음을 통해 공유


Azure DocumentDB에서 프라이빗 액세스 사용

Azure Private Link는 사용자가 지정된 프라이빗 엔드포인트를 통해 Azure DocumentDB에 연결할 수 있는 강력한 서비스입니다. 이 프라이빗 엔드포인트는 사용자 고유의 가상 네트워크 내 서브넷에 있는 개인 IP 주소로 구성됩니다. 엔드포인트를 사용하면 프라이빗 IP를 통해서만 Azure DocumentDB 제품에 대한 액세스를 제한할 수 있습니다. Private Link를 엄격한 NSG 정책과 통합하여 데이터 반출 위험을 크게 줄입니다. 프라이빗 엔드포인트에 대한 자세한 내용은 Azure Private Link란?을 확인하세요.

비고

Private Link는 연결을 보호합니다. 그러나 Azure DocumentDB 엔드포인트가 공용 DNS에 의해 확인되는 것을 방지하지는 않습니다. 들어오는 요청의 여과는 전송 또는 네트워크 수준이 아닌 애플리케이션 수준에서 처리됩니다.

Private Link는 가상 네트워크 내에서 또는 연결된 피어된 가상 네트워크에서 Azure DocumentDB에 액세스할 수 있는 유연성을 제공합니다. 또한 Private Link에 연결된 리소스는 VPN 또는 Azure ExpressRoute를 통해 프라이빗 피어링을 통해 온-프레미스에서 액세스할 수 있습니다.

연결을 설정하기 위해 Private Link를 사용하는 Azure DocumentDB는 자동 승인 및 수동 승인 방법을 모두 지원합니다.

필수 조건

  • Azure 구독

  • 기존 Azure DocumentDB 클러스터

Azure Portal을 사용하여 프라이빗 엔드포인트가 있는 클러스터 만들기

다음 단계에 따라 Azure Portal을 사용하여 프라이빗 엔드포인트를 사용하여 새 Azure DocumentDB 클러스터를 만듭니다.

  1. Azure Portal에 로그인한 다음, Azure Portal의 왼쪽 위 모서리에서 리소스 만들기 를 선택합니다.

  2. 리소스 만들기 페이지에서 데이터베이스를 선택한 다음, Azure DocumentDB를 선택합니다.

  3. API 선택 옵션 페이지의 MongoDB 타일에서 만들기를 선택합니다.

  4. 클러스터 리소스 유형을 선택합니다.

  5. Azure DocumentDB 클러스터 만들기 페이지에서 리소스 그룹을 선택하거나 만들고, 클러스터 이름 및 위치를 입력하고, 관리자 암호를 입력하고 확인합니다.

  6. 다음: 네트워킹을 선택합니다.

  7. 네트워킹 탭을 선택하고 연결 방법의 경우 프라이빗 액세스를 선택합니다.

  8. 프라이빗 엔드포인트 만들기 화면에서 다음을 위한 적절한 값을 입력하거나 선택합니다.

    Setting 가치
    리소스 그룹 리소스 그룹을 선택합니다.
    이름 프라이빗 엔드포인트의 이름을 입력합니다. 이 이름을 사용하는 경우 고유한 이름을 만듭니다.
    네트워크 인터페이스 이름 네트워크 인터페이스의 이름을 입력합니다. 이 이름을 사용하는 경우 고유한 이름을 만듭니다.
    위치 Private Link를 배포할 지역을 선택합니다. 가상 네트워크가 있는 동일한 위치에 프라이빗 엔드포인트를 만듭니다.
    리소스 종류 Microsoft.DocumentDB/mongoClusters를 선택합니다.
    대상 리소스 만든 Azure DocumentDB 리소스를 선택합니다.
    대상 하위 리소스 프라이빗 엔드포인트에 액세스할 수 있어야 하는 이전에 선택한 리소스에 대한 하위 리소스 유형을 선택합니다.
    가상 네트워크 가상 네트워크를 선택합니다.
    Subnet 서브넷을 선택합니다.
    프라이빗 DNS 영역과 통합 를 선택합니다. 프라이빗 엔드포인트에 비공개로 연결하려면 DNS 레코드가 필요합니다. 프라이빗 엔드포인트를 프라이빗 DNS 영역과 통합하는 것이 좋습니다. 가상 머신의 호스트 파일을 사용하여 사용자 고유의 DNS 서버를 사용하거나 DNS 레코드를 만들 수도 있습니다. 이 옵션을 예로 선택하면, 프라이빗 DNS 영역 그룹이 생성됩니다. DNS 영역 그룹은 프라이빗 DNS 영역과 프라이빗 엔드포인트 간의 링크입니다. 이 링크를 사용하면 프라이빗 엔드포인트에 대한 업데이트가 있을 때 프라이빗 DNS 영역을 자동으로 업데이트할 수 있습니다. 예를 들어 지역을 추가하거나 제거하면 프라이빗 DNS 영역이 자동으로 업데이트됩니다.
    구성 이름 구독 및 리소스 그룹을 선택합니다. 프라이빗 DNS 영역은 자동으로 결정됩니다. Azure Portal을 사용하여 변경할 수 없습니다.
  9. 확인선택합니다.

  10. 다음: 태그>검토 + 만들기를 선택합니다. 검토 + 만들기 페이지에서 만들기를 선택합니다.

기존 클러스터에서 프라이빗 액세스 사용

기존 클러스터의 노드에 대한 프라이빗 엔드포인트를 만들려면 클러스터의 네트워킹 페이지를 엽니다.

  1. 프라이빗 엔드포인트 추가를 선택합니다.

    네트워킹 화면에서 프라이빗 엔드포인트 추가를 선택하는 스크린샷.

  2. 프라이빗 엔드포인트 만들기 화면의 기본 탭에서 구독, 리소스 그룹지역을 확인합니다. 엔드포인트의 이름(예: my-cluster-1) 및 네트워크 인터페이스 이름(예: my-cluster-1-nic)을 입력합니다.

    비고

    달리 선택해야 하는 합당한 이유가 없는 한 클러스터와 일치하는 구독 및 지역을 선택하는 것이 좋습니다. 양식 필드의 기본값이 올바르지 않을 수 있습니다. 확인하고 필요한 경우 업데이트합니다.

  3. 다음: 리소스를 선택합니다. 리소스 종류에 대해 "Microsoft.DocumentDB/mongoClusters"를 선택하고 리소스의 대상 클러스터를 선택합니다. 대상 하위 리소스의 경우 "MongoCluster"를 선택합니다.

  4. 다음: Virtual Network를 선택합니다. 원하는 가상 네트워크서브넷을 선택합니다. 개인 IP 구성에서 정적 IP 주소 할당을 선택하거나 기본값인 동적 IP 주소 할당을 유지합니다.

  5. 다음: DNS를 선택합니다.

  6. 프라이빗 DNS 통합에서 프라이빗 DNS 영역과 통합에 대해 기본값인 를 유지하거나 아니요를 선택합니다.

비고

적절한 DNS 확인을 위해 클러스터에서 프라이빗 DNS 통합을 사용하도록 설정해야 합니다.

  1. 다음: 태그를 선택하고 원하는 태그를 추가합니다.

  2. Review + create를 선택합니다. 설정을 검토하고 만족하면 만들기를 선택합니다.

Azure CLI를 사용하여 프라이빗 엔드포인트 만들기

다음 Azure CLI 스크립트를 실행하여 기존 Azure DocumentDB 계정에 대한 myPrivateEndpoint 라는 프라이빗 엔드포인트를 만듭니다. 변수 값을 사용자 환경에 대한 세부 정보로 바꿉다.

# Resource group where the Azure DocumentDB account and virtual network resources are located  
ResourceGroupName="myResourceGroup" 

# Name of the existing Azure DocumentDB account  
ClusterName="myMongoCluster" 

# Subscription ID where the Azure DocumentDB account and virtual network resources are located  
SubscriptionId="<your Azure subscription ID>"  

# API type of your Azure DocumentDB account: Sql, SqlDedicated, MongoCluster, Cassandra, Gremlin, or Table 
SubResourceType="MongoCluster"  

# Name of the virtual network to create  
VNetName="myVnet"  

# Name of the subnet to create  
SubnetName="mySubnet"  

# Name of the private endpoint to create  
PrivateEndpointName="myPrivateEndpoint"  

# Name of the private endpoint connection to create 
PrivateConnectionName="myConnection" 

az network vnet create \
  --name $VNetName \
  --resource-group $ResourceGroupName \
  --subnet-name $SubnetName 

az network vnet subnet update \
  --name <name> \
  --resource-group $ResourceGroupName \
  --vnet-name $VNetName \
  --disable-private-endpoint-network-policies true 

az network private-endpoint create \
  --name $PrivateEndpointName \
  --resource-group $ResourceGroupName \
  --vnet-name $VNetName \
  --subnet $SubnetName \
  --private-connection-resource-id "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.DocumentDB/mongoClusters/$ClusterName" \
  --group-ids MongoCluster --connection-name $PrivateConnectionName 

프라이빗 엔드포인트를 프라이빗 DNS 영역과 통합

프라이빗 엔드포인트를 만든 후에는 다음 Azure CLI 스크립트를 사용하여 프라이빗 DNS 영역과 통합해야 합니다.

비고

적절한 DNS 확인을 위해 클러스터에서 프라이빗 DNS 통합을 사용하도록 설정해야 합니다.

#Zone name differs based on the API type and group ID you are using. 
zoneName="privatelink.mongocluster.cosmos.azure.com" 

az network private-dns zone create \
  --resource-group $ResourceGroupName \
  --name $zoneName 

az network private-dns link vnet create --resource-group $ResourceGroupName \
  --zone-name $zoneName \
  --name <dns-link-name> \
  --virtual-network $VNetName \
  --registration-enabled false 

#Create a DNS zone group
az network private-endpoint dns-zone-group create \
  --resource-group $ResourceGroupName \
  --endpoint-name <pe-name> \
  --name <zone-group-name> \
  --private-dns-zone $zoneName \
  --zone-name mongocluster 

연결할 연결 문자열 가져오기

항상 mongodb+srv 연결 문자열을 사용하여 개인 IP 주소가 Azure DocumentDB 클러스터에 할당된 프라이빗 엔드포인트에 접근할 수 있는 클라이언트로부터 데이터베이스에 연결하세요.

  1. 기존 Azure DocumentDB 클러스터를 선택합니다.
  2. 클러스터 사이드바의 설정에서 연결 문자열을 선택합니다.
  3. 네이티브 DocumentDB 인증 또는 Microsoft Entra ID 인증을 위해 전역 읽기-쓰기 또는 자체 연결 문자열을 복사합니다.

비고

복제본 클러스터에서는 자체 연결 문자열만 제공됩니다.

  1. 애플리케이션 또는 관리 도구에서 복사한 연결 문자열을 사용하여 클러스터에 연결합니다.
az network private-link-resource list \
  -g <rg-name> \
  -n <resource-name> \
  --type Microsoft.DocumentDB/mongoClusters 

프라이빗 엔드포인트 연결 확인 및 문제 해결

Azure DocumentDB 클러스터에 대한 프라이빗 엔드포인트를 만든 후에는 DNS 확인이 올바르게 작동하고 애플리케이션이 프라이빗 엔드포인트를 통해 연결할 수 있는지 확인하는 것이 중요합니다.

프라이빗 엔드포인트 상태 확인

먼저 프라이빗 엔드포인트가 제대로 프로비전되고 연결되어 있는지 확인합니다.

  1. Azure Portal에서 Azure DocumentDB 클러스터로 이동합니다.
  2. 클러스터 사이드바의 설정에서 네트워킹을 선택합니다.
  3. 프라이빗 엔드포인트가 승인됨 상태의 목록에 표시되는지 확인합니다.
  4. 프라이빗 엔드포인트 이름을 선택하여 할당된 개인 IP 주소를 포함하여 세부 정보를 봅니다.

Azure CLI를 사용하여 프라이빗 엔드포인트 상태를 확인할 수도 있습니다.

az network private-endpoint show \
  --resource-group $ResourceGroupName \
  --name $PrivateEndpointName

DNS 확인 테스트

Azure DocumentDB는 연결 문자열 형식을 사용할 때 서비스 검색에 SRV 레코드를 mongodb+srv 사용합니다. DNS 확인이 제대로 작동하는지 확인하려면 동일한 가상 네트워크 또는 피어된 네트워크 내의 가상 머신 또는 리소스에서 DNS 확인을 테스트합니다.

Windows DNS 테스트

가상 네트워크에 연결된 Windows 컴퓨터에서 다음 명령을 사용합니다.

  1. SRV 레코드 해결을 테스트합니다.

    Resolve-DnsName -Name _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com -Type SRV
    

    출력에는 프라이빗 DNS 영역 내의 클러스터 노드를 가리키는 SRV 레코드가 표시됩니다.

  2. 개별 노드 호스트 이름을 확인하여 개인 IP 주소로 확인되는지 확인합니다.

    Resolve-DnsName -Name <your-node-hostname>.mongocluster.cosmos.azure.com
    

    출력에는 공용 IP 주소 대신 개인 IP 주소(예: 10.x.x.x)가 표시됩니다.

  3. 대안으로 사용 nslookup :

    nslookup -type=SRV _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com
    nslookup <your-node-hostname>.mongocluster.cosmos.azure.com
    

Linux 및 macOS DNS 테스트

가상 네트워크에 연결된 Linux 또는 macOS 컴퓨터에서 다음 명령을 사용합니다.

  1. SRV 레코드가 제대로 확인되는지 테스트합니다.

    dig _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com SRV
    

    출력은 클러스터 노드를 가리키는 대상이 있는 SRV 레코드를 표시해야 합니다.

  2. 개별 노드 호스트 이름을 확인합니다.

    dig <your-node-hostname>.mongocluster.cosmos.azure.com
    

    A 레코드는 가상 네트워크의 주소 공간에 있는 개인 IP 주소로 매핑되어야 합니다.

  3. 대안으로 사용 nslookup :

    nslookup -type=SRV _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com
    nslookup <your-node-hostname>.mongocluster.cosmos.azure.com
    

일반적인 문제 해결 시나리오

연결 문제가 발생하는 경우 다음을 확인합니다.

DNS 확인이 실패하거나 공용 IP 주소를 반환합니다.

  • 프라이빗 DNS 영역이 가상 네트워크에 올바르게 연결되어 있는지 확인합니다.
  • 프라이빗 엔드포인트에서 DNS 영역 그룹이 제대로 구성되었는지 확인합니다.
  • 가상 네트워크의 DNS 설정이 Azure에서 제공하는 DNS(168.63.129.16) 또는 Azure DNS에 쿼리를 전달하는 사용자 지정 DNS 서버를 사용하도록 설정되어 있는지 확인합니다.
  • 가상 네트워크 내의 리소스 또는 제대로 피어된 네트워크에서 테스트하고 있는지 확인합니다.

연결 시간 제한 또는 실패

  • 서브넷의 NSG(네트워크 보안 그룹) 규칙이 포트 27017(MongoDB 기본 포트)에서 아웃바운드 연결을 허용하는지 확인합니다.
  • 프라이빗 엔드포인트의 네트워크 인터페이스에 올바른 개인 IP 주소가 할당되어 있는지 확인합니다.
  • 애플리케이션 또는 클라이언트가 올바른 연결 문자열 형식(mongodb+srv)을 사용하고 있는지 확인합니다.
  • Azure DocumentDB 클러스터의 방화벽 규칙에서 프라이빗 엔드포인트의 연결을 허용하는지 확인합니다.

프라이빗 DNS 영역이 확인되지 않음

  • 프라이빗 DNS 영역 이름이 예상 형식과 일치하는지 확인합니다 privatelink.mongocluster.cosmos.azure.com.
  • 클러스터 노드에 대한 프라이빗 DNS 영역에 레코드가 있는지 확인합니다.
  • 가상 네트워크 링크가 활성 상태이고 프라이빗 DNS 영역에서 제대로 구성되었는지 확인합니다.

프라이빗 엔드포인트 세부 정보 보기

프라이빗 엔드포인트 구성에 대한 자세한 정보를 보려면 다음 Azure CLI 명령을 사용합니다.

az network private-endpoint show \
  --resource-group $ResourceGroupName \
  --name $PrivateEndpointName \
  --query '{Name:name, PrivateIpAddress:customDnsConfigs[0].ipAddresses[0], FQDN:customDnsConfigs[0].fqdn, ProvisioningState:provisioningState}' \
  --output table

이 명령은 개인 IP 주소, FQDN(정규화된 도메인 이름) 및 프로비전 상태를 포함한 주요 정보를 표시합니다.