Oracle

Oracle:對授予我的使用者的權限有點困惑

  • April 10, 2022

我想在我的數據庫上向我的非 dba 使用者授予很少的權限。我給創建會話,創建表,視圖等。這個查詢似乎證實了

SELECT privilege from USER_SYS_PRIVS;

   PRIVILEGE
   ------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE
CREATE VIEW
CREATE TABLE
CREATE SESSION

但我看到我可以將角色和使用者創建為非特權使用者

create role mich identified by blablabla;

Role created


SQL> create user mich1 identified by blablabla;

User created

對於一個簡單的使用者來說,創建使用者和角色的權限是不是太多了?

作為 DBA 使用者,我嘗試撤銷…

SQL> revoke create user from myuser;
revoke create user from myuser
*
ERROR at line 1:
ORA-01952: system privileges not granted to 'MYUSER'

我檢查我的使用者是否具有 dba 角色(我以 dba 使用者身份執行這些命令)

SELECT granted_role FROM dba_role_privs where grantee='MYUSER';

GRANTED_ROLE
--------------------------------------------------------------------------------
IMP_FULL_DATABASE
RESOURCE
MICH
EXP_FULL_DATABASE
CONNECT

SQL> revoke DBA from myuser;
revoke DBA from myuser
*
ERROR at line 1:
ORA-01951: ROLE 'DBA' not granted to 'MYUSER'

我從我的“非特權”使用者中刪除了 MICH 和 RESOURCE 角色,但他仍然可以創建其他使用者和角色。

另一個奇怪的事情:

作為非特權使用者,我做了..

SQL> select * from SESSION_PRIVS;

PRIVILEGE
------------------------------------------------------------------------------------------------------------------------
AUDIT SYSTEM
CREATE SESSION
CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
CREATE USER
BECOME USER
ALTER USER
DROP USER....

– 其他 69 行..

作為一個 sysdba 我做了..

revoke CREATE USER from myuser
*
ERROR at line 1:
ORA-01952: system privileges not granted to 'MYUSER'

找到解決方案。我從使用者中刪除了 CONNECT

revoke CONNECT from myuser

我會根據需要分配權限

grant create session, create table to myuser

現在創建使用者權限不足(錯誤 ORA-01031),當我以非 dba 使用者身份嘗試時

您的使用者顯然具有 DBA 角色。看看這個

SELECT granted_role FROM dba_role_privs where grantee='xxx';

其中 xxx 是您的使用者名(通常為大寫字母)

引用自:https://dba.stackexchange.com/questions/310752