Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

例 2 : %Development リソース

この例では、%Development:USE 特権を持つロールを作成します。このロールは、そのメンバにターミナルを使用する特権を与えます。ただし、このロールはそのメンバに USER データベース内のコードを実行する特権を与えません。

  1. DevOnly という名前のロールを作成します。

  2. この新しいロールに %Development:USE 特権を割り当てます。

  3. ユーザを 1 人作成し、このユーザを DevOnly ロールに追加します。

  4. ターミナルを開き、$SYSTEM.Security.Login を使用して、前の手順で作成したユーザとしてログインします。DevOnly ロールは、ターミナルを使用する特権をこのユーザに与えます。

  5. SecurityTutorial.AuthorizationTestsHelloUser メソッドの実行を試みます。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 ロールのメンバにコードの実行が許可されます。

FeedbackOpens in a new tab