共用方式為


Azure NFS 檔案共用的傳輸中加密(預覽)

本文說明如何加密傳輸中 NFS Azure 檔案共享的數據。

這很重要

Azure 檔案服務 NFS v4.1 磁碟區藉由啟用安全的 TLS 連線、保護傳輸中的數據免於攔截,包括 MITM 攻擊,來增強網路安全性。

使用開放原始碼 TLS 包裝函式 Stunnel 時,Azure 檔案服務會使用 AES-GCM 來加密 NFS 用戶端與 Azure 檔案服務之間具有強式加密的 TCP 串流,而不需要 Kerberos。 這可確保數據機密性,同時不需要複雜的設定或 Active Directory 等外部驗證系統。

AZNFS 公用程式套件可藉由在用戶端上安裝和設定 Stunnel 來簡化加密掛接。 AZNFS 可在 packages.microsoft.com 上建立本機安全端點,以透明的方式透過加密連線轉送 NFS 用戶端要求。 主要架構元件包括:

  • AZNFS 掛接協助程式:用戶端公用程式套件,可抽象化為 NFSv4.1 流量建立安全通道的複雜性。

  • Stunnel 程序:每個儲存帳戶的客戶端程序,負責監聽本地埠上的 NFS 用戶端流量,並將其安全地透過 TLS 轉送至 Azure Files NFS 伺服器。

  • AZNFS 監視程式:AZNFS 套件會執行背景工作,以確保 stunnel 進程正在執行、自動重新啟動終止的通道,並在卸除所有相關聯的 NFS 掛接之後清除未使用的進程。

支援的區域

支援 Azure 進階檔案的所有區域現在都支援傳輸中的加密。

註冊預覽版

若要啟用 NFS 共用傳輸中的加密,您必須註冊預覽功能。

透過 Azure 入口網站,在「預覽功能」下搜尋「Azure NFS 檔案共用的傳輸加密」,然後註冊。

顯示 Azure 入口網站畫面的圖表,以測試是否已套用 EiT。

如需詳細資訊,請參閱 在 Azure 訂用帳戶中設定預覽功能

強制執行傳輸中的加密

藉由在記憶體帳戶上啟用 安全傳輸所需的 設定,您可以確定記憶體帳戶中所有掛接到 NFS 磁碟區都已加密。

顯示如何在記憶體帳戶上啟用安全傳輸的螢幕快照。

不過,對於想要在相同記憶體帳戶上維持 TLS 和非 TLS 連線彈性的使用者, 安全傳輸 設定必須保持關閉。

如何加密傳輸中 NFS 共用的數據(預覽)

請遵循下列步驟來加密傳輸中的數據:

  1. 請確定客戶端已安裝必要的 AZNFS 掛接協助程式套件。
  2. 使用 TLS 加密掛接 NFS 檔案共用。
  3. 確認數據加密成功。

步驟 1:檢查 AZNFS 掛載輔助套件的安裝情況

若要檢查您的用戶端上是否已安裝 AZNFS 掛接協助程式套件,請執行下列命令:

systemctl is-active --quiet aznfswatchdog && echo -e "\nAZNFS mounthelper is installed! \n"

如果已安裝套件,您會看到訊息 AZNFS mounthelper is installed!。 如果未安裝,您必須使用適當的命令,在您的用戶端上安裝 AZNFS 掛接協助程式套件。

curl -sSL -O https://packages.microsoft.com/config/$(source /etc/os-release && echo "$ID/$VERSION_ID")/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install aznfs

這很重要

AZNFS 支援的 Linux 發行版如下:

  • Ubuntu (18.04 LTS、20.04 LTS、22.04 LTS、24.04 LTS)
  • Centos7、Centos8
  • RedHat7、RedHat8、RedHat9
  • Rocky8、Rocky9
  • SUSE(SLES 15)
  • Oracle Linux
  • Alma Linux

步驟 2:掛接 NFS 檔案共用

若要 使用 TLS 加密掛接 NFS 檔案分享:

  1. 在用戶端上建立目錄。
sudo mkdir -p /mount/<storage-account-name>/<share-name>
  1. 使用下列 Cmdlet 掛接 NFS 共用。 將 <storage-account-name> 替換為您的儲存帳戶名稱,並將 <share-name> 替換為您的檔案分享名稱。
sudo mount -t aznfs <storage-account-name>.file.core.windows.net:/<storage-account-name>/<share-name> /mount/<storage-account-name>/<share-name> -o vers=4,minorversion=1,sec=sys,nconnect=4

若要在沒有 TLS 加密的情況下掛載 NFS 共享:

sudo mount -t aznfs <storage-account-name>.file.core.windows.net:/<storage-account-name>/<share-name> /mount/<storage-account-name>/<share-name> -o vers=4,minorversion=1,sec=sys,nconnect=4,notls

若要在重新啟動時自動掛接共用,請在 檔案中新增下列這一行以建立條目:

<storage-account-name>.file.core.windows.net:/<storage-account-name>/<container-name> /nfsdata aznfs defaults,sec=sys,vers=4.1,nolock,proto=tcp,nofail,_netdev   0 2 

備註

在執行掛接命令之前,請確定已設定環境變數AZURE_ENDPOINT_OVERRIDE。 在非公用 Azure 雲端區域中掛接檔案共用或使用自定義 DNS 組態時,這是必要的。 例如,針對 Azure China Cloud: export AZURE_ENDPOINT_OVERRIDE="chinacloudapi.cn"

步驟 3:確認傳輸中的數據加密成功

執行 df -Th 命令。

此圖顯示Powershell畫面以測試是否已套用EiT。

指出客戶端是透過本機埠 127.0.0.1 連線,而不是外部網路。 stunnel 進程會在 127.0.0.1 (localhost) 上接聽來自 NFS 用戶端的傳入 NFS 流量。 Stunnel 接著 會攔截 此流量,並透過 TLS 安全地轉送至 Azure 上的 Azure 檔案服務 NFS 伺服器。

若要檢查 NFS 伺服器的流量是否已加密,請使用 tcpdump 命令來擷取埠 2049 上的封包。

sudo tcpdump -i any port 2049 -w nfs_traffic.pcap

當您在Wireshark中開啟擷取時,承載會顯示為「應用程式數據」,而不是可讀取的文字。

顯示Wireshark畫面以測試是否套用EiT的圖表。

備註

從虛擬機到相同伺服器端點的所有流量都會使用單一連線。 AZNFS 掛接協助程式可確保您無法在將共用掛接至該伺服器時混合 TLS 和非 TLS 組態。 此規則適用於來自相同儲存帳戶的檔案共用,以及解析為相同IP位址的不同儲存帳戶。

故障排除

如果先前對相同伺服器的 TLS 加密掛接在成功完成之前終止,非 TLS (notls) 掛接作業可能會失敗。 雖然 aznfswatchdog 服務會在逾時自動清理過期的項目,但若在清理完成前嘗試新的非 TLS 掛載可能會失敗。

若要解決此問題,請使用乾淨選項重新掛接共享,這會立即清除任何過時的條目。

sudo mount -t aznfs <storage-account-name>.file.core.windows.net:/<storage-account-name>/<share-name> /mount/<storage-account-name>/<share-name> -o vers=4,minorversion=1,sec=sys,nconnect=4,notls,clean

如果掛載問題持續出現,請檢查記錄檔以取得更多疑難解答詳細資訊。

  • 安裝輔助程序和監視器日誌/opt/microsoft/aznfs/data/aznfs.log
  • Stunnel 記錄/etc/stunnel/microsoft/aznfs/nfsv4_fileShare/logs

另請參閱