1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cloud9からMicrosoft365の監査ログを取得する

Posted at

はじめに

Microsoft365の監査ログですが、保存期間は90日しかなく、S3への長期保存のために手動操作以外から取得できる方法を探していました。

PowerShellを使えばCLIで取得できるため、AWSからの自動取得の前段階として、Cloud9から取得する方法を備忘録として記事にします。

まとめ

  • LinuxだとPowerShellに以下のモジュールのインストールが必要
    • ExchangeOnlineManagement
    • PSWSMan
  • OSはUbuntu
    • Amazon Linuxだと、上記モジュールがうまく入らない・・・?
  • MS社公式のDockerイメージを使うと、とても楽
    • Amazon Linux上でも動く

やったこと

Cloud9のEC2インスタンスに直接PowerShellを入れる方法と、PowerShellインストール済みのDockerイメージを使う方法の2つを記載します。

方法1:EC2に直接インストール

Cloud9作成

PlatformでUbuntuを選択する点に注意するだけで、性能は最低のもので問題ありませんでした。
image.png

PSインストール

以下のサイトを参考にしました。

まずはインストーラパッケージをダウンロードします。

$ wget https://github.com/PowerShell/PowerShell/releases/download/v7.0.11/powershell-lts_7.0.11-1.ubuntu.18.04_amd64.deb

次のコマンドを実行するとエラーになりますが、公式によると問題ないそうです。

dpkg -i コマンドが依存関係が満たされずに失敗する場合は、その次のコマンド apt-get install -f によって、これらの問題が解決され、PowerShell パッケージの構成が完了します。

# エラーになってもよい
$ sudo dpkg -i powershell-lts_7.0.11-1.ubuntu.18.04_amd64.deb

# これを動かせば問題ないとのこと
$ sudo apt-get install -f

# 試しに実行
$ sudo pwsh
PS> Get-TimeZone
PS> exit

EXO V2 モジュールのインストール

PSWSManのインストール

以下の公式にあるコマンドを実行しました、

$ sudo pwsh
PS> Install-Module -Name PSWSMan

# メッセージが出てくるので、念のためpwshを出て再度起動
PS> Install-WSMan
WARNING: WSMan libs have been installed, please restart your PowerShell session to enable it in PowerShell
PS> exit
$ sudo pwsh

ExchangeOnlineManagementのインストール

以下では、「PowerShellGetをインストールする」とありますが、Windowsのみ必要なようですので、今回はやっていません。

ExchangeOnlineManagementだけインストールします。

PS> Install-Module -Name ExchangeOnlineManagement

実行

認証の仕方は色々ありますが、Cloud9を表示しているブラウザでMS365の認証が出来る方法を取りました。

PS> Import-Module ExchangeOnlineManagement
PS> Connect-ExchangeOnline -Device
()
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXXXX to authenticate.

https://microsoft.com/deviceloginにアクセスすると、以下の画面が出てきます。

image.png

コードを入力すると、アカウントを選択します。

image.png

許可するために「続行」をクリックします。

image.png

以下の画面が出てきたら、PowerShell側で準備が開始されます。色々ダウンロードするらしく、1分ほどかかりました。

image.png

終わったら、試しに監査ログを取得します。

PS> Search-UnifiedAuditLog -StartDate 6/1/2022 -EndDate 6/2/2022

認証方法も複数ありますので、用途に応じて使い分けることが可能です。

切断するときは以下で。-Confirm:$falseで確認なしで切断できます。

PS> Disconnect-ExchangeOnline -Confirm:$false

方法2:公式のDockerイメージを使用

Amazon Linux上でもDockerのコンテナで動かせば同じことが可能です。
公式でPowerShellインストール済みのUbuntuのイメージがありますのでそれを使います。

# 停止時に削除する方法で起動
$ docker run --rm -it mcr.microsoft.com/powershell:lts-7.2-ubuntu-20.04

# モジュールのインストール
PS /> Install-Module -Name ExchangeOnlineManagement
PS /> Install-Module -Name PSWSMan

# 再起動を促すメッセージが表示されたけど、大丈夫の模様
PS /> Install-WSMan

後は方法1の実行と同様に認証します。

PS /> Connect-ExchangeOnline -Device
PS /> Search-UnifiedAuditLog -StartDate 6/1/2022 -EndDate 6/2/2022

片づけるのも、ダウンロードしたイメージを削除するだけなので簡単でした。

PS /> exit

# 対象のイメージIDを確認
$ docker images | grep powershell

# 削除
$ docker rmi <対象イメージのID>

おわりに

今回はMicrosoft365の監査ログをCloud9(EC2)から取得する方法を記載しました。
AWSから取得できれば、S3において長期保存したり、Athenaで検索しやすくしたりできるかと考えています。

自動で取得できるよう調べ続ける予定なので、また記事に出来ることがあったら起こそうと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?