はじめに
とあるニュースでOCIのコンソールへのログイン成功/失敗の履歴を確認する方法を知りたい人もいるのでは?ということで、ログインの成功/失敗履歴の確認方法を簡単にまとめておきます。
なお、時刻は全てUTCで現時点ではたぶん変更できません。
ログインレポートの確認方法
OCIコンソールにログインし、左上のハンバーガーメニュー(横の三本線)から「アイデンティティとセキュリティ」→「ドメイン」を選択します。
ドメイン一覧が表示されますので、現在のドメインに表示されている「ドメイン」を選択します。基本的にはデフォルトドメイン(Default)を確認すればよいと考えてます。1
左ペインの「レポート」を選択します。
選択したドメイン内のレポートが表示され、成功試行数と失敗試行数が表示されます。現在このレポートは非推奨になってますが、一応2025/3/28時点では機能しているように見えます。
- 成功レポート
- 失敗レポート
監査ログの確認
レポートは非推奨になっておりOCIロギングレポートから確認してね、という注意があがっているので、そちらの確認方法も記載しておきます。
監査ログのガイドは 監査ログ になります。
ハンバーガーメニューから「監視および管理」→「監査」を選択します。
監査ログをクエリする画面が表示されます。
イベントタイプを「Login」と入力すると「com.oraclecloud.IdentitySignOn.InteractiveLogin」に補完されるのでそれを選択し、「時間によるフィルタ」も必要なフィルタに設定します。
次図のようにログイン履歴が確認できます。ステータスで成功(200)・失敗(400)が判断できます。
また、右のV型のマークをクリックすることで詳細を確認することができます。
レポートのJSONへのエクスポートも可能です。
監査ログ・レポートの作成
IAMレポートの作成チュートリアルがこちらで紹介されています(チュートリアルは日本語訳もありますが、クエリも日本語に訳されているので英語版を紹介します)。
このチュートリアルに「監査ログ・レポート(Audit Log Report)」の例がありますので、そちらを出力してみます。
ハンバーガーメニューから「監視および管理」→「検索」を選択します。
「拡張モードの表示」を選択します。
次図のような検索窓が表示されます。
検索窓に次のクエリを追加します。各自のテナンシにクエリするのでその部分(上記の検索窓で出ている部分)は残します。視認性をあげるため改行入れてますが、入れても入れなくても構わないです。また、チュートリアルの構文はorを多用していて見辛いのでinに変えたりしています。
|
where data.additionalDetails.eventId in
(
'sso.app.access.success',
'sso.app.access.failure',
'sso.session.create.success',
'sso.authentication.failure',
'sso.session.delete.success',
'admin.user.create.success',
'admin.user.activated.success',
'admin.user.deactivated.success',
'admin.user.update.success',
'admin.user.delete.success',
'admin.user.password.reset.success',
'admin.me.password.reset.success',
'admin.me.password.change.success',
'admin.policy.create.success',
'admin.rule.create.success',
'admin.policy.update.success',
'admin.rule.update.success',
'admin.passwordpolicy.create.success',
'admin.passwordpolicy.update.success',
'admin.grant.create.success',
'admin.grant.delete.success',
'admin.group.create.success',
'admin.group.add.member.success',
'admin.group.remove.member.success',
'admin.group.delete.success',
'admin.app.create.success',
'admin.app.update.success',
'admin.app.delete.success',
'admin.app.activated.success',
'admin.app.deactivated.success',
'notification.delivery.success',
'notification.delivery.failure',
'sso.auth.factor.initiated',
'sso.bypasscode.create.success'
)
|
select time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date,
data.additionalDetails.domainDisplayName as Domain,
data.additionalDetails.actorName as Actor,
data.additionalDetails.eventId as "Event Id",
data.message as "Event Description",
data.additionalDetails.adminResourceName as Target
次図のようになる想定です(改行ないバージョン)。
「検索」を実行すると次のようにレポートが出力されます、時間は適宜修正ください。
クエリを保存しておくことで、いつでも同様のクエリが実行可能となります。
チュートリアルにはダッシュボードにウィジェットを追加する方法とかも載っているので、毎回確認したい方は追加してみてはと考えてます。
まとめ
何らかの理由でOCIのコンソールへ不正なログインがあったかも?と思われる場合にはこちらで確認してみると良いと思います。30分くらいで書いたので色々と足りないこともあるかもしれませんので、コメント等頂ければと存じます
監査ログ・レポートはチュートリアルでの紹介のため、こちらがすべてではないと考えてますが、「怪しい動き」はある程度把握できるのではないかと考えてます。
例えばログイン試行している IP アドレスを引っ張りたい、というときにはクエリに次の文を追加すればクライアントIPも確認することができます(もちろん監査ログの方でも確認できますが)。
data.additionalDetails.clientIp as clientIp