配置 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、NFSv4.1 协议的要求及其安全和隐私优势的全代管式 Google Cloud 解决方案。虽然不需要与 Managed Microsoft AD 集成,但强烈建议您使用最佳的 Google Cloud 用户体验来管理用户帐号以及不断变化的群组和权限。

是否应使用 NFSv4.1?

许多企业组织依靠旧式系统来执行关键业务操作。其中许多系统都需要对其网络文件存储进行身份验证和传输加密。NFSv3 在设计时未考虑到身份验证。现在,Filestore 与 Managed Microsoft AD 的 NFSv4.1 协议集成可以满足这一关键用户要求。

目标

在本指南中,您将了解如何完成以下任务:

创建使用 NFSv4.1 的 Filestore 实例

如需将代管式 Microsoft AD 与 Filestore 实例搭配使用,必须在 Filestore 实例之前创建代管式 Microsoft AD 网域。

准备工作

  1. 代管式 Microsoft AD 网域和 Filestore 实例必须在同一项目上使用相同的 VPC

    如果您的 Managed Microsoft AD 服务托管在与要使用的 Filestore 实例不同的项目中,则 Filestore VPC 网络需要与该代管式 Microsoft AD 网域对等互连。

    如需了解详情,请参阅使用网域对等互连部署具有跨项目访问权限的 Managed Microsoft AD

  2. 完成创建 Filestore 实例的所有设置步骤

  3. 确保代管式 Microsoft AD 用户已填充 POSIX RFC 2307RFC 2307bis 字段,类似于以下内容。

    如需详细了解如何在 Managed Microsoft AD 中配置对象,请参阅代管式 Active Directory 对象

    Active Directory 用户和计算机

    以下步骤描述了您需要为 LDAP 用户和群组设置的属性。您可以使用 Active Directory 用户和计算机 MMC 管理单元管理 POSIX 属性。

    您可以按如下方式打开属性编辑器

    1. 点击启动
    2. 点击 Windows 管理工具,然后选择 Active Directory 用户和计算机

      系统会打开 Active Directory 用户和计算机窗口。

    3. 选择要查看的域名。如需展开其内容,请点击 展开箭头。

    4. 在“Active Directory 用户和计算机”查看菜单中,选择高级功能

    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(PROJECT_ID)')@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-PROJECT_ID@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)

在本部分中,您将创建一个 Filestore 实例,该实例配置为与 NFSv4.1 协议搭配使用。如果用户选择不使用 Managed Microsoft AD,则包含可选步骤。

  • 确保您有足够的配额。

    按您要使用的区域位置和服务层级划分的实例配额范围。 如需增加可用配额,您必须提交增加配额请求

Google Cloud 控制台

设置实例参数

  1. 在 Google Cloud 控制台中,转到“Filestore 实例”页面。

    转到“Filestore 实例”页面

  2. 点击创建实例

  3. 指定实例的基本参数,包括名称、实例类型和容量:

    1. 实例 ID 字段中,输入要用于 Filestore 实例的名称。
    2. 实例类型中,选择企业可用区级
    3. 分配的容量中,输入要使用的容量。您必须以 256 GiB (0.25 TiB) 为增量输入 1 TB 到 10 TB 之间的值。
    4. 区域中,选择要使用的区域。
    5. VPC 网络中,选择要用于 Filestore 实例和 NFS 客户端的网络。
      • 如果 Managed Microsoft AD 与 Filestore 实例位于同一项目中,则需要在代管式 Microsoft AD 网域中对 VPC 网络进行授权。
      • 如果 Managed Microsoft AD 位于单独的项目中,则应在 Managed Microsoft AD 配置上为 VPC 网络配置 Active Directory 网络对等互连。
    6. 分配的 IP 范围中,选择使用自动分配的 IP 范围(推荐)
    7. 协议中,选择 NFSv4.1

配置实例的身份验证设置

  1. 配置实例的身份验证设置。
    1. 点击 Authentication(身份验证)。
    2. 选择托管 Managed Microsoft AD 的项目。在本指南中,我们假定当前项目是我们要使用的项目。
    3. 加入 Active Directory 网域列表中,选择要使用的代管式 Microsoft AD 网域。
    4. 计算机帐号名称字段中,输入要用于在代管式 Microsoft AD 网域中标识 Filestore 实例的计算机帐号名称。名称不得超过 15 个字母数字字符。
    5. 文件共享名称字段中,输入 NFSv4.1 客户端将使用的共享名称。
  2. 访问权限控制窗格中,完成以下任一步骤:

    • 如果使用 Managed Microsoft AD,请选择按 IP 地址或范围限制访问

      1. 按您要定义的 IP 或子网设置访问规则。在本指南中,请使用以下设置:
      2. IP 地址或范围 1 字段中,输入您要使用的 IP 地址或范围。
      3. 点击访问权限 1 下拉列表,然后选择管理员
      4. 点击 Mountsec= 1 下拉列表,然后选择 sys 复选框。

      Filestore 的默认 / 所有者为 root。如需允许其他用户和群组访问实例,您必须创建一条访问规则,以使用 Admin 角色和 sec=sys 安全设置启用管理虚拟机访问权限。

    • 如果您未使用 Managed Microsoft AD,请选择授予对 VPC 网络上的所有客户端的访问权限

      如果未使用 Managed Microsoft AD,则唯一支持的安全设置是 sec=sys

  3. 点击创建以创建实例。

