教學課程:保護 Azure SQL Database 中的資料庫
適用於: Azure SQL 資料庫
在本教學課程中,您將了解如何:
- 建立伺服器層級和資料庫層級防火牆規則
- 設定 Microsoft Entra 系統管理員
- 使用 SQL 驗證、Microsoft Entra 驗證和安全的連接字串來管理使用者存取
- 啟用安全性功能,例如適用於 SQL 的 Microsoft Defender、稽核、資料遮罩和加密
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
Azure SQL Database 可讓您以下列方式保護資料:
- 使用防火牆規則限制存取
- 使用需要身分識別的驗證機制
- 使用授權搭配角色型成員資格和權限
- 啟用安全性功能
注意
如 Azure SQL 受控執行個體和連線架構所述,使用網路安全性群組規則和私人端點來保護 Azure SQL 受控執行個體。
若要深入了解,請參閱 Azure SQL Database 安全性概觀和功能文章。
提示
本免費 Learn 課程模組說明如何在 Azure SQL Database 中保護您的資料庫。
必要條件
若要完成本教學課程,請確定您具有下列必要條件:
- SQL Server Management Studio
- 伺服器和單一資料庫
- 透過 Azure 入口網站、CLI 或 PowerShell 加以建立
如果您沒有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
登入 Azure 入口網站
若要取得此教學課程中的所有步驟,請登入 Azure 入口網站
建立防火牆規則
Azure 中 SQL Database 中的資料庫是由防火牆保護。 依預設,伺服器與資料庫的所有連線皆會遭拒。 若要深入了解,請參閱伺服器層級和資料庫層級防火牆規則。
最安全的設定是將 [允許存取 Azure 服務] 設為 [關閉]。 接著,針對需要連線的資源 (例如 Azure VM 或雲端服務),建立保留的 IP (傳統部署),而且只允許透過防火牆的 IP 位址存取。 如果您使用 Resource Manager 部署模型,則每個資源都需要專用的公用 IP 位址。
注意
SQL Database 會透過連接埠 1433 通訊。 如果您嘗試從公司網路內進行連線,您網路的防火牆可能不允許透過連接埠 1433 的輸出流量。 若情況如此,除非系統管理員開啟連接埠 1433,否則您無法連線至伺服器。
設定伺服器層級的防火牆規則
伺服器層級的 IP 防火牆規則適用於相同伺服器內的所有資料庫。
若要設定伺服器層級的防火牆規則:
在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。
注意
請務必複製完整的伺服器名稱 (例如 yourserver.database.windows.net),以便稍後在本教學課程中使用。
在 [設定] 底下,選取 [網路]。 選擇 公用存取 索引標籤,然後選取 公用網路存取 下方的 選取的網路 以顯示 防火牆規則 區段。
選取工具列上的 [新增用戶端 IP],將目前的 IP 位址新增至新的 IP 防火牆規則。 IP 防火牆規則可以針對單一 IP 位址或 IP 位址範圍開啟連接埠 1433。
選取 [確定] 以儲存防火牆設定。
您現在可以連線到資料庫中任何具有指定 IP 位址或 IP 位址範圍的伺服器。
設定資料庫防火牆規則
資料庫層級的防火牆規則只適用於個別的資料庫。 伺服器容錯移轉期間,資料庫將會保留這些規則。 資料庫層級的防火牆規則只能使用 Transact-SQL (T-SQL) 陳述式設定,且僅可在您設定伺服器層級的防火牆規則之後進行設定。
設定資料庫層級防火牆規則:
連線至資料庫,例如使用 SQL Server Management Studio。
在 [物件總管] 中,以滑鼠右鍵按一下資料庫,然後選取 [新增查詢]。
在查詢視窗中,新增此陳述式並將 IP 位址修改為您的公用 IP 位址:
EXECUTE sp_set_database_firewall_rule N'Example DB Rule','0.0.0.4','0.0.0.4';
在工具列上,選取 [執行] 以建立防火牆規則。
注意
您也可使用 sp_set_firewall_rule 命令在 SSMS 中以建立伺服器層級的防火牆規則,但必須連線到 master 資料庫。
建立 Microsoft Entra 管理員
確定您使用適當的 Microsoft Entra ID (原 Azure Active Directory) 受控網域。 若要選取您的網域,請使用 Azure 入口網站的右上角。 此程序可確認將相同的訂用帳戶用於裝載資料庫或資料倉儲的 Microsoft Entra ID 和邏輯伺服器。
設定 Microsoft Entra 管理員:
在 Azure 入口網站的 [SQL Server] 頁面,從資源功能表中選取 [Microsoft Entra ID],然後選取 [設定管理員] 以開啟 [Microsoft Entra ID] 窗格。
重要
您必須是「全域管理員」,才能執行這項工作。
在 [Microsoft Entra ID] 窗格中,搜尋並選取 Microsoft Entra 使用者或群組,然後選擇 [選取]。 列出 Microsoft Entra 組織的所有成員和群組,且 Microsoft Entra 系統管理員不支援呈現灰色的項目。
重要
Azure 角色型存取控制 (Azure RBAC) 僅適用於入口網站,不會傳播至 SQL Server。
在 Microsoft Entra 管理員頁面頂端,選取 [儲存]。
變更管理員的程序可能需要幾分鐘的時間。 新的管理員會顯示在 [Microsoft Entra 管理員] 欄位。
注意
設定 Microsoft Entra 管理員時,新的管理員名稱 (使用者或群組) 不能在 master 資料庫中作為登入使用者存在。 如果存在,此設定會失敗並復原變更,表示這樣的管理員名稱已經存在。 由於伺服器登入或使用者並非 Microsoft Entra ID 的成員,因此使用 Microsoft Entra 驗證來連線到使用者的一切努力都會失敗。
如需設定 Microsoft Entra ID 的資訊,請參閱:
- 整合內部部署身分識別與 Microsoft Entra ID
- 將自己的網域名稱新增至 Microsoft Entra ID
- Microsoft Entra ID 的同盟
- 管理您的 Microsoft Entra 目錄
- 使用 PowerShell 管理 Microsoft Entra ID
- 混合式身分識別所需的連接埠和通訊協定
管理資料庫存取
將使用者新增至資料庫,或允許使用者使用安全的連接字串存取,以管理資料庫存取權。 連接字串適合用於外部應用程式。 若要深入了解,請參閱管理登入和使用者帳戶和 Microsoft Entra 驗證。
若要新增使用者,請選擇資料庫驗證類型:
SQL 驗證,使用登入作業的使用者名稱和密碼,而且僅在伺服器內的特定資料庫環境中有效。
Microsoft Entra 驗證方法,使用由 Microsoft Entra ID 管理的身分識別
SQL 驗證
若要使用 SQL 驗證新增使用者:
連線至資料庫,例如使用 SQL Server Management Studio。
在 [物件總管] 中,以滑鼠右鍵按一下資料庫,然後選擇 [新增查詢]。
在查詢視窗中,輸入下列命令︰
CREATE USER ApplicationUser WITH PASSWORD = 'YourStrongPassword1';
在工具列上,選取 [執行] 以建立使用者。
依預設,使用者可與資料庫連線,但沒有權限可讀取或寫入資料。 若要授與這些權限,請在新的查詢視窗中執行下列命令:
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 教學課程以了解如何使用 Microsoft Entra ID 進行驗證。
注意
您無法使用 Azure 入口網站建立資料庫使用者 (排除系統管理員)。 Microsoft Entra 角色不會傳播至 SQL Server、資料庫或資料倉儲。 這類角色只用來管理 Azure 資源,並不會套用到資料庫權限。
例如,「SQL Server 參與者」角色不會授與可連線到資料庫或資料倉儲的存取權。 必須使用 Transact-SQL 陳述式在資料庫內授與此權限。
重要
不支援在 T-SQL CREATE LOGIN
和 CREATE USER
陳述式中的使用者名稱內使用冒號 :
或 &
等特殊字元。
使用 Microsoft Entra 驗證新增使用者:
使用至少具有 ALTER ANY USER 權限的 Microsoft Entra 帳戶連線至 Azure 中的伺服器。
在 [物件總管] 中,以滑鼠右鍵按一下資料庫,然後選取 [新增查詢]。
在查詢視窗中輸入下列命令,並將
<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 考量。
若要複製安全的連接字串:
在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。
在 [概觀] 頁面上,選取 [顯示資料庫連接字串]。
選取驅動程式索引標籤並複製完整的連接字串。
啟用安全性功能
Azure SQL Database 會提供可使用 Azure 入口網站存取的安全性功能。 除了僅適用於資料庫的資料遮罩以外,這些功能均可供資料庫和伺服器使用。 若要深入了解,請參閱適用於 SQL 的 Microsoft Defender、稽核、動態資料遮罩和透明資料加密。
適用於 SQL 的 Microsoft Defender
適用於 SQL 的 Microsoft Defender 功能可偵測潛在威脅,並提供異常活動的安全性警示。 使用者可以使用稽核功能探索可疑的事件,並判斷事件的原因是否為有人嘗試存取、破壞或利用資料庫中的資料。 使用者也會提供包含弱點評量及資料探索和分類工具的安全性概觀。
注意
範例威脅為 SQL 插入,這是攻擊者將惡意 SQL 插入應用程式輸入的程序。 然後應用程式會在不知情的情況下執行惡意 SQL,並允許攻擊者存取、破壞或修改資料庫中的資料。
如要啟用適用於 SQL 的 Microsoft Defender:
在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。
在 [概觀] 頁面上,選取 [伺服器名稱] 連結。 將會開啟伺服器頁面。
在 [SQL 伺服器] 頁面上,尋找 [安全性] 區段並選取 [適用於雲端的 Defender]。
選取 [適用於 SQL 的 Microsoft Defender] 下的 [開啟],啟用此功能。 選擇儲存弱點評定結果的儲存體帳戶。 然後選取 [儲存]。
您也可以設定電子郵件來接收安全性警示、儲存體詳細資料及威脅偵測類型。
返回資料庫的 [SQL 資料庫] 頁面,然後選取 [安全性] 區段下的 [適用於雲端的 Defender]。 您可以在這裡找到資料庫可用的各種安全性指標。
如果偵測到異常活動,您會收到一封含有事件相關資訊的電子郵件。 其中包含活動性質、資料庫、伺服器、事件時間、可能原因和建議動作,以協助您調查並減輕潛在威脅。 如果收到這類電子郵件,請選取 [Azure SQL 稽核記錄] 連結以啟動 Azure 入口網站,並顯示事件時間的相關稽核記錄。
稽核
稽核功能會追蹤資料庫事件,並將事件寫入 Azure 儲存體或 Azure 監視器記錄中的稽核記錄,或寫入事件中樞。 稽核有助於保持法規合規性、了解資料庫活動,以及深入了解可能指出潛在安全違規的不一致和異常。
若要啟用稽核:
在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。
在 [安全性] 區段中,選取 [稽核]。
在 [稽核] 設定之下,設定下列值:
將 [稽核] 設定為 [開啟]。
選取 [稽核記錄目的地] 作為下列任何一項:
儲存體,其中儲存事件記錄並可下載為 .xel 檔案的 Azure 儲存體帳戶。
提示
讓所有稽核的資料庫都使用相同的儲存體帳戶,以充分利用稽核報告範本。
Log Analytics,可自動儲存事件以供查詢或進一步分析
注意
需要有 Log Analytics 工作區才可支援進階功能,例如分析、自訂警示規則以及 Excel 或 Power BI 匯出。 沒有工作區,只可使用查詢編輯器。
事件中樞,允許路由傳送事件,以便在其他應用程式中使用
選取 [儲存]。
現在您可以選取 [檢視稽核記錄] 來檢視資料庫事件資料。
重要
請參閱 SQL Database 稽核,了解如何使用 PowerShell 或 REST API 進一步自訂稽核事件。
動態資料遮罩
資料遮罩功能會自動隱藏您資料庫中的敏感性資料。
若要啟用資料遮罩:
在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。
在 [安全性] 區段中,選取 [動態資料遮罩]。
在 [動態資料遮罩] 設定之下,選取 [新增遮罩] 以新增遮罩規則。 Azure 會自動填入可用的資料庫結構描述、資料表和資料行,以供選擇。
選取 [儲存]。 選取的資訊現在已遮罩,以提供隱私權。
透明資料加密
加密功能會自動為您的待用資料加密,而且應用程式不須做任何變更來存取加密的資料庫。 新資料庫預設會開啟加密。 您也可以使用 SSMS 和一律加密功能將資料加密。
若要啟用或確認加密:
在 Azure 入口網站中,從左側功能表中選取 [SQL 資料庫],然後在 [SQL 資料庫] 頁面上選取您的資料庫。
在 [安全性] 區段中,選取 [透明資料加密]。
如有必要,請將 [資料加密] 設為 [開啟]。 選取 [儲存]。
注意
若要檢視加密狀態,請使用 SSMS 連線到資料庫,以及查詢 sys.dm_database_encryption_keys 檢視的 encryption_state
資料行。 狀態 3
表示資料庫已加密。
注意
視為客戶內容的某些項目 (例如資料表名稱、物件名稱與索引名稱) 可能會在記錄檔中傳輸,以便由 Microsoft 支援及進行疑難排解。
相關內容
提示
準備好開始開發 .NET 應用程式了嗎? 這款免費的 Learn 模組描述如何開發和設定可查詢 Azure SQL Database 的 ASP.NET 應用程式 (包括建立簡易資料庫)。
後續步驟
前進至下一個教學課程,以了解如何實作地理分散。