为 Azure 文件共享配置目录和文件级权限
在开始本文之前,请确保已阅读向标识分配共享级别权限,以确保已使用 Azure 基于角色的访问控制设置共享级别权限。
分配共享级别权限后,可以在根、目录或文件级别配置 Windows 访问控制列表 (ACL)(也称为 NTFS 权限)。 虽然共享级别权限充当确定用户是否可以访问共享的高级网关守卫,但 Windows ACL 更具体地执行操作,控制用户可以在目录或文件级别执行的操作。
当用户尝试访问文件/目录时,强制实施共享级和文件/目录级权限。 如果它们之间存在差异,则只会应用限制性最大的一个。 例如,如果用户在文件级别具有读取/写入访问权限,但在共享级别只具有读取权限,则该用户只能读取该文件。 反过来也是这样:如果用户在共享级别具有读取/写入访问权限,但在文件级别只具有读取权限,则该用户仍然只能读取文件。
重要
若要配置 Windows ACL,需要一个运行 Windows 的客户端计算机,该客户端计算机具有域控制器的无阻网络连接。 如果使用 Active Directory 域服务 (AD DS) 或 Microsoft Entra Kerberos 对 Azure 文件存储进行身份验证进行混合标识,这意味着需要本地 AD 的无阻网络连接。 如果使用的是 Microsoft Entra 域服务,则客户端计算机必须对位于 Azure 中的 Microsoft Entra 域服务管理的域的域控制器具有无阻网络连接。
适用于
文件共享类型 | SMB | NFS |
---|---|---|
标准文件共享 (GPv2)、LRS/ZRS | ||
标准文件共享 (GPv2)、GRS/GZRS | ||
高级文件共享 (FileStorage)、LRS/ZRS |
支持的 Windows ACL
Azure 文件存储支持全套基本和高级 Windows ACL。
用户 | 定义 |
---|---|
BUILTIN\Administrators |
表示文件服务器的管理员的内置安全组。 此组为空,无法将用户添加到其中。 |
BUILTIN\Users |
表示文件服务器的用户的内置安全组。 默认情况下,它包括 NT AUTHORITY\Authenticated Users 。 对于传统的文件服务器,可以为每个服务器配置成员身份定义。 对于 Azure 文件存储,没有托管服务器,因此 BUILTIN\Users 包含与 NT AUTHORITY\Authenticated Users 相同的一组用户。 |
NT AUTHORITY\SYSTEM |
文件服务器操作系统的服务帐户。 此类服务帐户在 Azure 文件存储上下文中不适用。 它包含在根目录中,以便在混合方案中与 Windows 文件服务器体验保持一致。 |
NT AUTHORITY\Authenticated Users |
AD 中可获取有效 Kerberos 令牌的所有用户。 |
CREATOR OWNER |
每个对象(目录或文件)都具有对应的所有者。 如果在该对象上有分配给 CREATOR OWNER 的 ACL,则作为此对象所有者的用户具有对 ACL 定义的对象的权限。 |
文件共享的根目录包含以下权限:
BUILTIN\Administrators:(OI)(CI)(F)
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
NT AUTHORITY\Authenticated Users:(OI)(CI)(M)
NT AUTHORITY\SYSTEM:(OI)(CI)(F)
NT AUTHORITY\SYSTEM:(F)
CREATOR OWNER:(OI)(CI)(IO)(F)
有关这些高级权限的详细信息,请参阅 icacls 的命令行参考。
工作原理
可以通过两种方法来配置和编辑 Windows ACL:
每次使用用户名和存储帐户密钥登录:每当要配置 ACL 时,在具有域控制器无阻网络连接的计算机上使用存储帐户密钥装载文件共享。
一次性用户名/存储帐户密钥设置:
注意
此设置适用于新创建的文件共享,因为任何新的文件/目录都将继承配置的根权限。 对于随现有 ACL 一起迁移的文件共享,或者在新的文件共享中迁移任何具有现有权限的本地文件/目录,此方法可能不起作用,因为迁移的文件不会继承配置的根 ACL。
- 在具有域控制器无阻网络连接的计算机上使用用户名和存储帐户密钥登录,并授予某些用户(或组)文件共享根目录的编辑权限。
- 为这些用户分配“存储文件数据 SMB 共享提升的参与者”Azure RBAC 角色。
- 将来,无论何时想要更新 ACL,都可以使用其中一个授权用户从具有域控制器无阻网络连接的计算机登录并编辑 ACL。
使用存储帐户密钥装载文件共享
在配置 Windows ACL 之前,必须先使用存储帐户密钥装载文件共享。 为此,请登录到已加入域的设备(如果你的 AD 源是 Microsoft Entra 域服务,请以 Microsoft Entra 用户身份登录),打开 Windows 命令提示符,然后运行以下命令。 记住将 <YourStorageAccountName>
、<FileShareName>
和 <YourStorageAccountKey>
替换为自己的值。 如果 Z: 已在使用中,请将其替换为可用的驱动器号。 可以通过在 Azure 门户中导航到存储帐户并选择“安全 + 网络”>“访问密钥”找到你的存储帐户密钥,也可以使用 Get-AzStorageAccountKey
PowerShell cmdlet 找到它。
请务必在此阶段使用 net use
Windows 命令而不是 PowerShell 来装载共享。 如果使用 PowerShell 装载共享,则共享对 Windows 文件资源管理器或 cmd.exe 不可见,并且你将难以配置 Windows ACL。
注意
你可能会看到已将完全控制 ACL 应用于某个角色。 这通常已经提供了分配权限的功能。 但是,由于有两个级别(共享级别和文件/目录级别)的访问检查,因此这是有限制的。 只有拥有“存储文件数据 SMB 共享提升参与者”角色并创建新文件或目录的用户才能分配对这些新文件或目录的权限,而不使用存储帐户密钥。 所有其他文件/目录权限分配都需要首先使用存储帐户密钥连接到共享。
net use Z: \\<YourStorageAccountName>.file.core.chinacloudapi.cn\<FileShareName> /user:localhost\<YourStorageAccountName> <YourStorageAccountKey>
配置 Windows ACL
可以使用 icacls 或 Windows 文件资源管理器配置 Windows ACL。 还可以使用 Set-ACL PowerShell 命令。
如果在针对 AD DS 标识配置了 Windows ACL 的本地文件服务器中有目录或文件,则可以使用传统文件复制工具(如 Robocopy 或 Azure AzCopy v 10.4+)将其复制到 Azure 文件存储以保留 ACL。 如果通过 Azure 文件同步将目录和文件分层到 Azure 文件存储,则会以本机格式移动并保留 ACL。
重要
如果你使用 Microsoft Entra Kerberos 作为 AD 源,则必须将标识同步到 Microsoft Entra ID,才能强制实施 ACL。 可以为未同步到 Microsoft Entra ID 的标识设置文件/目录级别 ACL。 但是,不会强制实施这些 ACL,因为用于身份验证/授权的 Kerberos 票证不包含未同步的标识。 如果你使用本地 AD DS 作为 AD 源,则可以在 ACL 中具有未同步的标识。 AD DS 会将这些 SID 置于 Kerberos 票证中,并强制实施 ACL。
使用 icacls 配置 Windows ACL
若要向文件共享下的所有目录和文件(包括根目录)授予完全权限,请在与 AD 域控制器的网络连接不受阻碍的计算机上运行以下 Windows 命令。 请务必将示例中的占位符值替换为你自己的值。 如果你的 AD 源是 Microsoft Entra 域服务,则 <user-upn>
将是 <user-email>
。
icacls <mapped-drive-letter>: /grant <user-upn>:(f)
若要详细了解如何使用 icacls 设置 Windows ACL,以及各种受支持的权限,请参阅 icacls 的命令行参考。
使用 Windows 文件资源管理器配置 Windows ACL
如果登录到已加入域的 Windows 客户端,则可以使用 Windows 文件资源管理器向文件共享下的所有目录和文件(包括根目录)授予完全权限。
重要
如果你的客户端未加入域,或者如果你的环境有多个 AD 林,请勿使用 Windows 资源管理器来配置 ACL。 请改用 icacls。 这是因为 Windows 文件资源管理器 ACL 配置要求客户端域加入到存储帐户所加入的 AD 域。
按照以下步骤使用 Windows 文件资源管理器配置 ACL。
- 打开 Windows 文件资源管理器,右键单击文件/目录,然后选择“属性”。
- 选择“安全”选项卡。
- 选择“编辑...”以更改权限。
- 可以更改现有用户的权限,也可以选择“添加...”向新用户授予权限。
- 在添加新用户的提示窗口中,在“输入要选择的对象名称”框中输入要向其授予权限的目标用户名,然后选择“检查名称”以查找目标用户的完整 UPN 名称 。 你可能需要为本地 AD 指定域名和域 GUID。 可以从域管理员处或从已加入本地 AD 的客户端获取此信息。
- 选择“确定”。
- 在“安全性”选项卡中,选择要授予新用户的所有权限。
- 选择“应用”。
下一步
现在,你已配置了目录和文件级权限,接下来可以装载文件共享。