web-dev-qa-db-ja.com

シノニムと基になるテーブルへのアクセス権

1 /同義語と基になるオブジェクトの特権はどのように関連していますか?同義語の権利がある場合、彼は自動的にテーブルの権利を持ち、その逆も同様ですか?

Oracle 言う

シノニムに対するオブジェクト特権を付与すると、実際には基になるオブジェクトに対する特権が付与され、シノニムはGRANTステートメント内のオブジェクトのエイリアスとしてのみ機能します。

これは、同義語の特権で十分であることを意味します。これにより、テーブル特権がバイパスされます。

別のソース は、テーブルへのアクセス権で十分であり、同義語特権には意味がないことを示しています。

シノニムに対する特権または基になるテーブルのいずれかで十分であることを意味しますか?

2 /動作はプライベートシノニムとパブリックシノニムで同じですか。ユーザーが「表示/アクセス」するための同義語の特権を付与する例は実際には見たことがありません。プライベートシノニムの特権をユーザーに付与するにはどうすればよいですか?

4
Kenny

Oracleのドキュメントとあなたが参照したメッセージはどちらもまったく同じことを言っています。シノニムでは特権は付与されません。シノニムに特権を付与しようとすると、データベースは実際にはシノニムによって参照されるオブジェクトに付与を実行します。したがって、シノニムによって参照されるオブジェクトに対して実際の付与が行われるため、シノニムがパブリックであるかプライベートであるかは関係ありません。

幸運を祈ります。

編集

何が起こるかを示しましょう:

-- Logged in as user BOB2

CREATE TABLE RPJ_TEST (N NUMBER);

SELECT *
  FROM DBA_TAB_PRIVS
  WHERE TABLE_NAME = 'RPJ_TEST';

-- the above statement returns no rows

CREATE SYNONYM RPJ_TEST_SYN  -- create synonym
  FOR RPJ_TEST;

SELECT *
  FROM DBA_TAB_PRIVS
  WHERE TABLE_NAME = 'RPJ_TEST';

-- the above statement returns no rows

GRANT SELECT ON RPJ_TEST TO BOB;  -- grant on table

SELECT *
  FROM DBA_TAB_PRIVS
  WHERE TABLE_NAME = 'RPJ_TEST';

-- the above statement returns
GRANTEE     OWNER   TABLE_NAME  GRANTOR PRIVILEGE   GRANTABLE  HIERARCHY
BOB         BOB2    RPJ_TEST    BOB2    SELECT      NO         NO

GRANT UPDATE ON RPJ_TEST_SYN TO BOB2;  -- grant "on synonym" actually performs grant on table

SELECT *
  FROM DBA_TAB_PRIVS
  WHERE TABLE_NAME = 'RPJ_TEST';

GRANTEE     OWNER  TABLE_NAME   GRANTOR  PRIVILEGE GRANTABLE  HIERARCHY
BOB         BOB2   RPJ_TEST     BOB2     SELECT    NO         NO
BOB         BOB2   RPJ_TEST     BOB2     UPDATE    NO         NO

シノニムRPJ_TEST_SYNでの付与後、シノニムによって参照されるテーブルで付与される特権が変更されていることに注意してください。

Oracle Docから「パブリックシノニムはPUBLICという名前の特別なユーザーグループによって所有され、データベース内のすべてのユーザーがアクセスできます。プライベートシノニムは特定のユーザーのスキーマに含まれ、ユーザーと基礎となる被付与者のみが使用できます。オブジェクト。」

スキーマBのテーブルXにパブリックシノニムPUBSがある場合、ユーザーAはユーザーBのテーブルXにアクセスできます。スキーマBのテーブルYにプライベートシノニムPVTSがある場合、ユーザーAは、上記のように明示的にアクセスが許可されない限り、ユーザーBのテーブルYにアクセスできません。

チェック OracleDoc

2
ArtBajji