如何搭配 Azure Functions 使用安全的儲存體帳戶
當您建立函數應用程式執行個體時,Azure Functions 需要 Azure 儲存體帳戶。 Functions 運行時間會使用此預設記憶體帳戶來維護函式應用程式的健康情況。 如需詳細資訊,請參閱 Azure Functions 的儲存體考量。 本文說明如何使用受保護的記憶體帳戶作為預設記憶體帳戶。 如需有關如何搭配輸入和輸出存取限制建立函數應用程式的深入教學課程,請參閱與虛擬網路整合教學課程。 若要深入了解 Azure Functions 和網路功能,請參閱 Azure Functions 網路功能選項。
將儲存體帳戶限定於虛擬網路
當您建立函數應用程式時,您可以建立新的儲存體帳戶或連結至現有的儲存體帳戶。 使用安全的記憶體帳戶時,請記住這些考慮。
- 若要建立使用現有安全記憶體帳戶作為預設記憶體帳戶的函式應用程式,您必須在 Azure 入口網站 或使用 ARM 範本或 Bicep 部署來建立您的應用程式。
- 搭配動態調整計劃使用安全的記憶體帳戶時,您應該在 Flex 取用方案中裝載您的函式。 此方案同時支援安全的記憶體帳戶和受控識別型記憶體連線,這是最安全的連線選項。
- 專用 (App Service) 方案和彈性進階方案的所有層也都支援安全的記憶體帳戶。 不過,使用受控識別從 Premium 方案應用程式連線時,會有取捨。 如需詳細資訊,請參閱建立沒有 Azure 檔案儲存體的應用程式。
- 取 用方案不支援虛擬網路,因此您無法在取用方案中 執行時連線到安全的記憶體帳戶。 若要利用無伺服器函式裝載,您應該改為重新建立您的應用程式,以在 Flex 取用方案中執行。
- 本文目前說明如何在進階方案中建立函式應用程式,以使用記憶體帳戶 連接字串 連線到安全的記憶體帳戶。 若要提供記憶體帳戶認證的最佳保護,您應該改為在連線到記憶體帳戶時使用受控識別。 請改為遵循 快速入門:使用 Azure 開發人員 CLI 建立函式並將其部署至 Azure Functions,以在 Flex Consumption 方案中建立函式應用程式,以使用受控識別連線到新的安全記憶體帳戶。
- 如需儲存體帳戶上所有限制的清單,請參閱 儲存器帳戶需求。
在函數應用程式建立期間保護儲存體
您可以建立函數應用程式,以及虛擬網路後方所保護的新儲存體帳戶。 下列各節會示範如何使用 Azure 入口網站或部署範本來建立這些資源。
完成在進階方案中建立函數應用程式的步驟。 虛擬網路教學課程的本節說明如何建立函數應用程式,以透過私人端點連接到儲存體。
注意
在 Azure 入口網站中建立函數應用程式時,您也可以在 [儲存體] 索引標籤中選擇現有的安全儲存體帳戶。不過,您必須在函數應用程式設定適當的網路功能,才能透過用來保護儲存體帳戶的虛擬網路進行連線。 如果您沒有網路功能的設定權限,或尚未完全準備好網路,請在 [網路] 索引標籤中選取 [在建立後設定網路功能]。您可以在入口網站中的 [設定]> [網路] 底下,為新的函數應用程式設定網路功能。
針對現有的函數應用程式的安全儲存體
具有現有的函數應用程式時,您可以直接在該應用程式所使用的儲存體帳戶上設定網路功能。 但是,此程序會導致函數應用程式在設定網路和在函數應用程式重新啟動時遭到關閉。
若要將停機時間縮到最短,您可以改為交換現有儲存體帳戶,以取得新的安全儲存體帳戶。
1.啟用虛擬網路整合
作為必要條件,您必須啟用函數應用程式的虛擬網路整合:
使用未啟用服務端點或私人端點的儲存體帳戶來選擇函數應用程式。
針對您的函數應用程式啟用虛擬網路整合。
2.建立安全的儲存體帳戶
為您的函數式應用程式建立安全的儲存體帳戶:
建立次要儲存體帳戶。 此儲存體帳戶是可供函式應用程式使用的安全儲存體帳戶,而不是其原本的不安全儲存體帳戶。 您也可以使用 Azure Functions 尚未使用的現有儲存體帳戶。
儲存此儲存體帳戶的連接字串,以供稍後使用。
在新的儲存體帳戶中建立檔案共用。 為了方便起見,您可以使用原始儲存體帳戶的相同檔案共用名稱。 除此之外,如果使用新的檔案共用名稱,則必須更新應用程式設定。
使用下列其中一種方式保護新的儲存體帳戶:
建立私人端點。 當您設定私人端點連線時,請為
file
和blob
子資源建立私人端點。 針對 Durable Functions,您也必須讓queue
和table
子資源可透過私人端點存取。 如果您使用自訂或內部部署網域名稱系統 (DNS) 伺服器,請務必設定 DNS 伺服器以解析為新的私人端點。限制特定子網路的流量。 請確定您的函數應用程式已與允許的子網路進行網路整合,且子網路具有
Microsoft.Storage
的服務端點。
將檔案和 Blob 內容從函數應用程式使用的目前儲存體帳戶複製到新的安全的儲存體帳戶和檔案共用。 AzCopy 和 Azure 儲存體總管 是常見的方法。 如果您使用 Azure 儲存體總管,您可能需要允許用戶端 IP 位址存取儲存體帳戶的防火牆。
現在您已準備好設定函數應用程式,以與新的安全儲存體帳戶進行通訊。
3.啟用應用程式和設定路由傳送。
注意
只有彈性進階和專用 (App Service) 主機方案才需要這些設定步驟。 Flex Consumption 方案不需要網站設定,即可設定網路功能。
您現在已可路由函數應用程式的流量,以通過虛擬網路:
啟用 應用程式路由傳送 將應用程式的流量路由傳送至虛擬網路:
在您的函式應用程式中,展開 [設定],然後選取 [網路]。 在 [網路] 頁面的 [輸出流量設定] 下,選取與您的虛擬網路整合相關聯的子網路。
在新頁面的 [應用程式路由] 底下,選取 [輸出網際網路流量]。
啟用 [內容共用路由],讓您的函數應用程式透過其虛擬網路與新的儲存體帳戶通訊。 在與上一個步驟相同的頁面中,於 [組態路由] 底下,選取 [內容儲存體]。
注意
若儲存體帳戶由相同方案中的多個函數應用程式共用,當您路由至其中的內容共用時,必須特別小心。 如需詳細資訊,請參閱儲存體考量一文中的透過虛擬網路達到一致路由。
4.更新應用程式設定
最後,您必須更新應用程式設定,以指向新的安全儲存體帳戶:
在您的函數應用程式中,展開 [設定],然後選取 [環境變數]。
在 [應用程式設定] 索引標籤中,透過選取每個設定、加以編輯,然後選取 [套用] 來更新下列設定:
設定名稱 值 註解 AzureWebJobsStorage
儲存體連接字串 使用您稍早儲存的新安全儲存體帳戶連接字串。 WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
儲存體連接字串 使用您稍早儲存的新安全儲存體帳戶連接字串。 WEBSITE_CONTENTSHARE
檔案共用 使用專案部署檔案所在的安全儲存體帳戶中建立的檔案共用名稱。 選取 [套用],然後選取 [確認] 以在函數應用程式中儲存新的應用程式設定。
函數應用程式會重新啟動。
函數應用程式完成重新啟動之後,即會連線到受保護的儲存體帳戶。