配置 NFSv4.1 协议

以下指南介绍了如何使用全新的 Filestore 实例。

NFSv4.1 简介

Filestore 为在 Cloud Storage 存储分区中创建的实例 以下服务层级

  • 可用区级
  • 区域
  • 企业

此功能可与 Managed Service for Microsoft Active Directory (Managed Microsoft AD) 集成,以支持需要客户端和服务器身份验证、消息数据完整性检查和传输中数据加密的工作负载,这些功能之前在 Filestore 中不可用。

  • 支持使用 LDAP 进行身份验证 和 Kerberos,并且包含 以下安全变种(设置):

    • 客户端和服务器身份验证 (krb5)。
    • 消息完整性检查 (krb5i)。包括 之前的设置
    • 传输中的数据加密 (krb5p)。包含上一个设置的功能。

Managed Microsoft AD 是唯一一款支持 支持 LDAPKerberos, NFSv4.1 协议及其在安全和隐私保护方面的优势。虽然您无需与托管的 Microsoft AD 集成,但为了获得最佳 Google Cloud 用户体验,强烈建议您管理用户账号以及不断变化的群组和权限。

您是否应使用 NFSv4.1?

许多企业组织依赖旧系统来处理关键业务 操作。其中许多系统都要求对其网络文件存储进行身份验证和传输中加密。NFSv3 不支持 需要考虑身份验证。Filestore 的 NFSv4.1 协议与托管式 Microsoft AD 的集成现已满足这项关键用户要求。

目标

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

创建使用 NFSv4.1 的 Filestore 实例

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

准备工作

  1. 托管式 Microsoft AD 网域和 Filestore 实例必须使用相同的 VPC,并且位于同一项目中。

    如果您的托管式 Microsoft AD 服务托管在与您要使用的 Filestore 实例分属的项目中,则 Filestore VPC 网络需要与托管式 Microsoft AD 网域建立对等关系。

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

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

  3. 确保为托管式 Microsoft AD 用户填充 POSIX RFC 2307RFC 2307bis 字段,如下所示。

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

    Active Directory 用户和计算机

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

    您可以按以下步骤打开属性编辑器

    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 属性,大多数 AD 部署的默认设置为 group。以下是 示例:

      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 网域所在的项目。
    • 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 协议的 Filestore 实例。为选择不使用受管理的 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 客户端使用的网络。

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

    7. 协议中,选择 NFSv4.1

配置实例的身份验证设置

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

    • 如果使用的是受管理的 Microsoft AD,请选择按 IP 地址或范围限制访问权限

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

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

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

      如果未使用托管式 Microsoft AD,则仅支持 安全设置为 sec=sys

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

gcloud

  1. 安装并初始化 gcloud CLI

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

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

    1. 如果使用的是受管理的 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 是项目 ID, 托管 Microsoft AD 服务位于此处。

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

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

      • CONSUMER_PROJECT_ID 是执行身份验证的项目的 ID 包含 Filestore 实例。

      • 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. 如果不使用托管式 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. 运行以下命令以加入代管式 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. 请完成以下任一步骤:

      • 对于主机名长度小于或等于 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 服务。将以下代码添加到 /etc/idmapd.conf 内的 [General] 部分的 No-Strip 属性值下方:

    [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 装载点窗格中的协议下, Directory service name(目录服务名称),点击 断开与 AD 域的连接

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

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

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

  6. 点击 OK(确定)。

  7. 点击保存

  8. Directory service name 旁边,点击 断开与 AD 域的连接

  9. 要断开与域名的连接吗?窗口中的字段中,输入名称 您想取消关联的网域的名称。

  10. 点击取消关联

修改访问规则

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

  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. 修改共享窗格中,点击所有适用规则中的 Mount sec= ...,然后移除 sys 选择。点击确定

  8. 点击保存

  9. 刷新页面。

    规则设置会更新。

后续步骤