TL;DR

ZITADEL のリソースは、Instance の下に Organization があり、Organization が User と Project を持つ階層になっている。ロールは Project 単位で定義し、Organization・Project・Role の組で User に割り当てる。Project Grant を使うと、ロールの割り当てを別の Organization に任せられる。

内容

Instance

Instance は階層の最上位のノードで、Organization と Project を含む。仮想的なテナントとしてデータを完全に分離でき、1 つのシステムに複数の Instance を持てる。

Organization

Organization は Instance の中のテナントで、User や Project を管理する。Organization ごとにブランディングや IdP を設定でき、これらは Policy / Setting で管理する。

User

User は通常のユーザ(Human User)と、M2M 用のサービスアカウントに分かれる。User は基本的に 1 つの Organization にだけ所属し、Organization の間を移動できない。

ただし、Administrator は特別で、管理する範囲によって次の種類がある。

  • IAM Administrator: Instance 全体の管理権限を持つ。最も強い権限である
  • Organization Administrator: Organization の管理権限を持つ
  • Project Administrator: Project の管理権限を持つ
  • Project Grant Administrator: 他の Organization から付与された Project(後述する Project Grant)の管理権限を持つ

Project と Application

Project は、Application や Role を管理する単位である。

Application は Project の中に作るクライアントで、Web、Native、User Agent(SPA)、API、SAML の種類がある。基本的には OIDC や OAuth 2.0 を使い、これらに対応していないアプリケーションでは SAML を選べる。

Role と Role Assignment

Role は、Project 単位で定義するアクセス権である。

Role Assignment は、Role を User に割り当てることを指す。割り当ては Organization・Project・Role の組で行う。Project Grant があるので、どのテナントの文脈での割り当てかを Organization で示す。また、Role は Project の中で定義されるので、どの Project の Role かを Project で示す。

Project Grant

Project Grant は、ある Organization の Project(またはその一部の Role)の割り当ての管理を、別の Organization に任せる仕組みである。任された側(Granted Organization)は、自分の Organization の User に、その Project の Role を割り当てられる。

キーワード

関連