設定 NFSv4.1 通訊協定

以下指南說明如何使用新的 Filestore 執行個體導入 NFSv4.1 通訊協定。

關於 NFSv4.1

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

  • 可用區
  • 區域
  • 企業

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

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

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

受管理的 Microsoft AD 是唯一支援 LDAPKerberos 的完全受管理 Google Cloud 解決方案,可滿足 NFSv4.1 通訊協定的需求,並提供安全性和隱私權優勢。雖然不需要整合受管理的 Microsoft AD,但為了提供最佳 Google Cloud 使用者體驗,我們強烈建議您管理使用者帳戶、變動中的群組和權限。

是否應使用 NFSv4.1?

許多企業組織都依賴傳統系統執行重要業務。許多系統都需要為網路檔案儲存空間進行驗證和傳輸期間加密。NFSv3 的設計並未考量到驗證機制。Filestore 與受管理的 Microsoft AD 整合的 NFSv4.1 通訊協定,現在已符合這項關鍵使用者需求。

目標

本指南將說明如何完成下列工作:

建立使用 NFSv4.1 的 Filestore 執行個體

如果您想在 Filestore 執行個體中使用 Managed Microsoft AD,必須先建立 Managed Microsoft AD 網域,再建立 Filestore 執行個體。

  1. 在同一個專案中,代管的 Microsoft AD 網域和 Filestore 執行個體都必須使用相同的 VPC

    如果您在不同專案中代管 Managed Microsoft AD 服務,而該專案與您要使用的 Filestore 執行個體不同,則 Filestore 虛擬私有雲網路必須與 Managed Microsoft AD 網域建立對等互連。

    詳情請參閱使用網域連結功能,部署可跨專案存取的受管理 Microsoft AD

  2. 完成所有設定步驟,建立 Filestore 執行個體

  3. 請確認代管的 Microsoft AD 使用者已填入 POSIX RFC 2307RFC 2307bis 欄位,如下所示。

    如要進一步瞭解如何在受管理的 Microsoft AD 中設定物件,請參閱「受管理的 Active Directory 物件」。

    Active Directory 使用者和電腦

    下列步驟說明您需要為 LDAP 使用者和群組設定的屬性。您可以使用 Active Directory 使用者與電腦 MMC 嵌入式管理單元管理 POSIX 屬性。

    如要開啟「屬性編輯器」,請按照下列步驟操作:

    1. 按一下「啟動」
    2. 按一下「Windows 管理員工具」,然後選取「Active Directory 使用者和電腦」

      系統會開啟「Active Directory 使用者和電腦」視窗。

    3. 選取要查看的網域名稱。如要展開內容,請按一下 展開箭頭。

    4. 在「Active Directory 使用者和電腦」的「View」選單中,選取「Advanced Features」

    5. 在左側窗格中,雙擊「使用者」

    6. 在使用者清單中,雙擊使用者即可查看「屬性編輯器」分頁。

      LDAP 使用者必須設定下列屬性:

      • uid
      • uidNumber
      • cn
      • gidNumber
      • objectClass

      每位使用者都必須有不重複的 uidNumber。請注意,uid 屬性的值須區分大小寫。對於 objectClass 屬性,user 是大多數 Active Directory (AD) 部署作業的預設設定。以下為範例:

      uid: Alice
      uidNumber: 139
      gidNumber: 555
      objectClass: user
      

      LDAP 群組必須設定下列屬性:

      • cn
      • gidNumber
      • objectClass

      每個群組都必須有專屬的 gidNumber。請注意,cn 屬性的值須區分大小寫。對於 objectClass 屬性,group 是大多數 AD 部署作業的預設設定。以下是範例:

      cn: AliceGroup
      gidNumber: 555
      objectClass: group
      
  4. 使用 gcloud projects add-iam-policy-binding 指令,授予 Filestore 在受管理的 Microsoft AD 中建立及管理物件的存取權:

    gcloud projects add-iam-policy-binding MANAGED_MICROSOFT_AD_PROJECT_ID \
    --member=serviceAccount:service-$(gcloud projects describe PROJECT_ID \
    --format='value(projectNumber)')@cloud-filer.iam.gserviceaccount.com \
    --role=roles/managedidentities.filestoreintegrator
    

    更改下列內容:

    • MANAGED_MICROSOFT_AD_PROJECT_ID 是 Managed Microsoft AD 網域所在專案的專案 ID。
    • PROJECT_ID 是 Filestore 執行個體所在專案的專案 ID。

    您可能會看到類似以下的錯誤訊息:

    INVALID_ARGUMENT: Service account service-123456789012@cloud-filer.iam.gserviceaccount.com does not exist.
    

    如果是這樣,請使用下列指令解決問題:

    gcloud beta services identity create --service=file.googleapis.com --project \ MANAGED_MICROSOFT_AD_PROJECT_ID
    

