다음을 통해 공유


Azure CLI를 사용하여 Azure Database for MySQL - 유연한 서버에 대한 Private Link 만들기 및 관리

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

이 문서에서는 Azure CLI를 사용하여 VNet의 VM에서 Azure Database for MySQL 유연한 서버에 액세스하기 위한 프라이빗 엔드포인트를 만드는 방법을 알아봅니다.

Azure Cloud Shell 시작

Azure Cloud Shell은 이 문서의 단계를 실행하는 데 무료로 사용할 수 있는 대화형 셸입니다. 표준 Azure 도구가 사전 설치되어 있으며 계정과 함께 사용하도록 구성되어 있습니다.

Cloud Shell을 열려면 코드 블록의 오른쪽 위 모서리에 있는 사용해 보세요를 선택합니다. 또한 https://shell.azure.com/bash로 이동하여 별도의 브라우저 탭에서 Cloud Shell을 열 수도 있습니다. 복사를 선택하여 코드 블록을 복사하여 Cloud Shell에 붙여넣고, Enter를 선택하여 실행합니다.

CLI를 로컬로 설치하고 사용하려면 이 빠른 시작에서 Azure CLI 버전 2.0 이상이 필요합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드가 필요한 경우 Azure CLI 설치를 참조하세요.

필수 조건

az login 명령을 사용하여 계정에 로그인해야 합니다. Azure 계정에 대한 구독 ID를 참조하는 id 속성을 기록해 둡니다.

az login

az account set 명령을 사용하여 계정에 속한 특정 구독을 선택합니다. 명령에서 subscription 인수 값으로 사용할 az login 출력의 id 값을 사용합니다. 구독이 여러 개인 경우 리소스가 과금되어야 할 적절한 구독을 선택합니다. 모든 구독을 가져오려면 az account list를 사용합니다.

az account set --subscription <subscription id>

리소스 그룹 만들기

리소스를 만들기 전에 Virtual Network를 호스팅할 리소스 그룹을 만들어야 합니다. az group create를 사용하여 리소스 그룹을 만듭니다. 이 예제에서는 westeurope 위치에 myResourceGroup이라는 리소스 그룹을 만듭니다.

az group create --name myResourceGroup --location westeurope

Virtual Network 만들기

az network vnet create를 사용하여 Virtual Network를 만듭니다. 다음 예제에서는 mySubnet이라는 하나의 서브넷이 있는 myVirtualNetwork라는 기본 Virtual Network를 만듭니다.

az network vnet create \
 --name myVirtualNetwork \
 --resource-group myResourceGroup \
 --subnet-name mySubnet

서브넷 프라이빗 엔드포인트 정책 사용 안 함

Azure는 리소스를 가상 네트워크 내의 서브넷에 배포하므로 프라이빗 엔드포인트 네트워크 정책을 사용하지 않도록 서브넷을 만들거나 업데이트해야 합니다. az network vnet subnet update를 사용하여 mySubnet이라는 서브넷 구성을 업데이트합니다.

az network vnet subnet update \
 --name mySubnet \
 --resource-group myResourceGroup \
 --vnet-name myVirtualNetwork \
 --disable-private-endpoint-network-policies true

VM 만들기

az vm create를 사용하여 VM을 만듭니다. 메시지가 표시되면 VM에 대한 로그인 자격 증명으로 사용할 암호를 제공합니다. 다음 예제에서는 myVm이라는 VM을 만듭니다.

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image Win2019Datacenter

참고 항목

다음 단계에서 인터넷에서 연결하는 데 필요하므로 VM의 공용 IP 주소를 기록해 둡니다.

리소스 그룹에서 공용 액세스를 사용하여 Azure Database for MySQL 유연한 서버 인스턴스를 만듭니다.

공용 액세스가 가능한 Azure Database for MySQL 유연한 서버 인스턴스를 만들고 클라이언트 IP 주소를 추가하여 액세스합니다.

az mysql flexible-server create \
  --name mydemoserver \
  --resource-group myResourcegroup \
  --location westeurope \
  --admin-user mylogin \
  --admin-password <server_admin_password> \
  --public-access <my_client_ip>

참고 항목

경우에 따라 Azure Database for MySQL 유연한 서버 인스턴스와 VNet 서브넷이 서로 다른 구독에 있습니다. 이러한 경우에는 다음과 같은 구성을 확인해야 합니다.

  • 두 구독에 Microsoft.DBforMySQL/flexibleServer 리소스 공급자가 등록되어 있는지 확인합니다. 자세한 내용은 resource-manager-registration을 참조하세요.

프라이빗 엔드포인트 만들기

Virtual Network에서 Azure Database for MySQL 유연한 서버에 대한 프라이빗 엔드포인트를 만듭니다.

az network private-endpoint create \
    --name myPrivateEndpoint \
    --resource-group myResourceGroup \
    --vnet-name myVirtualNetwork  \
    --subnet mySubnet \
    --private-connection-resource-id $(az resource show -g myResourcegroup -n mydemoserver --resource-type "Microsoft.DBforMySQL/flexibleServers" --query "id" -o tsv) \
    --group-id mysqlServer \
    --connection-name myConnection \
    --location location

프라이빗 DNS 영역 구성

