SMB
"SMB" 是Microsoft开发的一种网络文件共享协议、可通过以太网为多个SMB客户端提供集中式用户/组身份验证、权限、锁定和文件共享。文件和文件夹通过共享呈现给客户端、共享可以配置各种共享属性、并通过共享级别权限提供访问控制。SMB可以提供给提供协议支持的任何客户端、包括Windows、Apple和Linux客户端。
Google Cloud NetApp Volumes支持SMB 2.1和3.x版本的协议。
访问控制/SMB共享
-
当Windows用户名请求访问Google Cloud NetApp卷时、Google Cloud卷会使用Google Cloud NetApp NetApp管理员配置的方法查找UNIX用户名。
-
如果配置了外部UNIX身份提供程序(LDAP)、并且Windows/UNIX用户名相同、则Windows用户名将1:1映射到UNIX用户名、而无需任何其他配置。启用LDAP后、Active Directory用于托管用户和组对象的这些UNIX属性。
-
如果Windows名称和UNIX名称不完全匹配,则必须将LDAP配置为允许Google Cloud NetApp卷使用LDAP名称映射配置(请参见一节""使用LDAP进行非对称名称映射"")。
-
如果未使用LDAP、则Windows SMB用户会映射到Google Cloud NetApp卷中名为的默认本地UNIX用户
pcuser
。这意味着、映射到的用户在Windows中写入的文件pcuser`将显示UNIX所有权、就像在多协议NAS环境中一样 `pcuser
。 `pcuser`以下是Linux环境中的有效 `nobody`用户(UID 6554)。
在仅使用SMB的部署中、仍会进行`pcuser`映射、但这无关紧要、因为Windows用户和组所有权会正确显示、并且不允许对仅使用SMB的卷进行NFS访问。此外、仅SMB卷在创建后不支持转换为NFS或双协议卷。
Windows利用Kerberos与Active Directory域控制器进行用户名身份验证、这需要与AD DC (位于Google Cloud NetApp Volumes实例外部)交换用户名/密码。如果SMB客户端使用UNC路径且满足以下条件、则会使用Kerberos身份验证 \\SERVERNAME
:
-
服务器名称存在DNS A/AAAA条目
-
服务器名称存在有效的SMB/CIFS访问SPN
创建Google Cloud NetApp卷SMB卷时、系统会按照部分中的定义创建计算机帐户""Google Cloud NetApp卷如何显示在Active Directory中。""名称、计算机帐户名称也会成为SMB共享访问路径、因为Google Cloud NetApp卷会利用动态DNS (DDNS)在DNS中创建必要的A/AAAA和PTR条目、并在计算机帐户主体上创建必要的SPN条目。
要创建PTR条目、DNS服务器上必须存在Google Cloud NetApp卷实例IP地址的反向查找区域。 |
例如,此Google Cloud NetApp卷使用以下UNC共享路径: \\cvs-east- 433d.cvsdemo.local
。
在Active Directory中、这些是Google Cloud NetApp卷生成的SPN条目:
这是DNS正向/反向查找结果:
PS C:\> nslookup NetApp Volumes-EAST-433D Server: activedirectory. region. lab. internal Address: 10. xx.0. xx Name: NetApp Volumes-EAST-433D.cvsdemo.local Address: 10. xxx.0. x PS C:\> nslookup 10. xxx.0. x Server: activedirectory.region.lab.internal Address: 10.xx.0.xx Name: NetApp Volumes-EAST-433D.CVSDEMO.LOCAL Address: 10. xxx.0. x
或者、可以通过为Google Cloud NetApp卷中的SMB共享启用/要求SMB加密来应用更多访问控制。如果其中一个端点不支持SMB加密、则不允许访问。
使用SMB名称别名
在某些情况下、最终用户可能会出于安全考虑知道Google Cloud NetApp卷正在使用的计算机帐户名称。在其他情况下、您可能只想为最终用户提供一个更简单的访问路径。在这种情况下、您可以创建SMB别名。
如果要为SMB共享路径创建别名、可以利用DNS中的CNAME记录。例如、如果您要使用名称`\\cifs`来访问共享、而不是`\\cvs-east- 433d.cvsdema.local`、但您仍要使用Kerberos身份验证、则DNS中指向现有A/AAAA记录的CNAME以及添加到现有计算机帐户的其他SPN可提供Kerberos访问。
这是添加CNAME后生成的DNS正向查找结果:
PS C:\> nslookup cifs Server: ok-activedirectory.us-east4-a.c.cv-solution-architect-lab.internal Address: 10. xx.0. xx Name: NetApp Volumes-EAST-433D.cvsdemo.local Address: 10. xxx.0. x Aliases: cifs.cvsdemo.local
这是添加新SPN后生成的SPN查询:
在数据包捕获中、我们可以使用与CNAME绑定的SPN查看会话设置请求。
SMB身份验证方言
Google Cloud NetApp Volumes支持以下 "方言"SMB身份验证:
-
LM
-
NTLM
-
NTLMv2
-
Kerberos
用于SMB共享访问的Kerberos身份验证是您可以使用的最安全的身份验证级别。启用AES和SMB加密后、安全级别将进一步提高。
Google Cloud NetApp卷还支持对LM和NTLM身份验证进行向后兼容。如果Kerberos配置不当(例如创建SMB别名)、则共享访问会回退到身份验证方法较弱的位置(例如NTLMv2)。由于这些机制的安全性较低、因此在某些Active Directory环境中会禁用它们。如果禁用了较弱的身份验证方法、并且未正确配置Kerberos、则共享访问将失败、因为没有可回退的有效身份验证方法。
有关在Active Directory中配置/查看受支持的身份验证级别的信息、请参见 "网络安全:LAN Manager身份验证级别"。
权限模式
NTFS/文件权限
NTFS权限是指应用于符合NTFS逻辑的文件系统中的文件和文件夹的权限。您可以在`基本`或`高级`中应用NTFS权限、并可设置为`允许`或`D允许`来进行访问控制。
基本权限包括:
-
完全控制
-
修改
-
读取和执行
-
读取
-
写入
为用户或组(称为ACE)设置权限时、该用户或组驻留在ACL中。NTFS权限使用与UNIX模式位相同的读/写/执行基础知识、但也可以扩展到更精细的扩展访问控制(也称为"特殊权限")、例如"获取所有权"、"创建文件夹/附加数据"、"写入属性"等。
标准UNIX模式位提供的粒度级别与NTFS权限不同(例如、能够为ACL中的各个用户和组对象设置权限或设置扩展属性)。但是、NFSv4.1 ACL提供的功能与NTFS ACL相同。
NTFS权限比共享权限更具体、可与共享权限结合使用。对于NTFS权限结构、限制性最强。因此、在定义访问权限时、显式拒绝用户或组甚至会覆盖"完全控制"。
NTFS权限由Windows SMB客户端控制。
共享权限
共享权限比NTFS权限更常规(仅限读取/更改/完全控制)、并可控制SMB共享的初始条目、类似于NFS导出策略规则的工作方式。
虽然NFS导出策略规则通过IP地址或主机名等基于主机的信息来控制访问、但SMB共享权限可以通过使用共享ACL中的用户和组ACE来控制访问。您可以从Windows客户端或Google Cloud NetApp卷管理UI设置共享ACL。
默认情况下、共享ACL和初始卷ACL包括具有完全控制的Everyone。应更改文件ACL、但共享权限会被共享中对象的文件权限所取代。
例如、如果仅允许用户对Google Cloud NetApp卷卷文件ACL进行读取访问、则即使共享ACL设置为Everyone with Full Control、也会拒绝用户访问创建文件和文件夹的权限、如下图所示。
要获得最佳安全性结果、请执行以下操作:
-
从共享和文件ACL中删除Everyone、而是为用户或组设置共享访问权限。
-
使用组进行访问控制、而不是使用单个用户、以便于管理、并加快删除/添加用户的速度、以便通过组管理共享ACL。
-
允许对共享权限上的ACE进行限制性更低的常规共享访问、并锁定对具有文件权限的用户和组的访问、以实现更精细的访问控制。
-
避免常规使用显式拒绝ACL、因为它们会覆盖允许ACL。限制需要限制的用户或组快速访问文件系统时使用显式拒绝ACL。
-
请务必注意 "ACL继承" 修改权限时的设置;在文件数量较多的目录或卷的顶层设置继承标志意味着该目录或卷下的每个文件都添加了继承权限、 这可能会在调整每个文件时产生不必要的行为、例如意外访问/拒绝以及长时间更改权限。
SMB共享安全功能
首次在Google Cloud NetApp卷中创建具有SMB访问权限的卷时、系统会为您提供一系列用于保护该卷的选项。
其中一些选项取决于Google Cloud NetApp卷级别(性能或软件)、选项包括:
-
*使快照目录可见(可用于NetApp Volumes-Performance和NetApp Volumes-sw)。*此选项控制SMB客户端是否可以访问SMB共享和/或先前版本选项卡中的Snapshot目录(
\\server\share\~snapshot
。不会选中默认设置、这意味着卷默认隐藏和禁止访问目录、并且卷 `~snapshot`的先前版本选项卡中不会显示任何Snapshot副本。
出于安全原因、性能原因(从AV扫描中隐藏这些文件夹)或偏好、可能需要向最终用户隐藏Snapshot副本。Google Cloud NetApp卷快照是只读的、因此、即使这些快照可见、最终用户也无法删除或修改Snapshot目录中的文件。创建Snapshot副本时对文件或文件夹的文件权限将适用。如果文件或文件夹在Snapshot副本之间的权限发生变化、则所做的更改也会应用于Snapshot目录中的文件或文件夹。用户和组可以根据权限访问这些文件或文件夹。虽然无法删除或修改Snapshot目录中的文件、但可以从Snapshot目录中复制文件或文件夹。
-
*启用SMB加密(可用于NetApp Volumes-Performance和NetApp Volumes-sw)。*默认情况下、SMB共享上已禁用SMB加密(未选中)。选中此复选框可启用SMB加密、这意味着SMB客户端和服务器之间的流量将使用协商的最高支持加密级别进行动态加密。Google Cloud NetApp Volumes支持对SMB进行AES-256加密。启用SMB加密确实会对SMB客户端造成性能降低、这种降低可能会也可能不会对SMB客户端造成明显影响、大致处于10-20%的范围内。NetApp强烈建议通过测试来确定性能降低是否可接受。
-
*隐藏SMB共享(可用于NetApp Volumes-Performance和NetApp Volumes-sw)。*设置此选项会使SMB共享路径不能正常浏览。这意味着,不知道共享路径的客户端在访问默认UNC路径(如)时无法看到共享
\\NetApp Volumes-SMB
。选中此复选框后、只有明确知道SMB共享路径或具有组策略对象定义的共享路径的客户端才能访问此路径(通过混淆实现安全性)。 -
*启用基于访问的枚举(ABE)(仅限NetApp卷-SW)。*这与隐藏SMB共享类似、不同之处在于共享或文件仅对无权访问对象的用户或组隐藏。例如、如果通过权限不允许Windows用户 `joe`至少进行读取访问、则该Windows用户 `joe`根本看不到SMB共享或文件。默认情况下、此选项处于禁用状态、您可以通过选中此复选框来启用它。有关ABE的详细信息、请参阅NetApp知识库文章 "基于访问的枚举(ABE)如何工作?"
-
启用持续可用(CA)共享支持(仅限NetApp Volumes-性能)。 "持续可用的SMB共享"通过在Google Cloud NetApp Volumes后端系统中的节点之间复制锁定状态、提供一种在故障转移事件期间最大限度地减少应用程序中断的方法。这不是一项安全功能、但可以提供更好的整体故障恢复能力。目前、此功能仅支持SQL Server和FSLogix应用程序。
默认隐藏共享
在Google Cloud NetApp卷中创建SMB服务器时、除了数据卷SMB共享之外、还会创建SMB服务器 "隐藏的管理共享"(使用$命名约定)。其中包括C$(命名空间访问)和IPC$(共享命名管道以在程序之间进行通信、例如用于Microsoft管理控制台(MMC)访问的远程操作步骤 调用(RPC))。
ipc$共享不包含共享ACL、无法修改—它严格用于RPC调用和 "默认情况下、Windows不允许匿名访问这些共享"。
默认情况下、C$共享允许BUILTIN/管理员访问、但Google Cloud NetApp卷自动化会删除共享ACL、并且不允许任何人访问、因为通过访问C$共享、可以查看Google Cloud NetApp卷文件系统中所有已挂载的卷。因此、尝试导航将 `\\SERVER\C$`失败。
具有本地/BUILTIN管理员/备份权限的帐户
Google Cloud NetApp卷SMB服务器与常规Windows SMB服务器功能相似、因为存在将访问权限应用于所选域用户和组的本地组(例如BUILTIN\Administrators)。
指定要添加到备份用户的用户时,该用户将添加到使用该Active Directory连接的Google Cloud NetApp卷实例中的BUILTIM\Backup Operators组,然后该实例将获取 "SeBackupPrivilege和SeRestorePrivilege"。
将用户添加到安全权限用户时、系统会为该用户授予SeSecurityPrivilege、这在某些应用程序使用情形下非常有用、例如 "SMB共享上的SQL Server"。
您可以使用适当的Privileges通过MMC查看Google Cloud NetApp卷本地组成员资格。下图显示了使用Google Cloud NetApp卷控制台添加的用户。
下表显示了默认BUILTIN组的列表以及默认添加的用户/组。
本地/BUILTIN组 | 默认成员 |
---|---|
BUILTIN\Administrators * |
域\域管理员 |
BUILTIN\Backup Operators* |
无 |
BUILTIN\guests |
域\域子系统 |
BUILTIN\Power Users |
无 |
BUILTIN\Domain用户 |
域\域用户 |
*在Google Cloud NetApp卷Active Directory连接配置中控制组成员资格。
您可以在MMC窗口中查看本地用户和组(以及组成员)、但不能在此控制台中添加或删除对象或更改组成员资格。默认情况下、仅将"域管理员"组和"管理员"添加到Google Cloud NetApp卷中的BUILTIIN\Administrators组。目前、您无法修改此设置。
MMC/计算机管理访问
通过Google Cloud NetApp卷中的SMB访问、您可以连接到计算机管理MMC、从而可以查看共享、管理共享ACL以及查看/管理SMB会话和打开的文件。
要使用MMC查看Google Cloud NetApp卷中的SMB共享和会话、当前登录的用户必须是域管理员。允许其他用户从MMC查看或管理SMB服务器、并在尝试查看Google Cloud NetApp Volumes SMB实例上的共享或会话时收到"您没有权限"对话框。
要连接到SMB服务器、请打开计算机管理、右键单击计算机管理、然后选择连接到另一台计算机。此时将打开选择计算机对话框、您可以在其中输入SMB服务器名称(可在Google Cloud NetApp卷卷信息中找到)。
在使用适当权限查看SMB共享时、您会看到Google Cloud NetApp卷实例中共享Active Directory连接的所有可用共享。要控制此行为、请在Google Cloud NetApp卷卷实例上设置隐藏SMB共享选项。
请记住、每个区域仅允许一个Active Directory连接。
下表列出了MMC支持/不支持的功能。
支持的功能 | 不支持的功能 |
---|---|
|
|
SMB服务器安全信息
Google Cloud NetApp卷中的SMB服务器使用一系列选项来定义SMB连接的安全策略、其中包括Kerberos时钟偏差、票证期限、加密等内容。
下表列出了这些选项、它们的功能、默认配置以及是否可以使用Google Cloud NetApp卷修改这些选项。某些选项不适用于Google Cloud NetApp卷。
安全选项 | 功能 | 默认值 | 是否可以更改? |
---|---|---|---|
最大Kerberos时钟间隔(分钟) |
Google Cloud NetApp卷和域控制器之间的最大时间偏差。如果时间偏差超过5分钟、则Kerberos身份验证将失败。此值设置为Active Directory默认值。 |
5. |
否 |
Kerberos票证生命周期(小时) |
在要求续订之前、Kerberos票证保持有效的最长时间。如果在10小时之前未发生续订、您必须获取新的服务单。Google Cloud NetApp Volumes会自动执行这些续订。Active Directory默认值为10小时。 |
10 |
否 |
Kerberos票证续订上限(天) |
在需要新的授权请求之前可以续订Kerberos票证的最长天数。Google Cloud NetApp Volumes自动续订SMB连接的服务单。Active Directory默认值为七天。 |
7. |
否 |
Kerberos KDC连接超时(秒) |
KDC连接超时前的秒数。 |
3. |
否 |
传入SMB流量需要签名 |
设置为SMB流量需要签名。如果设置为true、则不支持签名的客户端连接将失败。 |
false |
|
本地用户帐户需要密码复杂度 |
用于本地SMB用户的密码。Google Cloud NetApp卷不支持本地用户创建、因此此选项不适用于Google Cloud NetApp卷。 |
true |
否 |
对Active Directory LDAP连接使用start_tls |
用于为Active Directory LDAP启用启动TLS连接。Google Cloud NetApp Volumes当前不支持启用此功能。 |
false |
否 |
已启用适用于Kerberos的AES-128和AES-256加密 |
此选项用于控制是否对Active Directory连接使用AES加密、并在创建/修改Active Directory连接时使用为Active Directory身份验证启用AES加密选项进行控制。 |
false |
是的。 |
LM兼容性级别 |
Active Directory连接支持的身份验证方言级别。请参见第节"SMB身份验证方言"了解更多信息。 |
NTLMv2-KRB |
否 |
传入CIFS流量需要SMB加密 |
所有共享都需要SMB加密。Google Cloud NetApp卷不会使用此功能、而是应按卷设置加密(请参见""一节)。SMB共享安全功能 |
false |
否 |
客户端会话安全性 |
为LDAP通信设置签名和/或密封。Google Cloud NetApp Volumes中当前未设置此选项,但在未来版本中可能需要此选项来解决。一节介绍了因Windows修补程序而导致的LDAP身份验证问题的修复""LDAP通道绑定。""方法。 |
无 |
否 |
SMB2为DC连接启用 |
使用SMB2进行DC连接。默认情况下处于启用状态。 |
系统默认值 |
否 |
LDAP转介跟踪 |
使用多个LDAP服务器时、如果在第一个服务器中找不到条目、则转介跟踪功能允许客户端引用列表中的其他LDAP服务器。Google Cloud NetApp卷目前不支持此功能。 |
false |
否 |
使用LDAPS实现安全Active Directory连接 |
启用基于SSL的LDAP。目前Google Cloud NetApp卷不支持。 |
false |
否 |
DC连接需要加密 |
要成功建立DC连接、需要加密。默认情况下、在Google Cloud NetApp卷中处于禁用状态。 |
false |
否 |