Microsoft 365環境の管理者にとって、アカウントのサインイン状況やシステム全体の監査ログを把握することは、セキュリティ対策やコンプライアンス対応に欠かせません。Microsoft Graph APIを利用することで、PowerShellを通じてMicrosoft 365の詳細なログ情報を収集・分析できます。
この記事では、Microsoft Graph PowerShellを活用して、よく利用されるサインインログや監査ログの調査に役立つスクリプトを紹介します。ぜひ日常のログ管理にご活用ください!
Microsoft Graph PowerShellモジュールの準備
まず、以下のコマンドを使ってMicrosoft Graph PowerShellモジュールをインストールし、Microsoft 365環境に接続します。ログ情報を取得するためには、適切な権限を付与したアカウントで認証する必要があります。ログ取得に必要な主な権限は、AuditLog.Read.All
や SignInReports.Read.All
です。
Install-Module Microsoft.Graph -Scope CurrentUser
Connect-MgGraph -Scopes "AuditLog.Read.All", "SignInReports.Read.All"
サインインログの取得
最近のサインインログを取得するスクリプト
以下のスクリプトで、過去30日間のサインインログを取得できます。サインインログには、ユーザーのサインイン日時やステータス、使用したアプリ、接続元のIPアドレスなどが含まれ、セキュリティチェックに役立ちます。
Get-MgAuditLogSignIn -All | Where-Object {$_.CreatedDateTime -gt (Get-Date).AddDays(-30)} |
Select-Object UserDisplayName, CreatedDateTime, Status, ClientAppUsed, IPAddress, DeviceDetail
特定ユーザーのサインイン履歴取得
特定のユーザーがサインインした履歴を確認するには、以下のスクリプトを使用します。異常なサインインの有無を調査する際に役立ちます。
$UserPrincipalName = "user@yourdomain.com"
Get-MgAuditLogSignIn -All | Where-Object {$_.UserPrincipalName -eq $UserPrincipalName} |
Select-Object UserDisplayName, CreatedDateTime, Status, ClientAppUsed, IPAddress
特定のIPアドレスからのサインインを調査
特定のIPアドレスからのアクセスがあったかを確認するには、次のスクリプトが役立ちます。たとえば、不審なIPアドレスからのサインインがないかをチェックしたい場合に便利です。
$IPAddress = "203.0.113.10"
Get-MgAuditLogSignIn -All | Where-Object {$_.IPAddress -eq $IPAddress} |
Select-Object UserDisplayName, CreatedDateTime, Status, ClientAppUsed, DeviceDetail
サインインステータスでのフィルタリング
失敗したサインインの調査
以下のスクリプトでは、失敗したサインインのみを抽出し、失敗要因や回数を確認できます。繰り返しのログイン失敗がある場合、不正アクセスの兆候としてチェックすることが推奨されます。
Get-MgAuditLogSignIn -All | Where-Object {$_.Status.ErrorCode -ne 0} |
Select-Object UserDisplayName, CreatedDateTime, Status, ClientAppUsed, IPAddress
アプリケーションのサインインログ取得
特定のアプリケーションによるサインイン状況を把握するには、以下のスクリプトが便利です。たとえば、特定のサービスプリンシパル(アプリケーションID)を指定し、アクセス状況を確認できます。
$AppId = "your-application-id"
Get-MgAuditLogSignIn -All | Where-Object {$_.AppId -eq $AppId} |
Select-Object AppDisplayName, CreatedDateTime, Status, IPAddress
監査ログの取得
Microsoft 365では、ユーザーや管理者が実施したアクションが監査ログに記録されます。たとえば、設定変更やファイルのアクセス履歴などが含まれており、コンプライアンスやセキュリティの観点から重要な情報です。
最近の監査ログを取得するスクリプト
以下のスクリプトで、過去30日間の監査ログを取得します。
Get-MgAuditLogAuditRecord -All | Where-Object {$_.ActivityDateTime -gt (Get-Date).AddDays(-30)} |
Select-Object UserDisplayName, ActivityDateTime, ActivityDisplayName, TargetResources, LoggedByService
特定アクションに関する監査ログのフィルタリング
例えば、「ファイルダウンロード」アクションを調査したい場合は、以下のスクリプトを使用します。
Get-MgAuditLogAuditRecord -All | Where-Object {$_.ActivityDisplayName -eq "FileDownloaded"} |
Select-Object UserDisplayName, ActivityDateTime, ActivityDisplayName, TargetResources
まとめ
Microsoft Graph PowerShellを使ったログ調査は、セキュリティ監査やインシデント対応の一環として非常に役立ちます。定期的にサインインログや監査ログを確認し、異常なアクセスや不審なアクティビティがないかをチェックすることで、Microsoft 365環境のセキュリティを高めることができます。ぜひご紹介したスクリプトを活用し、効率的なログ管理を実現してください。
コメント