知識マップ: PowerShellでファイルサーバーを棚卸しする ── 容量調査とアクセス権(ACL)監査
記事「PowerShellでファイルサーバーを棚卸しする ── 容量調査とアクセス権(ACL)監査」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
ファイルサーバーの棚卸しは、Get-ChildItemとMeasure-Objectによる容量集計から始まり、アクセス拒否やMAX_PATH超過で走査から漏れた場所は「ゼロ」ではなく「不明」として必ず記録します。古いファイルの判定は更新が無効化されがちなLastAccessTimeではなくLastWriteTimeを基準にし、重複候補はGet-FileHashで抽出します。アクセス権はセキュリティ記述子の中のDACL、その中のACEという入れ子構造をGet-Aclで取得して台帳化し、調査にはGet-Acl、定型的な変更にはバックアップと復元ができるicacls、複雑な条件付き変更にはSet-Aclを使い分けます。削除前には隔離フォルダーへ移動しますが、同一ボリューム内の移動ではアクセス許可が継承されず元のまま残る例外があるため、icaclsで継承を戻す手順が欠かせません。
flowchart LR
accTitle: PowerShellのファイルサーバー棚卸し(容量・ACL監査)の知識マップ
accDescr: Get-ChildItemとMeasure-Objectによる容量調査、LastWriteTimeを基準とした古いファイル判定、Get-FileHashによる重複候補抽出、セキュリティ記述子・DACL・ACEの構造とGet-Acl・icacls・Set-Aclの使い分け、隔離時のアクセス許可継承の落とし穴の関係を示す図
get_childitem["Get-ChildItem"]
get_acl["Get-Acl"]
powershell["PowerShell"]
measure_object["Measure-Object"]
scan_omission_risk["走査漏れリスク"]
max_path_limitation["MAX_PATH(パス長260文字)制限"]
last_access_time["LastAccessTime(最終アクセス日時)"]
stale_file_detection["古いファイル(未使用ファイル)の判定"]
last_write_time["LastWriteTime(最終更新日時)"]
fsutil["fsutil"]
get_filehash["Get-FileHash"]
security_descriptor["セキュリティ記述子"]
dacl["DACL(随意アクセス制御リスト)"]
access_control_entry["ACE(アクセス制御エントリ)"]
icacls["icacls"]
set_acl["Set-Acl"]
acl_inventory["ACLの棚卸し・レポート化"]
acl_change_operation["ACLの変更作業"]
quarantine_workflow["隔離→観察→削除の運用"]
move_item_permission_inheritance["移動時のアクセス許可継承"]
unc_path["UNCパス"]
error_1219["エラー1219(ERROR_SESSION_CREDENTIAL_CONFLICT)"]
powershell -->|"利用する"| get_childitem
powershell -->|"利用する"| measure_object
get_childitem -->|"より先に行うべき"| measure_object
get_childitem -.->|"原因になり得る"| scan_omission_risk
max_path_limitation -.->|"原因になり得る"| scan_omission_risk
last_access_time -->|"用いるのは非推奨"| stale_file_detection
last_write_time -->|"推奨される対応"| stale_file_detection
stale_file_detection -->|"前提とする"| get_childitem
last_access_time -->|"で構成できる"| fsutil
powershell -->|"利用する"| get_filehash
security_descriptor -->|"で確認できる"| get_acl
dacl -->|"に保存される"| security_descriptor
access_control_entry -->|"に保存される"| dacl
dacl -->|"で構成できる"| icacls
dacl -->|"で構成できる"| set_acl
get_acl -->|"推奨される対応"| acl_inventory
icacls -->|"推奨される対応"| acl_change_operation
set_acl -.->|"推奨される対応"| acl_change_operation
quarantine_workflow -.->|"前提とする"| icacls
quarantine_workflow -.->|"前提とする"| move_item_permission_inheritance
unc_path -->|"原因になり得る"| error_1219
get_childitem -.->|"用いるのは非推奨"| unc_path
quarantine_workflow -->|"で確認できる"| get_acl
概念間の関係(全23件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- PowerShellはGet-ChildItemを利用します。
- PowerShellはMeasure-Objectを利用します。
- Get-ChildItemはMeasure-Objectより先に行うべきです。
- Get-ChildItemは走査漏れリスクの原因になることがあります。
- MAX_PATH(パス長260文字)制限は走査漏れリスクの原因になることがあります。
- LastAccessTime(最終アクセス日時)を古いファイル(未使用ファイル)の判定に用いることは推奨されません。
- LastWriteTime(最終更新日時)は古いファイル(未使用ファイル)の判定に対する本記事の推奨です。
- 古いファイル(未使用ファイル)の判定はGet-ChildItemを前提とします。
- LastAccessTime(最終アクセス日時)はfsutilで構成できます。
- PowerShellはGet-FileHashを利用します。
- セキュリティ記述子はGet-Aclで確認できます。
- DACL(随意アクセス制御リスト)はセキュリティ記述子に保存されます。
- ACE(アクセス制御エントリ)はDACL(随意アクセス制御リスト)に保存されます。
- DACL(随意アクセス制御リスト)はicaclsで構成できます。
- DACL(随意アクセス制御リスト)はSet-Aclで構成できます。
- Get-AclはACLの棚卸し・レポート化に対する本記事の推奨です。
- icaclsはACLの変更作業に対する本記事の推奨です。
- Set-AclはACLの変更作業に対する本記事の推奨です。
- 隔離→観察→削除の運用はicaclsを前提とします。
- 隔離→観察→削除の運用は移動時のアクセス許可継承を前提とします。
- UNCパスはエラー1219(ERROR_SESSION_CREDENTIAL_CONFLICT)の原因になることがあります。
- Get-ChildItemをUNCパスに用いることは推奨されません。
- 隔離→観察→削除の運用はGet-Aclで確認できます。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。