本頁說明如何控管 Filestore 執行個體的存取權。
透過 NFSv4.1 通訊協定,您可以使用 Kerberos 保護 Filestore 執行個體的存取權。詳情請參閱「關於支援的通訊協定」。
此外,您也可以使用 Linux 選項控管 NFS 存取權,並使用 Identity and Access Management (IAM) 控管執行個體作業的存取權,例如建立、編輯、查看及刪除執行個體。以下指南將逐步說明如何完成各項工作。
檔案共用匯出設定
系統已為 Filestore 檔案共用區指派下列預設 /etc/exports 設定:
- 允許連線至檔案共用區的用戶端清單,包含您為 Filestore 執行個體選取的虛擬私有雲網路中的所有內部 IP 位址。內部 IP 位址可以是子網路範圍中列出的任何範圍。不過,如果用戶端位於非 RFC 1918 子網路範圍,您必須使用以 IP 為基礎的存取控管機制,明確授予用戶端存取 Filestore 執行個體的權限。
- 使用
rw選項,因此檔案共用區允許讀取和寫入作業。 - 採用使用者 ID 對應選項
no_root_squash,因此在 Filestore 執行個體與用戶端中的所有使用者與群組 (包括 root 使用者) 都應相同。 - 其他所有選項都使用
/etc/exports預設值。
基本級執行個體
基本 SSD 和基本 HDD 執行個體會建立標示為 /config/google-prober 的匯出共用項目,用於支援內部探測程序,進而驗證存取權、耐久性或效能。共用內容會匯出至僅供執行個體 IP 位址存取的用戶端清單,並使用上一節所述的相同設定。只有在執行個體上代管或源自執行個體的探測器可以存取共用內容,執行個體外部無法存取。無論是否套用依據 IP 設定的存取權控管機制,執行個體都會匯出共用項目。使用者可以使用 showmount -e 指令查看匯出的共用項目。
依據 IP 設定的存取權控管機制
如要變更這些匯出設定,請使用 Google Cloud 控制台建立存取控制規則,或使用 gcloud CLI 在建立執行個體時指定 JSON 設定檔。詳情請參閱設定以 IP 為準的存取權控管。
您也可以在建立執行個體後新增存取控制規則,或修改現有規則。詳情請參閱「編輯執行個體」。
檔案共用權限
建立 Filestore 執行個體時,該執行個體的檔案共用區會擁有預設 POSIX 檔案權限 rwxr-xr-x。這些權限表示在 Filestore 執行個體上,只有在已連線用戶端中的 root 使用者才擁有檔案共用區的讀取和寫入權限。其他使用者則預設為僅擁有讀取權限。用戶端 root 使用者可以變更權限與擁有者。
設定檔案共用區的存取權
掛接檔案共用區時,您可以使用掛接選項和/etc/fstab 設定,判斷檔案共用區是否可以寫入,以及是否可以在檔案共用區上執行檔案。掛接檔案共用區後,您可以使用 chmod 和 setfacl 等標準 Linux 指令,設定檔案和檔案共用區的權限。只有基本層級支援 setfacl。
設定一致的權限
強烈建議您為連線至相同 Filestore 執行個體的所有用戶端上每位使用者設定一致的權限,以防權限遭到提升。如果檔案共用掛接在多個用戶端上,且使用者在其中一個用戶端上擁有 Root 權限,但在其他用戶端上沒有,則可能會發生下列權限提升情況:
- 使用者在具有根存取權的用戶端,對可執行檔設定
setuid屬性。 - 然後將可執行檔上傳至檔案共用區。
- 使用者在任何用戶端上以根身分執行上傳的檔案,但前提是使用者至少要有讀取權限。
之所以會發生這種情況,是因為 setuid 位元允許使用者以檔案擁有者 (在本例中為根目錄) 的權限執行檔案。
權限重疊
可用區、區域和企業級執行個體現在支援重疊權限。
如果為重疊的 IP 位址子網路定義了兩個不同的存取控制規則,系統會優先套用為較小子網路定義的規則。
舉例來說,如果 JSON 設定檔包含一項規則,允許 IPv4 位址子網路 10.0.0.0/24 具有讀取和寫入存取權,而另一項規則允許 IPv4 位址子網路 10.0.0.0/28 具有唯讀存取權,Filestore 會先辨識並套用較小子網路的規則。然後,系統會將另一條規則套用至定義的 IP 位址子網路其餘部分。在這個範例中,使用 IPv4 位址 10.0.0.20 的用戶端獲得讀取和寫入權限,而使用 10.0.0.12 的用戶端則獲得唯讀權限:
{
"--file-share":
{
"capacity": "2048",
"name": "my_vol",
"nfs-export-options": [
{
"access-mode": "READ_WRITE",
"ip-ranges": [
"10.0.0.0/24"
],
"squash-mode": "ROOT_SQUASH",
"anon_uid": 1003,
"anon_gid": 1003
},
{
"access-mode": "READ_ONLY",
"ip-ranges": [
"10.0.0.0/28"
],
"squash-mode": "NO_ROOT_SQUASH"
}
]
}
}
但須遵守下列限制:
系統不支援相同 IPv4 子網路的重疊權限,且會傳回錯誤。
基本固態硬碟或基本傳統硬碟執行個體不支援權限重疊。