教學課程:保護 Azure SQL Database 中的資料庫

適用於:Azure SQL Database

在本教學課程中,您將了解如何:

  • 建立伺服器層級和資料庫層級防火牆規則
  • 設定 Microsoft Entra 系統管理員
  • 使用 SQL 驗證、Microsoft Entra 驗證及安全 連接字串 來管理使用者存取
  • 啟用安全性功能,例如適用於 SQL 的 Microsoft Defender、稽核、資料遮罩和加密

注意

Microsoft Entra 標識符 先前稱為 Azure Active Directory (Azure AD)。

Azure SQL Database 可讓您以下列方式保護資料:

  • 使用防火牆規則限制存取
  • 使用需要身分識別的驗證機制
  • 使用授權搭配角色型成員資格和權限
  • 啟用安全性功能

注意

Azure SQL 受控執行個體連線架構所述,使用網路安全性群組規則和私人端點來保護 Azure SQL 受控執行個體。

若要深入了解,請參閱 Azure SQL Database 安全性概觀功能文章。

提示

本免費 Learn 課程模組說明如何在 Azure SQL Database 中保護您的資料庫

必要條件

若要完成本教學課程,請確定您具有下列必要條件:

如果您沒有 Azure 訂用帳戶,請在開始之前先建立免費帳戶

登入 Azure 入口網站

若要取得此教學課程中的所有步驟,請登入 Azure 入口網站

建立防火牆規則

Azure 中 SQL Database 中的資料庫是由防火牆保護。 依預設,伺服器與資料庫的所有連線皆會遭拒。 若要深入了解,請參閱伺服器層級和資料庫層級防火牆規則

最安全的設定是將 [允許存取 Azure 服務] 設為 [關閉]。 接著,針對需要連線的資源 (例如 Azure VM 或雲端服務),建立保留的 IP (傳統部署),而且只允許透過防火牆的 IP 位址存取。 如果您使用 Resource Manager 部署模型,則每個資源都需要專用的公用 IP 位址。

注意

SQL Database 會透過連接埠 1433 通訊。 如果您嘗試從公司網路內進行連線,您網路的防火牆可能不允許透過連接埠 1433 的輸出流量。 若情況如此,除非系統管理員開啟連接埠 1433,否則您無法連線至伺服器。

設定伺服器層級的防火牆規則

伺服器層級的 IP 防火牆規則適用於相同伺服器內的所有資料庫。

若要設定伺服器層級的防火牆規則:

  1. 在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。

    Screenshot of the Azure portal page for a logical SQL database, highlighting the server name.

    注意

    請務必複製完整的伺服器名稱 (例如 yourserver.database.windows.net),以便稍後在本教學課程中使用。

  2. 在 [設定] 底下,選取 [網路]。 選擇 [公用存取] 索引標籤,然後選取 [公用網路存取] 下方的 [選取的網路] 以顯示 [防火牆規則] 區段。

    Screenshot of the Azure portal Networking page for a logical SQL Server, showing the server-level IP firewall rule.

  3. 選取工具列上的 [新增用戶端 IP],將目前的 IP 位址新增至新的 IP 防火牆規則。 IP 防火牆規則可以針對單一 IP 位址或 IP 位址範圍開啟連接埠 1433。

  4. 選取 [確定] 以儲存防火牆設定。

您現在可以連線到資料庫中任何具有指定 IP 位址或 IP 位址範圍的伺服器。

設定資料庫防火牆規則

資料庫層級的防火牆規則只適用於個別的資料庫。 伺服器容錯移轉期間,資料庫將會保留這些規則。 資料庫層級的防火牆規則只能使用 Transact-SQL (T-SQL) 陳述式設定,且僅可在您設定伺服器層級的防火牆規則之後進行設定。

設定資料庫層級防火牆規則:

  1. 連線至資料庫,例如使用 SQL Server Management Studio

  2. 在 [物件總管] 中,以滑鼠右鍵按一下資料庫,然後選取 [新增查詢]。

  3. 在查詢視窗中,新增此陳述式並將 IP 位址修改為您的公用 IP 位址:

    EXECUTE sp_set_database_firewall_rule N'Example DB Rule','0.0.0.4','0.0.0.4';
    
  4. 在工具列上,選取 [執行] 以建立防火牆規則。

注意

