保護資料庫和伺服器

已完成

資料庫驗證和授權是您傳統上保護開放原始碼資料庫的方式。 在 Azure 中裝載該資料庫可讓您有機會增加該保護。

身為 Adventureworks 公司的資料庫開發人員,您想要改善公司在 PostgreSQL 上的 Azure 資料庫的保護。

在此單元中,現在您將會看到已將本地PostgreSQL資料庫移轉至Azure後,額外保護的可能性。

保護您的資料

PostgreSQL 和 MySQL 有自己的驗證和授權機制,可控制哪些用戶能夠存取資料庫,以及他們對這些資料庫中項目的許可權。 您應該繼續以與移轉前所做的相同方式來管理使用者和許可權。 請記住,您可以使用 pgAdmin 和 MySQL Workbench 等系統管理工具來連線到 Azure 所裝載的伺服器。

不過,Azure 會為您的伺服器提供額外的保護。 此保護可在三個層級運作:

  1. 它會控制伺服器的存取權、篩選來自未知或未受信任來源的流量。
  2. 它會保護流量,確保流量在從用戶端流向伺服器再返回的過程中無法被篡改或攔截。
  3. 它會保護伺服器本身免於常見的外部威脅。

下列各節將更詳細地討論這些專案。

使用防火牆規則篩選流量

適用於 MySQL 的 Azure 資料庫或 PostgreSQL 會在由 Microsoft 管理的防火牆內執行。 根據預設,任何專案都無法通過此防火牆。 您可以新增防火牆規則,以啟用來自指定IP位址區塊的流量,如先前模組所述。 建議您主動檢閱允許以頻繁間隔傳送流量的IP位址,並移除不再需要之用戶端的IP位址。

如果您正在執行其他需要使用資料庫的 Azure 服務,您必須開啟這些服務的防火牆。 在 Azure 入口網站的 [適用於 MySQL 的 Azure 資料庫] 或 [PostgreSQL] 服務的 [連線安全性] 頁面上,選取 [允許存取 Azure 服務] 動作設定,使其 ON

突顯 Azure MySQL 或 PostgreSQL 資料庫防火牆設定中 [允許存取 Azure 服務] 動作的影像

備註

您對防火牆所做的任何變更最多可能需要五分鐘的時間才會變成作用中。

在某些情況下,將伺服器開啟至所有 Azure 服務可能太過分。 如果您正在執行適用於 MySQL 或 PostgreSQL 的 Azure 資料庫一般用途或記憶體優化版本,請使用 Azure 虛擬網路規則來篩選虛擬網路層級的流量。 虛擬網路規則可讓您允許來自您自己虛擬網路的流量存取伺服器。 來自其他網路的流量將會遭到封鎖。

顯示適用於 MySQL 或 PostgreSQL 的 Azure 資料庫之虛擬網路規則的影像

如果您需要編寫防火牆維護工作的腳本,請使用 Azure CLI。 下列範例示範如何新增、刪除及顯示防火牆規則,這些操作會使用 az mysql 命令來對 Azure MySQL 資料庫進行處理。 如果您執行 PostgreSQL 命令,請改用對應的 az postgres 命令,參數相同:

允許存取範圍 13.83.152.0 到 13.83.152.15 的用戶端

az mysql server firewall-rule create \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1 \
    --start-ip-address 13.83.152.0 \
    --end-ip-address 13.83.152.15

列出所有防火牆規則

az mysql server firewall-rule list \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name]

顯示 FirewallRule1 的詳細數據

az mysql server firewall-rule show \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

拿掉 FirewallRule1。 此規則位址範圍內的用戶端將被拒絕存取

az mysql server firewall-rule delete \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

若要啟用 Azure 服務的存取權,請建立具有 start-ip-addressend-ip-address 值為 0.0.0.0的防火牆規則。

您可以使用 az msysql server vnet-rule 命令,以類似的方式建立和管理虛擬網路規則。

使用 SSL 保護流量

默認會啟用適用於 MySQL 的 Azure 資料庫或 PostgreSQL 的 SSL 保護。 您可以使用 Azure 入口網站中適用於 MySQL 或 PostgreSQL 服務的 [連線安全性] 頁面上的 [強制執行 SSL 連線] 設定來停用和重新啟用 SSL:

