0

System ユーザーを使用して、以下のステートメントを使用して 2 人のユーザーを作成しました。ADMIN_USER にすべての権限を持たせ、このユーザーが一連のテーブルを作成するようにします。ADMIN_USER によって作成された 2 つのテーブルのデータを送り込む外部プロセスがあります。問題は、ADMIN_USER がすべてのテーブル構造を作成する場合、EXTERNAL_USER に、TABLE_A と TABLE_B のみを読み取り、更新、および挿入する機能を与えるにはどうすればよいかということです。ADMIN_USER または SYSTEM ユーザーとしてログインしているときに許可ステートメントを実行しますか? 私はオラクル11gを使用しています。

SYSTEM ユーザーとしてログインしている間に両方を作成:

create user "ADMIN_USER" identified by "p@ssword123";      
grant create session, grant any privilege to ADMIN_USER;

create user "EXTERNAL_USER" identified by "p@ssword321";

ADMIN_USER としてログイン:

GRANT create session, select, update, insert 
   ON TABLE_A
   TO EXTERNAL_USER;
GRANT create session, select, update, insert 
   ON TABLE_B
   TO EXTERNAL_USER;
4

1 に答える 1

2

ADMIN_USERまず、GRANT ANY PRIVILEGE特権を付与したいと思う可能性は非常に低いです。ユーザーが所有するテーブルに対するオブジェクト レベルの権限を付与するために、ユーザーに権限は必要ありません。ANY特権は非常に強力です。別のユーザーに任意の権限を付与できるユーザーは、任意のユーザー (ユーザー自身を含む) を DBA にすることができます。それはあなたが望むものではありません。

現実的にはSYSTEM、ユーザーに必要なシステム権限を付与する必要があります。次に、オブジェクトの所有者として、オブジェクト レベルの権限を付与します。

としてSYSTEM

CREATE USER admin_user 
  IDENTIFIED BY "p@ssword123"
  DEFAULT TABLESPACE tablespace_name
  QUOTA 10M ON tablespace_name;
CREATE USER external_user IDENTIFIED BY "p@ssword321";

GRANT CREATE SESSION, CREATE TABLE TO admin_user;
GRANT CREATE SESSION TO external_user;

としてADMIN_USER

<<create the tables>>

GRANT select, insert, update
   ON table_a
   TO external_user;
GRANT select, insert, update
   ON table_b
   TO external_user;

DBA は、オブジェクト レベルの権限も付与できる必要があります。通常は、オブジェクト所有者アカウントを使用することをお勧めします。

于 2013-11-01T04:16:25.910 に答える