ロールの変更には、ロールに権限を追加するか、ロールから権限を削除する操作が含まれます。
ロールに権限の追加
前提条件
ロールにシステム権限またはオブジェクト権限を付与する場合、現在のユーザーは付与される権限を持っている必要があり、GRANT OPTION 権限を持っているか、GRANT ANY OBJECT PRIVILEGE 権限および GRANT ANY PRIVILEGE 権限を持っている必要があります。これらの権限がない場合、付与は成功しません。
現在持っている権限を確認する操作については、ユーザー権限の確認を参照してください。該当する権限がない場合は、管理者に連絡し、追加してもらってください。ユーザーに権限を追加する関連操作については、直接権限の付与を参照してください。現在のユーザーが持っているロールを確認する操作については、ロールの確認を参照してください。
ステートメントと例
ロールにオブジェクト権限を追加するステートメントは以下のとおりです:
GRANT obj_privilege ON obj_clause TO role_name;
obj_clause:
relation_name
| relation_name '.' relation_name
ロールにシステム権限を追加するステートメントは以下のとおりです:
GRANT {system_privilege | ALL PRIVILEGES}
TO role_name [WITH ADMIN OPTION];
ステートメントの使い方:
obj_privilege:付与するオブジェクト権限のタイプを指定します。複数の権限を同時にユーザーに付与する場合は、権限タイプを半角カンマ(,)で区切ります。Oracleモードでサポートされているすべてのオブジェクト権限タイプについては、Oracleモードの権限分類を参照してください。
obj_clause:付与するオブジェクト権限が関係するオブジェクトを指定します。system_privilege:付与するシステム権限のタイプを指定します。複数の権限を同時にユーザーに付与する場合は、権限タイプを半角カンマ(,)で区切ります。Oracleモードでサポートされているすべてのシステム権限タイプについては、Oracleモードの権限分類を参照してください。
WITH ADMIN OPTION:指定された権限の再付与を許可し、権限の取り消し時にカスケードしないことを示します。
例:
テーブル test1.tbl1 の SELECT オブジェクト権限をロール role1 に付与します。
obclient> GRANT SELECT ON test1.tbl1 TO role1;
また、PUBLICロールに権限を追加することもできます。SQLステートメントは以下のとおりです:
注意
データベースのセキュリティ上の理由から、OceanBaseデータベースでは、業務ニーズに基づいて適切に権限を付与することを推奨します。このロールをユーザーに無計画に付与しないでください。
GRANT [privilege_list] TO PUBLIC;
権限を追加すると、システムはその権限をテナント内のすべてのユーザーの権限ドメインに追加します。すべてのユーザーは即座にその権限で許可された操作を実行できるようになります。PUBLICロールの詳細については、ロール管理の概要を参照してください。
GRANTステートメントの詳細については、GRANTを参照してください。
ロールから権限を取り消す
前提条件
ロールのシステム権限、オブジェクト権限、またはロールを取り消す場合、現在のユーザーは取り消す権限またはロールを持っている必要があり、GRANT OPTION権限、またはGRANT ANY OBJECT PRIVILEGE権限、GRANT ANY PRIVILEGE権限、またはGRANT ANY ROLE権限を持っている必要があります。これらの権限を持っていない場合は、取り消しは成功しません。
現在持っている権限を確認する操作については、ユーザー権限の確認を参照してください。該当する権限がない場合は、管理者に連絡し、権限の追加を依頼してください。ユーザーに権限を追加する操作については、直接権限の付与を参照してください。現在のユーザーが持っているロールを確認する操作については、ロールの確認を参照してください。
注意事項
注意
システムのデフォルトロール STANDBY_REPLICATION の権限を取り消すと、ネットワークベースの物理スタンバイデータベースのログ同期に影響を与える可能性があります。慎重に操作してください。
ステートメントと例
ロールからオブジェクト権限を取り消すステートメントは以下のとおりです:
REVOKE obj_privilege ON obj_clause FROM role_name;
obj_clause:
relation_name
| relation_name '.' relation_name
ロールからシステム権限を取り消すステートメントは以下のとおりです:
REVOKE {system_privilege | ALL PRIVILEGES}
FROM role_name;
ステートメントの使い方:
obj_privilege:取り消すオブジェクト権限のタイプを指定します。複数の権限を同時に取り消す場合は、権限タイプを半角カンマ(,)で区切ります。obj_clause:取り消すオブジェクト権限が関係するオブジェクトを指定します。system_privilege:取り消すシステム権限のタイプを指定します。複数の権限を同時に取り消す場合は、権限タイプを半角カンマ(,)で区切ります。
ロール role1 からシステム権限 CREATE SESSION を取り消す例は以下のとおりです:
obclient> REVOKE CREATE SESSION FROM role1;