必要に応じて、ユーザーに付与または取り消すロールを指定できます。
1人のユーザーに複数のロールを付与することができます。ロールを付与した後、そのうちどのロールを有効にし、どのロールを無効にするかを設定できます。ユーザーは有効なロールのすべての権限を持ち、無効なロールに含まれる権限は持ちません。
ログイン時に有効または無効にするロールの指定
OceanBaseデータベースのOracleモードでは、ALTER USERステートメントのDEFAULT ROLE句を使用して、他のユーザーがログイン時に有効または無効にするロールを指定できます。
前提条件
現在のユーザーは、付与されたロールを持っている必要があり、
GRANT OPTION権限も持っている必要があります。これにより、ロールの有効化または無効化操作を実行できます。現在のユーザーは、
UPDATE USERシステム権限も持っている必要があります。これにより、ALTER USERコマンドを実行できます。
現在持っている権限を確認する操作については、ユーザー権限の確認を参照してください。GRANT OPTION権限がない場合は、管理者に連絡して追加してもらってください。ユーザーに権限を追加する関連操作については、直接権限の付与を参照してください。現在持っているロールを確認する操作については、ロールの確認を参照してください。
注意事項
DEFAULT ROLE句は、GRANTステートメントで直接ユーザーに付与されたロール、またはCREATE ROLE権限を持つユーザーが作成したロールのみを指定することをサポートします。DEFAULT ROLE句では、以下のロールを指定することはできません:
ユーザーに付与されていないロール
ユーザーに付与されていないロールを有効または無効にすることはできません。ユーザーのロール権限に関する操作については、ロールの付与を参照してください。
他のロールから付与されたロール
他のロールから付与されたロールを有効または無効にすることはできません。ロールの付与に関する操作については、ロールの付与を参照してください。
ロールの有効化または無効化の構文
主なシナリオは以下のとおりです:
ログイン時に有効にする、ユーザーに付与された1つ以上のロールの指定
SQLステートメントは次のとおりです:
obclient> ALTER USER user_name DEFAULT ROLE role_name;ログイン時に有効にする、ユーザーに付与されたすべてのロールの指定
SQLステートメントは以下のとおりです:
obclient> ALTER USER user_name DEFAULT ROLE ALL;ログイン時に有効になるユーザーが付与されたロールを指定します。
SQLステートメントは以下のとおりです:
obclient> ALTER USER user_name DEFAULT ROLE ALL EXCEPT role_name;ログイン時に無効になるユーザーが付与されたすべてのロールを指定します。
SQLステートメントは以下のとおりです:
obclient>ALTER USER user_name DEFAULT ROLE NONE;
ステートメントの使用方法:
role_name:ロール名。複数のロール名は半角カンマ(,)で区切ります。ALL:有効なユーザーが付与されたすべてのロールを表します。EXCEPT句は、EXCEPT句でリストされたロールを除き、有効なユーザーが付与された他のすべてのロールを示します。複数のロール名は半角カンマ(,)で区切ります。NONE:無効なユーザーが付与されたすべてのロールを表します。
実行例
ログイン時に有効になるユーザーが付与されたロール role1 を指定します。
obclient>ALTER USER test DEFAULT ROLE role1;
ALTER USER ステートメントの詳細については、ALTER USERを参照してください。
現在のセッションで有効または無効になるロールを指定する
OceanBaseデータベースのOracleモードでは、SET ROLE ステートメントを使用して、現在のセッション内で、現在ログインしているユーザーが付与されたロールを有効または無効にできます。
説明
SET ROLE ステートメントで有効または無効になるロールは、現在のセッションにのみ影響し、後のセッションには影響しません。
主な使用シナリオは以下のとおりです:
現在のセッションで、現在ログインしているユーザーが付与された1つまたは複数のロールを有効にする
SQLステートメントは以下のとおりです:
obclient> SET ROLE role_name [ IDENTIFIED BY password ];現在のセッションで有効にする、現在ログインしているユーザーが取得したすべてのロールを指定します。
SQLステートメントは以下のとおりです:
obclient> SET ROLE ALL;現在のセッションで有効にする、現在ログインしているユーザーが取得した一部のロールを指定します。
SQLステートメントは以下のとおりです:
obclient> SET ROLE ALL EXCEPT role_name;現在のセッションで無効にする、現在ログインしているユーザーが取得したすべてのロールを指定します。
SQLステートメントは以下のとおりです:
obclient> SET ROLE NONE;
ステートメントの使用方法:
role_name:ロール名。複数のロール名は半角カンマ(,)で区切ります。IDENTIFIED BY password:有効なロールのパスワードを指定します。新規ロール作成時にそのロールにパスワードが設定されている場合は、そのロールを有効にするためにパスワードを指定する必要があります。ロールの作成に関する操作と説明については、ロールの作成を参照してください。
ALL:現在のセッションで、現在ログインしているユーザーが取得したすべてのロールを有効にすることを示します。注意
有効なユーザーが取得したすべてのロールを指定する場合、取得したロールの中にパスワードが設定されているロールがあると、システムはエラーを返します。
EXCEPT句は、EXCEPT句で列挙されたロールを除き、現在ログインしているユーザーが取得した他のすべてのロールを有効にすることを示します。複数のロール名は半角カンマ(,)で区切ります。NONE:現在ログインしているユーザーが取得したすべてのロールを無効にすることを示します。
例:
パスワード
******で識別されるロールrole1を、現在のセッションで有効にします。obclient> SET ROLE role1 IDENTIFIED BY ******; Query OK, 0 rows affectedロール
role2を除くすべてのロールを、現在のセッションで有効にします。obclient> SET ROLE ALL EXCEPT role2; Query OK, 0 rows affected
SET ROLE ステートメントの詳細については、SET ROLEを参照してください。