これは InterSystems FAQ サイトの記事です。
InterSystems 製品では、ユーザが持つロールによって「InterSystems 製品内で何ができるのか」が決まります。
では、ロールには何が含まれているのでしょうか。
ロールには、複数の特権を含めることができます。特権とは、リソース(保護対象)に対する許可の設定を指しています。
本記事では、IRIS の開発者である山田さん(Yamada) を例に、以下の内容をご説明します。
1) ロールから付与される特権(=リソースに対する許可)について具体例を利用した確認方法
2) ロールを利用したセキュリティ設定について
《ご参考》
ビデオでの解説もあります。ラーニングパスの「InterSystems IRIS 管理の基本」の「4. セキュリティの構成と管理」をご参照ください。
ラーニングパスには、管理者ではないけれど管理概要も知っておきたい方向けの「開発者向け InterSystems IRIS の管理概要」もあります。ぜひご参照ください。
1) ロールから付与される特権(=リソースに対する許可)について具体例を利用した確認方法
山田さんは開発者であるため、VSCode から T1 ネームスペースにアクセスし開発をしています。また、管理ポータルのシステムエクスプローラーメニューについても、T1 ネームスペースに対して操作ができるようにロールが付与されています。
現在、山田さんに付与されているロールは以下の通りです。
- %Developer ロール (開発者用ロール)
- %DB_T1ロール
《付与されるリソースのイメージ(全リソースについて記載していません)》

このロールから具体的にどのような特権が提供されているか、管理ポータルを利用して山田さんのプロファイルを参照します。
管理ポータル > システム管理 > セキュリティ > ユーザ > Yamadaの行の右端にある「プロファイル」のリンクをクリック
.jpg)
プロファイルのリンクをクリックした後は以下の表示です。

※ 権限の表はまだ下に続いていますが、図例は省略しています。
特権は保護対象であるリソースに対する【許可(READ/WRITE/USE)】の組み合わせで、データベースに対しては R(READ)または W(WRITE) 、接続経路(ターミナルや Mirror など)、管理ポータルメニュー、ユーザのアプリケーションに対しては U(USE)許可を設定できます。
山田さんに付与されている %Developer ロールから提供されるリソースの 1つ %Development リソースに付与されている許可を確認します。
%Developement リソースはインストール時用意される事前定義リソースで、管理ポータルのシステムエクスプローラーメニューが使用するアプリケーションパス (/csp/sys/exp) や VSCode から IRIS に接続する際内部的に使用している /api/aterlier のパスやクラスリファレンスのパス /csp/documatic に対しての U(USE:利用)許可が設定されています。

次に、%DB_T1 ロールから付与されるデータベース用リソース:%DB_T1 の許可を確認すると、 RW(READ と WRITE)が設定されています。

※ データベース用リソースとは、セキュリティ設定を強化する際に個々のデータベースに対して設定する定義で通常 %DB_データベース名で作成します。未設定のデータベースは、%DB_%DEFAULT リソースに含まれます。データベース用リソースを作成するとリソースに対する READ/WRITE の許可がセットされたデータベース用ロール(%DB_データベース名)が自動的に作成されます。
リソースには全ユーザに対して許可を与える設定もありパブリックで許可している設定は、プロファイルの「パブリックリソースにより付与」の列に表示されます。

つまり、リソースは、データベースであったり、ターミナルや Web ゲートウェイのような接続経路であったり、管理ポータルメニューやアプリケーションのエンドポイントだったり、保護対象となる何かを指していることがわかります。
この「保護対象」に対してどの許可を持つかをロールにまとめて定義し、そのロールをユーザに付与することで保護対象のリソースに対してアクセスできる・できない、が決まります。

※ 「アセット」は、セキュリティ設定項目上登場しない用語ですが、InterSystems 製品の保護対象の総称として使用している用語です。
ここまでの流れで、InterSystems 製品に対してセキュリティ設定を行う場合に登場する、ロール、特権、リソース、許可 の用語の意味を確認できました。
2) ロールを利用したセキュリティ設定について
次は、ロールを利用したセキュリティ設定について、具体的な例でご説明します。
開発者の山田さんは主に、クラス定義の作成・編集を行っています。開発者の鈴木さんは主に、テーブル定義の作成、データ登録や参照確認などを担当しています。
二人とも開発者であるため、管理ポータルのシステムエクスプローラーやターミナル(IRISへのログイン)、VSCode からのアクセスに必要な %Developer ロールと、T1 ネームスペースでソースコードの読み書きや実行に必要な %DB_T1 ロールが必要です。
この後、開発者が増える予定もあるため、個々のユーザにこの 2 つのロールを付与するのではなく、開発者用ロール:AppDeveloper を作成し、%Developer と %DB_T1 ロールのメンバーとして AppDeveloper ロールを設定し、新開発者は AppDeveloper ロールメンバーとして割り当てるほうが管理しやすくなりそうです。
また、SQLでテーブル定義を作成する場合は、SQL管理権限の %CREATE_TABLE が最低限必要なのと、既存テーブルに対して参照・更新・削除を行うためには操作対象テーブルに対する権限の設定も必要です。
これら権限は、SQLを中心に操作する開発者のみ付与されていればよいので、SqlDeveloper ロールを作成し必要な権限を設定し、開発者である鈴木さんに付与します。
ロールのイメージは以下の通りです。

以下の流れで作成します。
[1] AppDeveloper ロールの作成
[2] SqlDeveloperロールの作成
[3] AppDeveloperロールに山田さん(Yamada)と鈴木さん(Suzuki)さんを設定
[4] SqlDeveloperロールに鈴木さん(Suzuki)さんを設定
[5] テスト
[1] AppDeveloper ロールの作成
AppDeveloper ロールの作成手順は以下の通りです。
管理ポータル > システム管理 > セキュリティ > ロール > 新規ロール作成ボタンクリック

ロール名を記入し、保存ボタンを押した後の設定は以下の通りです。

完成図

[2] SqlDeveloperロールの作成
次に、SQL 開発者(鈴木さん)に付与する SqlDeveloper ロールを作成します。(既存に Sampleスキーマがある想定です)
最初に、SQL管理権限の設定です。

続いて、テーブル権限の追加です。例では T1ネームスペースにある Sample スキーマのテーブルに対して全権限付与しています。

[3] AppDeveloperロールに山田さん(Yamada)と鈴木さん(Suzuki)さんを設定
AppDeveloper ロールの設定は、以下の通りです。

[4] SqlDeveloperロールに鈴木さん(Suzuki)さんを設定
続いて、SqlDeveloper ロールのメンバーに鈴木さん(Suzuki)を追加したときの図です。

[5] テスト
設定が正しく行えているかテストします。
山田さんで管理ポータルにログインしたときは、SQLメニューでSQLの実行が行えませんが、鈴木さんでログインしたときはSQLの実行が行えます。

鈴木さんの場合は以下の通りです。

ここでご紹介した用語や設定方法は、InterSystems 製品共通の内容です。
適切なロールをユーザに付与することで、管理ポータルやアプリケーションに対して、アクセス可否を決定できます。