パッケージとトリガーを作成するために、ユーザーが自分のスキーマに対する特権を必要とするのはなぜですか?
3 に答える
独自のスキーマで特定のタイプのオブジェクトを作成するために、ユーザーが特定の権限 (つまり、CREATE TABLE、CREATE PROCEDURE など) を必要とする理由を尋ねていますか?
もしそうなら、適切なセキュリティは最小権限の原則から始まるというのが自然な答えです。つまり、ユーザーは自分の仕事をするために本当に必要な権限だけを持ち、それ以上は持たないようにすべきです。DBA は、本番データベースのユーザー用に読み取り専用アカウントを作成したいことがよくあります (たとえば、ビジネス アナリストはさまざまな種類のアドホック レポートを作成する必要があり、開発者は特定の種類の問題をトラブルシューティングするためにアクセスする必要がある場合があります)。ユーザーがいつでも自分のスキーマでオブジェクトを作成できるとしたら、これらの読み取り専用ユーザーは、変更管理を行ったり、何もテストしたりすることなく、突如として本番データベースにコードをデプロイできるようになります。そして、それは一般的に、基本的に同じことを行うコードの急増につながります (つまり
「正式な」回答はできませんが、それがどのように機能するかの背後にある理由を突き刺すことはできます. 私が取り組んでいるプロジェクトでは、Oracle Developers がトリガーとパッケージをデータベース スキーマに展開します。しかし、Java 開発者やテスターなどのチームが他にもあります。スキーマがテスト環境、次に本番環境に移行されたら、テスターやエンド ユーザー アプリケーションが関連するトリガーやパッケージを任意に変更できるようにしたくありません。そのスキーマは、彼らが行っているテストの整合性を無効にする可能性があるため (または本番システムでさらに悪い問題を引き起こす可能性があります)。
したがって、テスト/実稼働環境内では、テスター、Java 開発者、およびエンドユーザー アプリケーションがスキーマに対してデータの読み取りと書き込みを行えるようにする必要がありますが、ベースライン コードを含むトリガーとパッケージを変更することはできません。
パッケージとトリガーを作成するために、ユーザーが自分のスキーマに対する特権を必要とするのはなぜですか。
独自のスキーマは、username.objectによって定義された所有権(または名前空間)を意味します。ユーザーが独自のスキーマでトリガーを作成する必要があるのは、次のとおりです。独自のスキーマのテーブル作成トリガー特権
ユーザーが自分のスキーマでパッケージを作成するために必要なのは、次のとおりです。パッケージの作成権限
ユーザーが別のスキーマにオブジェクトを作成したい場合、または他のオブジェクトを参照したい場合、またはテーブルスペースにストレージが必要な場合は、それらの外部オブジェクトに対するアクセス許可が必要になります。