web-dev-qa-db-ja.com

Oracleの特定のタイプで実行を許可する

パッケージを作成し、コレクションのタイプを次のように定義しました。

create or replace package <schema>.<package> as 

-------------------------------------
   type <type> is table of <something>;
-------------------------------------

...
   function <func>(
      ...
      <param> in <type>,
      ...
    )
      return pls_integer;
...

この関数を呼び出さなければならないユーザーがいますが、typeコレクションを実行する権限がないようです。私はそれを解決することができました

GRANT EXECUTE ANY TYPE TO <user>;

しかし、私はセキュリティプロトコルに縛られており、ユーザーがデータ、スキーマ、ブループリント、またはオブジェクトにアクセスする必要があるのは、それらが確実に必要な場合を除きます。だから私はユーザーに特定のタイプに対する明示的な許可を与えたいです<type>、ただし次のステートメントを呼び出すとエラーが発生します。

GRANT EXECUTE TYPE ON <schema>.<package>.<type> to <user>;

Error report -
SQL Error: ORA-00990: missing or invalid privilege
00990. 00000 -  "missing or invalid privilege"
*Cause:    
*Action:
1
Cunning

パッケージ自体にEXECUTEを付与する必要があります。セキュリティが主な懸念事項である場合は、タイプのみの新しいパッケージを作成できますが、特定のユーザーがパッケージ仕様で定義された一部またはすべてのオブジェクトにのみアクセスできるように指定することはできません。

1
a1ex07