2009-09-17 3 views
5

...これらのアクセス許可をどのように付与する必要がありますか。私は70以上のアプリケーションを持つ大規模なIT部門で働いていますが、SQLサーバーやOracleの中にはほとんどがあります。各システムには、prod、QA、およびDevインスタンスがあります。私たち(私は開発者です)はprod/qaへの読み取り専用アクセス権を持っています。 SQL Serverの開発では、devsにはdb_ownerが与えられています。これはまったく問題なく動作します。この議論は、DEV oracleデータベースでどのような権限を持っているべきかについての議論です。開発者はDevデータベースインスタンスにどのようなアクセス許可を与えるべきですか

私は、各開発者が自分のワークステーションで開発用に独自のインスタンスを実行するのが最善のケースだと認識していますが、データベースのサイズのため、これはオプションとはみなされません。

また、これらのアクセス許可を適用する必要があるかどうかについても興味があります。役割を介して付与されたOracle権限では、PL/SQL実行中にアクティブではないため、ロール(「dba」ロールさえも)は役に立ちません。それは、アカウント(システム)を構築したり、何十ものデータベースを利用して数十のユーザーを作成し、それぞれに数十の権限を直接与えることになります。 私の考えでは、システムとしてdevsのログインを許可するだけでは意味がありますが、私たちのDBAはそれが悪い考えだと主張しています。

答えて

3

私たちは、開発者にアプリケーションアカウントへのアクセス権を与えるだけでした。これは小さな店舗では機能しますが、開発者の数が増えるとすぐに手を抜けてしまいます。ここで

は、私たちが今何をすべきかです:

  1. アプリケーションは、それが自身のアカウント(別名スキーマ)のしています。
  2. 開発者が
  3. 自分のアカウントを持っているデータは、我々はあなたが好きなスキーマにコードをビルドするためのAntビルドスクリプトを持つアプリケーションスキーマ
  4. に存在します。
    • コードをビルドスクリプトが
  5. 開発者が自分で変更を行うアプリケーション・データへの開発者への明示的な権限を付与するストアドプロシージャを実行するためのステップを含むビュー、パッケージ、オブジェクトなど。
  6. を含み自分のスキーマ
  7. 幸せに彼らはそれをサブバージョンにチェックします
  8. アプリケーションの開発スキーマは、新しいSubversionビルドから構築されています。
  9. 開発者は自分の環境をチェックアウトして再構築できます。テーブル構造へ
  10. DDLの変更は、これらは同様にこれは、任意のフロントエンド・アプリケーションを保証するという利点を持っている

スクリプト化でき、常にデータベースの開発者によって破壊されていない

  • DBAを介して行われすべてを再建する。

+0

+ソースコントロール+ビルドプロセスを含む+1 - この領域の不具合の結果を誰が制御するかについての多くの意見の不一致 – dpbradley

0

DBAのジョブの1つは、ユーザー権限を管理することです。私はいくつかの理由からシステムが良いアイデアだとは思っていません。あなたが望んでいないと確信しているスキーマ全体を削除する能力は最低限ではありません。つまり、私はあなたのすべてのユーザーにすべての権限を付与し、何十件ものアカウントが存在しても、DBAにこれらの権限を管理させることは間違いありません。ほとんどのDBAには、これらの権限を管理するためのスクリプトが用意されています。

DBAの意見を聞いて、彼らは一般に彼らが何を話しているのか知っています。

0

これは単なるdevインスタンスです。私は、すべてのユーザーに管理者ロールに追加された個々のアカウントを持っています。そうすれば、ユーザごとにアクティビティを記録することができます。デベロッパーには自分のことをするのに十分な呼吸スペースを与えてください。

1

私は、実際のオブジェクトを所有するアプリケーションアカウントが比較的少数であると仮定します。したがって、1つ以上の論理アプリケーションは、特定のOracleユーザーが所有する表で構成されます。これは、SYSTEMまたはSYSではなく、Oracleが提供するアカウントではありません。 DBAが作成したアカウントになります。 Oracleサンプル・スキーマに精通している場合、HRユーザーは、HRアプリケーションのバックエンドを構成するHRスキーマ内のすべての表を所有しています。

私が最初に考えたのは、開発者がこれらのアプリケーションアカウントに直接ログインできるかどうかを確認することでした。これは安全な構成ではなく、開発者が誤ってまたは意図的に追跡するのが難しいか、または容易に解決する可能性のある損傷を起こす可能性があります。しかし、それは組織によって合理的にうまくいくかもしれません。特権管理は簡単です。アプリケーション所有者アカウントには、すでに必要なすべての特権が既に用意されています。

次のステップは、おそらくデータベース内のパブリック・シノニムのロードとアプリケーション・コード内にスキーマ修飾子がないため、開発する個別のスキーマをすべての開発者に提供することになります。開発者のスキーマは自動的にそのオブジェクトの共有バージョンをオーバーライドします。これにより、より良い分離が得られます。権限は、一般に、開発者が必要とするすべての権限を含むスクリプトを作成するか、「既知の良い」アカウントから新しいアカウントにすべての権限をコピーするスクリプトを作成することによって与えられます。特に書くのは特に難しいことではありません。すべての開発者が同じ特権セットで終わるようにするだけです。これは一般に、新しい特権が与えられたときに実行される別のスクリプトです。

0

私のグループは約100個のアプリケーションをサポートし、約20個は独自のOracleスキーマを持っています。私たちはすべての開発者の道を辿り、スキーマへのパスワードを持っていて便利です。しかし、後見では、各開発者が独自のOracleアカウントを使用して開発することをお勧めします。主な理由は監査です。

0

私は最善のケースは になるだろうと認識し、それぞれが開発、 のために自分のワークステーション上で自分自身のインスタンス を実行しますが、このためには、 オプション考慮されていない データベースのサイズのDEV持っています。

これに対処する方法はありますか?個人的なコピーのデータ量を減らす方法がありますか?理想的な解決策のように思えます。必要な変更を加えることができるからです。その後、準備ができたらDBAに提出し、共有開発サーバーを更新してもらうことができます。

1

ストアドPL/SQLオブジェクトを開発する場合、前述のように、それらのオブジェクトを所有するスキーマには、使用するオブジェクトに対する明示的な付与が必要です。単一の 'データ'スキーマがあり、独自のスキーマでコードを開発している場合は、開発スキーマにデータスキーマオブジェクトへのアクセスを許可する必要があります。通常、私はデータスキーマのユーザー名/パスワードを期待しています。

システム権限(CREATEなど)に関しては、CREATE TABLE、TYPE、VIEW、PROCEDURE TRIGGER、SYNONYMが必要です。あなたが何をするかに応じて、他のものが適切かもしれません(例えば、CONTEXT)。 DBAは、CREATE DIRECTORYを誤って使用すると損害を与える可能性があるので除外することがあります。その中にANYが含まれている特権について同義語を使用してください(例:SELECT ANY TABLE、DELETE ANY TABLE)

パフォーマンスチューニング/システム監視の場合、データベースのSELECT_CATALOG_ROLEは良好です。 DBAがリスク回避的である場合は、個々の見解について交付を交渉しなければならない場合があります。ご使用のバージョンのREFERENCEガイドを参照して、使用する可能性のあるものを尋ねてください。

関連する問題