Azure 文件共享中的文件只能在 Windows 10 上的一个特定配置文件上以只读方式打开 - (具有基于域的身份验证的 DFS-N)

Azure 文件共享中的文件只能在 Windows 10 上的一个特定配置文件上以只读方式打开 - (具有基于域的身份验证的 DFS-N)

[我将首先解释如何设置环境] 对于文件共享,我们使用 DFS-N 映射,EX- \\Domain.local\Storageaccount。此映射由 Windows Server 2012 R2 服务器上的 DFS-N 角色托管。

在 DFS-N 服务器上,我正在处理的文件夹实际上位于 Azure 上,例如 - \\Domain.local\Storageaccount\FolderA\SubforbderB--> 此文件夹有一个指向的目标\\storageaccount.file.core.windows.net

有一个通往 Azure 的隧道。身份验证是基于域的身份验证。因此,用户\\Domain.local\Storageaccount\使用域 AD 身份验证访问并将 Kerberos 票证返回到 Azure 文件并针对 Azure 进行身份验证。

现在奇怪的是,我确实有一个解决方法,即直接将此文件夹映射到 Azure 文件共享路径而不是 AD 路径\\storageaccount.file.core.windows.net\FolderA\SubforbderB- 这工作得很好,用户可以打开具有读写访问权限的文件。这意味着问题出在 AD 身份验证上。此问题不会发生在任何其他文件夹中,这些文件夹以相同的方式设置但没有继承,其他用户没有此问题。

[现在我来解释一下这个问题]

目前我们有一个文件夹\\Domain.local\Storageaccount\FolderA\SubforbderB - SubforbderB- 此文件夹的继承已关闭。我们正在明确分配权限。UserA 在访问\\Domain.local\Storageaccount\FolderA\SubforbderB文件夹内的文件时遇到问题,他打开的文件以只读方式打开。UserA 拥有 NTFS 和 IAM RBAC 角色的完全控制权。我确实在另一台计算机上测试了 UserA 帐户,并确认该帐户确实具有读写访问权限。我在同一台 Windows 10 计算机上的不同用户配置文件上测试了具有与 UserA 相同访问权限的 UserB 帐户,并且 UserB 可以以读写方式访问文件。这向我证明问题出在 Windows 10 计算机上的当前用户配置文件上。

我们知道,我们可以在 Windows 计算机上重新创建配置文件并备份和恢复数据,这个问题就会得到解决。但是,用户有很多自定义的用户特定配置,很难转移到新的配置文件。

我们与 Microsoft Azure 团队和 Windows 团队合作,但他们除了重新创建配置文件外没有提供任何其他解决方案。

我希望你们中有人曾经遇到过这个问题并解决了它。

以下是我们尝试过的操作:清除凭据管理器、重新加入域、SFC、DISM 扫描、Windows 更新、查找任何文件资源管理器映射特定的注册表,然后清除这些注册表。

除了重新创建 Windows 用户配置文件之外,您还有其他建议吗?

答案1

我们在此位置有一个本地 DC,不知何故我们停用了这个 DC,现在客户端直接与 Azure 中的 DC 进行身份验证。我使用“访问密钥”重新应用了 NTFS 权限。现在一切都按预期运行

答案2

您可能需要分配存储文件数据共享贡献者 Azure RBAC 角色,或具有以下数据操作的自定义角色。如下所示,对于写入 Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write

{
  "assignableScopes": [
    "/"
  ],
  "description": "Allows for read, write, and delete access in Azure Storage file shares over SMB",
  "id": "/providers/Microsoft.Authorization/roleDefinitions/0c867c2a-1d8c-454a-a3db-ab2ea1bdc8bb",
  "name": "0c867c2a-1d8c-454a-a3db-ab2ea1bdc8bb",
  "permissions": [
    {
      "actions": [],
      "notActions": [],
      "dataActions": [
        "Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read",
        "Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write",
        "Microsoft.Storage/storageAccounts/fileServices/fileshares/files/delete"
      ],
      "notDataActions": []
    }
  ],
  "roleName": "Storage File Data SMB Share Contributor",
  "roleType": "BuiltInRole",
  "type": "Microsoft.Authorization/roleDefinitions"
}

顺便说一句,对于用户配置文件共享,我推荐 FSLogix。FSLogix 利用配置文件容器来封装用户配置文件。这些容器动态附加到用户会话,使用户能够在不同的会话中获得一致的体验。配置文件容器存储用户特定的数据、配置和设置,从而减少登录时间并提高性能。

PowerShell 获取 acl

# Specify the path to the file or folder
$path = "C:\Path\To\Your\FileOrFolder"

# Get the NTFS ACL
$ntfsAcl = Get-Acl -Path $path

# Display the NTFS ACL
Write-Host "NTFS ACL:"
$ntfsAcl | Format-List

相关内容