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?

例 3 : %DB_USER リソース

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

  1. まだクラス SecurityTutorial.AuthorizationTests を USER ネームスペースの Caché にインポートしていなければ、ここでインポートします。

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

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

    1. %DB_USER:READ

    2. %Development:USE

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

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

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

    generated description: userreadprivs 20111

  7. ここで、SecurityTutorial.AuthorizationTestsUpdateTestData メソッドの実行を試みます。このメソッドは、USER データベースにデータを書き込みます。このユーザは %DB_USER:WRITE を持っていないため、このメソッドは失敗し、<PROTECT> エラーが生成されます。

    generated description: writefailuser 20111

  8. 次に、UserDatabase ロールを編集し、%DB_USER:READ,WRITE を与えます。

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

FeedbackOpens in a new tab