關於 NFSv4.1 通訊協定

以下指南說明 NFSv4.1 通訊協定。

Filestore 支援在下列服務層級建立的執行個體使用 NFSv4.1 通訊協定:

  • 可用區
  • 區域
  • Enterprise

這項功能可與 Managed Service for Microsoft Active Directory (Managed Microsoft AD) 整合,支援需要用戶端和伺服器驗證、訊息資料完整性檢查,以及傳輸中資料加密的工作負載,這些功能先前在 Filestore 中無法使用。

系統支援使用 LDAPKerberos 進行驗證,並包含下列安全性類型 (設定):

  • 用戶端和伺服器驗證 (krb5)。
  • 郵件完整性檢查 (krb5i)。包含先前設定的功能。
  • 傳輸中資料加密 (krb5p)。包含先前設定的功能。

Managed Microsoft AD 是唯一完全代管的 Google Cloud 解決方案,同時支援 LDAPKerberos,符合 NFSv4.1 通訊協定的需求,並提供安全和隱私權優勢。雖然不一定要整合 Managed Microsoft AD,但強烈建議您這麼做,以獲得最佳 Google Cloud 使用者體驗,並管理使用者帳戶和變動的群組與權限。

是否應該使用 NFSv4.1?

許多企業機構都依賴舊版系統進行業務關鍵作業。許多這類系統都要求對網路檔案儲存空間進行驗證,並加密傳輸中的資料。NFSv3 的設計並未考量驗證機制。Filestore 的 NFSv4.1 通訊協定與 Managed Microsoft AD 整合後,現在可滿足這項重要使用者需求。

如要進一步瞭解 NFSv4.1 的優點,請參閱「支援的通訊協定簡介」。

瞭解 NFSv4.1 中的網路存取控制清單 (ACL)。

在 NFSv3 中,僅支援 sys 安全性風味。這項設定會信任用戶端在掛接期間提供的使用者 uidgid

在 Filestore NFSv4.1 通訊協定中,有幾種網路 ACL 安全性類型或設定可供使用:

  • krb5

    使用 Kerberos 票證驗證用戶端,並根據 Managed Microsoft AD Kerberos 伺服器驗證票證。

  • krb5i

    包括 krb5 提供的驗證,並使用 Kerberos 對例項來回的所有網路流量執行訊息完整性檢查。

  • krb5p

    包括 krb5 提供的驗證和 krb5i 的訊息完整性檢查,並使用 Kerberos 加密傳輸中的資料。

如要使用這些選項,必須整合 Managed Service for Microsoft Active Directory。詳情請參閱「使用 Managed Microsoft AD 建立 Filestore 執行個體」。

如果未指定 Microsoft Active Directory 網域代管服務,則僅支援 sys 安全性類型。

詳情請參閱「NFSv4.1 限制」。

在 Linux 用戶端上掛接 Filestore NFSv4.1 執行個體

下列步驟說明如何在 Linux 用戶端上掛接執行個體。

  • 使用 sec=sys 掛接,取得標準 NFS 權限:

    sudo mount -vvvv -t nfs4 -o vers=4.1,sec=sys,rw \ FILESTORE-INSTANCE-FQDN:/INSTANCE_SHARE_POINT /MOUNT_POINT
    
  • 使用 sec=krb5 進行掛接,以透過 Kerberos 驗證:

    sudo mount -vvvv -t nfs4 -o vers=4.1,sec=krb5i,rw \ FILESTORE-INSTANCE-FQDN:/INSTANCE_SHARE_POINT /MOUNT_POINT
    
  • 使用 sec=krb5i 掛接,進行以 Kerberos 為基礎的驗證和訊息完整性檢查:

    sudo mount -vvvv -t nfs4 -o vers=4.1,sec=krb5i,rw \ FILESTORE-INSTANCE-FQDN:/INSTANCE_SHARE_POINT /MOUNT_POINT
    
  • 使用 sec=krb5p 掛接,以進行 Kerberos 型驗證、完整性檢查和傳輸中加密:

    sudo mount -vvvv -t nfs4 -o vers=4.1,sec=krb5p,rw \ FILESTORE-INSTANCE-FQ
    DN:/INSTANCE_SHARE_POINT /MOUNT_POINT
    

    更改下列內容:

    • FILESTORE-INSTANCE-FQDN 是 Filestore 執行個體所在的完整網域名稱。
    • INSTANCE_SHARE_POINT 是您要連線的 Filestore 執行個體檔案共用名稱。
    • MOUNT_POINT 是您要掛接的掛接點或目錄名稱。

Linux 用戶端設定

NFSv4.1 Filestore 執行個體可讓用戶端使用各種安全防護方式執行 NFS 作業。執行個體管理員會在建立 Filestore NFSv4.1 執行個體時,透過網路 ACL 設定這些變體,或在建立後更新。

sys 安全性類型使用標準 Unix 驗證,而 krb5krb5ikrb5p 類型則使用以 Kerberos 為基礎的驗證。

krb5krb5ikrb5p 類型需要用戶端連線至與 Filestore 執行個體相同的 Managed Microsoft AD 網域。請根據您的環境完成下列步驟。

