프라이빗 엔드포인트를 사용하여 MySQL 데이터베이스 보호
이 단원에서는 MySQL 데이터베이스를 서브넷 내에 다시 배포하여 이 데이터베이스에 대한 액세스를 잠급니다. MySQL 유연한 서버는 현재 프라이빗 엔드포인트 연결을 지원하지 않습니다. 따라서 서브넷 내에 배포합니다.
프라이빗 엔드포인트를 사용하도록 설정하면 데이터베이스에 대한 퍼블릭 액세스를 차단할 수 있습니다.
이전 MySQL 유연한 서버 인스턴스를 삭제합니다.
az mysql flexible-server delete \ --name $MYSQL_SERVER_NAME \ --resource-group $RESOURCE_GROUP \ --yes
다음으로, 새 MySQL 유연한 서버 인스턴스에 대한 프라이빗 DNS 영역을 만듭니다. DNS 영역을
private.mysql.database.azure.com
으로 설정합니다.MYSQL_DNS="private.mysql.database.azure.com" az network private-dns zone create -g $RESOURCE_GROUP -n $MYSQL_DNSs.
다음으로, MySQL 유연한 서버를 다시 만들고 DNS 영역에 연결합니다. 새 서버 인스턴스를 DNS 영역에 연결하면 MySQL 유연한 서버가 DNS 영역을 VNet에 연결합니다. 이 링크는 데이터베이스 이름에 대한 A 레코드를 DNS 영역에 추가합니다.
MYSQL_SERVER_NAME=mysql-vnet$APPNAME-$UNIQUEID az mysql flexible-server create \ --name ${MYSQL_SERVER_NAME} \ --resource-group ${RESOURCE_GROUP} \ --location $LOCATION \ --admin-user myadmin \ --admin-password ${MYSQL_ADMIN_PASSWORD} \ --sku-name Standard_B1ms \ --tier Burstable \ --version 5.7 \ --storage-size 20 \ --vnet $VIRTUAL_NETWORK_NAME \ --subnet $DATABASE_SUBNET_NAME \ --private-dns-zone $MYSQL_DNS
petclinic
데이터베이스를 다시 만듭니다.az mysql flexible-server db create \ --server-name $MYSQL_SERVER_NAME \ --resource-group $RESOURCE_GROUP \ -d $DATABASE_NAME
새로 만든 MySQL 유연한 서버의 FQDN을 표시합니다. 이 값을 사용하여 구성 리포지토리의
spring.datasource.url
속성을 업데이트합니다.az mysql flexible-server show \ --name $MYSQL_SERVER_NAME \ --resource-group $RESOURCE_GROUP \ --query fullyQualifiedDomainName
Git Bash 창의 로컬로 복제한 구성 리포지토리에서 즐겨 사용하는 텍스트 편집기를 사용하여
application.yml
파일을 엽니다. 이제 MYSQL Vnet 통합 인스턴스를 사용하도록datasource
의url
을 업데이트합니다.url: jdbc:mysql://<your-vnet-integrated-server-name>.mysql.database.azure.com:3306/petclinic?useSSL=true
백 엔드 데이터베이스를 사용하는 Spring Apps를 다시 시작하여 새 연결 문자열 정보를 사용합니다.
az spring app restart \ --name customers-service \ --resource-group $RESOURCE_GROUP \ --service $SPRING_APPS_SERVICE \ --no-wait az spring app restart \ --name vets-service \ --resource-group $RESOURCE_GROUP \ --service $SPRING_APPS_SERVICE \ --no-wait az spring app restart \ --name visits-service \ --resource-group $RESOURCE_GROUP \ --service $SPRING_APPS_SERVICE \ --no-wait
Spring Petclinic 앱을 찾아보고 데이터를 볼 수 있어야 합니다.
Azure Portal에서 새로 만든 MySQL 유연한 서버로 이동하고 네트워킹 메뉴를 선택합니다. 서버 방화벽을 더 이상 잠글 수 없다는 것을 알 수 있습니다. 그러나 서버는 가상 네트워크를 통해서 들어오는 호출만 허용합니다.