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