
Vercel - Audit Logs 詳解
はじめに
本記事では Vercel の Audit Logs (監査ログ) について、エクスポート方法の案内、および、参考としてログの内容の例を紹介します。実際にエクスポートされた CSV ファイルの確認結果を踏まえ紹介します。
Vercel とは
Vercel は フロントエンドアプリケーションや API をホスティングできるクラウドプラットフォームです。 Git 連携やプレビュー環境、 Edge 機能を備えた、開発者向けの SaaS です。
Audit Logs とは
Vercel の Audit Logs は、チームメンバーが Vercel 上で行った操作を記録し、誰が何をいつ実行したかを追跡できる監査証跡を提供する機能です。Team の Owner ロールを持つメンバーだけがアクセスできます。 監査ログは最大 90 日分が保持され、設定変更やメンバー操作の履歴をインシデント対応や権限管理、コンプライアンス対応の根拠として利用できます。
対象読者
- Vercel の操作履歴をざっくり把握しておきたいエンジニア
- セキュリティやコンプライアンスの観点から誰が何をしたか確認したい管理者
- Audit Logs を既存のログ基盤や SIEM に連携したいと考えている担当者
参考
Audit Logs の取得
ロールの確認
Settings > Members > Team Members で自分のロールが Owner であることを確認します。

Audit Logs のエクスポート
Settings > Security & Privacy > Audit Log で Export CSV を選択します。

