ロールによる機能制御
企業システムでは、ほとんどのケースで、ログインユーザの権限レベルに応じたセキュリティコントロールが必要となります。
Hexabase では、ユーザー・グループ・ロールの設定に従って、API の戻り値が自動的にフィルタされます。
※アイテムの閲覧制御は、アクセスキーでおこないます。
ロールとは
「ロール」は、 アプリケーション内の各機能(データベース、フィールド、アクションなど)に対する権限を設定する対象です。Hexabase では、機能ごとに、利用できるロールを割り当てていきます。
ユーザー・グループは、ロールを付与ことで、その機能を利用できます。
1つのアプリケーション内には、複数のロールをいくつでも作成できます。デフォルトでは「admin」「member」という 2 つのロールが定義されています。admin ロール(ID:ADMIN)は削除・変更できません。
※Tips:ロールの数に制限はありませんが、最小限となるようシンプルにすることがポイントです。細かく分けすぎると設定が複雑になり、設定工数・管理コストが膨大になり、かえってセキュアでないコントロール不能なシステムとなる可能性が高くなります。
ユーザー・グループ・ロールの関係
ユーザーとグループは、ワークスペースに属しており、ロールはアプリケーションに属しています。Hexabase のシステム開発では、アプリケーションの各機能で、ロールに利用可否を設定し、ユーザーとグループにロールを付与します。
ユーザ・グループへのロールの付与
ロールを割り当てる方法は、次の2つがあります。
- アプリケーションの設定で、ユーザに直接ロールを付与する
- ワークスペースの設定で、グループにロールを付与する
アプリケーションの設定で、ユーザに直接ロールを付与する
- アプリケーションの設定 > ロールと参加ユーザーの設定を選択
- 付与先のロールを選択
- ロールを付与したいユーザーを選択
ワークスペースの設定で、グループにロールを付与する
- ワークスペースの設定 > グループ設定
- グループを選択
- ロールタブを選択
- グループに割り当てるロールをオンにする
2番目以降のアプリケーションロールをグループに付与する
ワークスペースを作成したとき、同時にアプリケーションが1つ作成されます。このアプリケーションのmemberロールは、ワークスペースのTopグループに自動的に付与されます。
2番目以降に作成したアプリケーションは、adminとmemberというロールを持ちますが、いずれもワークスペースのグループには付与されていません。
2番目以降にアプリケーションを作成した場合は、グループとユーザーにアプリケーションのロールを付与する必要があります。
グループへのロール付与と継承
グループにロールを付与すると、下位グループまでロールが継承されます。 デフォルトでは、最上位の「ワークスペース」グループに members ロールが付与されています。
グループに付与・継承されたロールは、ワークスペース設定の「グループ設定」で確認できます。
ロールを割り当てできる機能
主に次の機能で、ロールによる権限制御が可能です。
識別対象 | 動作 | 権限がない場合の挙動 |
---|---|---|
データベース(datastore) | データベースへのアクセス | API 結果で該当データベースが取得されない。 |
REST URL 内に display_id を指定した場合は権限エラーになる。 | ||
フィールド | フィールドの表示・非表示 | アイテム一覧や詳細などの API の結果に、該当フィールドが含まれない。 |
データレポート API の結果に、参照しているフィールドが含まれない。 | ||
アクション | アクション一覧への表示・非表示 | アクション一覧 JSON に含まれない。 |
該当アクションが見つからないエラーとなる。 | ||
データレポート | データレポートへのアクセス | API 結果で該当データレポートが取得できない。 |
チャート(ダッシュボード) | チャートデータへのアクセス | 同上 |
ロールによる利用可否の指定
各機能では、次の画面でロールを指定できます。
データベースの権限設定
- データベースの設定 > 権限の設定
フィールドへの権限設定
フィールドにロールを指定することで、次のような利用が可能になります。
- 管理者のみ表示されるフィールド
- 発注元メンバーは閲覧・更新できるが、外注先メンバーからは閲覧できないフィールド
- 社内メンバーは閲覧できるが、顧客は閲覧できないフィールド
- 承認者にのみ表示されるフィールド
ロールを指定する方法
- アイテム詳細画面を表示
- 項目を編集・追加する
- ロールを指定したいフィールドの設定ボタンを追加
- 画面項目設定 > 権限の設定
※ アイテムの閲覧制御は、アクセスキーが利用できます。
アクションへの権限設定
アクションにロールを指定することで、次のように特定のロールだけアイテムを操作できるようになります。
想定される利用シーン
- 部長ロールを持つ人のみ「承認」できる
- システム管理者のみ「削除」できる
- 発注担当のみ「発注」できる
※Tips:ステータスとアクションの関係を整理するには、ステータスチャートで権限のマトリックスを記述するのが有効です。
ロールを指定する方法
- アイテム詳細画面を表示
- メニューの設定
- 「誰がこのメニューを利用しますか?」
データレポートの権限設定
- データレポート出力条件の設定 > 権限の設定
ダッシュボードの権限設定
-ダッシュボードの編集
API によるロールの制御
API を利用してロール付与などが可能です。
詳しくは、Hexabase API リファレンスを参照ください。
アプリケーション > ロール関連 API
- GetRoleUsers:ロールをもつユーザーの取得
- AddRoleToUser:ユーザーへロール付与
- RemoveRoleFromUser:ユーザからロールを削除
- UpdateGroupRoles:グループロール更新
- AddGroupRoles:グループロール追加
API の利用例
アイテムの詳細情報を取得
アイテム詳細情報(フィールド、ステータス、アクションなど)を取得。ログインユーザーがアクセスできる情報だけを返す
GET https://api.hexabase.com/api/v0/applications/TestApp/datastores/TODO-SAMPLE/アイテムs/details/:アイテム-id
アイテム表示画面の実装
API で取得した情報をもとにして、システム要求に対応した自由な実装が可能です。
たとえば、以下の画面のように、同じ構造でも異なるデザインで実装できます。
※Tips:Hexabase のデータ構造や制御システムを理解した上で画面設計を行うと、無理なく API を活用でき、開発工程がスムーズに進みます。