以下指南介绍了 NFSv4.1 协议。
Filestore 为在以下服务层级中创建的实例提供 NFSv4.1 协议支持:
- 可用区级
- 区域
- 企业
此功能可与 Managed Service for Microsoft Active Directory(简称“Managed Microsoft AD”)集成,以支持需要客户端和服务器身份验证、消息数据完整性检查和传输中数据加密的工作负载,这些功能之前在 Filestore 中不可用。
支持使用 LDAP 和 Kerberos 进行身份验证,并包含以下安全风格(设置):
- 客户端和服务器身份验证 (
krb5
)。 - 消息完整性检查 (
krb5i
)。包括之前设置的功能。 - 传输中的数据加密 (
krb5p
)。包含之前设置的功能。
托管式 Microsoft AD 是唯一完全托管的 Google Cloud 解决方案,同时支持 LDAP 和 Kerberos,这是 NFSv4.1 协议及其安全和隐私优势的要求。虽然不需要与受管理的 Microsoft AD 集成,但强烈建议您这样做,以便获得最佳 Google Cloud 用户体验,从而管理用户账号以及不断变化的群组和权限。
您应当使用 NFSv4.1 吗?
许多企业组织都依赖旧版系统来执行关键业务运营。许多此类系统要求对其网络文件存储进行身份验证和传输中加密。NFSv3 在设计时并未考虑身份验证。Filestore 的 NFSv4.1 协议与托管式 Microsoft AD 的集成现在可满足这一关键用户要求。
如需详细了解 NFSv4.1 的优势,请参阅关于支持的协议。
了解 NFSv4.1 中的基于网络的访问权限控制列表 (ACL)。
在 NFSv3 中,仅支持 sys
安全风格。此设置信任装载期间由客户端提供的用户 uid
和 gid
。
在 Filestore NFSv4.1 协议中,有多种网络 ACL 安全类别或设置可供选择:
krb5
使用 Kerberos 票据对客户端进行身份验证,该票据会针对托管式 Microsoft AD Kerberos 服务器进行验证。
krb5i
包括
krb5
提供的身份验证,还使用 Kerberos 对进出实例的所有网络流量运行消息完整性检查。krb5p
包括
krb5
提供的身份验证和krb5i
的消息完整性检查,还使用 Kerberos 进行传输中的数据加密。
如果您想利用这些选项,则必须集成 Managed Service for Microsoft Active Directory。如需了解详情,请参阅使用托管式 Microsoft AD 创建 Filestore 实例。
如果未指定 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 身份验证,而 krb5
、krb5i
和 krb5p
风格使用基于 Kerberos 的身份验证。
krb5
、krb5i
和 krb5p
方案要求客户端连接到与 Filestore 实例相同的托管式 Microsoft AD 网域。请根据您的环境完成以下相应步骤。
Ubuntu 映像
- 通过 SSH 连接到 Compute Engine 实例。
运行以下命令以加入代管式 Microsoft AD 网域。
运行以下设置命令:
sudo apt-get update \ sudo apt-get -y -qq install adcli realmd sssd sssd-tools packagekit krb5-user \ nfs-common expect retry
当系统提示输入 realm 时,请将现有条目替换为 Filestore 实例上使用的托管式 Microsoft AD 网域。以大写形式输入值,然后按箭头键选择确定,再按 Enter。
当系统提示输入主机时,请将其留空并继续。
完成以下任一步骤:
对于主机名长度不超过 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 服务的 realm 名称。
- MANAGED_AD_DOMAIN_NAME 是您要使用的托管式 Microsoft AD 服务的域名。
更新 Kerberos 配置。使用所需的 realm 定义和 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
运行 rpc-gssd 服务。将以下
No-Strip
属性值添加到/etc/idmapd.conf
内的[General]
部分:[General] No-Strip = both
运行以下命令:
sudo systemctl restart rpc-gssd
Centos 映像
- 通过 SSH 连接到 Compute Engine 实例。
加入托管式 Microsoft AD 网域:
sudo yum update \ sudo yum install -y adcli realmd sssd samba-common-tools krb5-workstation nfs-utils \ bind-utils openldap-clients
完成以下任一步骤:
对于主机名长度小于或等于 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 服务的 realm 名称。
- MANAGED_AD_DOMAIN_NAME 是您要使用的托管式 Microsoft AD 服务的域名。
确保 sssd 服务正在运行:
sudo systemctl status sssd
运行 rpc-gssd 服务。在
/etc/idmapd.conf
内的[General]
部分中,将以下内容添加到No-Strip
属性值下方:[General] No-Strip = both
运行以下命令。此命令有助于确保 NFS 客户端不会从 NFS 服务器主机名中剥离域名。如需了解详情,请参阅 NFS Ganesha 列表归档和 Arch Linux 归档:
sudo systemctl start rpc-gssd