ダーク/ライト切り替え

Django Admin ログイン通知(Email / Slack / Discord)実装備忘録

投稿日 2026-01-15T10:21:01.149936+09:00

Django Admin ログイン通知(Email / Slack / Discord)実装備忘録

目次

目次を読み込み中...

Django の admin 画面へのログインは、侵入検知・運用監査の観点でかなり重要なイベントです。
本記事では、Django Admin へのログイン成功をフックして、Email / Slack / Discord に通知する方法を、実装・設定・運用の観点でまとめます。


なぜ Admin ログイン通知を入れるのか

  • 不正アクセスの早期検知
  • 管理者操作の可視化(監査)
  • 深夜・想定外 IP からのログイン検知
  • 「気づけなかった」を防ぐ

特に Slack / Discord の即時通知 + Email の冗長化は、実運用でよく使われる構成です。


全体構成(今回の方針)

  • Django 標準の **ログインシグナル**を使用
  • admin ログインのみ通知
  • 通知先は以下を想定 * Slack(即時・チーム共有) * Discord(Slack の代替 / 個人用途) * Email(監査・バックアップ)

使用する Django の仕組み

ログイン成功シグナル

  • 認証成功時に必ず発火
  • admin / 通常ログインの両方で呼ばれる
  • `request` が取れるため、パスや IP 判定が可能

実装手順

1. signals.py を作成


2. AppConfig でシグナルを有効化

ready() で import しないと本番で発火しないので注意


通知先ごとの実装


Slack 通知(定番・おすすめ)

必要なもの

  • Slack Incoming Webhook URL
  • ライブラリ: `requests`

実装例


Discord 通知(Slack の代替)

特徴

  • Webhook が無料
  • 認証不要
  • 実装が非常に簡単

実装例


Email 通知(監査・冗長化)

必要な設定

実装例


通知処理の統合

※ 実運用では 常に全部送らないのが一般的


運用上のおすすめ設計

よくある実運用パターン

イベントSlackDiscordEmail
admin ログイン成功任意
ログイン失敗任意
深夜ログイン
重要操作

セキュリティ観点での補足

  • 可能なら以下も含める * User-Agent * 国情報(Cloudflare 使用時) * staff / superuser 判定
  • ログイン失敗も検知

まとめ

  • Django Admin ログイン通知は **シグナル利用が王道**
  • 通知先は * 即時性:Slack / Discord * 冗長性・監査:Email
  • **通知チャネルは and、通知条件は絞る**のが現実解

小規模でも本番でも流用できるので、最初から入れておくのがおすすめ。


準備中

このサイトをシェアする

Django Admin ログイン通知(Email / Slack / Discord)実装備忘録