SAG / ARCHITECTURE NOTE

RBACとテナント境界:画面の外で権限チェックを完結させる

RBACの定義と必要性、仕組み、SAGアーキテクチャへの適用基準、実務チェックリストを、研究および公式文書を根拠に解説します。

Markdownをダウンロード

一文で定義

RBACは、役割ごとに許可する操作とデータの所有境界を、サーバーとデータベースで強制する権限モデルです。

要点:ボタンを非表示にするだけでは、APIへの直接呼び出しを防げません。クライアントから送られたtenant IDを信頼すると、他の顧客のデータにアクセスされるおそれがあります。

なぜこの技術が必要なのか?

ボタンを非表示にするだけでは、APIへの直接呼び出しを防げません。クライアントから送られたtenant IDを信頼すると、他の顧客のデータにアクセスされるおそれがあります。

仕組み

サーバーはセッションとmembershipを参照し、リソースのtenantを検証します。データベースのRLSと複合外部キーが、ミスに対する追加の境界となります。

設計時に見るのは精度だけではありません。遅延時間、コスト、データ境界、更新頻度、失敗時の動作をあわせて定義することで、運用時に再現可能な結果が得られます。自動化が値を確信できない場合は、0や成功に置き換えず、未計測・要確認の状態にしておくほうが安全です。

SAGの技術との関係

SAGはプラットフォームの役割と顧客の役割を分離し、リクエストごとにmembershipを確認します。クライアントのtenant headerは信頼せず、テナントをまたぐ参照をDB制約で防ぎます。

実務チェックリスト

  • 読み取りと書き込みの両方で所有権を確認します
  • 権限の引き下げが次のリクエストから反映されるか確認します
  • テナントをまたぐIDを使った失敗テストを行います
  • 失敗・空の結果・権限エラーの状態を成功と区別します
  • 変更の前後を同じ条件で再検証します

研究と公式文書

参考文書は、原則と推奨事項の根拠となるものです。検索での露出、AIによる言及、順位、売上を保証するものではありません。実際の適用効果は、サービスのデータと同一条件での観測によって確認する必要があります。

RLSが適用される実行ロールも確認する

RLSポリシーが設定されていても、テーブル所有者やBYPASSRLSロールはポリシーを回避できます。SAGでは、これとは別にサーバー側でmembershipとテナント条件を確認します。隔離範囲を判断するには、データベースの接続ロールとポリシーの適用状況をあわせて確認する必要があります。

トピック別の技術参考資料

この技術を続けて読むには

テナント権限、タスクの再試行、キャッシュ、承認履歴について確認します。

記事一覧