[Auth0] 監視チェックリストの実装例または使用例の紹介 #Auth0JP

Auth0の監視チェックリストに関して。 情報の更新があればこの記事も更新します。
2020.05.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Auth0にはSDLC(ソフトウェア開発ライフサイクル)に対応するチェックリストが提供されています。

Implementation Planning Checklists

今回はその中の一つである監視チェックリストにフォーカスを当てていきたいと思います。

監視チェックリストのダウンロード

監視フェーズでは、システムが引き続き機能し、ビジネス目標を満たし、ユーザーのニーズをサポートするために更新された状態を保つように、 機能強化、修正、および変更を行います。

Auth0では次のような活動を行うと定義されています。

  • モニタリング
  • メンテナンス
  • 変更と調整
  • アップグレードして将来のニーズに適応

監視チェックリストに記載されている項目を実装例とともに紹介したいと思います。

監視チェックリスト(Architecture)

Facebook Analytics integration(Facebookアナリティクスの統合)

Integrate with Facebook to obtain metrics information regarding usage (not mandatory, though recommended)

Facebookと統合して利用状況に関するメトリクス情報を取得する(必須ではありませんが、推奨されています)

Auth0 Analytics.jsというライブラリを使って実装しますが、 LockまたはホストされているLockページを使用している事が条件となります。

実装例

Facebook Analyticsは、Facebook JavaScript SDK か Facebook Pixel を導入する必要がありますが、 推奨されているFacebook JavaScript SDKを使います。

読み込みたい各ページのタグに以下のコードを挿入します。

appIdはFacebook for Startupsで登録したアプリIDを入力します.

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId            : 'your-app-id',
      autoLogAppEvents : true,
      xfbml            : true,
      version          : 'v7.0'
    });
  };
</script>
<script async defer src="https://connect.facebook.net/en_US/sdk.js"></script>

Auth0のUniversal Loginを使っているのであれば、Auth0ダッシュボードのUniversal Login設定ページでカスタマイズのトグルをオンにしタグを追加します。

Auth0 Analyticsの方は、

Auth0 Lockを使用しているページにJavaScriptのコードを追加します。

scriptのパス: https://cdn.auth0.com/js/analytics/X.Y.Z/analytics.min.js

  • X.Y.Zはリリースバージョン
  • 最新はGitHubで確認できます。

読み込みたい各ページのタグに以下のコードを挿入します。

<script>
      window.auth0AnalyticsOptions = {
        'facebook-analytics': {
          preloaded: true
        }
      }
</script>
<script src="https://cdn.auth0.com/js/analytics/1.3.1/analytics.min.js"></script>

Auth0のUniversal Loginを使っているのであれば、Auth0ダッシュボードのUniversal Login設定ページでカスタマイズのトグルをオンにしタグを追加します。

結果

タグを挿入したページにアクセスすると、Facebook Analyticsにデータが送信されます。 Facebook Analyticsのダッシュボードにログインし、データを確認してみます。

ほぼリアルタイムでデータが更新されます。 タグを挿入したのにデータが更新されていない場合は、アプリのログやブラウザの開発ツールなどでscriptのエラーが出てないか確認してください。

Google Analytics integration(Googleアナリティクスの統合)

Integrate with Google to obtain metrics information regarding usage (not mandatory, though recommended)

Googleと統合して、利用状況に関するメトリクス情報を取得する(必須ではないが、推奨されている)

Facebook Analyticsと同様にAuth0 Analytics.jsを使用します。 条件も同じです。

実装例

Google Analytics のコードを挿入しているページに以下のコードを挿入します。

idはGoogle AnalyticsのトラッキングIDを入力します.

<script>
window.auth0AnalyticsOptions = {
'google-analytics': {
    id: 'YOUR_GA_ID',
    preloaded: true
}
}
</script>
<script src="https://cdn.auth0.com/js/analytics/1.3.1/analytics.min.js"></script>

結果

タグを挿入したページにアクセスすると、google Analyticsにデータが送信されます。 google Analyticsのダッシュボードにログインし、データを確認してみます。

アクティブ ユーザーのリアルタイム でデータが送信された事がわかります。

リアルタイムレポートを見ると、より詳細が確認できます。

監視チェックリスト(Architecture)のまとめ

Facebook Analyticsならでファネルとレポートを設定、Google Analyticsなら目標到達プロセスとレポートを設定することによりユーザーの追跡、維持率の測定、 サインアップフローの改善等にも役立てると思います。 Auth0と統合でAuth0ユーザーのID固有のイベントをキャプチャして測定する事ができます。 ニーズに合ったもののどちらかは入れておいた方が良いでしょう。

