
[我將首先解釋如何設定環境] 對於檔案共享,我們使用 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
- 該資料夾的繼承功能已關閉。我們正在明確分配權限。使用者 A 在存取資料夾內的檔案時遇到問題\\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 進行身份驗證。我使用“ACCESS KEY”重新應用了 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