知識マップ: PowerShellでファイルサーバーを棚卸しする ── 容量調査とアクセス権(ACL)監査

記事「PowerShellでファイルサーバーを棚卸しする ── 容量調査とアクセス権(ACL)監査」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

ファイルサーバーの棚卸しは、Get-ChildItemとMeasure-Objectによる容量集計から始まり、アクセス拒否やMAX_PATH超過で走査から漏れた場所は「ゼロ」ではなく「不明」として必ず記録します。古いファイルの判定は更新が無効化されがちなLastAccessTimeではなくLastWriteTimeを基準にし、重複候補はGet-FileHashで抽出します。アクセス権はセキュリティ記述子の中のDACL、その中のACEという入れ子構造をGet-Aclで取得して台帳化し、調査にはGet-Acl、定型的な変更にはバックアップと復元ができるicacls、複雑な条件付き変更にはSet-Aclを使い分けます。削除前には隔離フォルダーへ移動しますが、同一ボリューム内の移動ではアクセス許可が継承されず元のまま残る例外があるため、icaclsで継承を戻す手順が欠かせません。

PowerShellのファイルサーバー棚卸し(容量・ACL監査)の知識マップGet-ChildItemとMeasure-Objectによる容量調査、LastWriteTimeを基準とした古いファイル判定、Get-FileHashによる重複候補抽出、セキュリティ記述子・DACL・ACEの構造とGet-Acl・icacls・Set-Aclの使い分け、隔離時のアクセス許可継承の落とし穴の関係を示す図利用する利用するより先に行うべき原因になり得る原因になり得る用いるのは非推奨推奨される対応前提とするで構成できる利用するで確認できるに保存されるに保存されるで構成できるで構成できる推奨される対応推奨される対応推奨される対応前提とする前提とする原因になり得る用いるのは非推奨で確認できるGet-ChildItemGet-AclPowerShellMeasure-Object走査漏れリスクMAX_PATH(パス長260文字)制限LastAccessTime(最終アクセス日時)古いファイル(未使用ファイル)の判定LastWriteTime(最終更新日時)fsutilGet-FileHashセキュリティ記述子DACL(随意アクセス制御リスト)ACE(アクセス制御エントリ)icaclsSet-AclACLの棚卸し・レポート化ACLの変更作業隔離→観察→削除の運用移動時のアクセス許可継承UNCパスエラー1219(ERROR_SESSION_CREDENTIAL_CONFLICT)

概念間の関係(全23件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Get-ChildItem
指定したパス以下のファイルやフォルダーを一覧・検索するPowerShellコマンドレット。-Recurseで再帰的に列挙でき、-Filterや-LiteralPath、LastWriteTimeによる絞り込みと組み合わせて使う。
Get-Acl
ファイルやフォルダーのセキュリティ記述子を取得し、既定でDACLのアクセス制御エントリ一覧(Accessプロパティ)を返すコマンドレット。SDDL形式でも取得できる。
PowerShell
オブジェクトパイプラインとエラー処理機構を持つ、Microsoftが最も堅牢で最新のWindows自動化に推奨するコマンドラインシェル兼スクリプト言語。
MAX_PATH(パス長260文字)制限
Windows APIのパス長上限が260文字であるという制限。レジストリのLongPathsEnabledとアプリ側のlongPathAware宣言の両方が揃わない限り多くのWin32関数に適用され、超えるパスでは列挙が失敗することがある。
LastAccessTime(最終アクセス日時)
ファイルが最後に読まれた日時を示すプロパティ。NTFSでは性能上の理由から更新が既定で無効化・システム管理されている環境が多く、実際に読まれていても更新されないことがある。
LastWriteTime(最終更新日時)
ファイルの内容が最後に変更された日時を示すプロパティ。ファイルサーバー棚卸しにおける「古いファイル」判定の基準として推奨される。
古いファイル(未使用ファイル)の判定
ファイルサーバーの棚卸しで、長期間更新・利用されていないファイルを一覧化し、削除候補の材料にする作業。
セキュリティ記述子
ファイルやフォルダーごとに付く、所有者・DACL・SACLをまとめて保持する構造。Get-Aclが取得するのはこれである。
DACL(随意アクセス制御リスト)
誰に何を許可・拒否するかを列挙する、セキュリティ記述子内のアクセス制御リスト。Get-AclのAccessプロパティで見えるのはこの中身である。
ACE(アクセス制御エントリ)
DACLの1行に相当するエントリで、IdentityReference(誰が)・FileSystemRights(何ができるか)・AccessControlType(許可/拒否)・IsInherited(継承か直接付与か)を持つ。
icacls
DACLの表示・変更を行うコマンドラインツール。/saveでACLをファイルへ保存し/restoreで復元でき、/grant・/remove・/resetなどのオプションを持つ。
Set-Acl
取得したセキュリティ記述子をモデルとして対象のACLを変更するコマンドレット。-WhatIf/-Confirmに対応する。
隔離→観察→削除の運用
削除の前に対象ファイルを日付入りの隔離フォルダーへ元の階層を保ったまま移し、台帳に記録して一定期間観察してから削除する運用手順。
UNCパス
\\サーバー名\共有名\...の形式で共有フォルダーの実体を指す、Windowsのユニバーサル命名規則によるパス表記。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。