使用私人端點保護 MySQL 資料庫

已完成

在此單元中,您會在子網內重新部署 MySQL 資料庫,以鎖定對 MySQL 資料庫的存取。 MySQL 彈性伺服器目前不支援私人端點連線。 因此,您會將其部署在子網路內。

啟用私人端點之後,您就可以封鎖資料庫的公用存取。

  1. 您將刪除先前的 MySQL 彈性伺服器執行個體。

    az mysql  flexible-server delete \
        --name $MYSQL_SERVER_NAME \
        --resource-group $RESOURCE_GROUP \ 
        --yes
    
  2. 接下來,為新的 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.
    
  3. 接下來,重新建立 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
    
  4. 重新建立 petclinic 資料庫。

    az mysql flexible-server db create \
        --server-name $MYSQL_SERVER_NAME \
        --resource-group $RESOURCE_GROUP \
        -d $DATABASE_NAME
    
  5. 顯示新建立 MySQL 彈性伺服器的 FQDN,您將使用此值來更新 spring.datasource.url 設定存放庫中的屬性。

    az mysql flexible-server show \
        --name $MYSQL_SERVER_NAME \
        --resource-group $RESOURCE_GROUP \
        --query fullyQualifiedDomainName
    
  6. 從 Git Bash 視窗,在本機複製的設定存放庫中,使用您最常用的文字編輯器開啟 application.yml 檔案。 將 datasourceurl 更新為現在使用 MYSQL Vnet 整合執行個體。

    url: jdbc:mysql://<your-vnet-integrated-server-name>.mysql.database.azure.com:3306/petclinic?useSSL=true
    
  7. 重新啟動使用後端資料庫的 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
    
    
  8. 您應該能夠瀏覽 spring petclinic 應用程式並查看資料。

  9. 在 Azure 入口網站中,瀏覽至新建立的 MySQL 彈性伺服器,然後選取 [網路] 功能表。 您會發現您無法再鎖定伺服器防火牆。 不過,伺服器只允許透過虛擬網路進行來電。