例 2 : %Development リソース
この例では、%Development:USE 特権を持つロールを作成します。このロールは、そのメンバにターミナルを使用する特権を与えます。ただし、このロールはそのメンバに USER データベース内のコードを実行する特権を与えません。
-
まだ SecurityTutorial.AuthorizationTests クラスを Caché の USER ネームスペースにインポートしていなければ、ここでインポートします。このクラスは、Authorization.xml にあります。
-
DevOnly という名前のロールを作成します。
-
この新しいロールに %Development:USE 特権を割り当てます。
-
ユーザを 1 人作成し、このユーザを DevOnly ロールに追加します。
-
ターミナルを開き、$SYSTEM.Security.Login を使用して、前の手順で作成したユーザとしてログインします。DevOnly ロールは、ターミナルを使用する特権をこのユーザに与えます。
-
SecurityTutorial.AuthorizationTests の HelloUser メソッドの実行を試みます。DevOnly ロールのメンバであるユーザは、USER データベースに保存されているコードを実行するための十分な特権を持っていません。実行しようとすると、<PROTECT> エラーが生成されます。
コードが USER データベースに格納されていることが問題です。コードを実行するユーザは、USER データベースの読み取り許可が必要です。DevOnly ロールにはこのような許可が与えられていません。%DB_USER:READ 特権を追加して DevOnly を拡張すると、DevOnly ロールのメンバにコードの実行が許可されます。
Authorization.xml は install-dir\Dev\tutorials\security\ にあります。 Caché を標準インストールしている場合、install-dir は C:\InterSystems\Cache になります。スタジオを使用して、アプリケーション・ファイルを USER ネームスペースにインポートします。手順については、"ターミナルを使用したコードのインポート" を参照してください。この例では、Caché が最小のセキュリティでインストールされていることを前提としています。