他のロールのメンバーシップを介してユーザが継承したものも含め、ユーザのロール、システム権限、オブジェクトレベル権限を表示できます。
前提条件
このレッスンでは、このチュートリアルのこれまでのレッスンをすべて完了したことを前提としています。レッスン 4:ユーザ A をユーザ拡張ロールに変換し、そのロールをユーザ B に付与する (SQL の場合)を参照してください。
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 を再度継承します。
次の文を実行して、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 により付与されたこともわかります。
オブジェクトレベル権限の管理権限は継承不可であるため、DBA が UserA に Employees テーブルでの SELECT および UPDATE 権限を付与する権限を与えた場合でも、UserB は管理権限を継承しません。これらのローの付与可能カラムの Y は、UserA が権限に対する管理権限を持っていることを示します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |