認証と認可
認証方法
すべての管理APIはBearerトークン認証を使用します。AuthorizationヘッダーにAPIトークンを含めてリクエストします:
curl -X GET "https://{tenant-domain}/api/admin/users" \ -H "Authorization: Bearer {admin-api-token}"APIカテゴリ
管理APIは対象データベースに基づいて2つのカテゴリに分かれています:
Admin Console API(DB_ADMIN)
- Adminユーザー管理 (
/api/admin/admins/*) - Adminロール管理 (
/api/admin/admin-roles/*) - IPアローリスト (
/api/admin/ip-allowlist/*) - Admin監査ログ (
/api/admin/admin-audit-log/*)
EndUser管理API(DB_CORE)
- EndUser管理 (
/api/admin/users/*) - セッション管理 (
/api/admin/sessions/*) - クライアント管理 (
/api/admin/clients/*) - アクセス制御API(ロール、組織、ポリシー等)
- 監査・コンプライアンスAPI
管理APIトークンの取得
管理APIトークンは管理コンソールから発行できます:
- 管理コンソールにログイン
- 「設定」→「APIトークン」に移動
- 「新規トークン作成」をクリック
- トークンの名前と有効期限を設定
- 必要な権限スコープを選択
- トークンを生成し、安全に保存
ロール階層
管理APIの権限は階層的なロールモデルに基づいています。上位のロールは下位のロールのすべての権限を持ちます。
system_admin(システム管理者) ↓distributor_admin(ディストリビューター管理者) ↓tenant_admin(テナント管理者) ↓user(一般ユーザー)ロール別の権限
| ロール | 説明 | 主な権限 |
|---|---|---|
system_admin | システム全体の管理者 | すべてのテナントの管理、システム設定 |
distributor_admin | ディストリビューター管理者 | 配下テナントの管理、テナント作成 |
tenant_admin | テナント管理者 | テナント内のすべての管理操作 |
user | 一般ユーザー | 自身のアカウント管理のみ |
権限スコープ
APIトークンには細かい権限スコープを設定できます:
ユーザー管理スコープ
| スコープ | 説明 |
|---|---|
users:read | ユーザー情報の読み取り |
users:write | ユーザーの作成・更新 |
users:delete | ユーザーの削除 |
users:suspend | ユーザーの停止・再開 |
クライアント管理スコープ
| スコープ | 説明 |
|---|---|
clients:read | クライアント情報の読み取り |
clients:write | クライアントの作成・更新 |
clients:delete | クライアントの削除 |
clients:secrets | クライアントシークレットの管理 |
アクセス制御スコープ
| スコープ | 説明 |
|---|---|
roles:read | ロール情報の読み取り |
roles:write | ロールの作成・更新・削除 |
roles:assign | ロールの割り当て |
policies:read | ポリシーの読み取り |
policies:write | ポリシーの作成・更新・削除 |
監査・コンプライアンススコープ
| スコープ | 説明 |
|---|---|
audit:read | 監査ログの読み取り |
compliance:read | コンプライアンス情報の読み取り |
compliance:write | アクセスレビューの実行 |
認可エラー
権限が不足している場合、APIは以下のエラーを返します:
401 Unauthorized
認証情報が提供されていない、または無効な場合:
{ "error": "unauthorized", "error_description": "認証情報が必要です"}403 Forbidden
認証は成功したが、リクエストされた操作への権限がない場合:
{ "error": "forbidden", "error_description": "この操作を実行する権限がありません"}テナントコンテキスト
APIリクエストは認証トークンに紐づくテナントコンテキストで実行されます。テナント間のデータアクセスは厳密に制限されています。
マルチテナント管理
system_admin または distributor_admin ロールを持つユーザーは、複数のテナントを管理できます。この場合、リクエストヘッダーでテナントを指定します:
curl -X GET "https://{domain}/api/admin/users" \ -H "Authorization: Bearer {admin-api-token}" \ -H "X-Tenant-ID: {target-tenant-id}"ベストプラクティス
最小権限の原則
必要最小限の権限スコープのみをトークンに付与してください。
# 悪い例:すべての権限を付与# スコープ: *
# 良い例:必要な権限のみ# スコープ: users:read, users:writeトークンのローテーション
定期的にAPIトークンをローテーションすることを推奨します:
- 新しいトークンを生成
- アプリケーションを新しいトークンに切り替え
- 古いトークンを無効化
監査ログの確認
APIトークンの使用状況を定期的に確認してください。不審なアクティビティがあれば、トークンを即座に無効化します。