您也可使用 sp_set_firewall_rule 命令在 SSMS 中以建立伺服器層級的防火牆規則,但必須連線到 master 資料庫。

建立 Microsoft Entra 系統管理員

請確定您使用的是適當的 Microsoft Entra ID(先前稱為 Azure Active Directory)受控網域。 若要選取您的網域,請使用 Azure 入口網站 的右上角。 此程式會確認 Microsoft Entra ID 和裝載資料庫或數據倉儲的邏輯伺服器使用相同的訂用帳戶。

Screenshot of the Azure portal showing the Directory + subscription filter page, where you would choose the directory.

若要設定 Microsoft Entra 系統管理員:

  1. 在 [Azure 入口網站] 的 [SQL Server] 頁面上,從資源功能表中選取 [Microsoft Entra ID],然後選取 [設定系統管理員] 以開啟 [Microsoft Entra ID] 窗格。

    Screenshot of the Azure portal Microsoft Entra ID page for a logical server.

    重要

    您必須是「全域管理員」,才能執行這項工作。

  2. 在 [ Microsoft Entra 標識符 ] 窗格中,搜尋並選取 Microsoft Entra 使用者或群組,然後選擇 [ 選取]。 會列出 Microsoft Entra 組織的所有成員和群組,且 Microsoft Entra 系統管理員不支援呈現灰色的專案。 請參閱 Microsoft Entra 功能和限制

    Screenshot of the Azure portal page to add a Microsoft Entra admin.

    重要

    Azure 角色型存取控制 (Azure RBAC) 僅適用於入口網站,不會傳播至 SQL Server。

  3. 在 Microsoft Entra 管理頁面頂端,選取 [儲存]。

    變更系統管理員的程式可能需要幾分鐘的時間。 新的系統管理員會出現在 [Microsoft Entra 管理員 ] 字段中。

注意

設定 Microsoft Entra 系統管理員時,新的系統管理員名稱(使用者或群組)無法以 master 資料庫中的登入或使用者身分存在。 如果存在,此設定會失敗並復原變更,表示這樣的管理員名稱已經存在。 由於伺服器登入或使用者不是 Microsoft Entra 識別碼的一部分,因此使用 Microsoft Entra 驗證連接使用者的任何工作都失敗。

如需設定 Microsoft Entra ID 的相關信息,請參閱:

管理資料庫存取

將使用者新增至資料庫,或允許使用者使用安全的連接字串存取,以管理資料庫存取權。 連接字串適合用於外部應用程式。 若要深入瞭解,請參閱 管理登入和用戶帳戶Microsoft Entra 驗證

若要新增使用者,請選擇資料庫驗證類型:

  • SQL 驗證,使用登入作業的使用者名稱和密碼,而且僅在伺服器內的特定資料庫環境中有效。

  • Microsoft Entra 驗證,使用由 Microsoft Entra 識別碼管理的身分識別

SQL 驗證

若要使用 SQL 驗證新增使用者:

  1. 連線至資料庫,例如使用 SQL Server Management Studio

  2. 在 [物件總管] 中,以滑鼠右鍵按一下資料庫,然後選擇 [新增查詢]。

  3. 在查詢視窗中,輸入下列命令︰

    CREATE USER ApplicationUser WITH PASSWORD = 'YourStrongPassword1';
    
  4. 在工具列上,選取 [執行] 以建立使用者。

  5. 依預設,使用者可與資料庫連線,但沒有權限可讀取或寫入資料。 若要授與這些權限,請在新的查詢視窗中執行下列命令:

    ALTER ROLE db_datareader ADD MEMBER ApplicationUser;
    ALTER ROLE db_datawriter ADD MEMBER ApplicationUser;
    

注意

在資料庫層級建立非系統管理員帳戶,除非他們需要執行如建立新使用者的系統管理員工作。

Microsoft Entra 驗證

因為 Azure SQL 資料庫 不支援 Microsoft Entra 伺服器主體(登入),因此使用 Microsoft Entra 帳戶建立的資料庫使用者會建立為自主資料庫使用者。 自主資料庫用戶與資料庫中的 master 登入無關,即使有具有相同名稱的登入也一樣。 Microsoft Entra 身分識別可以是個別使用者或群組。 如需詳細資訊,請參閱 自主資料庫使用者、讓您的資料庫可攜 式,並檢閱如何使用 Microsoft Entra ID 進行驗證的 Microsoft Entra 教學課程。

