RBAC(役割ベースアクセス制御)

ユーザーに役割(ロール)を割り当てることで、データやシステム機能へのアクセスを柔軟に管理できます。


📋 概要

RBAC(Role-Based Access Control)は、ユーザーに「役割(ロール)」を割り当て、その役割に応じてアクセス権限を制御する仕組みです。SURP MDMでは、4つの標準ロールと柔軟な権限設定により、セキュアで効率的なデータ管理を実現します。

主な特徴

  • 役割ベースの権限管理: ユーザーごとではなく役割ごとに権限を管理
  • 4つの標準ロール: システム管理者、テナント管理者、編集者、閲覧者
  • きめ細かいアクセス制御: リソースごとに読取・作成・更新・削除を制御
  • 画面レベルの制御: 役割に応じて表示される画面を制限
  • API アクセス制御: APIキーにスコープを設定してアクセスを制限

👥 標準ロール一覧

1. System Admin(システム管理者)

権限レベル: 最高

できること:

  • 全テナントの管理
  • テナントの作成・削除
  • 全システム設定へのアクセス
  • 全データへの完全なアクセス

想定ユーザー: SaaS運営者、システム運用チーム

注意: システム管理者は tenant_id='system' の特別なテナントに所属します。通常の企業ユーザーにこの役割を割り当てないでください。


2. Admin(テナント管理者)

権限レベル: 高

できること:

  • マスター定義の作成・編集・削除: データ構造の設計
  • ユーザー管理: ユーザーの招待、役割変更、削除
  • マスターデータの全操作: 作成・編集・削除・エクスポート・インポート
  • 承認のスキップ: 承認設定があっても直接データを保存
  • APIキー管理: APIキーの作成・削除
  • テナント設定: 全般的なテナント設定の変更
  • プロビジョニング設定: 外部システムとの連携設定
  • 監査ログの閲覧: すべての操作履歴の確認

できないこと:

  • 他のテナントのデータへのアクセス
  • サブスクリプションプランの変更(支払い情報の変更)

想定ユーザー: 企業の情報システム部門、IT管理者


3. Editor(編集者)

権限レベル: 中

できること:

  • マスターデータの作成・編集・削除: 通常のデータ操作
  • CSVインポート・エクスポート: データの一括操作
  • 承認リクエストの作成: 承認設定があるマスターでは承認申請
  • 承認・却下: 承認者として指定されている場合
  • ファイルのアップロード・削除: 添付ファイルの管理
  • 変更履歴の閲覧: 自分のテナントのデータ履歴
  • AI機能の利用: AI入力支援、検証、データクレンジング

できないこと:

  • マスター定義の作成・編集
  • ユーザー管理
  • テナント設定の変更
  • APIキーの管理
  • 監査ログの閲覧

想定ユーザー: 人事部門、総務部門、データ管理担当者


4. Viewer(閲覧者)

権限レベル: 低

できること:

  • マスターデータの閲覧: すべてのマスターデータの参照
  • CSVエクスポート: データのダウンロード(読み取り専用)
  • 変更履歴の閲覧: データの変更履歴の確認
  • 承認リクエストの閲覧: 自分の申請や全体の承認状況の確認
  • AI検索の利用: AIを使ったデータ検索
  • レポートの閲覧: 各種レポートの参照

できないこと:

  • データの作成・編集・削除
  • CSVインポート
  • ファイルのアップロード・削除
  • 承認・却下の実行
  • マスター定義の閲覧・編集
  • ユーザー管理
  • 全ての設定変更

想定ユーザー: 一般社員、データ参照のみが必要な部門


🎯 役割の選び方

最小権限の原則

セキュリティのベストプラクティスとして、必要最小限の権限を付与します。

:

  • データを見るだけでよい → Viewer
  • データを編集する必要がある → Editor
  • システム全体を管理する → Admin

役割ごとの割り当て目安

部門推奨ロール理由
情報システム部門Adminシステム全体の管理が必要
人事部門(管理者)Editor従業員データの編集が必要
人事部門(一般)Viewer従業員データの参照のみ
総務部門Editor備品・施設データの編集が必要
経理部門Editor勘定科目などの編集が必要
営業部門Viewer顧客データの参照のみ
一般社員Viewer基本的に参照のみ

🎯 マスター単位の権限設定

基本的なロール(Admin / Editor / Viewer)に加えて、特定のマスター定義ごとに詳細な権限を設定できます。

