🔐 PowerShell 建立企業檔案分享環境:ACL、群組化管理、存取稽核與防止資料外洩
在企業中建置檔案伺服器(File Server),最核心的技術在於分享設定(SMB Share)、 NTFS 權限(ACL)、群組化管理、以及存取稽核(Audit)。 若能透過 PowerShell 自動化這些流程,不僅能消除手動設定錯誤,也讓多台伺服器的部署更一致化。
本篇深度完整解析 Windows 檔案伺服器建置流程,包含:
- 📌 安裝 File Server 角色
- 📌 建立資料夾架構:部門 / 專案 / 公用
- 📌 使用 PowerShell 建立 SMB Share
- 📌 以群組為中心的 NTFS ACL 權限模型
- 📌 啟用稽核與 Log 分析
- 📌 防止資料外洩的設定(Access-Based Enumeration、阻擋危險檔案)
🧱 Part 1:安裝 File Server 角色
在 Windows Server 中,File Server 角色可以透過 GUI 或 PowerShell 安裝。若要腳本自動化,請使用:
# 安裝 File Server 角色
Install-WindowsFeature -Name FS-FileServer -IncludeManagementTools
確認角色已安裝:
Get-WindowsFeature FS-FileServer
🗂 Part 2:企業資料夾架構(建議)
D:\FileShares\
├── Public\
├── HR\
├── Finance\
├── IT\
└── Project\
├── P001\
├── P002\
└── P003\
建立資料夾:
New-Item -Path "D:\FileShares\Public" -ItemType Directory
New-Item -Path "D:\FileShares\HR" -ItemType Directory
New-Item -Path "D:\FileShares\Finance" -ItemType Directory
👥 Part 3:企業級 AD 群組權限模型
大型企業採用「AGDLP 模型」:
- Accounts(人員)
- Global Groups(部門群組)
- Domain Local Groups(權限群組)
- Permissions(ACL 套用)
建立群組(範例):
# 建立部門群組
New-ADGroup -Name "GG-HR" -GroupScope Global -Path "OU=Groups,DC=corp,DC=local"
New-ADGroup -Name "GG-Finance" -GroupScope Global -Path "OU=Groups,DC=corp,DC=local"
# 建立權限群組
New-ADGroup -Name "DL-HR-Modify" -GroupScope DomainLocal -Path "OU=Groups,DC=corp,DC=local"
New-ADGroup -Name "DL-FIN-Read" -GroupScope DomainLocal -Path "OU=Groups,DC=corp,DC=local"
# 將 GG 加入 DL
Add-ADGroupMember -Identity "DL-HR-Modify" -Members "GG-HR"
Add-ADGroupMember -Identity "DL-FIN-Read" -Members "GG-Finance"
📁 Part 4:建立 SMB Share(含 Access-Based Enumeration)
建立 HR 資料夾的共享:
New-SmbShare -Name "HR" -Path "D:\FileShares\HR" -FullAccess "DL-HR-Modify" -ReadAccess "DL-HR-Read" -EncryptData $true
啟用 Access-Based Enumeration(未授權者看不到資料夾名稱):
Set-SmbShare -Name "HR" -FolderEnumerationMode AccessBased
確認設定成功:
Get-SmbShare -Name "HR" | fl *
🔐 Part 5:設定 NTFS 權限(ACL)
將權限授予 DL 群組:
# 取得目前 ACL
$acl = Get-Acl "D:\FileShares\HR"
# 設定存取規則(Modify 權限)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("DL-HR-Modify","Modify","ContainerInherit,ObjectInherit","None","Allow")
# 套用
$acl.AddAccessRule($rule)
Set-Acl -Path "D:\FileShares\HR" -AclObject $acl
給予 Read 權限:
$acl = Get-Acl "D:\FileShares\Finance"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("DL-FIN-Read","ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
$acl.AddAccessRule($rule)
Set-Acl "D:\FileShares\Finance" $acl
🕵️ Part 6:啟用稽核(Audit)追蹤誰讀/寫資料
第一步:啟用本機稽核策略 Auditing:
auditpol /set /subcategory:"File System" /success:enable /failure:enable
第二步:在 HR 資料夾上加上稽核規則:
$acl = Get-Acl "D:\FileShares\HR"
$auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule("GG-HR","Write","ContainerInherit,ObjectInherit","None","Success")
$acl.AddAuditRule($auditRule)
Set-Acl "D:\FileShares\HR" $acl
這樣即可在 Security Log 看到:誰新增、修改、刪除檔案。
🚫 Part 7:防止資料外洩(DLP 基礎)
- Access-Based Enumeration:未授權的資料夾直接隱藏。
- 阻擋危險副檔名下載(如 exe、bat、ps1)
- 強制 SMB 加密(避免網路封包竊聽)
- 使用 File Screening(FSRM)阻擋特定檔案類型
啟用 SMB 加密:
Set-SmbServerConfiguration -EncryptData $true -Force
阻擋可執行檔(FSRM):
Import-Module FileServerResourceManager
New-FsrmFileGroup -Name "BlockExe" -IncludePattern @("*.exe","*.bat","*.ps1")
New-FsrmFileScreen -Path "D:\FileShares\Public" -FileGroup "BlockExe" -Active:$true
🏁 結語
PowerShell 能將整個企業檔案伺服器的建置流程自動化,避免手動設定錯誤,也讓權限管理更一致與安全。 本篇涵蓋SMB Share、NTFS ACL、群組化管理、稽核、外洩防護等企業最常使用的配置方法, 可作為企業 IT、MIS 與系統管理員部署 Windows File Server 的標準藍圖。
沒有留言: