Windowsのファイルとフォルダーのアクセス許可は、「誰が」「何を」「許可または拒否されているか」をDACL内のACEで定義します。利用者名ではなくSIDで識別され、親フォルダーから継承される設定と、その項目へ直接付けた設定が組み合わさります。共有フォルダーではNTFSアクセス許可に加えて共有アクセス許可も関係します。エラーを直すためにEveryoneへフルコントロールを付ける、所有権を奪う、Denyを追加する操作は避け、まず[セキュリティ]タブ、Get-Acl、icaclsの読み取りで現状を記録します。
アクセス制御の基本用語
- セキュリティプリンシパル:ユーザー、グループ、コンピューターなどアクセス主体。
- SID:主体を一意に識別するセキュリティ識別子。表示名変更後も基礎になります。
- DACL:許可・拒否のACEを並べたアクセス制御リスト。
- ACE:特定SIDに対する権限、種類、継承範囲を持つ一つの項目。
- 所有者:アクセス許可を管理する権限と関係する所有主体。
- 継承:親フォルダーのACEを子へ伝える仕組み。
アクセス権は単純な上から順の一覧ではありません。ユーザーが所属する複数グループ、明示的・継承、許可・拒否、対象がファイルかフォルダーか、共有経由かローカルかで有効権限が決まります。一行だけ見て結論を出さず、利用者のグループ所属とアクセス経路を合わせます。
基本の権限レベル
一般的なフォルダーの権限には、フルコントロール、変更、読み取りと実行、フォルダーの内容の一覧表示、読み取り、書き込みがあります。フルコントロールは権限変更や所有権に関わるため、通常のデータ更新だけが必要な利用者へ与えません。必要な作業に最小限の権限を割り当てます。
「変更」は読み取り、作成、編集、削除を含む広い権限です。既存ファイルの編集は必要でも削除は不要という要件では、詳細な特殊アクセス許可が必要になることがあります。ただし複雑な個別ACEを大量に作ると管理不能になるため、業務ロールごとのグループへ割り当て、例外を最小化します。
エクスプローラーで読み取る
- 対象を右クリックし、[プロパティ]、[セキュリティ]を開きます。
- ユーザーまたはグループ名と、許可・拒否の概要を確認します。
- [詳細設定]で所有者、継承、ACEの適用先を確認します。
- [有効なアクセス]が利用できる環境では対象ユーザーを選び、結果を確認します。
- 変更せず画面を閉じ、対象パス、確認時刻、アクセス経路を記録します。
画面表示はWindowsの版と管理ポリシーで異なります。グレーのチェックは継承された可能性があります。編集ボタンを押しても、確定する前にキャンセルできますが、誤操作防止のため読み取り調査と変更作業を別の担当・時間に分けます。スクリーンショットへユーザー名や社内パスを含める場合は共有範囲を制限します。
PowerShellでACLを確認する
Get-Acl -LiteralPath "C:\Data\Example" | Format-List Owner, AccessToString, AreAccessRulesProtected
Get-Aclは所有者とアクセス制御情報を読み取ります。AreAccessRulesProtectedは継承保護の判断材料です。AccessToStringは人が読みやすい概要ですが、詳細なACEの適用範囲やSIDを調べるなら.Accessをオブジェクトとして確認します。読み取り結果をCSVへ保存する場合、IdentityReference、FileSystemRights、AccessControlType、IsInherited、InheritanceFlags、PropagationFlagsを列にします。
(Get-Acl -LiteralPath "C:\Data\Example").Access | Select-Object IdentityReference, FileSystemRights, AccessControlType, IsInherited, InheritanceFlags, PropagationFlags
アクセス拒否でGet-Aclを読めない場合、管理者権限を上げればよいと即断しません。自分がその情報を見る業務上の権限を持つかを確認し、所有者または管理者へ依頼します。スクリプトへ管理者資格情報を埋め込まないでください。
icaclsはまず読み取りに使う
icacls "C:\Data\Example"
icaclsはACLの表示、保存、復元、変更など多くの機能を持ちます。初期調査ではパスだけを指定して表示に限定します。出力の(I)は継承、(F)はフルアクセス、(M)は変更、(RX)は読み取りと実行などを示します。略号は公式ページで確認します。
/reset、/grant、/deny、/inheritance、再帰指定は多数ファイルを一度に変えるため、検証なしで使いません。変更する場合はACLの保存、対象範囲、除外、エラー処理、ロールバックをテストフォルダーで確認し、承認済み手順へ分離します。
継承を理解する
親フォルダーへグループ権限を付けると、子フォルダーとファイルへ継承できます。これにより個別設定を減らせます。継承を無効にすると、親の将来変更が伝わらず、例外が残り続けます。「継承されたACEを明示的ACEへ変換する」「削除する」という選択肢は結果が違うため、画面を読まずに進めません。
継承が切れているからといって必ず誤りではありません。人事、法務、バックアップ、アプリケーションなど、境界を作る設計もあります。フォルダーの業務目的、データ分類、所有部門、既存設計書と照合します。
Denyを慎重に扱う
明示的な拒否ACEは、複数グループから得た許可を打ち消し、想定外の利用者や管理処理へ影響することがあります。「この人だけ除外」するためにDenyを増やすより、許可グループのメンバーシップを整理する方が管理しやすい場合があります。既存Denyを削除する場合も、設定理由と適用範囲を確認します。
所有者と管理者
所有者はDACLを管理できる重要な主体です。管理者グループのメンバーでも、UACやACLにより通常トークンではアクセスできない場合があります。アクセスできないからと即座に所有権を取得すると、元の所有者と監査設計を壊します。復旧や退職者データの引き継ぎなど正当な目的、承認、元の所有者記録、作業後の所有者を決めます。
ローカルとネットワーク共有の違い
ローカルでC:\Dataへアクセスする場合は主にNTFSアクセス許可が適用されます。\server\share経由では共有アクセス許可とNTFSアクセス許可の両方が関係し、結果として許される範囲が有効になります。共有側をEveryoneフルコントロールにすれば安全とは限らず、組織の標準設計に従います。
共有へ接続できない問題には、DNS、VPN、SMB、資格情報、サーバー停止もあります。アクセス拒否メッセージだけでACLを変更せず、ローカルアクセス、別共有、別ユーザー、接続経路を比較します。ファイル共有を有効にするためファイアウォール全体を無効にしません。
グループで割り当てる
利用者へ直接権限を付けると、異動・退職・引き継ぎで個別ACEが残ります。閲覧者、編集者、管理者などロールごとのセキュリティグループを作り、フォルダーへグループを割り当て、ユーザーはグループメンバーシップで管理します。グループ名に対象と役割を含め、所有者と棚卸し周期を決めます。
最小権限の設計例
- 閲覧者:読み取りと実行。作成・変更・削除は不可。
- 編集者:業務に必要な作成・変更。削除要件は個別に確認。
- 管理者:権限管理を含むが、日常作業アカウントと分離。
- サービスアカウント:アプリが必要なフォルダーと操作だけ。対話ログオンを避ける。
- 監査・バックアップ:製品要件に沿う専用権限。一般利用と混ぜない。
変更前の確認表
- 対象の完全パス、ローカルか共有か、業務所有者を確認します。
- 現在の所有者、継承、全ACE、共有アクセス許可を保存します。
- 誰が何をできる必要があるかをロールと操作で定義します。
- テストフォルダーで同じ構造を作り、代表ユーザーで確認します。
- 変更時間、影響、ロールバック、監査ログ、連絡先を決めます。
- 変更後に許可された操作と禁止される操作の両方を試します。
アクセス拒否の切り分け
発生時刻、対象パス、操作(開く・作成・上書き・削除・名前変更)、ローカル/共有、利用者、所属グループ、エラー全文を記録します。同じ利用者が親フォルダーを一覧できるか、別ファイルは開けるか、アプリからだけ失敗するかを比較します。ファイルが暗号化、別プロセスでロック、読み取り専用、同期中というACL以外の原因もあります。
監査と定期棚卸し
権限は設定して終わりではありません。グループ所有者、最終確認日、例外ACE、退職者SID、継承遮断、Everyone・Users・Authenticated Usersの広い権限を定期確認します。不要権限を見つけても即削除せず、利用実態と所有者承認を確認します。ACLレポート自体が機密情報なので閲覧権限と保持期間を設定します。
安全な完了条件
アクセス許可の変更完了は、必要な利用者が必要操作をでき、不要な利用者はできず、継承と所有者が設計どおりで、共有経由とローカルの両方を確認し、変更前ACLとロールバックが保管されている状態です。管理者だけで試して完了にせず、代表的な標準ユーザーで読み取り、作成、編集、削除の必要範囲を確認します。

コメント