注意

您無法使用 Azure 入口網站建立資料庫使用者 (排除系統管理員)。 Microsoft Entra 角色不會傳播至 SQL Server、資料庫或數據倉儲。 這類角色只用來管理 Azure 資源,並不會套用到資料庫權限。

例如,「SQL Server 參與者」角色不會授與可連線到資料庫或資料倉儲的存取權。 必須使用 Transact-SQL 陳述式在資料庫內授與此權限。

重要

不支援在 T-SQL CREATE LOGINCREATE USER 陳述式中的使用者名稱內使用冒號 :& 等特殊字元。

若要使用 Microsoft Entra 驗證來新增使用者:

  1. 使用至少具有 的 Microsoft Entra 帳戶,連線 至 Azure 中的伺服器ALTER ANY USER 許可權。

  2. 在 [物件總管] 中,以滑鼠右鍵按一下資料庫,然後選取 [新增查詢]。

  3. 在查詢視窗中,輸入下列命令,並修改 <Azure_AD_principal_name> 為 Microsoft Entra 使用者的主要名稱或 Microsoft Entra 群組的顯示名稱:

    CREATE USER [<Azure_AD_principal_name>] FROM EXTERNAL PROVIDER;
    

注意

Microsoft Entra 使用者會以群組的類型 E (EXTERNAL_USER) 和類型 X (EXTERNAL_GROUPS) 標示在資料庫元數據中。 如需詳細資訊,請參閱 sys.database_principals

安全的連接字串

若要確保用戶端應用程式與 SQL 資料庫之間有安全且加密的連線,連接字串必須設定為:

  • 要求加密的連線
  • 不信任伺服器憑證

使用傳輸層安全性 (TLS) 建立連線,並降低發生攔截式攻擊的風險。 每個資料庫都有可用的連接字串,並已預先設定為支援用戶端驅動程式,例如 ADO.NET、JDBC、ODBC 和 PHP。 如需 TLS 和連線能力的相關資訊,請參閱 TLS 考量

若要複製安全的連接字串:

  1. 在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。

  2. 在 [概觀] 頁面上,選取 [顯示資料庫連接字串]。

  3. 選取驅動程式索引標籤並複製完整的連接字串。

    Screenshot of the Azure portal showing the connection strings page. The ADO.NET tab is selected and the ADO.NET (SQL authentication) connection string is displayed.

啟用安全性功能

Azure SQL Database 會提供可使用 Azure 入口網站存取的安全性功能。 除了僅適用於資料庫的資料遮罩以外,這些功能均可供資料庫和伺服器使用。 若要深入了解,請參閱適用於 SQL 的 Microsoft Defender稽核動態資料遮罩透明資料加密

適用於 SQL 的 Microsoft Defender

適用於 SQL 的 Microsoft Defender 功能可偵測潛在威脅,並提供異常活動的安全性警示。 使用者可以使用稽核功能探索可疑的事件,並判斷事件的原因是否為有人嘗試存取、破壞或利用資料庫中的資料。 使用者也會提供包含弱點評量及資料探索和分類工具的安全性概觀。

注意

範例威脅為 SQL 插入,這是攻擊者將惡意 SQL 插入應用程式輸入的程序。 然後應用程式會在不知情的情況下執行惡意 SQL,並允許攻擊者存取、破壞或修改資料庫中的資料。

如要啟用適用於 SQL 的 Microsoft Defender:

  1. 在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。

  2. 在 [概觀] 頁面上,選取 [伺服器名稱] 連結。 將會開啟伺服器頁面。

  3. 在 [SQL 伺服器] 頁面上,尋找 [安全性] 區段並選取 [適用於雲端的 Defender]。

    1. 選取 [適用於 SQL 的 Microsoft Defender] 下的 [開啟],啟用此功能。 選擇儲存弱點評定結果的儲存體帳戶。 然後選取 [儲存]。

      Screenshot of the Azure portal Navigation pane for threat detection settings.

      您也可以設定電子郵件來接收安全性警示、儲存體詳細資料及威脅偵測類型。

  4. 返回資料庫的 [SQL 資料庫] 頁面,然後選取 [安全性] 區段下的 [適用於雲端的 Defender]。 您可以在這裡找到資料庫可用的各種安全性指標。

    Screenshot of the Azure portal Threat status page showing pie charts for Data Discovery & Classification, Vulnerability Assessment, and Threat Detection.

