設定網路和安全性功能

已完成

適用於 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 區域。

私人 DNS 整合設定的螢幕擷取畫面。

設定傳輸中的加密

依預設,MySQL 彈性伺服器僅接受使用 TLS (傳輸層安全性) 1.2 版的加密連線。 如果您要開發支援 TLS 1.3 的新應用程式,建議您支援,甚至強制執行較新版本。 若要這樣,請執行下列步驟:

  1. 在 Azure 入口網站中,選取您要使用 TLS 1.3 連線的 MySQL 彈性伺服器。
  2. 在 [伺服器參數] 區段中,於 [最上層] 或 [所有] 篩選的搜尋列中輸入 tls_version
  3. 在 [值] 下拉式清單,選取 [TLSv1.2] 和/或 [TLSv1.3],然後選取 [儲存]server-parameters-tls-version 的螢幕擷取畫面。

您也可以將 require_secure_transport 參數的值設定為 off 以允許未加密的連線,但除非絕對必要,否則不建議進行此設定。

適用於雲端的 Microsoft Defender

適用於雲端的 Microsoft Defender 是符合成本效益的方法以偵測和警示異常或可疑的資料庫活動。 若要啟用,請進行下列步驟:

  1. 在 Azure 入口網站中,選取您要使用 Defender 保護的 MySQL 彈性伺服器。

  2. 在 [適用於雲端的 Microsoft Defender] 區段中選取 [啟用]

選取以啟用適用於雲端 Microsoft Defender 的螢幕擷取畫面。

如需深入了解 Defender (包含如何設定警示),請參閱參考文件。

使用 Microsoft Entra ID 驗證進行啟用和連線

在開始之前,您需要適當設定的使用者受控識別 (UMI)。 身分識別需要目錄讀取者角色或下列個別權限:User.Read.AllGroupMember.Read.AllApplication.Read.ALL。 如需如何新增這些權限的詳細資訊,請參閱此教學課程

若要為適用於 MySQL 的 Azure 資料庫啟用 Microsoft Entra ID 驗證,請執行下列步驟:

  1. 在 Azure 入口網站中,選取您要使用 Microsoft Entra ID 連線的 MySQL 彈性伺服器。

  2. 在 [安全性] 區段中,選取 [驗證]

    Microsoft Entra ID 設定的螢幕擷取畫面。

  3. 在標題 [將存取權指派給] 下,選取下列其中一項:[僅限 Microsoft Entra 驗證] (停用原生 MySQL 使用者/密碼登入) 或 [MySQL 和 Microsoft Entra 驗證] (允許原生 MySQL 和 Microsoft Entra 登入)。

  4. 在標題 [選取身分識別] 下,選取本單元稍早提到的 UMI。

  5. 選取要成為 Microsoft Entra 系統管理員的 Microsoft Entra 使用者或群組。如果您選取群組,群組的所有成員都是系統管理員。 您僅可以有一個系統管理員使用者或群組,選取其他使用者或群組將取代先前系統管理員。

    在啟用 Microsoft Entra ID 後,您現在可以值行下列步驟以使用 Microsoft Entra ID 驗證連至 MySQL 彈性伺服器。

  6. 使用 Azure 驗證殼層。 如果您使用 Azure Cloud Shell,則您的身分識別已在工作階段中設定,因此不需要登入。 如果您使用未經驗證的終端,請執行下列命令:

    az login
    az account set --subscription <subscription_id>
    
  7. 在已驗證的殼層中,執行下列命令以擷取存取權杖:

    az account get-access-token --resource-type oss-rdbms

  8. 若要登入,請複製呈現的存取權杖,並將其作為密碼使用。 若要直接將存取權杖傳遞至 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 入口網站:

  1. 請瀏覽至彈性伺服器執行個體,然後在 [安全性] 下選取 [資料加密]

    [設定] 頁面的螢幕擷取畫面,選取客戶自控金鑰。

  2. 在 [資料加密] 下,選取 [+ 選取]。 在 [選取使用者指派的受控識別] 對話方塊中,選取必要條件中識別的使用者指派受控識別,然後選取身分識別並選取 [新增]

    對話方塊的螢幕擷取畫面,選取使用者指派的受控識別。

  3. 然後,選取 [輸入金鑰識別碼] 並輸入識別碼,或者在 [選取] [金鑰] 對話方塊中,指定識別碼或選取金鑰保存庫或金鑰來選取金鑰。

  4. 選取 [儲存]。

如果您使用的是 Azure CLI,請執行下列命令:

az mysql flexible-server update --resource-group $RESOURCE_GROUP --name $TEST_SERVER --key $KEY_IDENTIFIER --identity $IDENTITY