# アクセス制御の概要

<figure><img src="https://1959197998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvyRvOrlY46GCAFYEPPGZ%2Fuploads%2Fgit-blob-46ea95164c19250f467a63db1f369fcd2385a4f4%2Fgroups.png?alt=media" alt=""><figcaption></figcaption></figure>

Codatumには、シンプルながら強力なロールベースのアクセス制御機構があります。

ユーザーは、ワークスペースやノートブックやコネクションなどの個々のリソースに対して、閲覧者や編集者などの役割を持つことができます。様々な操作の権限は、ユーザーが保持する役割の組み合わせに基づいて決定されます。

## **用語解説**

* **ユーザー**
  * ワークスペースに属するアカウントのこと。
* **グループ**
  * 一括で権限付与を行うことができるユーザーのグループ。1つのグループに対して、複数のリソースロールを割り当てることができます。
* **リソース**
  * Codatum内の様々なオブジェクトとその種類を表します。
  * 例: ノートブック、コネクション、チームスペース など
* **操作**
  * 個々のリソースやワークスペース全体に紐づく様々なアクションのこと。
  * 例: ユーザーの招待、ノートブックの編集 など。
* **ロール**
  * **ワークスペースロール**
    * ワークスペース内でユーザーに割り当てられるロール（すべてのユーザーに必須）です。ワークスペースレベルの操作に対する権限を決定します。
    * 例: ワークスペースオーナー → ワークスペース設定の管理やメンバー招待の権限が付与されます。
  * **リソースロール**
    * 個々のリソースに紐づくロール。グループまたは個々のユーザーに割り当てられます。
    * 例: ノートブック閲覧者 → ノートブックの閲覧権限が付与されます。
* **権限**
  * ユーザーまたはグループに割り当てられた、リソースロールまたはワークスペースロールの組み合わせによって、該当するリソースやワークスペースに関連する特定の操作を実行する権限が付与されます。

## アクセス制御ルールの基本

アクセス権は、定義された評価方法に従い、ユーザーが保持するロールの組み合わせに基づいて決定されます。

* ロールには階層性があり、下位のロールがアクセス権を持つ場合、上位のロールもそのアクセス権を持ちます。
* 操作が許可されるためには、ワークスペースロールとリソースロールの両方のロールがアクセスを許可する必要があります（ANDで評価されます）。
* ユーザーが同じリソースに対して複数のリソースロールを持つ場合（直接割り当てられているか、グループ経由で割り当てられているかに関わらず）、いずれかのリソースロールがアクセスを許可していれば、権限が付与されます（ORで計算されます）。

以下の概念図では、これらの原則を示しています。

<figure><img src="https://1959197998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvyRvOrlY46GCAFYEPPGZ%2Fuploads%2Fgit-blob-5ec7af6c42a3f5bcf98d4edbf96b06b6629ea853%2FCleanShot%20June%2015.png?alt=media" alt=""><figcaption></figcaption></figure>

この図は、特定のリソースAに紐づけられた操作のパターンを示しています。

また、ワークスペースにのみ紐づけられ、特定のリソースにはリンクされない操作のパターンもあります。このパターンはより単純で、以下のように示されます。

<figure><img src="https://1959197998-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvyRvOrlY46GCAFYEPPGZ%2Fuploads%2Fgit-blob-3aff6675ccac63c5b3fe8a949a83ceb2255ea691%2FCleanShot%202024-06-15%20at%2023.58.35%402x.png?alt=media" alt=""><figcaption></figcaption></figure>

このパターンでは、アクセス権はワークスペースロールのみによって決定されます。

これらの原則により、Codatum内で堅牢で柔軟なアクセス制御システムが実現されています。