如果偵測到異常活動,您會收到一封含有事件相關資訊的電子郵件。 其中包含活動性質、資料庫、伺服器、事件時間、可能原因和建議動作,以協助您調查並減輕潛在威脅。 如果收到這類電子郵件,請選取 [Azure SQL 稽核記錄] 連結以啟動 Azure 入口網站,並顯示事件時間的相關稽核記錄。

Screenshot of a sample email from Azure, indicating a Potential Sql Injection Threat detection. A link in the body of the email to Azure SQL DB Audit Logs is highlighted.

稽核

稽核功能會追蹤資料庫事件,並將事件寫入 Azure 儲存體或 Azure 監視器記錄中的稽核記錄,或寫入事件中樞。 稽核有助於保持法規合規性、了解資料庫活動,以及深入了解可能指出潛在安全違規的不一致和異常。

若要啟用稽核:

  1. 在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。

  2. 在 [安全性] 區段中,選取 [稽核]。

  3. 在 [稽核] 設定之下,設定下列值:

    1. 將 [稽核] 設定為 [開啟]。

    2. 選取 [稽核記錄目的地] 作為下列任何一項:

      • 儲存體,其中儲存事件記錄並可下載為 .xel 檔案的 Azure 儲存體帳戶。

        提示

        讓所有稽核的資料庫都使用相同的儲存體帳戶,以充分利用稽核報告範本。

      • Log Analytics,可自動儲存事件以供查詢或進一步分析

        注意

        需要有 Log Analytics 工作區才可支援進階功能,例如分析、自訂警示規則以及 Excel 或 Power BI 匯出。 沒有工作區,只可使用查詢編輯器。

      • 事件中樞,允許路由傳送事件,以便在其他應用程式中使用

    3. 選取 [儲存]。

      Screenshot of the Azure portal Audit settings page. The Save button is highlighted. Audit log destination fields are highlighted.

  4. 現在您可以選取 [檢視稽核記錄] 來檢視資料庫事件資料。

    Screenshot of the Azure portal page showing Audit records for a SQL database.

重要

請參閱 SQL Database 稽核,了解如何使用 PowerShell 或 REST API 進一步自訂稽核事件。

動態資料遮罩

資料遮罩功能會自動隱藏您資料庫中的敏感性資料。

若要啟用資料遮罩:

  1. 在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。

  2. 在 [安全性] 區段中,選取 [動態資料遮罩]。

  3. 在 [動態資料遮罩] 設定之下,選取 [新增遮罩] 以新增遮罩規則。 Azure 會自動填入可用的資料庫結構描述、資料表和資料行,以供選擇。

    Screenshot of the Azure portal page to Save or Add Dynamic Data Mask fields. Recommended fields to mask display schema, table, and columns of tables.

  4. 選取 [儲存]。 選取的資訊現在已遮罩,以提供隱私權。

    Screenshot of SQL Server Management Studio (SSMS) showing a simple INSERT and SELECT statement. The SELECT statement displays masked data in the LastName column.

透明資料加密

加密功能會自動為您的待用資料加密,而且應用程式不須做任何變更來存取加密的資料庫。 新資料庫預設會開啟加密。 您也可以使用 SSMS 和一律加密功能將資料加密。

若要啟用或確認加密:

  1. 在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。

  2. 在 [安全性] 區段中,選取 [透明資料加密]。

  3. 如有必要,請將 [資料加密] 設為 [開啟]。 選取 [儲存]。

    Screenshot of the Azure portal page to enable Transparent Data Encryption.

注意

若要檢視加密狀態,請使用 SSMS 連線到資料庫,以及查詢 sys.dm_database_encryption_keys 檢視的 encryption_state 資料行。 狀態 3 表示資料庫已加密。

注意

某些被視為客戶內容的專案,例如數據表名稱、物件名稱和索引名稱,可能會在記錄檔中傳輸,以供 Microsoft 支援和疑難解答。

提示

準備好開始開發 .NET 應用程式嗎? 這款免費的 Learn 模組描述如何開發和設定可查詢 Azure SQL Database 的 ASP.NET 應用程式 (包括建立簡易資料庫)。

後續步驟

前進至下一個教學課程,以了解如何實作地理分散。