組織テンプレート
組織テンプレート は、マルチテナントアプリのためのアクセス制御設計です。これは ロールベースのアクセス制御 (RBAC) の基本に基づいていますが、組織が企業、グループ、またはユーザーを表すマルチテナント環境に適応しています。
組織レベルでは、リソースの権限を管理するためにアクセス制御が必要です。
ここでは、人気のあるコラボレーションツールであり、典型的な マルチテナントアプリ である Notion を例に挙げます。これは、さまざまな 認証 (Authentication) と 認可 (Authorization) の機能をサポートしています:
- 各ワークスペースごとに別々のアカウントを必要とせずに、1つのアカウントで複数のワークスペースを作成および参加できます。
- Notion は、すべてのワークスペースで「ワークスペースオーナー」や「メンバー」などの同じセットのアクセスレベルを使用しますが、各ワークスペースに異なるアクセスレベルを期待するかもしれません。
この章では、組織レベルでの認可 (Authorization) 設計を指す組織テンプレートに焦点を当てます。
適切に設定するには、組織の仕組み と関与するさまざまなエンティティを理解する必要があります。まだ確認していない場合は、これらの章を必ず読んでください。
組織テンプレートを理解する
組織権限
組織権限は、組織のコンテキストでアクションを実行するための認可 (Authorization) を指します。組織権限は、名前と一意の識別子としても機能する意味のある文字列として表現されるべきです。
例えば、edit:resource
。
組織権限は、組織のコンテキストがなければ意味を持ちません。例えば、組織 org1
のコンテキストでの edit:resource
は、組織 org2
のコンテキストでの edit:resource
とは異なります。なぜなら、それらは異なるリソース(org1
対 org2
)を指しているからです。
組織ロール
組織ロールは、ユーザーに割り当てることができる 組織権限 または API 権限(Logto コンソールの API リソース で直接定義された API 権限)のコレクションです。
組織ロールは、組織のコンテキストがなければ意味を持ちません。例えば、組織 org1
のコンテキストでの admin
は、組織 org2
のコンテキストでの admin
とは異なります。
組織テンプレート
組織テンプレートは、すべての 組織 に適用される組織権限とロールのコレクションを指します。これは、組織レベルのロールベースのアクセス制御と見なされます。
典型的なコラボレーションアプリを考えてみてください。これらは自然に同じアクセス制御「テンプレート」を共有し、組織内でのアクセスレベルとユーザーができることを定義します。Logto ではこれを「組織テンプレート」と呼びます。
すべてがどのように結びつくかを理解するために例を見てみましょう:
John と Sarah は、異なる組織に所属しており、異なる組織のコンテキストで異なるロールを持っています。
この図から知っておくべき情報は次のとおりです:
- John は 2 つの組織に所属しており、彼の一意の識別子として
[email protected]
を使用しています。彼はOrganization A
でadmin
の地位にあり、Organization B
ではguest
です。 - Sarah は 1 つの組織に所属しており、彼女の一意の識別子として
[email protected]
を使用しています。彼女はOrganization B
のadmin
です。 Admin
、Member
、Guest
のロールは組織内で指定されており、これらのロールはさまざまな組織で一貫しています。- 組織テンプレート設定内で追加のロールを作成できます。これらの新しく作成されたロールは、すべての組織で適用され、共有されます。
Logto では、組織テンプレートは組織専用に設計されたアクセス制御モデルです。これはロールベースのアクセス制御 (RBAC) に基づいていますが、異なるシナリオを対象としています。
組織のためにロールと権限を設定する必要がある場合は、組織テンプレートを使用してください。
組織レベルのないシンプルな B2C アプリの場合は、ユーザー / システムレベルの RBAC を使用してください。
Logto では、組織テンプレート と ユーザー / システムレベルの RBAC の両方を使用でき、特定のビジネスおよび製品要件を満たすためのより堅牢なアプローチを可能にします。
関連リソース
ケーススタディ:Logto 組織を使用してマルチテナンシーを構築する