ロールの変更には、ロールに権限を追加するか、ロールから権限を削除することが含まれます。
ロールに権限を追加する
前提条件
ロールにシステム権限またはオブジェクト権限を付与する際、現在のユーザーが付与される権限を保有していること、および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 ADMID 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;