概要

マスターごとに、ユーザーやロールに対して以下の4つの権限を個別に制御できます:

  • 読取(Read): データの閲覧
  • 作成(Create): 新規レコードの作成
  • 更新(Update): 既存レコードの編集
  • 削除(Delete): レコードの削除

使用例

例1: 人事マスターのアクセス制限

要件: 人事マスター(従業員情報)は人事部のみ編集可能にしたい

設定:

ユーザー/ロールReadCreateUpdateDelete
人事部(Admin)
人事部(Editor)
一般社員(Viewer)
営業部(Editor)

結果: 営業部のEditorでも、人事マスターは閲覧すらできません。

例2: 商品マスターの部門別権限

要件: 商品マスターは部門によって権限を分ける

設定:

ユーザー/ロールReadCreateUpdateDelete
商品企画部
営業部
在庫管理部
一般社員

結果:

  • 商品企画部:全権限
  • 営業部・在庫管理部:閲覧と更新のみ(在庫数や価格の更新)
  • 一般社員:閲覧のみ

例3: 機密マスターの完全非公開

要件: 役員報酬マスターは経営層のみアクセス可能

設定:

ユーザー/ロールReadCreateUpdateDelete
社長・役員
その他全員

結果: 指定されたユーザー以外は、マスターの存在自体が見えません。

設定手順

ステップ1: マスター定義の詳細画面を開く

  1. ダッシュボード → マスター定義一覧
  2. 権限を設定したいマスター定義をクリック

ステップ2: 権限設定タブを開く

  1. 「権限設定」タブをクリック

ステップ3: 権限を追加

  1. 「権限を追加」ボタンをクリック
  2. ユーザーまたはロールを選択
  3. 権限(Read / Create / Update / Delete)をチェック
  4. **「保存」**をクリック

ステップ4: 権限の確認

設定した権限が一覧表示されます:

| ユーザー/ロール | Read | Create | Update | Delete | 操作 |
|----------------|------|--------|--------|--------|------|
| 人事部 山田太郎 | ✅ | ✅ | ✅ | ✅ | 編集・削除 |
| 営業部 佐藤花子 | ✅ | ❌ | ❌ | ❌ | 編集・削除 |

権限の優先順位

複数の権限設定が競合する場合、最も高い権限が適用されます。

:

  • ロール「Editor」で Update = ❌
  • ユーザー「佐藤花子」で Update = ✅
  • 結果:佐藤花子は Update 可能

デフォルト権限

マスター単位の権限設定がない場合、基本ロールの権限が適用されます:

ロールReadCreateUpdateDelete
Admin
Editor
Viewer

注意事項

  • Admin ロールは、マスター単位の権限設定を無視して常に全権限を持ちます
  • 権限設定は即座に反映されます(キャッシュなし)
  • 権限がない操作を実行しようとすると、403エラーが表示されます

🛠️ ユーザーへの役割割り当て方法

ステップ1: ユーザー管理画面を開く

  1. ダッシュボード → ユーザー
  2. 役割を変更したいユーザーを選択

アクセス権限: Admin ロールのみ


ステップ2: 役割を変更

  1. ユーザーの「編集」ボタンをクリック
  2. 「ロール」のドロップダウンから役割を選択
    • System Admin(通常は使用しない)
    • Admin
    • Editor
    • Viewer
  3. 「保存」ボタンをクリック

ステップ3: 変更の確認

役割を変更すると、即座に反映されます。

  • 変更されたユーザーは次回ログイン時に新しい権限が適用されます
  • 現在ログイン中の場合、再ログインすると新しい権限が有効になります

🔒 リソースごとのアクセス制御

SURP MDMでは、以下のリソースごとにアクセス制御が行われます。

マスターデータ

ロール閲覧作成編集削除エクスポートインポート
System Admin
Admin
Editor
Viewer

マスター定義

ロール閲覧作成編集削除
System Admin
Admin
Editor
Viewer

ユーザー管理

ロール一覧表示招待編集削除
System Admin
Admin
Editor
Viewer

承認ワークフロー

ロール閲覧申請承認却下
System Admin
Admin✅(承認スキップ可)
Editor✅(承認者の場合)✅(承認者の場合)
Viewer

ファイル管理

ロール閲覧アップロードダウンロード削除
System Admin
Admin
Editor
Viewer

監査ログ

ロール閲覧統計情報
System Admin
Admin
Editor
Viewer