建立 Filestore 執行個體 (可含或不含 Managed Microsoft AD)

建立使用 NFSv4.1 通訊協定與 Managed Microsoft AD 的 Filestore 執行個體。針對選擇不使用 Managed Microsoft AD 的使用者,我們也提供可選步驟。

事前準備

建立新的 Filestore 執行個體前,請確認您有足夠的配額。執行個體配額範圍取決於您要使用的區域位置和服務層級。如要增加可用配額,您必須提交配額增加要求

使用 Managed Microsoft AD 建立 Filestore 執行個體

Google Cloud 控制台

設定執行個體參數

  1. 在 Google Cloud 控制台中,前往 Filestore 執行個體頁面。

    前往 Filestore 執行個體頁面

  2. 點選「建立執行個體」

  3. 指定執行個體的基本參數:

    1. 在「Instance ID」欄位中,輸入要用於 Filestore 執行個體的名稱。
    2. 在「執行個體類型」中,選取「Regional」或「Zonal」

      如要建立企業執行個體,您必須直接透過 Filestore API 執行作業。

    3. 在「已分配容量」中,輸入要使用的容量。您必須輸入介於 1 TB 和 10 TB 之間的值,以 256 GiB (0.25 TiB) 為單位調整。

    4. 在「Region」(區域) 中,選取要使用的區域。

    5. 在「VPC Network」(虛擬私有雲網路) 中,選取要用於 Filestore 執行個體和 NFS 用戶端的網路。

      • 如果 Managed Microsoft AD 與 Filestore 執行個體位於同一個專案中,則需要在 Managed Microsoft AD 網域中授權虛擬私有雲網路。
      • 如果 Managed Microsoft AD 位於個別專案中,則應在 Managed Microsoft AD 設定中,使用 Active Directory 網路對等互連來設定 VPC 網路。
    6. 在「已分配的 IP 範圍」中,選取「使用系統自動分配的 IP 範圍 (建議)」

    7. 在「Protocol」中,選取「NFSv4.1」

設定執行個體的驗證設定

  1. 設定執行個體的驗證設定。
    1. 按一下「驗證」
    2. 選取代管受管理 Microsoft AD 的專案。為了方便本指南說明,我們假設目前的專案就是我們要使用的專案。在「加入 Active Directory 網域」清單中,選取要使用的受管理 Microsoft AD 網域。
    3. 在「Computer account name」欄位中,輸入要用於在受管理的 Microsoft AD 網域中識別 Filestore 執行個體的電腦帳戶名稱。名稱長度不得超過 15 個半形英數字元。
    4. 在「檔案共用區名稱」欄位中輸入共用區名稱,因為 NFSv4.1 用戶端會使用這個名稱。
  2. 在「存取權控制」窗格中,完成下列任一步驟:

    • 如果使用受管理的 Microsoft AD,請選取「依據 IP 位址或範圍限制存取權」

      1. 根據您要定義的 IP 或子網路設定存取規則。為了方便本指南說明,請使用下列設定:
      2. 在「IP 位址或範圍 1」欄位中,輸入要使用的 IP 位址或範圍。
      3. 按一下「Access 1」下拉式清單,然後選取「Admin」。按一下「Mount」sec= 1 下拉式清單,然後選取「sys」核取方塊。

      Filestore 的預設 / 擁有者為 root。如要讓其他使用者和群組能夠存取執行個體,您必須建立存取規則,讓管理 VM 存取權使用 Admin 角色和 sec=sys 安全性設定。

    • 如果您未使用 Managed Microsoft AD,請選取「為虛擬私有雲網路中的所有用戶端授予存取權限」

      如果未使用受管理的 Microsoft AD,唯一支援的安全性設定為 sec=sys

  3. 按一下「建立」,建立執行個體。