Azure Database for MySQL 유연한 서버 도메인에 대한 프라이빗 DNS 영역을 만들고 Virtual Network와의 연결 링크를 만듭니다.

az network private-dns zone create --resource-group myResourceGroup \
   --name  "privatelink.mysql.database.azure.com"
az network private-dns link vnet create --resource-group myResourceGroup \
   --zone-name  "privatelink.mysql.database.azure.com"\
   --name MyDNSLink \
   --virtual-network myVirtualNetwork \
   --registration-enabled false

# Query for the network interface ID
$networkInterfaceId=$(az network private-endpoint show --name myPrivateEndpoint --resource-group myResourceGroup --query 'networkInterfaces[0].id' -o tsv)

az resource show --ids $networkInterfaceId --api-version 2019-04-01 -o json
# Copy the content for privateIPAddress and FQDN matching the MySQL flexible server name

# Create DNS records
az network private-dns record-set a create --name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup
az network private-dns record-set a add-record --record-set-name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup -a <Private IP Address>

참고 항목

고객 DNS 설정의 FQDN은 구성된 개인 IP를 확인하지 않습니다. 여기에 표시된 대로 구성된 FQDN에 대한 DNS 영역을 설정해야 합니다.

인터넷에서 VM에 연결

다음과 같이 인터넷에서 myVm VM에 연결합니다.

  1. 포털의 검색 창에서 myVm을 입력합니다.

  2. 연결 단추를 선택합니다. 연결 단추를 선택하면 가상 머신에 연결이 열립니다.

  3. RDP 파일 다운로드를 선택합니다. Azure에서 원격 데스크톱 프로토콜(.rdp) 파일을 만들고, 컴퓨터에 다운로드합니다.

  4. downloaded.rdp 파일을 엽니다.

    1. 메시지가 표시되면 연결을 선택합니다.

. VM을 만들 때 지정한 사용자 이름과 암호를 입력합니다. > [!참고] >추가 선택 사항다른 계정 사용을 선택하여 VM을 만들 때 입력한 자격 증명을 지정해야 할 수도 있습니다.

  1. 확인을 선택합니다.

  2. 로그인 프로세스 중에 인증서 경고가 나타날 수 있습니다. 인증서 경고가 표시되면 또는 계속을 선택합니다.

  3. VM 데스크톱이 나타나면 이를 최소화하여 로컬 데스크톱으로 돌아갑니다.

VM에서 Azure Database for MySQL 유연한 서버 인스턴스에 비공개로 액세스

  1. myVM의 원격 데스크톱에서 PowerShell을 엽니다.

  2. nslookup mydemomysqlserver.privatelink.mysql.database.azure.com를 입력합니다.

    다음과 유사한 메시지가 표시됩니다.

    Server:  UnKnown
    Address:  168.63.129.16
    Non-authoritative answer:
    Name:    mydemomysqlserver.privatelink.mysql.database.azure.com
    Address:  10.1.3.4
    
  3. 사용 가능한 클라이언트를 사용하여 Azure Database for MySQL 유연한 서버 인스턴스에 대한 프라이빗 링크 연결을 테스트합니다. 다음 예에서는 MySQL Workbench를 사용하여 작업을 수행합니다.

  4. 새 연결에서 다음 정보를 입력하거나 선택합니다.

    설정
    연결 이름 원하는 연결 이름을 선택합니다.
    Hostname mydemoserver.privatelink.mysql.database.azure.com을 선택합니다.
    사용자 이름 Azure Database for MySQL 유연한 서버 인스턴스를 만드는 동안 제공된 username@servername으로 사용자 이름을 입력합니다.
    암호 Azure Database for MySQL 유연한 서버 인스턴스 만들기 중에 제공된 암호를 입력합니다.
  5. 연결을 선택합니다.

  6. 왼쪽 메뉴에서 데이터베이스를 찾아봅니다.

  7. (선택 사항) Azure Database for MySQL 유연한 서버 데이터베이스에서 정보를 만들거나 쿼리합니다.

  8. myVm에 대한 원격 데스크톱 연결을 닫습니다.

리소스 정리

더 이상 필요하지 않으면 az group delete를 사용하여 리소스 그룹과 여기에 포함된 모든 리소스를 제거할 수 있습니다.

az group delete --name myResourceGroup --yes

프라이빗으로 연결 가능한 하위 리소스 나열(groupIds)

az network private-link-resource list --id {PrivateLinkResourceID}  // or -g MyResourceGroup -n MySA --type Microsoft.Storage/storageAccounts

특정 리소스에 대한 프라이빗 엔드포인트 연결 나열

az network private-endpoint-connection list --id {PrivateLinkResourceID}

특정 리소스에 대한 프라이빗 엔드포인트 연결 승인

az network private-endpoint-connection approve --id {PrivateEndpointConnectionID}  --description "Approved!"

지정된 리소스에 대한 프라이빗 엔드포인트 연결을 거부합니다.

az network private-endpoint-connection reject --id {PrivateEndpointConnectionID}  --description "Rejected!"

지정된 리소스에서 프라이빗 엔드포인트 연결 삭제

az network private-endpoint-connection delete --id {PrivateEndpointConnectionID}

다음 단계