Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ データベース管理 » ユーザとデータベースのセキュリティ » ユーザのセキュリティ (ロールと権限) » チュートリアル:ロールと権限の付与 (SQL の場合)

 

レッスン 5:ユーザ B のロールと権限を表示 (SQL の場合)

他のロールのメンバーシップを介してユーザが継承したものも含め、ユーザのロール、システム権限、オブジェクトレベル権限を表示できます。

前提条件

このレッスンでは、このチュートリアルのこれまでのレッスンをすべて完了したことを前提としています。レッスン 4:ユーザ A をユーザ拡張ロールに変換し、そのロールをユーザ B に付与する (SQL の場合)を参照してください。

 ♦ タスク
  1. Interactive SQL で、次の文を実行して管理権限をはじめとしたユーザ B のロールと権限を表示します。

    CALL sp_displayroles ( 'UserB', 'expand_down' );
    role_name parent_role_name grant_type role_level
    UserA (NULL) NO ADMIN 1
    PUBLIC (NULL) NO ADMIN 1
    dbo PUBLIC NO ADMIN 2
    PUBLIC UserA NO ADMIN 2
    DebugAndFix UserA ADMIN 2
    BACKUP DATABASE UserA NO ADMIN 2
    VALIDATE ANY OBJECT UserA NO ADMIN 2
    ALTER ANY OBJECT DebugAndFix NO ADMIN 3
    DEBUG ANY PROCEDURE DebugAndFix NO ADMIN 3
    dbo PUBLIC NO ADMIN 3

    role_level 値を継承の階層にあるレベルと考えます。UserB はレベル 1 です。

    • role_level 1 のローから、UserA ロールが UserB に直接付与されたことがわかります。また、PUBLIC ロールが UserB に直接付与されたこともわかります。PUBLIC ロールは自動的に新規ユーザに付与されます。

    • role_level 2 のローから、UserB は UserA から dbo および PUBLIC ロールを継承していることがわかります。また、UserB は、ロールに対する管理権限を含む DebugAndFix ロールも UserA から継承しています。最終的に、UserB は、UserA に付与された BACKUP DATABASE および VALIDATE ANY OBJECT システム権限を継承します。

    • role_level 3 のローから、DebugAndFix ロールから継承した UserA から、UserB が ALTER ANY OBJECT および DEBUG ANY PROCEDURE システム権限を継承していることがわかります。また、UserB は、今回は作成時に DebugAndFix ロールに自動的に付与された PUBLIC ロールから dbo を再度継承します。

  2. 次の文を実行して、UserB が持つオブジェクトレベル権限を表示します。

    CALL sp_objectpermission ( 'UserB' );
    grantor grantee object_name owner object_type column_name permission grantable
    ... ... ... ... ... ... ... ...
    DBA UserA Employees GROUPO TABLE (NULL) SELECT Y
    DBA UserA Employees GROUPO TABLE (NULL) UPDATE Y
    SYS PUBLIC spt_collation_map dbo TABLE (NULL) SELECT N
    ... ... ... ... ... ... ... ...

    ユーザは PUBLIC ロールのメンバーになることで多くのものを継承しているため、結果セットは非常に長くなります。ただし、興味のあるローは上記テーブルの 2 番目と 3 番目のローです。このローは、UserB が Employees テーブルの SELECT および UPDATE 権限を継承していることを反映しているためです。また、これら 2 つの権限がユーザ DBA により付与されたこともわかります。

  3. オブジェクトレベル権限の管理権限は継承不可であるため、DBA が UserA に Employees テーブルでの SELECT および UPDATE 権限を付与する権限を与えた場合でも、UserB は管理権限を継承しません。これらのローの付与可能カラムの Y は、UserA が権限に対する管理権限を持っていることを示します。

結果

UserB に付与、および UserB から継承するロールと権限を検証しました。

 参照