gcloud

  1. 安裝並初始化 gcloud CLI

    如果您已安裝 gcloud CLI,請執行下列指令來更新:

    gcloud components update
    
  2. 執行 gcloud beta filestore instances create 指令,建立 Filestore 區域、地區或企業執行個體:

       gcloud beta filestore instances create INSTANCE-ID \
       --description="DESCRIPTION" \
       --region=LOCATION \
       --tier=TIER \
       --protocol=PROTOCOL \
       --file-share=name="FILE_SHARE_NAME",capacity=CAPACITYTB \
       --network=name="VPC_NETWORK",connect-mode=CONNECT_MODE,reserved-ip-range="RESERVED_IP_RANGE" \
       --managed-ad=domain=projects/MANAGED_AD_PROJECT_ID/locations/global/domains/MANAGED_AD_DOMAIN_NAME,computer=DOMAIN_COMPUTER_ACCOUNT \
       --project=CONSUMER_PROJECT_ID
    
    

    其中:

    • INSTANCE_ID 是您要建立的 Filestore 執行個體 ID。請參閱「為執行個體命名」。
    • DESCRIPTION 是您要使用的執行個體說明。
    • LOCATION 是 Filestore 執行個體所在的位置。
    • TIER 是您要使用的服務級別
    • PROTOCOLNFS_v4_1
    • FILE_SHARE_NAME 是您指定給從執行個體提供的 NFS 檔案共用區的名稱。
    • CAPACITY 是檔案共用空間的大小,介於 1 TiB 到 10 TiB 之間。
    • VPC_NETWORK 是您要讓執行個體使用的 VPC 網路名稱。請參閱「選取虛擬私有雲網路」一節。

      • 如果您要從服務專案指定共用虛擬私有雲,則必須指定完整的網路名稱,格式如下:
      projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME
      

      指定 connect-mode=PRIVATE_SERVICE_ACCESS,類似於以下內容:

      --network=name=projects/host/global/networks/shared-vpc-1,connect-mode=PRIVATE_SERVICE_ACCESS
      
    • MANAGED_AD_PROJECT_ID 是 Managed Microsoft AD 服務所在的專案 ID。

    • MANAGED_AD_DOMAIN_NAME 是您要使用的 Managed Microsoft AD 服務網域名稱。您在建立 Managed Microsoft AD 網域時選擇這個網域名稱。

    • DOMAIN_COMPUTER_ACCOUNT 是您希望叢集在網域中使用的任何名稱。

    • CONSUMER_PROJECT_ID 是包含 Filestore 執行個體的專案 ID。

    • CONNECT_MODEDIRECT_PEERINGPRIVATE_SERVICE_ACCESS。如果您將共用虛擬私有雲指定為網路,則必須將 PRIVATE_SERVICE_ACCESS 指定為連線模式。這個標記是 VPC 網路對等互連的必要條件,也是使用 Managed Microsoft AD 時的必要條件。

    • RESERVED_IP_RANGE 是 Filestore 執行個體的 IP 位址範圍。如果您要指定 connect-mode=PRIVATE_SERVICE_ACCESS,並想使用已保留的 IP 位址範圍,則必須指定已分配的位址範圍名稱,而非 CIDR 範圍。請參閱「設定保留的 IP 位址」。建議您略過這個標記,讓 Filestore 自動尋找可用的 IP 位址範圍,並指派給執行個體。

在沒有 Managed Microsoft AD 的情況下建立 Filestore 執行個體

gcloud

如果您不想使用 Managed Microsoft AD,請執行與「使用 Managed Microsoft AD 建立 Filestore 執行個體」指南相同的 gcloud beta filestore instances create 指令,建立 Filestore 執行個體。

    gcloud beta filestore instances create INSTANCE_ID \
    --description="DESCRIPTION" \
    --region=LOCATION \
    --tier=TIER \
    --protocol=PROTOCOL \
    --file-share=name="FILE_SHARE_NAME",capacity=CAPACITYTB \
    --network=name="VPC_NETWORK" \
    --project=CONSUMER_PROJECT_ID

在設定中省略 --managed-ad 標記,以及 VPC 網路對等互連的標記,也就是 connect-modereserved-ip-range

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

