存取權控管

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

檔案共用匯出設定

系統已為 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 權限,但在其他用戶端上沒有,則可能會發生下列權限提升情況:

  • 使用者在具有根存取權的用戶端,對可執行檔設定 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 子網路的重疊權限,且會傳回錯誤。

  • 基本固態硬碟或基本傳統硬碟執行個體不支援權限重疊。

後續步驟