ObjectOS
設定権限

権限

アイデンティティ、ロール、権限セット、レコードアクセス、フィールドセキュリティ — アクセスモデル全体を1ページにまとめて解説します。

権限

ObjectOS は、エンタープライズソフトウェアで20年間にわたり実績を重ねてきた手法を取り入れた、階層型のアクセスモデルを備えています。アイデンティティ → ロール → 権限セット → レコードアクセス → フィールドセキュリティという構成です。各レイヤーはそれぞれ異なる問いに答えるものであり、必要のないレイヤーは無視して構いません。

モデルを1つの図で

Authentication       Who is the caller?

Identity             Which user/org/membership is active?

Roles                Where do they sit in the hierarchy?

Permission sets      What CAN they do — apps, objects, fields, system?

Record access        WHICH records can they touch?

Field security       For those records, which FIELDS are readable / writable?

各レイヤーは security プラグインによって適用されます。シンプルなアプリでは権限セットだけ(ロールやシェアルールなし)を使い、必要が生じた時点で残りを追加できます。

レイヤー 1 — アイデンティティ

アイデンティティオブジェクトは、プロジェクトのデータベースに存在します。最も重要なものは次のとおりです。

オブジェクト表すもの
sys_user認証可能な個人またはサービスアカウント
sys_organizationテナント / ワークスペースの境界(マルチテナントアプリ向け)
sys_member組織におけるユーザーのメンバーシップ(ロールはメンバーシップごとに割り当てられる)
sys_departmentsys_teamシェアルール向けの任意の組織構造
sys_invitation承諾待ちの保留中の招待
sys_sessionアクティブな認証済みセッション
sys_api_keyユーザーに紐づく長期間有効なプログラム用の認証情報

マルチテナントのデプロイメントでは次のようになります。

  • ユーザーはプロジェクトのデータベースにスコープされます。
  • セッションはプロジェクトのホスト名にスコープされます。
  • 行レベルのチェックには、現在のユーザーの組織と権限が使用されます。
  • コントロールプレーンのユーザーは自動的にビジネスユーザーにはなりません。プラットフォームの SSO 経由でマッピングするか、明示的にプロビジョニングする必要があります。

これらは実行時に Console/_console/)から作成・管理するか、新しい環境向けに objectstack.config.ts でシードします。

レイヤー 2 — ロール

ロールは組織図(CFO → 財務マネージャー → アナリスト)をモデル化します。これらが存在する主な目的は、シェアルールやレポートで「レコード所有者のマネージャー」といった表現を可能にすることです。階層的なアクセスが必要な場合はロールを使い、フラットなチームでは省略してください。

ロールを参照してください。

レイヤー 3 — 権限セット

権限セットは、機能を付与するための主要な手段です。ユーザーに直接、またはロール経由でアタッチされます。

付与する内容

種類
アプリケーションアクセスCRM を開く、サポートポータルを開く
オブジェクト権限オブジェクトのレコードの作成 / 読み取り / 更新 / 削除
フィールド権限特定のフィールドの読み取りまたは更新
システム権限Console へのアクセス、レポートの実行、データのエクスポート、監査ログの閲覧
連携権限API キーの使用、Webhook の設定、管理アクションの実行

オブジェクト権限フラグ

これらは security プラグインがチェックする正確なフラグ名です。

フラグ意味
allowReadレコードアクセスを通じてユーザーが閲覧できるレコードを読み取る
allowCreate新しいレコードを作成する
allowEditユーザーが閲覧できるレコードを更新する
allowDeleteユーザーが閲覧できるレコードを削除する
viewAllRecordsレコードアクセスルールを無視して、そのオブジェクトのすべてのレコードを読み取る
modifyAllRecordsすべてのレコードを更新 / 削除する。viewAllRecords を含意する

viewAllRecordsmodifyAllRecords は、そのオブジェクトに対するテナント全体のスーパーユーザー権限です。明示的な管理用の権限セットに限定し、ユーザー向けのロールには含めないでください。

権限セットを参照してください。

レイヤー 4 — レコードアクセス

viewAllRecords持たないユーザーが閲覧できる行はどれでしょうか。

このモデルは次をサポートします。

  • 暗黙的な所有権(ユーザーが作成または所有する行)
  • シェアルール(宣言的 — 「チーム A はチーム A のレコードを閲覧できる」)
  • 明示的な共有(sys_record_share の行 — 個別の共有)
  • 組織スコープ(行の organization_id がユーザーの組織に一致する)

レコードアクセスを参照してください。

レイヤー 5 — フィールドセキュリティ

ユーザーがレコードを閲覧できる場合でも、個々のフィールドは次のように設定できます。

  • 非表示 — フィールドは API および UI のレスポンスから除外されます。
  • 読み取り専用 — フィールドは返されますが、書き込みは拒否されます。

フィールドセキュリティは、オブジェクトごと + 権限セットごとに設定します。代表的な用途は次のとおりです。

  • HR 以外のユーザーから sys_usersalary を非表示にする。
  • サポート担当者に対して external_account_id を読み取り可能だが編集不可にする。

これはオブジェクト権限と同じエバリュエーターで適用されるため、REST、ObjectQL、Console 全体に一貫して適用されます。

どこから始めるか

構築しているのが …使うもの
単一チームの社内ツール権限セットのみ
マネージャーがレポートを閲覧するマルチチームアプリロール + 権限セット
マルチテナントの SaaS 型アプリ組織スコープ + 権限セット
PII を扱う規制対象アプリ上記にフィールドセキュリティを追加
複雑な CRM 型アプリフルスタック

診断と監査

  • /_console/ は、任意のユーザーの実効権限を評価された状態で表示します。
  • 監査ログ(sys_audit_log)は、権限に関わる変更 — 付与、ロールの割り当て、権限セットの編集 — を記録します。
  • 拒否されたリクエストは、失敗したルール(オブジェクト権限 / レコードアクセス / フィールドセキュリティ)をログに残すため、サポートは「なぜこれが見えないのか」という問い合わせに迅速に答えられます。

On this page