管理 API
テナントスコープのマネジメント API を通じて、ユーザー、ロール、組織ユニット、ID プロバイダー、アクセスポリシーを管理する。
管理 API は、認証済みの マネジメント API(/api/…)の一部です。すべてのリクエストは テナントスコープ です — テナントはベアラートークンから取得され、明示的に渡されることはなく、呼び出し元は自分のテナントの ID 情報と構成のみを参照・変更できます。トークンの取得方法については 認証 を参照してください。
各ルートは 管理権限 — Users.*、Roles.*、OrganizationUnits.*、IdentityProviders.*、AccessPolicies.* — によって制御されます。権限は階層的なドット記法のリーフであり(例: AccessPolicies.Create)、親プレフィックスを付与すると、その配下のすべてのリーフが暗黙的に付与されます。必要な権限を欠く呼び出し元は 403 Forbidden を受け取ります。
すべてのパスは、お客様の Cockpit ホストからの相対パスです。例: https://cockpit.example.com。{id} のような波括弧は UUID のパスパラメータを示します。
ユーザー
ユーザーは、テナントにサインインする ID です。各ユーザーは完全な認証状態(パスワード、TOTP、ロックアウトカウンター、承認ステータス)を持ち、ロールと組織ユニットを割り当てることができます。
| メソッド + パス | 目的 | 権限 |
|---|---|---|
GET /api/users | ユーザーの一覧取得 | Users.Read |
POST /api/users | ユーザーの作成 | Users.Create |
POST /api/users/{id}/approve | 保留中のユーザーの承認 | Users.Approve |
POST /api/users/{id}/lock | ユーザーアカウントのロック | Users.Update |
POST /api/users/{id}/unlock | ユーザーアカウントのロック解除 | Users.Update |
POST /api/users/{id}/suspend | ユーザーアカウントの一時停止 | Users.Update |
POST /api/users/{id}/reset-password | ユーザーパスワードのリセット | Users.Update |
PUT /api/users/{id}/roles | ユーザーへのロール割り当て | Users.Update |
ロールと権限
認可は ロールベース です。ロールは権限の名前付きの束であり、ユーザーが受け取るトークンには、そのロールから展開された権限の集合が平坦化された形で含まれます。ロールは組織ユニットにスコープすることができ、その場合、付与内容はそのブランチ内でのみ適用されます。
| メソッド + パス | 目的 | 権限 |
|---|---|---|
GET /api/roles | ロールの一覧取得 | Roles.Read |
POST /api/roles | ロールの作成 | Roles.Create |
PUT /api/roles/{id} | ロールの更新 | Roles.Update |
DELETE /api/roles/{id} | ロールの削除 | Roles.Delete |
PUT /api/roles/{id}/permissions | ロールの権限セットの設定 | Roles.Update |
GET /api/roles/permissions | 階層的な権限カタログの一覧取得 | Roles.Read |
組織ユニット
組織ユニット(OU)は、テナント内に第 2 のスコープ層を追加します。マテリアライズドパスコード(例: 00001.00003.00007)を持つツリーを形成し、アプリなどのリソースを OU にスコープしたり、ロールを OU レベルで割り当てたりできます。
| メソッド + パス | 目的 | 権限 |
|---|---|---|
GET /api/org-units | 組織ユニットの一覧取得 | OrganizationUnits.Read |
POST /api/org-units | 組織ユニットの作成 | OrganizationUnits.Create |
GET /api/org-units/selectable | 割り当て可能な OU の一覧取得 | OrganizationUnits.Read |
/api/org-units/{id}/roles | OU スコープのロールの割り当て(委任管理) | OrganizationUnits.Update |
ID プロバイダー
外部 ID プロバイダーを使用すると、ユーザーは企業の認証情報でサインインできます(Azure AD / Entra ID、Okta、Keycloak)。プロバイダーはクライアント認証情報、認証局/メタデータ URL、スコープ、クレームマッピングで構成され、ユーザーをデフォルトロールに自動プロビジョニングすることもできます。
| メソッド + パス | 目的 | 権限 |
|---|---|---|
GET /api/identity-providers | 構成済み ID プロバイダーの一覧取得 | IdentityProviders.Read |
POST /api/identity-providers | ID プロバイダーの作成 | IdentityProviders.Create |
POST /api/identity-providers/discover | メタデータ/認証局 URL からプロバイダーのエンドポイントを検出 | IdentityProviders.Read |
POST /api/identity-providers/{id}/test-connection | プロバイダーの接続と認証情報をテスト | IdentityProviders.Update |
POST /api/identity-providers/{id}/toggle | プロバイダーの有効化・無効化 | IdentityProviders.Update |
シングルサインオンは、テナントのエディションの ID プロバイダー機能フラグによっても制御されます。プロバイダーは、使用される前にそのエディションで有効化されている必要があります。
アクセスポリシー
RBAC に加えて、管理には Casbin ABAC アクセスポリシーエンジンが含まれ、ユーザー、IP、場所、時間、グループによってランタイムの暗号操作を制御します。ポリシーはテナントスコープであり、access_policy_id を介してリソース(DKE サービス、汎用アプリ、AWS XKS エンドポイント)に紐づけられて初めて有効になります。完全なモデルは アクセスポリシー ページに記載されています。
| メソッド + パス | 目的 | 権限 |
|---|---|---|
GET /api/access-policies | ポリシーの一覧取得 | AccessPolicies.Read |
POST /api/access-policies | ポリシーの作成 | AccessPolicies.Create |
GET /api/access-policies/{id} | ポリシーの取得 | AccessPolicies.Read |
PUT /api/access-policies/{id} | ポリシーの更新 | AccessPolicies.Update |
DELETE /api/access-policies/{id} | ポリシーの削除 | AccessPolicies.Delete |
POST /api/access-policies/validate | 保存前にポリシー定義を検証 | AccessPolicies.Read |
GET /api/access-policies/capabilities | アプリタイプごとの機能マトリクス(5 つの各次元をどのアプリタイプがサポートするか) | AccessPolicies.Read |
GET /api/access-policies/available-groups | グループルールで利用可能なグループ | AccessPolicies.Read |
GET /api/access-policies/audit · GET /api/access-policies/{id}/audit | 適用状況の監査証跡 | AccessPolicies.Read |
インパーソネーション
インパーソネーション機能により、権限を持つ管理者はサポートやトラブルシューティングのために別のユーザーとして操作できます。セッションを開始すると、対象ユーザーのコンテキストでスコープされたトークンが発行され、停止すると呼び出し元は自身の ID に戻ります。すべてのインパーソネーションはアクティビティログに記録されます。
| メソッド + パス | 目的 | 権限 |
|---|---|---|
POST /api/impersonation/start | 対象ユーザーへのインパーソネーション開始 | Users.Impersonate |
POST /api/impersonation/stop | インパーソネーションの停止と呼び出し元 ID の復元 | Users.Impersonate |
インパーソネーションは、セッション中、呼び出し元に対象ユーザーの実効権限を付与します。インパーソネーション権限は信頼できる管理者に限定し、監査証跡を定期的にレビューしてください。