Keycloakの認可機能には多くの独自の概念が登場するため、全体像を理解するには時間がかかる。Keycloakを調査をする過程で、これらの独自概念を整理するためにデータモデル図(ER図)を作成したため、認可機能概要の説明とともに紹介する。
なお実際の認可機能の利用例として、以下の記事ではKeycloakを使った認可ルールの登録と認可判定の動作の検証を説明している。
Keycloakの認可機能の概要
- 保護対象のオブジェクトをResource(もしくResourceを細分化したScope)として定義する。
- Resource(もしくはScope)はClientとして登録したResource Serverに従属するモデルとなる。
- Resource(またはScope)のアクセスに必要な条件をPolicyとして登録する。
- Role-Based Policyなど、典型的なアクセス制御モデル(Role-Based Policyの場合はRBAC)を実現するためのビルトインPolicyが提供されている。
- その他に、JavaScriptで任意のロジックをPolicyとして登録できる、JavaScript-Based Policyもサポートされている。
- 保護対象オブジェクト(ResourceまたはScope)とアクセス条件(Policy)をPermissionというモデルを登録することで紐づける。