Oracle 11gでユーザーを作成し、そのユーザーに特定のストアドプロシージャとそのプロシージャ内のテーブルのみを実行する権限を付与する方法について、どなたかアドバイスをお願いします。
どうすればいいのかよくわかりません。
SYSTEMとして接続します。
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
も必要になる場合があります。
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
をプロシージャが使用するどのテーブルにも追加する必要があります。
オラクルのドキュメントは包括的で、オンラインで無料で提供されています。 これを使って学ぶべきです。 CREATE USER]1とGRANTの構文はここにあります。
データベースに接続するためには、ユーザーにCREATE SESSION権限を付与する必要があります。
ストアドプロシージャに対する新しいユーザーの権限を許可するには、[EXECUTE]権限を付与する必要があります。 付与者は以下のいずれかでなければなりません。
通常、ストアド プロシージャを使用するために、ストアド プロシージャが使用するオブジェクトに対する権限を付与する必要はないことに注意してください。 デフォルトの権限では、プロシージャの所有者と同じ権限でプロシージャを実行し、いわばプロシージャの実行時に所有者の権限を継承することになります。 これはAUTHID句でカバーされています。 デフォルトはdefiner(つまりプロシージャの所有者)です。 AUTHIDがCURRENT_USER(起動者、つまり新しいユーザー)に設定されている場合のみ、プロシージャが使用するオブジェクトの権利を付与する必要があります。 詳しくはこちらをご覧ください。