Audit Logs の内容
実際にエクスポートした CSV の内容をざっくりと紹介します。
CSV 全体の構造
今回の検証でエクスポートした CSV ファイルの例は以下のようなものになります。
timestamp,action,actor_vercel_id,actor_name,actor_email,location,user_agent,previous,next
2025-11-27T06:48:32.605Z,team.member.role.updated,user-1,user-a,user-a@example.com,203.0.113.10,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36","{""user"":{""id"":""user-2"",""username"":""user-b"",""email"":""user-b@example.com""},""team"":{""id"":""team-1"",""members"":[{""uid"":""user-2"",""role"":""MEMBER""}]}}","{""directory"":{""id"":""dir-1""},""team"":{""id"":""team-1"",""members"":[{""uid"":""user-2"",""role"":""OWNER""}]}}"
2025-11-06T04:02:51.748Z,team.member.joined,user-3,user-c,user-c@example.com,203.0.113.11,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36","{""team"":{""id"":""team-1"",""members"":[{""uid"":""user-3"",""role"":""MEMBER"",""teamRoles"":[""MEMBER""],""confirmed"":false,""updatedAt"":1234567890123,""createdAt"":1234567890123}]}}","{""team"":{""id"":""team-1"",""members"":[{""uid"":""user-3"",""role"":""MEMBER"",""teamRoles"":[""MEMBER""],""confirmed"":true,""updatedAt"":1234567890123,""createdAt"":1234567890123}]}}"
2025-11-06T04:02:12.485Z,team.member.added,user-1,user-a,user-a@example.com,203.0.113.10,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",{},"{""directory"":{""id"":""dir-1""},""user"":{""id"":""user-3"",""username"":""user-c"",""email"":""user-c@example.com""},""invite"":{""id"":""invite-1"",""email"":""user-c@example.com"",""role"":""MEMBER""}}"
2025-11-03T12:28:31.475Z,project.transfer_in.completed,system,system,,unknown,unknown,"{""user"":{""id"":""void""},""team"":{""id"":""team-2"",""slug"":""team-slug-2""},""project"":{""id"":""project-1"",""name"":""project-a""}}","{""user"":{""id"":""void""},""team"":{""id"":""team-1"",""slug"":""team-slug-1""},""project"":{""id"":""project-1"",""name"":""project-a""}}"
2025-11-03T11:46:19.593Z,integration.updated,user-1,user-a,user-a@example.com,203.0.113.10,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36","{""installation"":{""id"":""install-1"",""projects"":[""project-2""]},""integration"":{""id"":""integration-1"",""name"":""Slack"",""slug"":""slack""}}","{""installation"":{""id"":""install-1"",""projects"":[""project-2"",""project-3""]},""integration"":{""id"":""integration-1"",""name"":""Slack"",""slug"":""slack""}}"
2025-11-03T11:35:55.469Z,integration.updated,user-1,user-a,user-a@example.com,203.0.113.10,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36","{""installation"":{""id"":""install-1"",""projects"":[""project-2"",""project-3"",""project-4"",""project-5"",""project-6"",""project-7""]},""integration"":{""id"":""integration-1"",""name"":""Slack"",""slug"":""slack""}}","{""installation"":{""id"":""install-1"",""projects"":[""project-2""]},""integration"":{""id"":""integration-1"",""name"":""Slack"",""slug"":""slack""}}"
カラム構成は下記のようになっていました。
timestamp: イベントが発生した日時action: 発生した操作の種類 (例 :alias.created,team.member.addedなど)actor_vercel_id: 操作を行ったユーザーの Vercel 内部 IDactor_name: 操作を行ったユーザーのアカウント名actor_email: 操作を行ったユーザーのメールアドレスlocation: 操作時のクライアント IP アドレスuser_agent: ブラウザや OS などの User-Agent 文字列previous: 操作対象リソースの変更前状態を表す JSONnext: 操作対象リソースの変更後状態を表す JSON
上のカラムで「いつ・誰が・どこから・どのアクションを実行したか」が分かります。さらに previous と next を比較すると、設定やリソースがどのように変わったかを詳細に追跡できます。
action の内容
action カラムを確認すると、主に次のようなカテゴリのイベントが含まれていました。
- エイリアス関連 :
alias.created - チームメンバー管理 :
team.member.added、team.member.joined、team.member.role.updated、team.member.deleted - プロジェクト設定 :
- パスワード保護 :
project.password_protection.updated、project.password_protection.enabled、project.password_protection.disabled - プロジェクト削除 :
project.deleted - メンバー管理 :
project.member.added、project.member.removed - 移管 :
project.transfer_in.completed - Web Analytics :
project.web-analytics.enabled
- パスワード保護 :
- アクセスグループ関連 :
access_group.created、access_group.updated、access_group.deleted、access_group.member.added、access_group.project.added、access_group.project.updated - インテグレーション関連 :
integration.installed、integration.updated - デプロイ関連 :
deployment.deleted、deployment.pruned - 観測性関連 :
observability.enabled - 監査ログ自体の操作 :
auditlog.export.requested、auditlog.export.downloaded
previous と next の内容
previous と next には、対象リソースの状態が JSON で保存されています。これにより「どのフィールドが、どの値からどの値へ変わったか」を機械的に追跡できます。
いくつか代表的な例を挙げます。
-
project.password_protection.updatedpreviousには変更前のパスワード保護設定、nextには変更後の設定が記録されていました。- 例として、保護対象の deployment type が
allからall_except_custom_domainsに変わるケースがあり、プレビューデプロイを中心とした保護へ切り替えたことが読み取れました。
-
access_group.*- アクセスグループの作成や更新イベントでは、
previousとnextの差分から、対象となるメンバーやプロジェクトの追加・削除が分かるようになっていました。 - 条件付きアクセスや SSO と組み合わせている場合、このログを使うことで「いつどのグループに誰を入れたか」を確認できます。
- アクセスグループの作成や更新イベントでは、
-
alias.creatednextに新しい alias と、それが紐づく deployment の情報が記録されていました。- 実運用では「いつ本番ドメインをどのデプロイに切り替えたか」を追跡する根拠として使えます。
-
auditlog.export.requestedとauditlog.export.downloaded- Audit Logs エクスポートの要求と、実際にダウンロードされたタイミングがそれぞれ記録されていました。
- 監査ログそのものへのアクセスも監査できるため、「誰が監査ログを閲覧したか」を残したい場合に有用です。
previous と next の JSON 差分を見ることで、設定変更の内容と意図をかなり具体的に追いかけられます。
まとめ
Vercel の Audit Logs は、チーム内で行われた設定変更やメンバー管理、ドメイン操作などを、 actor 情報と差分付きで追跡できる仕組みです。 CSV としてエクスポートしておくと、トラブル調査から監査対応まで、後から必要になったときに根拠を示しやすくなります。







