🛡 スーパー管理者ガイド
全テナントの一覧・管理を行うシステム運営者向けの機能
注意
スーパー管理者機能は、システム全体を管理する権限を持ちます。テナントの停止は該当テナントの全ユーザーに影響を与えます。
このページの内容
⚙ セットアップ
スーパー管理者の追加方法は2つあります:
方法1: 環境変数で設定(初期セットアップ用)
最初のスーパー管理者は環境変数で設定します。
# カンマ区切りで複数指定可能
SUPER_ADMIN_EMAILS=admin@example.com,ops@example.com
gcloud run services update api \
--region asia-northeast1 \
--update-env-vars "SUPER_ADMIN_EMAILS=admin@example.com"
方法2: 管理画面で追加(推奨)
一度ログインできたら、管理画面から他の管理者を追加できます。
管理者管理画面
/super-admin/admins でスーパー管理者の追加・削除ができます。Firestoreに保存されるため、環境変数の再設定は不要です。
🔑 アクセス方法
1
Googleでログイン
通常のユーザーと同様にGoogleアカウントでログインします
2
スーパー管理画面へアクセス
ログインに使用したメールアドレスがSUPER_ADMIN_EMAILSに含まれている必要があります
3
管理画面URL
https://web-102013220292.asia-northeast1.run.app/super-admin
🛠 機能一覧
テナント管理 (/super-admin/tenants)
| 機能 | 説明 |
|---|---|
| テナント一覧 | 全テナントをページング表示 |
| ステータスフィルター | 有効/停止中でフィルタリング |
| テナント停止 | テナントを停止状態に変更(全ユーザーがアクセス不可に) |
| テナント再開 | 停止中のテナントを再開 |
| 管理/受講リンク | 各テナントの管理画面・受講者画面へ直接アクセス |
| テナント削除 | テナントと全サブコレクション(講座・セッション・ユーザー等)を完全に削除。テナントID手入力による誤操作防止付き |
管理者管理 (/super-admin/admins)
| 機能 | 説明 |
|---|---|
| 管理者一覧 | 全スーパー管理者を表示(環境変数/Firestore両方) |
| 管理者追加 | メールアドレスで新しいスーパー管理者を追加 |
| 管理者削除 | Firestoreに登録された管理者を削除(環境変数は削除不可) |
テナント停止時の影響
- 該当テナントの全ユーザーがアクセス不可になります
- 既存のセッションデータは保持されます(削除されません)
- テナントオーナーも含め、誰もログインできなくなります
- 再開すれば元通りアクセス可能になります
テナント削除時の影響(不可逆)
- テナントと全サブコレクション(講座・セッション・ユーザー・通知ポリシー等)が完全に削除されます
- この操作は取り消せません
- 誤操作防止のため、削除時にテナントIDの手入力による確認が必要です
- 操作ログがサーバーに記録されます
🔌 API仕様
| メソッド | パス | 機能 |
|---|---|---|
| GET | /api/v2/super/tenants | 全テナント一覧(ページング対応) |
| GET | /api/v2/super/tenants/:id | テナント詳細(統計情報含む) |
| PATCH | /api/v2/super/tenants/:id | テナントステータス変更 |
| GET | /api/v2/super/admins | スーパー管理者一覧 |
| POST | /api/v2/super/admins | スーパー管理者追加 |
| DELETE | /api/v2/super/admins/:email | スーパー管理者削除 |
| DELETE | /api/v2/super/tenants/:id | テナント完全削除(全サブコレクション含む) |
GET /api/v2/super/tenants クエリパラメータ
| パラメータ | 型 | デフォルト | 説明 |
|---|---|---|---|
| status | string | - | active または suspended |
| limit | number | 50 | 取得件数(最大100) |
| offset | number | 0 | オフセット |
| sort | string | createdAt | createdAt, name, updatedAt |
| order | string | desc | asc または desc |
🔒 セキュリティ
認可の仕組み
- Firebase認証でログイン(IDトークン取得)
- APIリクエスト時に
Authorization: Bearer <ID Token>ヘッダを付与 - サーバー側でトークンを検証し、メールアドレスを取得
SUPER_ADMIN_EMAILSに含まれるか判定- 含まれない場合は403 Forbidden
| 項目 | 対応 |
|---|---|
| 管理者リストの保護 | サーバーサイドのみで保持(クライアントに公開しない) |
| 操作ログ | 全操作をコンソールログに記録 |
| Firestoreルール | 変更不要(API経由のみアクセス) |
🔧 トラブルシューティング
403 Forbidden が返る
SUPER_ADMIN_EMAILSが設定されているか確認- ログインに使用したメールアドレスが含まれているか確認
- メールアドレスの大文字/小文字は区別されません(自動で小文字に正規化)
「スーパー管理者機能は無効です」と表示される
SUPER_ADMIN_EMAILS環境変数が設定されていません。APIサーバーの環境変数を確認してください。
認証エラー
- Firebase認証が正しく設定されているか確認
AUTH_MODE=firebaseが設定されているか確認- IDトークンの有効期限が切れていないか確認(再ログインを試す)
開発モードでのテスト
AUTH_MODE=devの場合、X-User-Emailヘッダでスーパー管理者をシミュレートできます。
# スーパー管理者としてテナント一覧を取得
curl -H "X-User-Email: admin@example.com" \
http://localhost:8080/api/v2/super/tenants
※ SUPER_ADMIN_EMAILSにadmin@example.comが含まれている必要があります。