使用私人端點保護 MySQL 資料庫
在此單元中,您會在子網內重新部署 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
檔案。 將datasource
的url
更新為現在使用 MYSQL Vnet 整合執行個體。url: jdbc:mysql://<your-vnet-integrated-server-name>.mysql.database.azure.com:3306/petclinic?useSSL=true
重新啟動使用後端資料庫的 Spring 應用程式,以使用新的連接字串資訊。
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 入口網站中,瀏覽至新建立的 MySQL 彈性伺服器,然後選取 [網路] 功能表。 您會發現您無法再鎖定伺服器防火牆。 不過,伺服器只允許透過虛擬網路進行來電。