REVOKE (ロール) ステートメント

この形式の REVOKE ステートメントはロールを、ユーザー、グループ、またはその他のロールから取り消します。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込んだり、動的 SQL ステートメントを使用して発行したりすることができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。

許可

ステートメントの許可 ID によって保持されている特権には、少なくとも以下のいずれかの権限が含まれていなければなりません。
  • ロールに対する WITH ADMIN OPTION
  • SECADM 権限
SECADM 権限は、authorization-name から ADMIN OPTION FOR role-name、またはそのロールに対する WITH ADMIN OPTION を持つ authorization-name から role-name を取り消すために必要です。

構文

Read syntax diagramSkip visual syntax diagramREVOKE ADMIN OPTION FOR ROLE ,role-name FROM ,USERGROUPROLEauthorization-namePUBLIC BY ALL

説明

ADMIN OPTION FOR
role-name に対する WITH ADMIN OPTION を取り消します。 authorization-name または PUBLIC (PUBLIC が指定されている場合) は、role-name に対する WITH ADMIN OPTION を保持していなければなりません (SQLSTATE 42504)。 ADMIN OPTION FOR 節が指定される場合、ロールそのものは取り消されず、ROLE role-name に対する WITH ADMIN OPTION だけが取り消されます。
ROLE ロール名
取り消すロールを指定します。 role-name は、authorization-name または PUBLIC (PUBLIC が指定されている場合) (SQLSTATE 42504) に対して既に付与されている現行サーバー (SQLSTATE 42704) の既存のロールを識別するものでなければなりません。
FROM
ロールを誰から取り消すかを指定します。
ユーザー
authorization-name がユーザーであることを指定します。
GROUP
authorization-name がグループであることを指定します。
ROLE
authorization-name が現行サーバーにおける既存のロールを識別することを指定します (SQLSTATE 42704)。
権限名
1 つ以上のユーザー、グループ、またはロールの許可 ID のリストを指定します。 この許可 ID のリストに、このステートメントを発行するユーザーの許可 ID を含めることはできません (SQLSTATE 42502)。
PUBLIC
指定されたロールを PUBLIC から取り消します。
BY ALL
ロールの付与者が誰であるかに関係なく、ロールが明示的に付与された指定の authorization-name からそれぞれ、role-name を取り消します。 これがデフォルトの動作です。

ルール

  • 指定されたそれぞれの authorization-nameキーワード USER、GROUP、または ROLE のいずれも指定されない場合、被認可者を authorization-name とする SYSCAT.ROLEAUTH カタログ・ビューで指定されたオブジェクトのすべての行について、次のことが言えます。
    • GRANTEETYPE が U の場合、USER であると見なされます。
    • GRANTEETYPE が G の場合、GROUP であると見なされます。
    • GRANTEETYPE が R の場合、ROLE であると見なされます。
    • GRANTEETYPE の値が同じでない場合、エラーが戻されます (SQLSTATE 56092)。
  • あるロールがルーチンに対する EXECUTE 特権またはシーケンスに対する USAGE 特権を持っていて、パッケージ以外の SQL オブジェクトがそのルーチンまたはシーケンスに依存している場合には、role-name はそのロール、または role-name を含むそのようなロールを識別するものであってはなりません (SQLSTATE 42893)。 SQL オブジェクトの所有者は、authorization-name または authorization-name のメンバーである任意のユーザーのいずれかです (authorization-name はロール)。

  • ロールが authorization-name または PUBLIC から取り消されると、そのロールが保持する特権はすべて、authorization-name またはそのロールを介した PUBLIC で使用できなくなります。
  • ロールを取り消すことで必ずしも、そのロールに付与された特権による特定のアクションの実行が不可能になるわけではありません。 PUBLIC、ユーザーが所属するグループ、ユーザーに付与された別のロールに他の特権が与えられている場合、あるいは DBADM などのより上位の権限をユーザーが持っている場合には、ユーザーは作業を続行できるかもしれません。

  • 例 1: ロール DOCTOR からロール INTERN を、さらにロール SPECIALIST からロール DOCTOR を取り消します。
       REVOKE ROLE INTERN FROM ROLE DOCTOR
    
       REVOKE ROLE DOCTOR FROM ROLE SPECIALIST   
  • 例 2: PUBLIC からロール INTERN を取り消します。
       REVOKE ROLE INTERN FROM PUBLIC   
  • 例 3: ユーザー BOB とグループ TORONTO からロール SPECIALIST を取り消します。
       REVOKE ROLE SPECIALIST FROM USER BOB, GROUP TORONTO BY ALL