配置 NFSv4.1 协议

以下指南介绍了如何使用新的 Filestore 实例实现 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 是唯一同时支持 LDAPKerberos、NFSv4.1 协议的要求及其安全和隐私优势的全代管式 Google Cloud 解决方案。虽然不需要与 Managed Microsoft AD 集成,但强烈建议您在管理用户帐号以及管理群组和权限方面实现最佳的 Google Cloud 用户体验。

是否应使用 NFSv4.1?

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

目标

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

创建使用 NFSv4.1 的 Filestore 实例

如需将 Managed Microsoft AD 与 Filestore 实例搭配使用,您必须先创建 Managed Microsoft AD 网域,然后再创建 Filestore 实例。

准备工作

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

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

    如需了解详情,请参阅使用网域对等互连部署具有跨项目访问权限的托管式 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. 授予 Filestore 使用 gcloud projects add-iam-policy-binding 命令在 Managed 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)

在本部分中,您将创建一个已配置为与 NFSv4.1 协议搭配使用的 Filestore 实例。我们为选择不使用 Managed Microsoft AD 的用户提供了可选步骤。

  • 确保您有足够的配额。

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

Google Cloud 控制台

设置实例参数

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

    转到“Filestore 实例”页面

  2. 点击创建实例

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

    1. 实例 ID 字段中,输入要用于 Filestore 实例的名称。
    2. 实例类型中,选择区域级可用区级

      如需创建企业实例,您必须直接通过 Filestore API 运行操作。

    3. 分配的容量中,输入要使用的容量。您必须输入一个介于 1 TB 到 10 TB 之间的值,以 256 GiB (0.25 TiB) 为增量。

    4. 区域中,选择要使用的区域。

    5. VPC 网络中,选择要用于 Filestore 实例和 NFS 客户端的网络。

      • 如果 Managed Microsoft AD 与 Filestore 实例位于同一项目中,则需要在 Managed Microsoft AD 网域中对 VPC 网络进行授权。
      • 如果 Managed Microsoft AD 位于单独的项目中,则应为 VPC 网络配置托管式 Microsoft AD 配置中的 Active Directory 网络对等互连。
    6. 分配的 IP 范围中,选择使用自动分配的 IP 范围(推荐)

    7. 协议中,选择 NFSv4.1

配置实例的身份验证设置

  1. 配置实例的身份验证设置。
    1. 点击身份验证
    2. 选择托管 Managed Microsoft AD 的项目。在本指南中,我们假设当前项目是我们要使用的项目。
    3. 加入 Active Directory 网域列表中,选择要使用的代管式 Microsoft AD 网域。
    4. 计算机帐号名称字段中,输入您要用于在 Managed 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 服务的域名。它是您在创建托管式 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

    使用根据 Managed Microsoft AD Kerberos 服务器验证的 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 实例相同的 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 实例上使用的 Managed 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 是您要使用的 Managed 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 是您要使用的 Managed Microsoft AD 服务的领域名称。
        • MANAGED_AD_DOMAIN_NAME 是您要使用的 Managed Microsoft AD 服务的域名。
  3. 更新 Kerberos 配置。使用必需的领域定义和 Realm-domain 映射更新 /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. 请完成以下任一步骤:

    • 对于主机名长度不超过 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 Archive

    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)的 Administrator 角色。

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

  6. 点击 OK(确定)。

  7. 点击保存

  8. Directory service name 旁边,点击 Disconnect AD domain

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

  10. 点击取消关联

修改访问权限规则

  1. 刷新页面。 请注意,目录服务名称现在设置为 None

  2. 点击修改

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

  4. 点击保存

  5. 刷新页面。

    规则设置会更新。

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

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

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

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

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

  4. 点击加入网域

  5. 刷新页面。 请注意,Directory service name 已根据您的选择进行了更新。

  6. 点击修改

  7. 修改共享窗格中,点击所有适用规则中的 Mount sec= ...,然后移除 sys 选项。点击确定

  8. 点击保存

  9. 刷新页面。

    规则设置会更新。

后续步骤