例 2 : %Development リソース この例では、%Development:USE 特権を持つロールを作成します。このロールは、そのメンバにターミナルを使用する特権を与えます。ただし、このロールはそのメンバに USER データベース内のコードを実行する特権を与えません。 DevOnly という名前のロールを作成します。 この新しいロールに %Development:USE 特権を割り当てます。 ユーザを 1 人作成し、このユーザを DevOnly ロールに追加します。 ターミナルを開き、$SYSTEM.Security.Login を使用して、前の手順で作成したユーザとしてログインします。DevOnly ロールは、ターミナルを使用する特権をこのユーザに与えます。 SecurityTutorial.AuthorizationTests の HelloUser メソッドの実行を試みます。DevOnly ロールのメンバであるユーザは、USER データベースに保存されているコードを実行するための十分な特権を持っていません。実行しようとすると、<PROTECT> エラーが生成されます。 USER>Do $System.Security.Login("MyUser","MyUser") USER>Write $Username,!,$Roles MyUser DevOnly USER>Do ##class(SecurityTutorial.AuthorizationExample).HelloUser() DO ##CLASS(SecurityTutorial.AuthorizationExample).HelloUser() ^ <PROTECT> USER> コードが USER データベースに格納されていることが問題です。コードを実行するユーザは、USER データベースの読み取り許可が必要です。DevOnly ロールにはこのような許可が与えられていません。%DB_USER:READ 特権を追加して DevOnly を拡張すると、DevOnly ロールのメンバにコードの実行が許可されます。