監視チェックリスト(Operations)

Review Dashboard notifications(ダッシュボードの通知を確認する)

Review Auth0 important announcements sent to you tenant Dashboard and, depending on severity, to email registered for Auth0 Dashboard Administrators

Auth0重要なお知らせは、あなたのテナントのダッシュボードに送信され、重大度に応じて、Auth0ダッシュボード管理者のために登録された電子メールに送信されます

使用例

定期的にダッシュボードにログインし、上部にあるベルのアイコンで重要な通知がないか確認する事が大事です。

Auth0からのメールは、必要な変更やアクションに関する重要な情報を伝える可能性があるため、タイムリーに確認する必要があります。

メールボックスをスルーしてしまうことの対策として、Slackでメールを受信するという手も使えるかと思います。

Slackでメール受信する例

  • ワークスペースにメールアプリを連携する
  • Auth0からの通知用のチャンネルを作成する
  • 作ったチャンネルにメールアプリを追加する
  • Auth0のダッシュボード管理者にSlackのメールアドレスで追加する
  • 招待メールがチャンネルで受信できるので、メールの指示に従ってサインアップする

下記画像のようにメールを受信する事ができます。

Review security bulletins(セキュリティ速報を確認する)

Review notifications regarding security-related tests conducted by Auth0 and any security-related changes or actions required

Auth0 が実施したセキュリティ関連の試験に関する通知、およびセキュリティ関連の変更や必要な処置を確認してください.

使用例

RSS feedを提供してくれればSlack等のツールで連携可能ですが、 現状、Auth0 Security Bulletinsのページを定期的に確認することしかなさそうです。 APIもなさそう。

Subscribe to Auth0 Service Status(Auth0 サービスステータスの購読)

Subscribe via the Auth0 status dashboard to get Auth0 service status information Auth0 サービスのステータス情報を取得するために、Auth0 ステータスダッシュボードを介して購読します

使用例

Auth0 ステータスダッシュボードのページに行くと、Subscribe to Updatesというボタンがあるのでクリックします。

  • Twitterの@auth0statusをフォローする
  • Atom feed を購読する の2つが提供されています。

Atom feedをSlackで受け取る方法

  • https://status.auth0.com/feed?domain={YOUR-TENANT}.auth0.com にアクセスし、feedが表示されるか確認する
  • ワークスペースにRSSアプリを連携する
  • Auth0からの通知用のチャンネルを作成する
  • RSSフィードを追加する
    • フィードURL: https://status.auth0.com/feed?domain={YOUR-TENANT}.auth0.com
    • チャンネルへの投稿: 作成した通知用のチャンネル

Monitor Auth0 Service Uptime(Auth0サービスのアップタイムを監視する)

Monitor Auth0 via the uptime dashboard to get Auth0 service status information

アップタイムダッシュボードでAuth0を監視し、Auth0のサービスステータス情報を取得します

使用例

Pingdomというサービスを使ってエンドポイントを合成監視し、ステータスや稼働率を公開しているようですが、 現状ではhtmlページでしか情報を参照できなそうです。

Auth0を使用しているアプリケーションで障害が発生した時の切り分け(アプリ固有なのかAuth0そのものなのか等)には役に立つと思うので、 定期的にチェックしたり、アプリ障害の時に確認すると良いと思います。

public cloudのエンドポイントが以下のページに記載されているので、独自で合成監視を行うことも検討して良いと思います.

Endpoints used by Auth0 public cloud service

New Relic syntheticsを利用した合成監視の例

シンプルなPingタイプを使用してみます。

New Relicにログインし、syntheticsのページに行きます。

Add Newをクリックして設定を作成していきます。

  • Choose your monitor type: Ping
  • Enter the details
    • First, name your monitor: モニターの名前を入力 (例) Auth0-Login-Endpoint
    • Enter a URL and we'll generate a script for you automatically: 監視したいエンドポイントのURL (例) https://login.auth0.com
    • Add a validation string to look for in the response (optional): アクセスしたページの文字列もチェックしたい時に入力する (例) Hello World!
    • Advanced Options: Verify SSL,Bypass HEAD request,Redirect is Failure 必要ならチェック
  • Select monitoring locations: アクセスする地域を選択
  • Set the schedule: チェック間隔を設定。短ければ短いほどコストがかかるので注意
  • Get notified: 失敗した時の通知先。emailやNew Relicのアラートポリシーを選択できる

作成し、しばらく動かした結果

稼働率やロードタイムといった情報が表示されます。