APIキー管理

ロール一覧作成削除
System Admin
Admin
Editor
Viewer

注意: APIキー認証では、APIキー管理エンドポイントにアクセスできません(セキュリティ上の理由)。


プロビジョニング

ロール閲覧連携設定実行
System Admin
Admin
Editor
Viewer

🔑 APIキーとスコープ

APIキーを使った外部システム連携では、スコープによってアクセス範囲を制限できます。

APIキースコープ一覧

スコープ説明許可される操作
read読み取り専用GET, HEAD, OPTIONS
write書き込みPOST, PUT, PATCH
delete削除DELETE

スコープの組み合わせ

APIキーには複数のスコープを同時に設定できます。

:

  • read のみ → データの参照のみ可能
  • read + write → データの参照と作成・更新が可能
  • read + write + delete → すべての操作が可能

APIキーでアクセスできないエンドポイント

セキュリティ上の理由で、以下のエンドポイントはAPIキー認証ではアクセスできません:

  • APIキー管理: /api/v1/api-keys
  • サブスクリプション管理: /api/v1/subscriptions
  • 個人通知: /api/v1/notifications

これらの機能にアクセスするには、通常のユーザー認証(JWT)が必要です。


💡 よくある質問

Q1. ユーザーの役割は後から変更できますか?

A: はい、いつでも変更できます。

Admin ロールのユーザーがユーザー管理画面からいつでも変更可能です。変更は即座に反映されます。


Q2. 役割を変更すると、既存のデータはどうなりますか?

A: データは変更されません。

役割の変更は、そのユーザーのアクセス権限のみを変更します。過去に作成・編集したデータはそのまま残ります。


Q3. 自分で自分の役割を変更できますか?

A: できません。

セキュリティ上の理由で、自分自身の役割は変更できません。他のAdmin ロールのユーザーに変更してもらう必要があります。


Q4. Admin が1人しかいない場合、その人を削除できますか?

A: システムが警告を表示しますが、削除は可能です。

Admin が0人になると、ユーザー管理ができなくなるため、最低1人のAdmin を残すことを推奨します。Admin が0人になった場合は、System Admin に連絡してください。


Q5. Editor が承認者に指定されている場合、承認できますか?

A: はい、承認できます。

承認ワークフローでは、承認者として指定されているユーザーは、自分のロールに関係なく承認・却下が可能です。


Q6. Viewer でも承認リクエストを見ることができますか?

A: はい、閲覧のみ可能です。

Viewer は承認リクエストの一覧と詳細を閲覧できますが、承認・却下の操作はできません。


Q7. APIキーのスコープを後から変更できますか?

A: 現在のバージョンでは、APIキーのスコープは変更できません。

スコープを変更したい場合は、既存のAPIキーを削除して、新しいスコープで新規作成してください。


Q8. 役割ごとに表示される画面が異なりますか?

A: はい、役割によって表示される画面が制限されます。

例えば、Viewer には「マスター定義」や「ユーザー管理」のメニューが表示されません。Admin のみが全ての画面にアクセスできます。


🛡️ セキュリティのベストプラクティス

1. 最小権限の原則

ユーザーには、業務に必要な最小限の権限のみを付与します。

:

  • データを見るだけでよい → Viewer
  • データを編集する必要がある → Editor
  • 「念のため」でAdmin を付与しない

2. 定期的な権限レビュー

3ヶ月に1回程度、各ユーザーの役割が適切かレビューします。

確認項目:

  • 退職者のアカウントが無効化されているか
  • 部署異動で権限が不要になったユーザーがいないか
  • 過剰な権限を持つユーザーがいないか

3. 複数のAdmin を設定

Admin が1人だけだと、その人が不在の時に管理操作ができません。最低2〜3人のAdmin を設定することを推奨します。


4. APIキーのスコープを最小限に

外部システム連携でAPIキーを使用する場合、必要最小限のスコープのみを付与します。

:

  • データ参照のみが必要 → read のみ
  • データの作成・更新が必要 → read + write
  • 削除が必要な場合のみ → delete を追加

5. APIキーの定期的なローテーション

セキュリティ強化のため、APIキーは定期的に再作成します(3〜6ヶ月に1回程度)。


🔗 関連機能


📞 サポート

RBAC(役割ベースアクセス制御)に関する質問は、よくある質問をご覧いただくか、システム管理者にお問い合わせください。