將 SELECT 或 EXECUTE 權限授予 SYS 物件
您通常可以使用角色來傳輸權限,角色中可能包含許多物件。若要授予權限給單一物件,請使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.grant_sys_object。該程序只會授予主要使用者透過角色或直接授予所取得的權限。
grant_sys_object 程序具有下列參數。
重要
針對所有參數值,除非您已使用區分大小寫的識別符來建立使用者,否則請使用大寫字母。例如,如果您執行 CREATE USER
myuser 或 CREATE USER MYUSER,資料字典會存放 MYUSER。不過,如果您在 CREATE USER
"MyUser" 中使用雙引號,資料字典則會存放 MyUser。
| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
|---|---|---|---|---|
|
|
varchar2 |
— |
是 |
要從其授予權限的來源物件名稱。物件可以是目錄、函數、套件、程序、順序、資料表或檢視。物件名稱的拼寫必須完全符合 |
|
|
varchar2 |
— |
是 |
要對其授予權限的目標物件名稱。物件可以是結構描述或角色。 |
|
|
varchar2 |
null |
是 |
— |
|
|
布林值 |
false |
否 |
設定為 |
下列範例會將名為 V_$SESSION 物件上的 SELECT 權限授予名為 USER1 的使用者。
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT'); end; /
下列範例會將名為 V_$SESSION 物件上的 SELECT 權限授予名為 USER1 且擁有 GRANT OPTION 的使用者。
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT', p_grant_option =>true); end; /
您必須使用 GRANT OPTION 或透過使用 with admin option 授予的角色直接將這些權限授予帳戶,才能夠在物件上授予權限。在最常見的情況下,您可能需要在獲授予 SELECT 角色的 DBA 檢視上授予 SELECT_CATALOG_ROLE。如果您尚未使用 with admin option 將該角色直接授予使用者,則無法轉移權限。如果您擁有 DBA 權限,就能夠將該角色直接授予另一位使用者。
下列範例會授予 SELECT_CATALOG_ROLE 和 EXECUTE_CATALOG_ROLE 給 USER1。由於使用了 with
admin option,USER1 現在可以將存取權授予給已獲授予 SELECT_CATALOG_ROLE 的 SYS 物件。
GRANT SELECT_CATALOG_ROLE TOUSER1WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1WITH ADMIN OPTION;
已獲授予 PUBLIC 的物件不需要重新授予。如果使用 grant_sys_object 程序來重新授予存取,則程序呼叫會成功。