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

例 3 : %DB_USER リソース

この例では、USER データベースのさまざまな特権と、ユーザがデータベースに保存されたデータとコードを使用できることを試してみます。

  1. ターミナルを開き、まだ UnknownUser としてログインしている間に、SecurityTutorial.AuthorizationExampleCreateTestData メソッドを実行します。これにより、この例の後半で使用するデータが作成されます。

    
    USER>Do ##class(SecurityTutorial.AuthorizationExample).CreateTestData()
    USER>Write ^TestData
    MyInitialData
         
    
  2. UserDatabase という名前の新しいロールを作成します。このロールに以下の特権を与えます。

    1. %DB_USER:READ

    2. %Development:USE

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

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

  5. SecurityTutorial.AuthorizationTestsReadTestData メソッドを実行します。このメソッドは、USER データベースからデータを読み取り、表示します。このユーザは %DB_USER:READ を持っているため、このメソッドは正常にデータを返します。

    
    USER>Do $System.Security.Login("MyUser","MyUser")
     
    USER>Write $Username,!,$Roles
    MyUser
    UserDatabase
    USER>Write ##class(SecurityTutorial.AuthorizationExample).ReadTestData()
    MyInitialData
    
    
  6. ここで、SecurityTutorial.AuthorizationExampleUpdateTestData メソッドの実行を試みます。このメソッドは、USER データベースにデータを書き込みます。このユーザは %DB_USER:WRITE を持っていないため、このメソッドは失敗し、<PROTECT> エラーが生成されます。

    
    USER>Write $System.Security.Check("%DB_USER")
    READ
    USER>Do ##class(SecurityTutorial.AuthorizationExample).UpdateTestData()
     
      Set ^TestData = "MyUpdatedData" }
      ^
    <PROTECT>zUpdateTestData+1^SecurityTutorial.AuthorizationExample.1 ^TestData,c:\intersystems\iris\mgr\user\
    USER 2d1>
    
    
  7. 次に、UserDatabase ロールを編集し、%DB_USER:READ,WRITE を与えます。

  8. さきほど作成したユーザとしてログインしている状態で、UpdateTestData メソッドを実行します。このとき、ユーザは USER データベースでの WRITE 特権を持っているので、メソッドは正常に終了します。

FeedbackOpens in a new tab