コンテンツにスキップ

認証と認可

認証方法

すべての管理APIはBearerトークン認証を使用します。AuthorizationヘッダーにAPIトークンを含めてリクエストします:

Terminal window
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トークンは管理コンソールから発行できます:

  1. 管理コンソールにログイン
  2. 「設定」→「APIトークン」に移動
  3. 「新規トークン作成」をクリック
  4. トークンの名前と有効期限を設定
  5. 必要な権限スコープを選択
  6. トークンを生成し、安全に保存

ロール階層

管理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 ロールを持つユーザーは、複数のテナントを管理できます。この場合、リクエストヘッダーでテナントを指定します:

Terminal window
curl -X GET "https://{domain}/api/admin/users" \
-H "Authorization: Bearer {admin-api-token}" \
-H "X-Tenant-ID: {target-tenant-id}"

ベストプラクティス

最小権限の原則

必要最小限の権限スコープのみをトークンに付与してください。

Terminal window
# 悪い例:すべての権限を付与
# スコープ: *
# 良い例:必要な権限のみ
# スコープ: users:read, users:write

トークンのローテーション

定期的にAPIトークンをローテーションすることを推奨します:

  1. 新しいトークンを生成
  2. アプリケーションを新しいトークンに切り替え
  3. 古いトークンを無効化

監査ログの確認

APIトークンの使用状況を定期的に確認してください。不審なアクティビティがあれば、トークンを即座に無効化します。