Auth0のイベントログをAmazon CloudWatchに出力してみた

2021.06.16

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

こんにちは、CX事業本部の若槻です。

認証管理プラットフォームAuth0では、テナント管理者による操作、Management APIの利用、ユーザーによる認証などのイベントログが既定でAuth0上に記録されますが、このログの保持期間はプランによって最短1日から最大30日とかなり短いです。

そのため、このAuth0のイベントログを外部に退避させる方法として、Amazon CloudWatchに出力できるExtensionが公式提供されています。

今回は、上記Extensionを使用し、Auth0のイベントログをAmazon CloudWatch Logsに出力してみました。

やってみた

ログ出力先 Logs group および stream の作成

% LOG_GROUP_NAME=/auth0/dev-tenant
% LOG_STREAM_NAME=logs
% aws logs create-log-group \
  --log-group-name ${LOG_GROUP_NAME}
% aws logs create-log-stream \
  --log-group-name ${LOG_GROUP_NAME} \
  --log-stream-name ${LOG_STREAM_NAME}

IAM ポリシー作成

先ほどのLog streamにイベントログをPutできるポリシーを作成します。

policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
          "logs:PutLogEvents",
          "logs:DescribeLogStreams"
      ],
      "Resource": "arn:aws:logs:ap-northeast-1:*:log-group:/auth0/dev-tenant:log-stream:*"
    }
  ]
}
% POLICY_NAME=auth0-logs-put-policy
% aws iam create-policy \
  --policy-name ${POLICY_NAME} \
  --policy-document file://policy.json

IAM ユーザー作成、ポリシーのアタッチ、API キー発行

IAMユーザーを作成して先ほどのポリシーをアタッチします。

% USER_NAME=auth0-logs-put-user
% AWS_ACCOUNT_ID=<アカウントID>

% aws iam create-user --user-name ${USER_NAME}

% aws iam attach-user-policy \
  --user-name ${USER_NAME} \
  --policy-arn "arn:aws:iam::${AWS_ACCOUNT_ID}:policy/${POLICY_NAME}"

作成したIAMユーザーのAPIキーを発行し、戻り値からアクセスキーIDとシークレットアクセスキーを控えます。

% aws iam create-access-key --user-name ${USER_NAME}

Extension のインストール

Auth0管理ダッシュボードにログインしたら、サイドバーメニューより[Extensions]を開き、[All Extentions]タブでCloudWatchで検索すると「Logs to CloudWatch」というExtensionが出てくるので選択します。

Extensionの設定画面が開くので、必須情報として先ほど作成したAWSリソースの情報を指定し、[Install]をクリックします。

これでインストールは完了です。

動作確認

Auth0管理ダッシュボードからユーザーを作成する操作を行ってみます。

数分すると指定したLog groupのstreamにユーザー作成操作のイベントログが出力されていることが確認できました。

おわりに

Auth0のイベントログをAmazon CloudWatch Logsに出力してみました。

これで会社やシステムなどのログ保管規定に対応できたり、ログの調査や分析が便利になったりしますね。

以上