装载 Azure 文件共享

在开始本文之前,请确保已阅读通过 SMB 配置目录和文件级别权限

本文描述的过程验证了 SMB 文件共享和访问权限是否正确设置,以及可否装载 SMB Azure 文件共享。 请记住,共享级别角色分配可能需要一些时间才能生效。

使用你已向其授予权限的标识的凭据登录到客户端。

适用于

文件共享类型 SMB NFS
标准文件共享 (GPv2)、LRS/ZRS 是 否
标准文件共享 (GPv2)、GRS/GZRS 是 否
高级文件共享 (FileStorage)、LRS/ZRS 是 否

装载先决条件

请确保已完成以下先决条件,然后才能装载 Azure 文件共享:

  • 如果从以前使用存储帐户密钥连接到文件共享的客户端装载文件共享,请确保已断开与共享的连接、已移除存储帐户密钥的永久凭据,并且当前正在使用 AD DS 凭据进行身份验证。 有关如何在使用 AD DS 或 Microsoft Entra 凭据初始化新连接之前移除具有存储帐户密钥的缓存凭据并删除现有 SMB 连接的说明,请按照常见问题解答页面上的两步过程进行操作。
  • 客户端必须与 AD DS 建立畅通无阻的网络连接。 如果计算机或者 VM 位于 AD DS 管理的网络之外,则需要启用 VPN 以到达 AD DS 来进行身份验证。

从加入域的 VM 装载文件共享

运行下面的 PowerShell 脚本或使用 Azure 门户永久装载 Azure 文件共享,并将其映射来驱动 Windows 上的驱动器 Z:。 如果 Z: 已在使用中,请将其替换为可用的驱动器号。 脚本将检查此存储帐户是否可通过 TCP 端口 445(这是 SMB 使用的端口)访问。 请务必将占位符值替换为你自己的值。 有关详细信息,请参阅将 Azure 文件共享与 Windows 配合使用

除非使用自定义域名,否则即使设置了用于共享的专用终结点,也应使用后缀 file.core.chinacloudapi.cn 装载 Azure 文件共享。

$connectTestResult = Test-NetConnection -ComputerName <storage-account-name>.file.core.chinacloudapi.cn -Port 445
if ($connectTestResult.TcpTestSucceeded) {
    cmd.exe /C "cmdkey /add:`"<storage-account-name>.file.core.chinacloudapi.cn`" /user:`"localhost\<storage-account-name>`""
    New-PSDrive -Name Z -PSProvider FileSystem -Root "\\<storage-account-name>.file.core.chinacloudapi.cn\<file-share-name>" -Persist
} else {
    Write-Error -Message "Unable to reach the Azure storage account via port 445. Check to make sure your organization or ISP is not blocking port 445, or use Azure P2S VPN, Azure S2S VPN, or Express Route to tunnel SMB traffic over a different port."
}

还可以通过 Windows 提示符使用 net-use 命令来装载文件共享。 记住将 <YourStorageAccountName><FileShareName> 替换为自己的值。

net use Z: \\<YourStorageAccountName>.file.core.chinacloudapi.cn\<FileShareName>

如果遇到问题,请参阅无法使用 AD 凭据装载 Azure 文件共享

从未加入域的 VM 或已加入其他 AD 域的 VM 装载文件共享

未加入域的 VM 或已加入存储帐户以外的其他 AD 域的 VM 可以访问 Azure 文件共享,前提是它们与域控制器未实现网络连接并提供显式凭据(用户名和密码)。 访问文件共享的用户必须在存储帐户加入的 AD 域中具有标识和凭据。

若要从未加入域的 VM 装载文件共享,请使用 username@domainFQDN 表示法,其中 domainFQDN 是完全限定的域名。 这将允许客户端通过联系域控制器来请求和接收 Kerberos 票证。 你可以通过在 Active Directory PowerShell 中运行 (Get-ADDomain).Dnsroot 来获取 domainFQDN 的值。

例如:

net use Z: \\<YourStorageAccountName>.file.core.chinacloudapi.cn\<FileShareName> /user:<username@domainFQDN>

注意

尝试通过 Windows 文件资源管理器从未加入域的 VM 或加入了其他域的 VM 访问 Azure 文件存储时,Azure 文件存储不支持将用户和组的 SID 转换为 UPN。 如果要通过 Windows 文件资源管理器查看文件/目录所有者或查看/修改 NTFS 权限,则只能从已加入域的 VM 执行此操作。

使用自定义域名装载文件共享

如果不想使用后缀 file.core.chinacloudapi.cn 装载 Azure 文件共享,可以修改与 Azure 文件共享关联的存储帐户名称的后缀,然后添加规范名称 (CNAME) 记录,以将新后缀路由到存储帐户的终结点。 以下说明仅适用于单林环境。 若要了解如何配置具有两个或多个林的环境,请参阅将 Azure 文件存储与多个 Active Directory 林配合使用

注意

Azure 文件存储仅支持使用存储帐户名称作为域前缀来配置 CNAMES。 如果不想将存储帐户名称用作前缀,请考虑使用 DFS 命名空间

在此示例中,我们有 Active Directory 域 onpremad1.com,并且有一个名为 mystorageaccount 的存储帐户,其中包含 SMB Azure 文件共享。 首先,我们需要修改存储帐户的 SPN 后缀,以将 mystorageaccount.onpremad1.com 映射到 mystorageaccount.file.core.chinacloudapi.cn

这样,客户端就可以使用 net use \\mystorageaccount.onpremad1.com 装载共享,因为 onpremad1 中的客户端知道需要搜索 onpremad1.com 来找到该存储帐户的适当资源

若要使用此方法,请完成以下步骤:

  1. 请确保已设置基于标识的身份验证,并将 AD 用户帐户同步到 Microsoft Entra ID。

  2. 使用 setspn 工具修改存储帐户的 SPN。 可以通过运行以下 Active Directory PowerShell 命令找到 <DomainDnsRoot>(Get-AdDomain).DnsRoot

    setspn -s cifs/<storage-account-name>.<DomainDnsRoot> <storage-account-name>
    
  3. 使用 Active Directory DNS 管理器添加 CNAME 条目,并针对存储帐户加入到的域中的每个存储帐户执行以下步骤。 如果使用的是专用终结点,请添加 CNAME 条目以映射到专用终结点名称。

    1. 打开 Active Directory DNS 管理器。
    2. 转到你的域(例如 onpremad1.com)。
    3. 转到“正向查找区域”。
    4. 选择与你的域同名的节点(例如 onpremad1.com)并右键单击“新建别名(CNAME)”。
    5. 对于别名,输入你的存储帐户名称。
    6. 对于完全限定的域名 (FQDN),请输入 <storage-account-name>.<domain-name>,例如 mystorageaccount.onpremad1.com。 FQDN 的主机名部分必须与存储帐户名称匹配。 否则,在 SMB 会话设置期间,会收到访问被拒绝错误。
    7. 对于目标主机 FQDN,请输入 <storage-account-name>.file.core.chinacloudapi.cn
    8. 选择“确定”

现在应该能够使用 storageaccount.domainname.com 装载文件共享。 还可以使用存储帐户密钥装载文件共享。

后续步骤

如果在 AD DS 中创建的用于表示存储帐户的标识位于强制执行密码轮换的域或 OU 中,则可能需要更新 AD DS 中的存储帐户标识的密码