- ベストアンサー
oracle 7.3のアクセス権限
パスとユーザー名が書かれたテーブルがあったとして、 それが一致するものだけ、他のデータを閲覧できるようにしたいのです。 テーブル上のデータはみられたくあ 上手くviewやアクセス権限を操作してパスとユーザーを一致させる方法はないでしょうか? 接続方法はVBAからoo4oを用いています。オラクルのアカウントは一つです。 select countのみ許可とかできればいいのですが、それは無理でしょうか? データベース初心者ですが宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ごちゃごちゃしてきたので、一旦整理します。 「現状」 ・ユーザは200人ほどいる。 このユーザはOracle内のテーブルで管理されている。 ・Oracleのアカウントは一つである。 そのアカウントはすべての権限を持っている。 ・アプリケーションから直接ユーザIDとパスワードを入れてOracleにログインしている。 あっていますか? 結論からいうと、200人分のアカウント作成は無駄です。 同一権限のアカウントを多数作る意味はあまりないからです。 それでしたら、追加、削除、修正、参照のできるアカウント、参照のみのアカウントを二つ作り、アプリケーション側でユーザ別にOracleに対してログインするアカウントを変更する、という制御を入れるのが自然でしょうか。 ただ、最終的にSQLをキックするのがアプリケーションなので、アプリケーションのみの制御でも十分セキュアだとは思います。
その他の回答 (3)
- Mizyu
- ベストアンサー率41% (245/593)
> セキュリティ的にOracle側で隠すのがベストと思っているのですが > どうでしょうか? 確かに、セキュリティは向上します。 ですが、オラクルのアカウントが一つなんですよね? Oracleのテーブル制御権限は「誰」が「どれ」に対し「何」をできるかを設定するものです。 アプリケーションから触れる「誰」の部分が一人ならば、権限付与する意味があまりありません。 見たところ、オラクルのアカウントとテーブル内にもつユーザ名というのは別なのですよね? でしたらそのテーブルに持っているユーザ名に対する権限付与というのはできません。 そのユーザを追加するのであっても、制御で権限付与を常に変更するのはセキュリティ上というより システム上で問題があります。 よって、アプリケーションで制御するほうが早い、という結論を述べたまでです。
お礼
再度、お答え頂きありがとうございます。 >アプリケーションから触れる「誰」の部分が一人ならば 不特定多数です。具体的には200人ぐらいです。 クライアント側の権限ですが 制御で権限付与はしません。あらかじめ、特定のViewのみSELECT可能なアカウントを作成しておきます。 そのアカウント自体は外部にもれてもまったく問題ないようにしたいのです。 現在の仕様ではアプリケーションにそのUSERとPASSをあらかじめいれてしまう仕様なもので。 オラクルのアカウントを200人分作成してもいいのですが、その方がいいのでしょうか?
- cse_ri2
- ベストアンサー率25% (830/3286)
Oracleのアカウントが一つの場合は、アプリケーション側 で制御する方が一般的かと思います。 Oracleのユーザを複数作成するのならば、また別の話に なるかと思いますが...
お礼
レスありがとうございます。 複数作成する選択肢もあります。 可能であれば1アカウントで操作できるのが 仕様上ベストなのですが。。。
- Mizyu
- ベストアンサー率41% (245/593)
Oracleの権限をいじるより、アプリケーションで制御したほうが早いのではないでしょうか?
お礼
レスありがとうございます。 セキュリティ的にOracle側で隠すのがベストと思っているのですが どうでしょうか?
お礼
アプリケーションの方はまだ設計段階でして、 コーディング作業はほとんどが手つかずです。 とりあえず、200個のビューを作ってみて やったのですが、何か無駄っぽいです・・・ DBについては、まだまだ私が勉強不足なようです。 アプリケーション側での制御を含めて 皆さんの意見や指摘を参考にしていきたいと思います。 色々とご指摘ありがとうございました。