チェックごとの詳細も分かります。

Monitor Auth0 PSaaS Appliance(Auth0 PSaaSアプライアンスを監視する)

Monitor Auth0 PSaaS Appliance via the /status endpoints to get Auth0 service status information (not applicable if you are not running an Auth0 PSaaS Appliance)

statusエンドポイントを介してAuth0 PSaaSアプライアンスを監視し、Auth0サービスのステータス情報を取得します (Auth0 PSaaSアプライアンスを実行していない場合は適用されません)

Public Cloudを利用できない要件の場合、Private Cloudといった専用のAuth0環境が使用できますが、 その環境のアプライアンスのリソース使用率をAPI経由で取得する事ができます(CPU,Memory,Diskなど)。

Auth0環境の外部からAPIにアクセスし、取得したデータをためていくことになるかと思います。 自社でホストしている監視サービス(ザビとかPrometheus)や、SaaS(New RelicやDatadog)が候補になるかと。

残念ながらやってみたを行う環境が用意できなかったので実装例は割愛します。

詳細はPSaaS Appliance: Authenticated Testing Endpointsを確認してください。

View log data(ログデータを見る)

View log data by checkpoint and search criteria to gain insight into operational events

チェックポイントと検索条件でログデータを表示し、運用イベントの洞察を得ることができます。

Auth0ダッシュボードを介してログを参照したり、管理APIを使用してログを取得する事が可能です。 このほかに外部のサービスと連携するためにエクスポートする方法も提供されています。

使用例

Auth0ダッシュボードでの検索を試してみます。

左のペインでLogs->SearchをクリックするとAuth0が吐いたログを確認できます。

  • Luceneクエリ構文サブセットを使用してクエリを作成し、検索を絞り込むことが可能
  • イベントフィルターを使用してエラー、警告、成功イベントのログをフィルターする事が可能

ログイン成功イベントを検索したければ、フィルター部分にSuccess Loginと入力し、出てきたイベントを選択します。 ちなみに入力した文字列により自動でイベントの候補が表示されます。 複数選択も可能です。

フィルターした結果は以下の通り。

Typeのカラムに表示されているリンクをクリックすると、ログの詳細ページに遷移します。

次はクエリを使ってログを検索してみます。

user_nameにgmailが含まれているログを検索する場合は、

user_name:*gmail* と入力し検索します

対象のログ一覧がヒットしますね。

ログ検索クエリ構文に検索可能なログフィールドが記載されていますのでいろいろ試してみてください。

管理APIを使用してログを取得するには、APIを使用してログを取得する方法が記載されていますので試しててください。 テナント管理者でなく、開発者、運用者などはこちらでログを取得することもあるかと思います。

Export log data for aggregation(ログデータをエクスポートして集計)

Export to third-party logging services for log preservation and aggregation

ログの保存と集計のためのサードパーティ製ログサービスへのエクスポート

Auth0にはログを外部サービスにエクスポートする拡張機能が提供されています。

ログのエクスポート

ダッシュボード上に残るログは最大で30日なので、過去のログを検索したり分析に利用するには外部にエクスポートする事が必須だと思います。 ログの内容によってはアラート通知をすることもありますが、そういった時に非常に便利です。

実装例

S3にエクスポートしてAthenaで検索したり、SumoLogicにエクスポートして検索したり、Amazon EventBridgeを介してアラート通知したりするブログが公開されていますので、参考にしてください。

このほかにもログのエクスポートにいろんなログサービスとの連携方法が記載されていますので、 ニーズにあったのもを選択してログを保存しましょう。

Monitor third-party service status(サードパーティのサービス状況を監視)

Monitor external service status to see identity provider status (not applicable if you are not using social connections)

外部サービスの状態を監視してIDプロバイダの状態を確認する(ソーシャル接続を使用していない場合は適用されません)

Auth0接続で使用するリモートIDプロバイダーを監視して、問題の原因をすばやく特定することが目的となります。

実装例

使用しているモニタリングツールでエンドポイントを合成監視してみても良いかと思います。

本記事のNew Relic syntheticsを利用した合成監視の例 など。

使用している外部サービスを把握することも重要なので、チェックリストに個別で追記することも良いかと思います。

監視チェックリスト(Operations)のまとめ

きっちり監視していくとなると、Auth0だけでは厳しい印象です。 Auth0が提供している拡張機能やAPIを利用して外部サービスと連携することでより使いやすくなります。

また、監視チェックリストもニーズに合わせて追加することも大事です。 Auth0の監視どうしよう?と思っている方は、まずはチェックリストに目を通してもらいたいです。