設定網路和安全性功能
適用於 MySQL 的 Azure 資料庫關鍵網路和安全性功能包含存取控制、Microsoft Entra ID 支援、管理身分識別、角色和權限的集中平台。 MySQL 彈性伺服器也會預設加密所有傳輸中的資料,且可讓您使用 Azure 或客戶自控金鑰加密待用資料。
網路
設定網路存取
當建立 MySQL 彈性伺服器時,您可以選取透過 Azure 虛擬網路進行私人存取,或使用選擇性私人端點對列入允許清單的 IP 位址進行公用存取。 完成 [基本] 區段之後,請選取 [下一步:網路],然後選取 [公用存取和私人端點] 或 [私人存取]:
如果您選取 [公用存取和私人端點],則可以選擇是否要將資料庫公開至網際網路。 如果未選取 [允許公用存取],則資料庫僅能透過私人端點存取,無法使用公用 IP 位址存取。 若要保留公用網際網路存取,請選取 [允許公用存取],然後在 [網路規則] 區段下,將 IP 位址或範圍新增至允取清單。 若要將 Azure 網路上的所有 Azure 服務新增至允許清單,請選取 [允許來自 Azure 內的任何 Azure 服務可公用存取此伺服器]。
除了公用存取之外,您也可以設定私人端點。 由於 Wingtip Toys 計劃在內部部署網路和 Azure 之間運作 VPN,因此我們將略過私人端點。 如需設定私人連結的詳細資訊,請參閱參考文件。
若要只允許來自虛擬網路的連線,請選取 [私人存取],然後選取適當的 [訂用帳戶]、[虛擬網路] 和 [子網路]。 如果您未選取虛擬網路和子網路,則系統將建立新的網路和子網路。
最後,您必須設定私人 DNS 整合以使用完整的網域名稱進行連線,而不是使用可能變更的 IP 位址連線。 選取現有的 DNS 區域,或讓 Azure 為您建立新的 DNS 區域。
設定傳輸中的加密
依預設,MySQL 彈性伺服器僅接受使用 TLS (傳輸層安全性) 1.2 版的加密連線。 如果您要開發支援 TLS 1.3 的新應用程式,建議您支援,甚至強制執行較新版本。 若要這樣,請執行下列步驟:
- 在 Azure 入口網站中,選取您要使用 TLS 1.3 連線的 MySQL 彈性伺服器。
- 在 [伺服器參數] 區段中,於 [最上層] 或 [所有] 篩選的搜尋列中輸入 tls_version。
- 在 [值] 下拉式清單,選取 [TLSv1.2] 和/或 [TLSv1.3],然後選取 [儲存]。
您也可以將 require_secure_transport
參數的值設定為 off 以允許未加密的連線,但除非絕對必要,否則不建議進行此設定。
適用於雲端的 Microsoft Defender
適用於雲端的 Microsoft Defender 是符合成本效益的方法以偵測和警示異常或可疑的資料庫活動。 若要啟用,請進行下列步驟:
在 Azure 入口網站中,選取您要使用 Defender 保護的 MySQL 彈性伺服器。
在 [適用於雲端的 Microsoft Defender] 區段中選取 [啟用]。
如需深入了解 Defender (包含如何設定警示),請參閱參考文件。
使用 Microsoft Entra ID 驗證進行啟用和連線
在開始之前,您需要適當設定的使用者受控識別 (UMI)。 身分識別需要目錄讀取者角色或下列個別權限:User.Read.All、GroupMember.Read.All 和 Application.Read.ALL。 如需如何新增這些權限的詳細資訊,請參閱此教學課程。
若要為適用於 MySQL 的 Azure 資料庫啟用 Microsoft Entra ID 驗證,請執行下列步驟:
在 Azure 入口網站中,選取您要使用 Microsoft Entra ID 連線的 MySQL 彈性伺服器。
在 [安全性] 區段中,選取 [驗證]。
在標題 [將存取權指派給] 下,選取下列其中一項:[僅限 Microsoft Entra 驗證] (停用原生 MySQL 使用者/密碼登入) 或 [MySQL 和 Microsoft Entra 驗證] (允許原生 MySQL 和 Microsoft Entra 登入)。
在標題 [選取身分識別] 下,選取本單元稍早提到的 UMI。
選取要成為 Microsoft Entra 系統管理員的 Microsoft Entra 使用者或群組。如果您選取群組,群組的所有成員都是系統管理員。 您僅可以有一個系統管理員使用者或群組,選取其他使用者或群組將取代先前系統管理員。
在啟用 Microsoft Entra ID 後,您現在可以值行下列步驟以使用 Microsoft Entra ID 驗證連至 MySQL 彈性伺服器。
使用 Azure 驗證殼層。 如果您使用 Azure Cloud Shell,則您的身分識別已在工作階段中設定,因此不需要登入。 如果您使用未經驗證的終端,請執行下列命令:
az login az account set --subscription <subscription_id>
在已驗證的殼層中,執行下列命令以擷取存取權杖:
az account get-access-token --resource-type oss-rdbms
若要登入,請複製呈現的存取權杖,並將其作為密碼使用。 若要直接將存取權杖傳遞至 MySQL 用戶端,請在 Linux 上執行下列命令:
mysql -h mydb.mysql.database.azure.com \ --user user@tenant.onmicrosoft.com \ --enable-cleartext-plugin \ --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`
如果您使用的是 PowerShell,請執行下列命令:
mysql -h mydb.mysql.database.azure.com \ --user user@tenant.onmicrosoft.com \ --enable-cleartext-plugin \ --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken)
使用其他用戶端 (例如 MySQL Workbench) 時,只要將存取權杖貼到密碼欄位即可。
使用客戶自控金鑰加密待用資料
您可以使用 Azure 入口網站或使用 Azure CLI 來設定待用加密。 不過,使用客戶自控金鑰啟用加密之前,您必須先確認已有下列必要條件:
使用者受控識別 (UMI)。 您需要資料庫的 UMI,才能存取金鑰保存庫。
權限。 設定角色型存取 (IAM) 或保存庫存取原則,並將下列權限授與 UMI:取得、列出、包裝金鑰,以及解除包裝金鑰。
啟用 [虛刪除](/azure/key-vault/general/soft-delete-overview" /l "soft-delete-behavior)。 意外遺失加密金鑰的存取權可能會導致永久資料遺失。 啟用虛刪除作為保護層。 當您使用 Azure 入口網站以建立新的金鑰保存庫時,虛刪除預設為已啟用。
如果您知道保存庫的名稱但不知道其識別碼,您可以執行下列命令以查看:
az keyvault show --name $KEY_VAULT_NAME
若要在現有的保存庫上啟用虛刪除,請執行:
az resource update --id $KEY_VAULT_ID --set properties.enableSoftDelete=true
啟用清除保護。 由於使用者或程式碼錯誤,因此系統仍可能會在保留期限結束之前錯誤清除虛刪除金鑰。 使用清除保護會設定已刪除物件在永久移除之前的保留期限。
您現在可以使用 Azure 入口網站或 Azure CLI 以設定客戶自控金鑰來加密待用資料。
如果您使用 Azure 入口網站:
請瀏覽至彈性伺服器執行個體,然後在 [安全性] 下選取 [資料加密]。
在 [資料加密] 下,選取 [+ 選取]。 在 [選取使用者指派的受控識別] 對話方塊中,選取必要條件中識別的使用者指派受控識別,然後選取身分識別並選取 [新增]。
然後,選取 [輸入金鑰識別碼] 並輸入識別碼,或者在 [選取] [金鑰] 對話方塊中,指定識別碼或選取金鑰保存庫或金鑰來選取金鑰。
選取 [儲存]。
如果您使用的是 Azure CLI,請執行下列命令:
az mysql flexible-server update --resource-group $RESOURCE_GROUP --name $TEST_SERVER --key $KEY_IDENTIFIER --identity $IDENTITY