用戶端作業系統會強制 NFS 檔案共用的權限,而非由 Azure 檔案儲存體服務。 根壓縮是 NFS 中的系統管理安全性功能,可防止由用戶端機器對 NFS 伺服器未經授權的根層級存取。 這項功能是保護使用者資料和系統設定免遭未受信任或遭入侵用戶端操作的重要部分。。
系統管理員應在多個使用者或系統存取 NFS 共用的環境中啟用根壓縮,特別是在用戶端機器未受完全信任的案例中。 藉由將根使用者轉換成匿名使用者,根壓縮可確保即使用戶端機器遭到入侵,攻擊者也無法惡意探索根權限,來存取或修改 NFS 伺服器上的重要檔案。
在本文中,您會了解如何設定及變更 NFS Azure 檔案共用的根壓縮設定。
適用於
檔案共用類型 |
SMB |
NFS |
標準檔案共用 (GPv2)、LRS/ZRS |
|
|
標準檔案共用 (GPv2)、GRS/GZRS |
|
|
進階檔案共用 (FileStorage)、LRS/ZRS |
|
|
根壓縮如何搭配 Azure 檔案儲存體使用
根壓縮的運作是將根使用者的使用者識別碼 (UID) 和群組識別碼 (GID) 重新對應至伺服器上屬於匿名使用者的 UID 和 GID。 存取檔案系統的根使用者會自動轉換為具有限制權限的匿名、較低權限的使用者/群組。
儘管根擠壓是 NFS 中的預設行為,但在建立 NFS Azure 檔案共享時,其並非預設選項。 您必須在檔案共用上明確啟用根擠壓。 您可以在建立 NFS Azure 檔案共用時或稍後執行此動作。
根壓縮設定
您可以從三個根壓縮設定中進行選擇:
- 沒有根壁球:關閉根壁球。 此選項主要適用於無磁碟用戶端或工作負載文件所指定的工作負載。 這是在建立新的 NFS Azure 檔案共用時的預設設定。
- 所有壓縮:將所有 UID 和 GID 對應至匿名使用者。 適用於需要所有用戶端唯讀存取的共用。
- 根壓縮:將 UID/GID 0 (root) 的要求對應至匿名 UID/GID。 這不適用於可能同樣具敏感性的任何其他 UID 或 GID,例如使用者間隔或群組員工。
下表醒目提示當設定特定根壓縮選項時,伺服器觀察到的 UID 行為。
選項 |
用戶端 UID |
伺服器 UID |
root_squash |
0 |
65534 |
root_squash |
1000 |
1000 |
no_root_squash |
0 |
0 |
no_root_squash |
1000 |
1000 |
all_squash |
0 |
65534 |
all_squash |
1000 |
65534 |
您可以透過 Azure 入口網站、Azure PowerShell 或 Azure CLI 來設定根壓縮設定。
登入 Azure 入口網站,並瀏覽至包含 NFS Azure 檔案共用的 FileStorage 儲存體帳戶。
在服務功能表中,在 [資料儲存體] 下,選取 [檔案共用]。
選取您要修改根壓縮設定的檔案共用。
在服務功能表上,選取 [屬性]。 然後視需要切換 [根壓縮] 設定。
選取 [儲存] 以更新根壓縮值。
登入 Azure 並選取您的訂用帳戶。
Connect-AzAccount
Select-AzSubscription -SubscriptionId "<your-subscription-id>"
若要在檔案共用上啟用根壓縮,請執行下列命令。 將 <resource-group-name>
、<storage-account-name>
和 <file-share-name>
取代為您自己的值。
Update-AzRmStorageShare `
-ResourceGroupName <resource-group-name> `
-StorageAccountName <storage-account-name> `
-Name <file-share-name> `
-RootSquash RootSquash
若要在檔案共用上停用根壓縮,請執行下列命令。 將 <resource-group-name>
、<storage-account-name>
和 <file-share-name>
取代為您自己的值。
Update-AzRmStorageShare `
-ResourceGroupName <resource-group-name> `
-StorageAccountName <storage-account-name> `
-Name <file-share-name> `
-RootSquash NoRootSquash
若要強制所有使用者的壓縮,請執行下列命令,以將所有使用者識別碼對應至匿名。 將 <resource-group-name>
、<storage-account-name>
和 <file-share-name>
取代為您自己的值。
Update-AzRmStorageShare `
-ResourceGroupName <resource-group-name> `
-StorageAccountName <storage-account-name> `
-Name <file-share-name> `
-RootSquash AllSquash
若要檢視檔案共用的根壓縮屬性,請執行下列命令。 將 <resource-group-name>
、<storage-account-name>
和 <file-share-name>
取代為您自己的值。
Get-AzRmStorageShare `
-ResourceGroupName <resource-group-name> `
-StorageAccountName <storage-account-name> `
-Name <file-share-name> | fl -Property ResourceGroupName, StorageAccountName, Name, QuotaGiB,AccessTier,EnabledProtocols,RootSquash
登入 Azure 並設定您的訂用帳戶。
az login
az account set --subscription "<your-subscription-id>"
若要在檔案共用上啟用根壓縮,請執行下列命令。 將 <resource-group-name>
、<storage-account-name>
和 <file-share-name>
取代為您自己的值。
az storage share-rm update \
--resource-group <resource-group-name> \
--storage-account <storage-account-name> \
--name <file-share-name> \
--root-squash RootSquash
若要在檔案共用上停用根壓縮,請執行下列命令。 將 <resource-group-name>
、<storage-account-name>
和 <file-share-name>
取代為您自己的值。
az storage share-rm update \
--resource-group <resource-group-name> \
--storage-account <storage-account-name> \
--name <file-share-name> \
--root-squash NoRootSquash
若要強制所有使用者的壓縮,請執行下列命令,以將所有使用者識別碼對應至匿名。 將 <resource-group-name>
、<storage-account-name>
和 <file-share-name>
取代為您自己的值。
az storage share-rm update \
--resource-group <resource-group-name> \
--storage-account <storage-account-name> \
--name <file-share-name> \
--root-squash AllSquash
若要檢視檔案共用的根壓縮屬性,請執行下列命令。 將 <resource-group-name>
、<storage-account-name>
和 <file-share-name>
取代為您自己的值。
az storage share-rm show \
--resource-group <resource-group-name> \
--storage-account <storage-account-name> \
--name <file-share-name>
另請參閱