存取控管

本頁面說明如何控管 Filestore 執行個體的存取權。

  • 透過 NFSv4.1 通訊協定,您可以使用 Kerberos 保護 Filestore 執行個體的存取權。詳情請參閱「關於支援的通訊協定」。

  • 或者,您也可以使用 Linux 選項控管 NFS 存取權,並使用身分與存取權管理 (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 設定,判斷檔案共用區是否可寫入,以及是否可以在檔案共用區上執行檔案。掛接檔案共用區後,您可以使用 chmodsetfacl 等標準 Linux 指令來設定檔案和檔案共用權限。只有基本層級支援 setfacl

設定一致的權限

強烈建議您為連線至相同 Filestore 執行個體的所有用戶端上每位使用者設定一致的權限,以防權限提升。如果檔案共用區已掛載至多個用戶端,且使用者在其中一個用戶端上具有 root 權限,但其他用戶端則沒有,則可能會發生以下權限提升情境:

  • 使用者在具有 Root 存取權的用戶端上,為可執行檔案設定 setuid 屬性。
  • 接著,使用者會將可執行檔案上傳至檔案共用區。
  • 使用者會在至少具有讀取權限的任何用戶端上,以 root 身分執行上傳的檔案。

這是因為 setuid 位元可讓使用者使用檔案擁有者的權限執行檔案,在本例中為 root。

重疊權限

可用區、區域和企業執行個體現在支援重疊權限。

如果為重疊的 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 子網路的重疊權限,並會傳回錯誤。

  • 基本 SSD 或基本 HDD 執行個體不支援重疊權限。

後續步驟