島田則幸

共有フォルダ・アクセス権限管理手順書

社内の ファイルサーバー / SharePoint / OneDrive 共有フォルダのアクセス権限を、最小権限の原則に沿って付与・変更・削除・棚卸しするための標準手順書です。


📋 想定環境

項目 想定
ファイルサーバー Windows Server 2019/2022(共有 + NTFS 権限)
クラウド SharePoint Online / OneDrive for Business
認証 Active Directory ドメイン
アクセス制御 AD セキュリティグループ単位(個人ユーザー直付与は避ける)
想定読者 ヘルプデスク/社内SE/IT管理者

🎯 設計の基本原則

  1. 最小権限の原則(PoLP): 業務に必要な最小限の権限のみ付与する
  2. グループ単位で管理: ユーザー個人を ACL に直接書かない。AD グループに対して権限を付与する
  3. 2 階層の権限分離: 共有レベル(誰がパスを開けるか)と NTFS レベル(何ができるか)を分離する
  4. 読み取りはデフォルト許可、書き込みは申請ベース
  5. 棚卸しは四半期ごと: 異動・退職に伴う権限付け替え漏れを定期的に検出する

🗂 標準フォルダ構造例

\\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️⃣ 新規部署フォルダ作成手順

A. AD セキュリティグループの作成

部署 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"
}

B. 共有フォルダ作成

C. NTFS 権限設定(推奨)

プリンシパル 権限 適用先
SYSTEM フルコントロール このフォルダ・サブフォルダ・ファイル
Administrators フルコントロール 同上
<部署名>-Mgr 変更(Modify) 同上
<部署名>-AllUsers 読み取り+書き込み 同上
<部署名>-ReadOnly 読み取り 同上
Creator Owner フルコントロール サブフォルダ・ファイルのみ

⚠️ 継承の停止は最後の手段: トップレベルで設定し、できるだけ継承で運用する。継承を止めると棚卸しが困難になる。

D. 検証


2️⃣ ユーザー追加手順

新メンバー入社・部署異動時の標準フローです。

入力

手順

# 例:山田さんを営業部に追加
Add-ADGroupMember -Identity Sales-AllUsers -Members yamada.taro

承認ワークフロー推奨: 申請者・部署長承認・IT 実施の 3 段階を残し、誰が許可したかを後から追えるようにする。


3️⃣ 部署異動時の権限付け替え

人事異動の処理は「追加してから削除する」順序で行うと、業務影響を最小化できます。

手順

# 個人ユーザー直接付与を検出
Get-Acl "\\fileserver\corp\02_営業" | Select-Object -ExpandProperty Access |
    Where-Object { $_.IdentityReference -like "CORP\*" -and $_.IdentityReference -notlike "*Group*" }

4️⃣ 退職時の権限削除

退職者アカウント停止手順書 と連動します。

# 退職者所有ファイル一覧を取得
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

5️⃣ 四半期棚卸し(権限監査)

四半期ごとに以下を実施し、権限肥大化・退職者残存を防ぎます。

A. グループメンバー一覧のスナップショット

$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
}

B. 部署長へ確認依頼

C. 是正実施

D. 個人ユーザー直接 ACL の検出と是正

# 共有のトップレベルで個人 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 に直接書かれる 一時的な対応で個別追加した結果 棚卸し時に検出し、グループへ移行

🔗 関連リソース


注意: 本書はサンプルです。実運用では自社のアクセス制御ポリシー・情報資産分類基準に従ってカスタマイズしてください。