Ubuntu 映像檔

  1. 透過 SSH 連線至 Compute Engine 執行個體。
  2. 執行下列指令,加入代管的 Microsoft AD 網域。

    1. 執行下列設定指令:

      sudo apt-get update \
      sudo apt-get -y -qq install adcli realmd sssd sssd-tools packagekit krb5-user \ nfs-common expect retry
      
    2. 系統提示輸入領域時,請將現有項目替換為 Filestore 執行個體上使用的受管理 Microsoft AD 網域。輸入大寫值,然後按箭頭鍵選取「確定」,再按 Enter 鍵。

    3. 系統提示輸入主機時,請將其留空並繼續操作。

    4. 請完成下列任一步驟:

      • 如果 VM 的主機名稱長度小於或等於 15 個字元,請執行下列指令:

        sudo realm join -vU JOIN_DOMAIN_USER --automatic-id-mapping=no MANAGED_AD_DOMAIN_NAME
        

        更改下列內容:

        • JOIN_DOMAIN_USER 是用來加入網域的使用者帳戶名稱。
        • MANAGED_AD_DOMAIN_NAME 是您要使用的 Managed Microsoft AD 服務網域名稱。
      • 如要為主機名稱長度超過 15 個字元的 VM 執行此操作,請執行下列指令:

        sudo realm join -vU JOIN_DOMAIN_USER --automatic-id-mapping=no \ --user-principal=host/`hostname -f`@MANAGED_AD_REALM_NAME MANAGED_AD_DOMAIN_NAME
        

        更改下列內容:

        • JOIN_DOMAIN_USER 是用來加入網域的使用者帳戶名稱。
        • MANAGED_AD_REALM_NAME 是您要使用的 Managed Microsoft AD 服務領域名稱。
        • MANAGED_AD_DOMAIN_NAME 是您要使用的 Managed Microsoft AD 服務網域名稱。
  3. 更新 Kerberos 設定。使用必要的領域定義和領域網域對應更新 /etc/krb5.conf

     [realms]
              DOMAIN_NAME = {
                       kdc = DOMAIN_NAME
                       default_domain = DOMAIN_NAME
              }
     [domain_realm]
              .domain_name_lowercase = DOMAIN_NAME
              domain_name_lowercase = DOMAIN_NAME
    

    更改下列內容:

    • DOMAIN_NAME 是您要使用的網域名稱,請以大寫輸入。
    • domain_name_lowercase 是您要使用的網域名稱,請以小寫輸入。

    請參考以下範例:

    [realms]
           FILE.DEMO.LOCAL = {
                    kdc = FILE.DEMO.LOCAL
                    default_domain = FILE.DEMO.LOCAL
           }
    
    [domain_realm]
           .file.demo.local = FILE.DEMO.LOCAL
           file.demo.local = FILE.DEMO.LOCAL
    
  4. 執行 rpc-gssd 服務。在 /etc/idmapd.conf 內的 [General] 區段中新增下列 No-Strip 屬性值:

     [General]
     No-Strip = both
    
  5. 執行下列指令:

    sudo systemctl restart rpc-gssd
    

Centos 映像檔

  1. 透過 SSH 連線至 Compute Engine 執行個體。
  2. 加入代管的 Microsoft AD 網域:

    sudo yum update \
    sudo yum install -y adcli realmd sssd samba-common-tools krb5-workstation nfs-utils \ bind-utils openldap-clients
    
  3. 請完成下列任一步驟:

    • 如果 VM 的主機名稱長度小於或等於 15 個字元,請執行下列指令:

      sudo realm join -vU JOIN_DOMAIN_USER --automatic-id-mapping=no MANAGED_AD_DOMAIN_NAME
      

      更改下列內容:

      • JOIN_DOMAIN_USER 是用來加入網域的使用者帳戶名稱。
      • MANAGED_AD_DOMAIN_NAME 是要使用的 Managed Microsoft AD 服務網域名稱。
    • 如果 VM 的主機名稱長度超過 15 個字元,請執行下列指令:

      sudo realm join -vU JOIN_DOMAIN_USER --automatic-id-mapping=no \ --user-principal=host/`hostname -f`@MANAGED_AD_REALM_NAME MANAGED_AD_DOMAIN_NAME
      

      更改下列內容:

      • JOIN_DOMAIN_USER 是用來加入網域的使用者帳戶名稱。
      • MANAGED_AD_REALM_NAME 是要使用的 Managed Microsoft AD 服務的領域名稱。
      • MANAGED_AD_DOMAIN_NAME 是要使用的 Managed Microsoft AD 服務網域名稱。
  4. 確認 sssd 服務正在執行:

    sudo systemctl status sssd
    
  5. 執行 rpc-gssd 服務。在 /etc/idmapd.conf[General] 區段的 No-Strip 屬性值下方新增下列內容:

    [General]
    No-Strip = both
    
  6. 執行下列指令。這個指令可確保 NFS 用戶端不會從 NFS 伺服器主機名稱中移除網域名稱。詳情請參閱 NFS Ganesha 郵件論壇封存內容Arch Linux 封存內容

    sudo systemctl start rpc-gssd
    

後續步驟