針對適用於 MySQL 或 PostgreSQL 的 Azure 資料庫,醒目提示 [連線安全性] 頁面上的 [強制執行 SSL 連線] 設定的影像

使用 Azure 進階威脅防護保護伺服器

進階威脅防護是 Azure 提供的額外安全性層。 進階威脅防護會監視伺服器的存取權,並尋找異常或潛在惡意行為的模式。 偵測到這類行為時,您可以安排警示傳送至指定的電子郵件位址。

偵測到異常活動的模式包括:

  • 從非預期或不尋常的位置存取。
  • 從不尋常的 Azure 資料中心存取。
  • 從可能有害的應用程式存取,例如可辨識的攻擊工具。
  • 快速連續發生大量的失敗登入,表示可能存在密碼蠻力攻擊。

您可以從 Azure 入口網站中服務的 進階威脅防護 頁面啟用進階威脅防護:

顯示適用於 MySQL 或 PostgreSQL 的 Azure 資料庫進階威脅防護頁面的影像

備份和還原伺服器

適用於 MySQL 的 Azure 資料庫或 PostgreSQL 服務會根據下列排程自動備份您的伺服器:

  • 建立伺服器之後,就會每周進行完整備份,並立即進行第一次完整備份。
  • 差異備份每天會執行兩次。
  • 事務歷史記錄備份會每隔五分鐘進行一次。

備份整個伺服器。 您無法備份個別資料庫,而且無法手動強制備份。

設定備份選項

您可以使用這些備份還原到您保留備份檔的任何時間點。 根據預設,備份會保留七天,但您可以保留最多 35 天。 您也會指定備份的儲存方式:本地備援備份會保留在與伺服器相同的區域內,並將異地備援備份複製到其他區域中的數據中心。 異地備援選項僅適用於一般用途和記憶體優化定價層中的伺服器。 您可以在 Azure 入口網站中伺服器的 [定價層] 頁面上設定備份選項:

針對適用於 MySQL 或 PostgreSQL 的 Azure 資料庫,顯示 [定價層] 頁面之 [備份設定] 區段的影像

還原伺服器

MySQL 或 PostgreSQL 的 Azure 資料庫支援兩種伺服器還原操作:時間點還原和地理還原。 在這兩種情況下,還原動作都會建立新的伺服器。 原始伺服器仍可供使用。 如果您想要應用程式使用還原的數據,您必須重新設定它們以使用新的伺服器。 此外,您必須記得開啟新伺服器的防火牆,以允許客戶端和服務連線。

這很重要

您無法還原已刪除的伺服器。 當您刪除伺服器時,也會刪除與其相關聯的備份。

時間點還原

時間點還原會使用原始伺服器的備份來建立新的伺服器,並將伺服器向前復原到指定的時間。 您可以使用 Azure 入口網站中伺服器 [ 概觀] 頁面工具列中的 [還原] 命令來起始還原作業。 系統會提示您輸入新伺服器的名稱和時間點。

顯示適用於 MySQL 或 PostgreSQL 的 Azure 資料庫之時間點還原頁面的影像

如果您想要從命令行執行還原作業,Azure CLI 支援 az mysql/postgres server restore命令。 例如:

az mysql server restore \
    --resource-group [resource group name] \
    --name [new Azure Database for MySQL server name] \
    --source-server [original Azure Database for MySQL server name] \
    --restore-point-in-time "2019-10-23T02:10:00+08:00"

異地復原

異地還原是使用異地備援記憶體中保留的備份,完整還原伺服器。 當您使用 Azure 入口網站建立新的伺服器時,您會將異地備援備份指定為數據源。 建立新伺服器時,將會在此備份中填入資料庫。

顯示建立適用於 MySQL 或 PostgreSQL 伺服器的 Azure 資料庫時的 [伺服器詳細資料] 區段的影像

Azure CLI 會提供 az mysql/postgres server georestore 命令,從命令行執行異地還原。

最多可能需要一小時的時間,才能將異地備援備份復寫至另一個區域。 如果您需要從不同區域進行異地還原,這可能會導致最多一小時的數據遺失。