2

SQL Oracle Developerの権限、権限に混乱しています。作成されたユーザーは、すべてのスキーマ/ユーザーのテーブルにアクセスできます。データベース内の特定のユーザーが自分のテーブルにのみアクセスするように制限したい(ALTER、DROP、UPDATEなど)。誰かが私にこのタスクを実行する方法を指定できますか?

つまり、ユーザーが自分のテーブルにのみアクセスするためのシステム特権から選択する特権を意味します。ありがとうございました

4

1 に答える 1

4

ユーザーは、次の場合にのみ、スキーマ外のテーブルに対する権限を持ちます。

  • 各テーブルに対するオブジェクトレベルの権限が(直接またはロールを介して)ユーザーに付与されている、または
  • 特定のタイプのすべてのオブジェクトにアクセスできるようにするシステムレベルの特権が(直接またはロールを介して)ユーザーに付与されています。

ユーザーにシステムレベルの特権(つまりSELECT ANY TABLE)が付与されている場合は、システムレベルの特権を取り消すことができます。ユーザーに各テーブルに対する明示的な特権が付与されている場合は、各テーブルに対する特権を取り消す必要があります。

私の推測では、ユーザーにDBAは1つ以上のANYシステム特権を含む役割(場合によっては役割)が付与されています。その場合は、ユーザーからロールを取り消すか、ロールから特権を取り消す必要があります。

ユーザーにはどのような役割が付与されますか?

SELECT granted_role
  FROM dba_role_privs
 WHERE grantee = <<the user name>>

ユーザーにはどのようなシステム権限が付与されますか?

SELECT privilege
  FROM dba_sys_privs
 WHERE grantee = <<the user name>>

ユーザーに付与されるロールにはどのようなシステム権限が付与されますか?

SELECT *
  FROM dba_sys_privs
 WHERE grantee IN (SELECT granted_role
                     FROM dba_role_privs
                    WHERE grantee = <<the user name>>)
于 2012-07-13T20:49:03.843 に答える