在 NFSv3 中,系統僅支援 sys 安全性版本。這項設定會信任用戶端在掛載期間提供的使用者 uidgid

在 Filestore NFSv4.1 通訊協定中,您可以使用多種網路 ACL 安全性選項或設定:

  • krb5

    使用 Kerberos 票證驗證用戶端,並根據受管理的 Microsoft AD Kerberos 伺服器驗證。

  • krb5i

    包含 krb5 提供的驗證,並使用 Kerberos 對傳入和傳出執行個體的所有網路流量執行訊息完整性檢查。

  • krb5p

    包括 krb5 提供的驗證,以及 krb5i 的郵件完整性檢查,並使用 Kerberos 加密傳輸中的資料。

如要使用這些選項,您必須整合 Managed Service for Microsoft Active Directory。

如果未指定 Managed Service for 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. 執行下列指令,加入 Managed 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 網域。輸入大寫值,然後按下箭頭鍵選取「OK」,再按下 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 服務網域名稱。
      • 如果 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 服務網域名稱。
  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 服務。將下列 No-Strip 屬性值新增至 /etc/idmapd.conf 內的 [General] 區段:

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

    sudo systemctl restart rpc-gssd
    

CentOS 映像檔

  1. 透過 SSH 連線至 Compute Engine 執行個體。
  2. 加入 Managed 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] 部分:

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

    sudo systemctl start rpc-gssd
    

中斷 Filestore 執行個體與 Managed Microsoft AD 的連線,然後重新連線

Google Cloud 控制台

將代管的 Microsoft AD 與 Filestore 執行個體中斷連線

  1. 中斷連線至 Managed Microsoft AD 的 Filestore 執行個體。

    前往 Google Cloud 控制台的「Filestore Instances」(Filestore 執行個體) 頁面。

    前往 Filestore 執行個體頁面

  2. 按一下您要編輯之執行個體的執行個體 ID。

  3. 在「NFS 掛接點」窗格中,點選「Protocol」下方「Directory service name」旁的 「Disconnect AD domain」

  4. 在「無法中斷網域連線」視窗中,閱讀警示訊息,然後按一下「編輯執行個體」

    存取權控管中至少有一項規則必須對應至具有 sys 掛載安全性設定的管理員角色,例如 Access=Admin Mountsec=sys

  5. 在「編輯共享」窗格中,找出「存取」設為「管理員」的規則。按一下「Mount sec= ...」,然後選取 sys,即可將該選項新增至現有設定。

  6. 按一下 [確定]

  7. 按一下 [儲存]

  8. 按一下「目錄服務名稱」旁的 「取消 AD 網域連結」

  9. 在「Disconnect from domain?」視窗的欄位中,輸入要取消連結的網域名稱。

  10. 按一下「中斷連結」

編輯存取規則

  1. 重新整理頁面。請注意,「Directory service name」現在已設為「None」

  2. 按一下 [編輯]

  3. 在「編輯共用」窗格中,找出任何設定管理員以外角色存取權的規則,例如編輯者。在規則中,按一下「掛載 sec= ...」,然後選取 sys 並將其新增至現有設定。按一下「確定」

  4. 按一下 [儲存]

  5. 請重新整理頁面。

    規則設定已更新。

將受管理的 Microsoft AD 重新連結至 Filestore 執行個體

  1. 將 Filestore 執行個體重新連結至 Managed Microsoft AD。

    在「NFS 掛接點」窗格中的「通訊協定」下方,點選「目錄服務名稱」旁的 「加入 AD 網域」

  2. 在「將這個執行個體加入 Active Directory 網域」視窗中,選取「使用目前專案中的網域」,然後在「加入 Active Directory 網域」選單中,選取要使用的網域。

  3. 在「電腦帳戶名稱」選單中輸入名稱。

  4. 按一下「加入網域」

  5. 重新整理頁面。請注意,系統已根據您的選取項目更新目錄服務名稱

  6. 按一下 [編輯]

  7. 在「編輯共用」窗格中,按一下所有適用規則中的「掛載 sec= ...」,然後移除 sys 選項。按一下「確定」

  8. 按一下 [儲存]

  9. 請重新整理頁面。

    規則設定已更新。-

後續步驟