
IT監査実践編(Windows①) - Active Directory監査入門:まず押さえるべき5つのチェックポイント
はじめに:なぜActive Directory監査が重要なのか Active Directory(以下、AD)は、Microsoft社が提供するディレクトリサービスであり、企業のITインフラにおける「心臓部」とも言える存在です。ユーザー認証、アクセス制御、グループポリシーの配布など、組織のセキュリティ基盤を支える重要な役割を担っています。 しかし、その重要性ゆえに、ADは攻撃者にとっても格好の標的となっています。2023年の調査によれば、企業へのサイバー攻撃の約80%以上がActive Directoryを経由または標的としているとされています。一度ADが侵害されると、組織全体のシステムやデータが危険にさらされる可能性があります。 本記事では、IT監査担当者やセキュリティ実務者の方々を対象に、Active Directory監査を実施する際に「まず押さえるべき5つのチェックポイント」を詳しく解説します。これからAD監査に取り組む方はもちろん、既存の監査手順を見直したい方にも役立つ内容となっています。 Active Directory監査の背景と概要 Active Directoryとは何か Active Directoryは、Windows Server上で動作するディレクトリサービスです。簡単に言えば、「組織内のユーザー、コンピュータ、リソースを一元管理するためのデータベース」と考えることができます。 ADの主な機能は以下の通りです: 認証(Authentication):ユーザーが本人であることを確認する 認可(Authorization):ユーザーがどのリソースにアクセスできるかを制御する ディレクトリサービス:組織内のオブジェクト(ユーザー、グループ、コンピュータなど)の情報を格納・管理する グループポリシー:組織全体のセキュリティ設定やソフトウェア配布を一括管理する なぜ監査が必要なのか AD監査が必要な理由は、大きく分けて3つあります。 1. セキュリティリスクの低減 設定ミスや不適切な権限付与は、内部不正や外部攻撃の入り口となります。定期的な監査により、これらのリスクを早期に発見・是正できます。 2. コンプライアンス要件への対応 J-SOX(内部統制報告制度)、ISMS(ISO 27001)、PCI DSSなど、多くのセキュリティ基準でアクセス管理の適切性が求められています。AD監査はこれらの要件を満たすための基本的な活動です。 3. インシデント対応能力の向上 監査を通じてAD環境の現状を把握しておくことで、セキュリティインシデント発生時の調査・対応がスムーズになります。 AD監査の全体像 AD監査は、以下のような観点から実施されます: 監査領域 主なチェック内容 アカウント管理 不要アカウントの有無、パスワードポリシーの適切性 権限管理 特権アカウントの管理状況、過剰な権限付与の有無 グループ管理 グループメンバーシップの適切性、入れ子構造の複雑さ 監査ログ ログ設定の適切性、ログの保管・監視状況 セキュリティ設定 グループポリシーの設定内容、脆弱な設定の有無 それでは、具体的な5つのチェックポイントを見ていきましょう。 チェックポイント1:特権アカウントの棚卸しと管理状況 なぜ特権アカウントが最重要なのか 特権アカウントとは、システム全体に対して強力な権限を持つアカウントのことです。ADにおける代表的な特権グループには以下があります: Domain Admins:ドメイン全体の管理権限を持つ Enterprise Admins:フォレスト(複数ドメインの集合)全体の管理権限を持つ Schema Admins:ADスキーマ(構造定義)を変更できる Administrators(ビルトイン):ドメインコントローラーのローカル管理者 これらのアカウントが侵害されると、攻撃者は組織全体を掌握できてしまいます。そのため、特権アカウントの管理は最優先のチェック項目となります。 具体的なチェック手順 Step 1:特権グループのメンバー一覧を取得する PowerShellを使用して、特権グループのメンバーを確認します: # Domain Adminsグループのメンバーを取得 Get-ADGroupMember -Identity "Domain Admins" -Recursive | Select-Object Name, SamAccountName, ObjectClass # Enterprise Adminsグループのメンバーを取得 Get-ADGroupMember -Identity "Enterprise Admins" -Recursive | Select-Object Name, SamAccountName, ObjectClass Step 2:メンバーの妥当性を確認する ...