使用私人端點保護 Key Vault
現在您已鎖定 MySQL 資料庫的網際網路存取,再來要執行類似的設定來保護 Key Vault 內容。
您已啟用私人端點,現在您可以封鎖資料庫的公用存取。
若要開始,您必須在要用來建立私人端點的子網路中,停用私人端點網路原則。
az network vnet subnet update \ --name $PRIVATE_ENDPOINTS_SUBNET_NAME \ --resource-group $RESOURCE_GROUP \ --vnet-name $VIRTUAL_NETWORK_NAME \ --disable-private-endpoint-network-policies true
接下來,您將建立私人端點,對應至相同子網路內 Azure MySQL Database 單一伺服器執行個體。
KEYVAULT_RESOURCE_ID=$(az resource show -g ${RESOURCE_GROUP} -n ${KEYVAULT_NAME} \ --query "id" \ --resource-type "Microsoft.KeyVault/vaults" -o tsv) az network private-endpoint create --resource-group $RESOURCE_GROUP \ --vnet-name $VIRTUAL_NETWORK_NAME \ --subnet $PRIVATE_ENDPOINTS_SUBNET_NAME \ --name pe-openlab-keyvault \ --private-connection-resource-id "$KEYVAULT_RESOURCE_ID" \ --group-id vault \ --connection-name openlab-keyvault-connection \ --location $LOCATION
建立私人端點之後,您將設定私人 Azure DNS 區域 (名為 privatelink.mysql.database.azure.com),以及一個符合原始 DNS 名稱及其尾碼 (mysql.database.azure.com) 的 DNS 記錄,但將該尾碼取代為 privatelink.mysql.database.azure.com。 連線至 MySQL 資料庫的應用程式不需要更新,但是可以改為繼續使用現有的連接字串。
若要實作此設定,請先建立新的私人 DNS 區域,然後連結至您的虛擬網路。
az network private-dns zone create \ --resource-group $RESOURCE_GROUP \ --name "privatelink.vaultcore.azure.net" az network private-dns link vnet create \ --resource-group $RESOURCE_GROUP \ --zone-name "privatelink.vaultcore.azure.net" \ --name MyVaultDNSLink \ --virtual-network $VIRTUAL_NETWORK_NAME \ --registration-enabled false
接下來,建立新的 A 記錄,指向新建私人端點的 IP 位址。
KEYVAULT_NIC_ID=$(az network private-endpoint show \ --name pe-openlab-keyvault \ --resource-group $RESOURCE_GROUP \ --query 'networkInterfaces[0].id' -o tsv) KEYVAULT_NIC_IPADDRESS=$(az resource show \ --ids $KEYVAULT_NIC_ID \ --api-version 2019-04-01 -o json | jq -r '.properties.ipConfigurations[0].properties.privateIPAddress') \ az network private-dns record-set a add-record -g $RESOURCE_GROUP -z "privatelink.vaultcore.azure.net" -n $KEYVAULT_NAME -a $KEYVAULT_NIC_IPADDRESS az network private-dns record-set list -g $RESOURCE_GROUP -z "privatelink.vaultcore.azure.net"
您現在可以完全封鎖 Azure MySQL Database 單一伺服器執行個體的公用端點連線。
az keyvault update \ --name $KEYVAULT_NAME \ --resource-group $RESOURCE_GROUP \ --public-network-access Disabled