gcloud

  1. 安装并初始化 gcloud CLI

    如果您已安装 gcloud CLI,请运行以下命令进行更新:

    gcloud components update
    
  2. 请完成以下任一步骤:

    1. 如果使用 Managed Microsoft AD,请运行以下 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 网络的名称。请参阅选择 VPC 网络。如果要指定服务项目中的共享 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

        您不能为 vpc_network 值指定旧版网络。如有必要,请按照创建自动模式 VPC 网络中的说明创建要使用的新 VPC 网络。

      • MANAGED_AD_PROJECT_ID 是 Managed Microsoft AD 服务所在的项目 ID。

      • MANAGED_AD_DOMAIN_NAME 是您要使用的代管式 Microsoft AD 服务的域名。该域名是您在创建 Managed Microsoft AD 网域时选择的域名。

      • DOMAIN_COMPUTER_ACCOUNT 是您希望在网域中调用集群的任意名称。

      • CONSUMER_PROJECT_ID 是包含 Filestore 实例的项目的 ID。

      • CONNECT_MODEDIRECT_PEERINGPRIVATE_SERVICE_ACCESS。 如果您指定共享 VPC 作为网络,则还必须指定 PRIVATE_SERVICE_ACCESS 作为连接模式。VPC 网络对等互连需要此标志,在使用代管式 Microsoft AD 时,这是一项要求。

      • RESERVED_IP_RANGE 是 Filestore 实例的 IP 地址范围。如果您要指定 connect-mode=PRIVATE_SERVICE_ACCESS,并且要使用预留的 IP 地址范围,则必须指定分配的地址范围(而不是 CIDR 范围)的名称。请参阅配置预留 IP 地址。我们建议您跳过此标志,以允许 Filestore 自动查找可用的 IP 地址范围并将其分配给该实例。

    2. 如果未使用 Managed Microsoft AD,请运行与上一步相同的命令来创建 Filestore 实例,省略 --managed-ad 标志和 VPC 网络对等互连的标志(即 connect-modereserved-ip-range)。例如,使用以下命令:

      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
      

了解 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-FQDN:/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 实例连接到同一代管式 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. 请完成以下任一步骤:

      • 对于主机名长度不超过 15 个字符的虚拟机,请运行以下命令:

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

        替换以下内容:

        • JOIN_DOMAIN_USER 是用于加入网域的用户帐号的名称。
        • MANAGED_AD_DOMAIN_NAME 是您要使用的代管式 Microsoft AD 服务的域名。
      • 对于主机名长度超过 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 是您要使用的代管式 Microsoft AD 服务的领域名称。
        • MANAGED_AD_DOMAIN_NAME 是您要使用的代管式 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. 加入代管式 Microsoft AD 网域:

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

    • 对于主机名长度不超过 15 个字符的虚拟机,请运行以下命令:

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

      替换以下内容:

      • JOIN_DOMAIN_USER 是用于加入网域的用户帐号的名称。
      • MANAGED_AD_DOMAIN_NAME 是您要使用的代管式 Microsoft AD 服务的域名。
    • 对于主机名长度超过 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 是您要使用的代管式 Microsoft AD 服务的领域名称。
      • MANAGED_AD_DOMAIN_NAME 是您要使用的代管式 Microsoft AD 服务的域名。
  4. 确保 sssd 服务正在运行:

    sudo systemctl status sssd
    
  5. 运行 rpc-gssd 服务。将 No-Strip 属性值下方的以下内容添加到 /etc/idmapd.conf 内的 [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 实例”页面。

    转到“Filestore 实例”页面

  2. 点击要修改的实例的 ID。

  3. NFS 装载点窗格的协议下,点击目录服务名称旁边的 断开 AD 网域

  4. 未能断开与网域的连接窗口中,阅读提醒,然后点击修改实例

    访问权限控制中必须至少有一条规则映射到具有 sys 装载安全设置的管理员角色,例如 Access=Admin Mountsec=sys

  5. 修改共享窗格中,找到访问权限设置为管理员的规则。点击装载 sec= ...,然后选择 sys 以将该选项添加到现有设置中。

  6. 点击 OK(确定)。

  7. 点击保存

  8. 目录服务名称旁边,点击 断开 AD 网域连接

  9. 断开与网域连接吗?窗口中的字段中,输入您要断开与它们的连接的网域的名称。

  10. 点击取消关联

修改访问规则

  1. 刷新页面。 请注意,Directory service name 现已设置为 None

  2. 点击修改

  3. 修改共享窗格中,找到为管理员以外的角色(如编辑者)设置访问权限的任意规则。在规则中,点击 Mount sec= ...,然后选择 sys 以将其添加到现有设置中。点击 OK

  4. 点击保存

  5. 刷新页面。

    规则设置会更新。

将代管式 Microsoft AD 重新连接到 Filestore 实例

  1. 将 Filestore 实例重新连接到 Managed Microsoft AD。

    NFS 装载点窗格的协议下,点击目录服务名称旁边的 加入 AD 网域

  2. 将此实例加入一个 Active Directory 网域窗口中,选择使用当前项目中的网域,然后在加入 Active Directory 网域菜单中选择您要使用的网域。

  3. 计算机帐号名称菜单中,输入一个名称。

  4. 点击 Join Domain(加入网域)。

  5. 刷新页面。 请注意,目录服务名称已根据您的选择进行了更新。

  6. 点击修改

  7. 修改共享窗格中,点击所有适用规则中的装载 sec= ...,并移除 sys 选择。点击 OK

  8. 点击保存

  9. 刷新页面。

    规则设置会更新。

后续步骤