社内の ファイルサーバー / SharePoint / OneDrive 共有フォルダのアクセス権限を、最小権限の原則に沿って付与・変更・削除・棚卸しするための標準手順書です。
| 項目 | 想定 |
|---|---|
| ファイルサーバー | Windows Server 2019/2022(共有 + NTFS 権限) |
| クラウド | SharePoint Online / OneDrive for Business |
| 認証 | Active Directory ドメイン |
| アクセス制御 | AD セキュリティグループ単位(個人ユーザー直付与は避ける) |
| 想定読者 | ヘルプデスク/社内SE/IT管理者 |
\\fileserver\corp\
├── 01_経営 (取締役・経営企画のみ)
├── 02_営業 (Sales-AllUsers)
│ ├── 01_顧客資料 (Sales-AllUsers / 一般読み取り、担当者書き込み)
│ ├── 02_受注 (Sales-AllUsers + Accounting-Read)
│ └── 99_引継ぎ (Sales-Mgr のみ書き込み)
├── 03_開発 (Engineering-AllUsers)
├── 04_経理 (Accounting-AllUsers / 個人情報含むため強制 MFA)
├── 05_全社共有 (Domain Users)
└── 99_アーカイブ (Read-Only / 5 年保存規程)
部署 1 つにつき最低 3 つのグループを作成します。
| グループ名 | 用途 |
|---|---|
<部署名>-AllUsers |
部署メンバー全員(読み書き) |
<部署名>-ReadOnly |
関連部署など参照のみ |
<部署名>-Mgr |
管理職限定(権限変更・引き継ぎ領域への書き込み) |
# 例:マーケティング部の3グループ
"Marketing-AllUsers", "Marketing-ReadOnly", "Marketing-Mgr" | ForEach-Object {
New-ADGroup -Name $_ -GroupScope Global -GroupCategory Security -Path "OU=Groups,OU=Corp,DC=corp,DC=local"
}
\\fileserver\corp\<番号>_<部署名>)| プリンシパル | 権限 | 適用先 |
|---|---|---|
| SYSTEM | フルコントロール | このフォルダ・サブフォルダ・ファイル |
| Administrators | フルコントロール | 同上 |
<部署名>-Mgr |
変更(Modify) | 同上 |
<部署名>-AllUsers |
読み取り+書き込み | 同上 |
<部署名>-ReadOnly |
読み取り | 同上 |
| Creator Owner | フルコントロール | サブフォルダ・ファイルのみ |
⚠️ 継承の停止は最後の手段: トップレベルで設定し、できるだけ継承で運用する。継承を止めると棚卸しが困難になる。
4663 (アクセス) が記録されること新メンバー入社・部署異動時の標準フローです。
<部署名>-AllUsers グループに追加<部署名>-Mgr も追加<関連部署>-ReadOnly も追加# 例:山田さんを営業部に追加
Add-ADGroupMember -Identity Sales-AllUsers -Members yamada.taro
承認ワークフロー推奨: 申請者・部署長承認・IT 実施の 3 段階を残し、誰が許可したかを後から追えるようにする。
人事異動の処理は「追加してから削除する」順序で行うと、業務影響を最小化できます。
# 個人ユーザー直接付与を検出
Get-Acl "\\fileserver\corp\02_営業" | Select-Object -ExpandProperty Access |
Where-Object { $_.IdentityReference -like "CORP\*" -and $_.IdentityReference -notlike "*Group*" }
退職者アカウント停止手順書 と連動します。
<部署名>-* グループから削除# 退職者所有ファイル一覧を取得
Get-ChildItem "\\fileserver\corp\" -Recurse -ErrorAction SilentlyContinue |
Where-Object { (Get-Acl $_.FullName).Owner -eq "CORP\yamada.taro" } |
Select-Object FullName, Length, LastWriteTime |
Export-Csv "C:\offboarding\yamada-files.csv" -NoTypeInformation -Encoding UTF8
四半期ごとに以下を実施し、権限肥大化・退職者残存を防ぎます。
$departments = "Sales", "Marketing", "Engineering", "Accounting"
foreach ($d in $departments) {
Get-ADGroupMember -Identity "$d-AllUsers" |
Select-Object SamAccountName, Name, ObjectClass |
Export-Csv "C:\audits\$d-members-$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation -Encoding UTF8
}
# 共有のトップレベルで個人 ACL を検出
$paths = Get-ChildItem "\\fileserver\corp" -Directory
foreach ($p in $paths) {
Get-Acl $p.FullName | Select-Object -ExpandProperty Access |
Where-Object { $_.IdentityReference -like "CORP\[a-z]*" -and $_.IdentityReference -notlike "*-AllUsers" }
}
| 症状 | 原因 | 対策 |
|---|---|---|
| 異動先のフォルダにアクセスできない | グループ所属の更新がレプリケーション中(最大 8 時間) | サインアウト→再ログインで gpupdate /force、改善しなければ DC 確認 |
| 退職者の名前で作成されたファイルが残る | Creator Owner で個人付与されたまま | 棚卸しスクリプトで検出し、所有者をグループまたは管理者に変更 |
| 「全員」「Everyone」が ACL に残る | フォルダ作成時の既定設定を変更し忘れ | 標準テンプレート ACL を策定し、新規作成時に適用 |
| 個人ユーザーがフォルダ ACL に直接書かれる | 一時的な対応で個別追加した結果 | 棚卸し時に検出し、グループへ移行 |
注意: 本書はサンプルです。実運用では自社のアクセス制御ポリシー・情報資産分類基準に従ってカスタマイズしてください。