Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

例 4 : $SYSTEM.Security.Check

この例では、$SYSTEM.Security.Check メソッドを試します。このメソッドは、特権をチェックし、コード・ブロックの未承認実行を防ぐために、コード内で使用できます。

クラス SecurityTutorial.AuthorizationTests には、ProtectedMethod というメソッドがあります。このメソッドは、コード・ブロックの保護に $SYSTEM.Security.Check を使用します。メソッドの実行を試行するユーザが ProtectedMethod:USE 特権を持っている場合、このメソッドは、正常に $Username の値を返します。ユーザがこの特権を持っていない場合、メソッドはエラーを返します。


ClassMethod ProtectedMethod() As %String
{ 
 if ($SYSTEM.Security.Check("ProtectedMethod","U"))
 {
  Quit $Username
 }
 Else
 {
  Quit "Error: Insufficient Privileges"
 }
}   

この例を使用する手順は次のとおりです。

  1. まだ USER ネームスペースの Caché に SecurityTutorial.AuthorizationTests をインポートしていない場合は、これをインポートします。

  2. ProtectedMethodExample という名前の新しいロールを作成します。このロールに %Development:USE および %DB_USER:RW を与えます。

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

  4. ターミナルを開き、$SYSTEM.Security.Login を使用して、前の手順で作成したユーザとしてログインします。SecurityTutorial.AuthorizationTests ProtectedMethod メソッドの実行を試みます。このユーザはまだ ProtectedMethod:USE を持っていないため、このメソッドは "エラー: 不十分な権限" を返します。

    
    USER>Write $System.Security.Login("ProtMethodUser","PMU")
    1    
    USER>Write ##class(SecurityTutorial.AuthorizationTests).ProtectedMethod()
    Error: Insufficient Privileges
        
    
    
  5. ProtectedMethod という名前の新しいリソースを作成します。このリソースには、パブリック許可を割り当てません。ProtectedMethodExample ロールに ProtectedMethod:USE を与えます。

  6. さきほど作成した、ProtectedMethodExample ロールのメンバであるユーザとしてログインしている状態で、SecurityTutorial.AuthorizationTestsProtectedMethod を実行します。ここで、ユーザは ProtectedMethod:USE を持っているので、メソッドは True の分岐を実行し、$Username の値を返します。

    
    USER>Write ##class(SecurityTutorial.AuthorizationTests).ProtectedMethod()
    ProtMethodUser
         
    
Note:

$SYSTEM.Security.Check の詳細は、"Caché セキュリティ管理ガイド" の "特権および許可" セクションにある "特権の確認" を参照してください。

FeedbackOpens in a new tab