• ベストアンサー

oracle 7.3のアクセス権限

パスとユーザー名が書かれたテーブルがあったとして、 それが一致するものだけ、他のデータを閲覧できるようにしたいのです。 テーブル上のデータはみられたくあ 上手くviewやアクセス権限を操作してパスとユーザーを一致させる方法はないでしょうか? 接続方法はVBAからoo4oを用いています。オラクルのアカウントは一つです。 select countのみ許可とかできればいいのですが、それは無理でしょうか? データベース初心者ですが宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.4

ごちゃごちゃしてきたので、一旦整理します。 「現状」 ・ユーザは200人ほどいる。  このユーザはOracle内のテーブルで管理されている。 ・Oracleのアカウントは一つである。  そのアカウントはすべての権限を持っている。 ・アプリケーションから直接ユーザIDとパスワードを入れてOracleにログインしている。 あっていますか? 結論からいうと、200人分のアカウント作成は無駄です。 同一権限のアカウントを多数作る意味はあまりないからです。 それでしたら、追加、削除、修正、参照のできるアカウント、参照のみのアカウントを二つ作り、アプリケーション側でユーザ別にOracleに対してログインするアカウントを変更する、という制御を入れるのが自然でしょうか。 ただ、最終的にSQLをキックするのがアプリケーションなので、アプリケーションのみの制御でも十分セキュアだとは思います。

sha-girl
質問者

お礼

アプリケーションの方はまだ設計段階でして、 コーディング作業はほとんどが手つかずです。 とりあえず、200個のビューを作ってみて やったのですが、何か無駄っぽいです・・・ DBについては、まだまだ私が勉強不足なようです。 アプリケーション側での制御を含めて 皆さんの意見や指摘を参考にしていきたいと思います。 色々とご指摘ありがとうございました。

その他の回答 (3)

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.3

> セキュリティ的にOracle側で隠すのがベストと思っているのですが > どうでしょうか? 確かに、セキュリティは向上します。 ですが、オラクルのアカウントが一つなんですよね? Oracleのテーブル制御権限は「誰」が「どれ」に対し「何」をできるかを設定するものです。 アプリケーションから触れる「誰」の部分が一人ならば、権限付与する意味があまりありません。 見たところ、オラクルのアカウントとテーブル内にもつユーザ名というのは別なのですよね? でしたらそのテーブルに持っているユーザ名に対する権限付与というのはできません。 そのユーザを追加するのであっても、制御で権限付与を常に変更するのはセキュリティ上というより システム上で問題があります。 よって、アプリケーションで制御するほうが早い、という結論を述べたまでです。

sha-girl
質問者

お礼

再度、お答え頂きありがとうございます。 >アプリケーションから触れる「誰」の部分が一人ならば 不特定多数です。具体的には200人ぐらいです。 クライアント側の権限ですが 制御で権限付与はしません。あらかじめ、特定のViewのみSELECT可能なアカウントを作成しておきます。 そのアカウント自体は外部にもれてもまったく問題ないようにしたいのです。 現在の仕様ではアプリケーションにそのUSERとPASSをあらかじめいれてしまう仕様なもので。 オラクルのアカウントを200人分作成してもいいのですが、その方がいいのでしょうか?

  • cse_ri2
  • ベストアンサー率25% (830/3287)
回答No.2

Oracleのアカウントが一つの場合は、アプリケーション側 で制御する方が一般的かと思います。 Oracleのユーザを複数作成するのならば、また別の話に なるかと思いますが...

sha-girl
質問者

お礼

レスありがとうございます。 複数作成する選択肢もあります。 可能であれば1アカウントで操作できるのが 仕様上ベストなのですが。。。

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

Oracleの権限をいじるより、アプリケーションで制御したほうが早いのではないでしょうか?

sha-girl
質問者

お礼

レスありがとうございます。 セキュリティ的にOracle側で隠すのがベストと思っているのですが どうでしょうか?

関連するQ&A

  • Oracle 10g 権限付与

    はじめまして Oracle10gで、今度新しいデータベースが始動します。 問題なのが、管理者向けに発行するIDと、一般ユーザ向けに発行するIDの違いです。 管理者には参照・更新、参照権限付与・更新権限付与。 一般ユーザには参照、更新(それぞれテーブルごとに申請を出してもらう)、管理者から権限をもらう。 という仕組みになりました。 月に3度から4度、新しいテーブルができます。そのたびにgrantオプション付で管理者に権限付与するのも大変です。 select anyでは、テーブルごとの切り分けができません。 Oracle10gには詳しくないのですが(そもそもOracleにそんなに詳しくないのですが)、何かOracle10gの新機能など、使えそうなものはないでしょうか。 よろしくお願いいたします。

  • Oracleでオブジェクト権限を調べるディクショナリは?

    Oracleであるユーザーtest_usr1がSample_tblというテーブルについて、test_user2に対してたとえばselectとupdateする権限を付与した場合、test_user2のオブジェクト権限を調べる場合、どのディクショナリで調べたらいいのでしょうか。 基本的な質問で恐縮ですが、よろしくお願いいたします。 Oracle 8.1.7のリファレンス・マニュアルを調べましたが、ここには載っていないようです。

  • Oracle 参照用ユーザー作成

    Oracle 9i で新規で参照専用のユーザーを作成しています。 が、うまく作成できなかったため質問したいと思います。 現在、下記のようなデータベース、ユーザー名となっています。 データベース :A ユーザー :A これに対して、以下のユーザーを作成しました。 ユーザー :B ロール :CONNECT システム権限 :select any table execute any procedure この状態で、データベースAに対してユーザーBへ接続はできますが、 SELECT文を実行しても、”ORA-00942:表またはビューが存在しません”メッセージが表示されます。 そこで、BのロールをDBAにしたり、オブジェクト権限に、データベースAの表に対して 使用可能な権限としてSELECTを指定したりしたのですが、やはり同様のメッセージが表示されました。 データベースAの表を見れていない状況だと思うのですが、どのように、Aの表を参照するよう 設定してやるのかがわかりません。 何が不足しているのかご教授下さい。 よろしくお願い致します。

  • テーブルの権限 またはユーザの権限

    お世話になっております。 サーバーをいじること自体がはじめてで迷走しています; どうかご助言お願いします >< SQL Serverにおいて ユーザ「9999」がいるとします。 またDB「AA」「BB」「CC」「DD」があり、各DBに「9999」はログインできるようになっています。 各DB内にはそれぞれ複数のテーブルが存在します。 そして各テーブルでは「9999」に 「SELECT、INSERT、UPDATE、DELETE」の権限を与えてあります  ←今ココです そこで質問なのですが、 (1)ユーザ「9999」に与えてあるSELECT等の権限を確認するSQL文は存在しますでしょうか。   →「9999」がどのDBのどのテーブルにどの権限を持っているのか、など。 (2)もしくはDBごとに、どのユーザがどのテーブルに対してどの権限を持っているかを   確認するSQL文はありますでしょうか。   →テーブルごとでも結構です。 「権限を確認するSQLはあるよ」と 先輩に言われ、必死に探しておりますがOracleのものしか見つかりません。。。 とりあえず「9999」がそのテーブルに対して権限を持っているということを 証明したいのです。  ※テーブルのプロパティで権限付与を行ったため、    同じ方法で確認するのは意味がないと言われてしまいました どうかよろしくおねがいします。

  • Access ユーザーの権限について

    いつもお世話になっております。 Accessであるデータベースを構築しました。 管理者と30名程度のユーザーのみで利用しようと思い、IDとパスワードのよるセキュリティ対策を考えました。 管理者でログインし各ユーザー設定をして ユーザーの権限「データーの読み取り」のみをユーザーには設定しました。 次にユーザーでログインしユーザーのパスワードも設定 し、うまくいくか試してみました。 IDとパスワードが一致しないとデータベースが開かないところまでは、うまくいったのですが 開いた後、ユーザでのログインなのに新規にデータを追加できたり、データの書き換えまでできてしまいます。 操作ミスかと思い何度か上記の設定をやり直したり、すべてのテーブル、クエリを「読み取り」の設定にしたりしましたが、結果は同じでした。なぜでしょうか?教えて下さい。 また、利用するユーザーが増えたり減ったりするので「IDとパスワードマスター」を作って、管理者の方で一元管理する方法も考えています。その時はどのようにすればよいかも教えて下さい。 よろしくお願いします。

  • oracleユーザーの権限確認方法について

    お世話になります。 例えばですが、oracleでsysユーザからaaaというユーザーを作成し、 selectやcreateなどの権限を付与したとします。 そこでaaaユーザーでログインして、aaaユーザーが行うことのできる 権限を調べたいと思ったのですが、いまいちわかりません…。 (1)select * from session_privs; ではcreate系の権限は表示されますが、select系(DML文)の権限が何を付与されているか表示されませんでした。 (2)select * from user_sys_privs; でもselect等の権限の確認はできませんでした。 (3)select * from user_tab_privs; では一件も出てきませんでした。 上記3つは何か間違えているのでしょうか? それとも他にも何か調べ方があるのでしょうか? よろしくお願い致します。

  • Oracleのシングルクォーテーション

    いつもお世話になっております。 Oracleの「'(シングルクォーテーション)」の使い方について教えてください。 テーブルAのフィールド001には2桁の数値が文字列型として格納されています。 (1)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = '09' でデータの抽出をしているのですが、データがあるにも係らず、「0」となってしまいます。 (2)SELECT COUNT(*) FROM テーブルA WHERE フィールド001 = 09 では、「09」だけでなく「9」までカウントしてしまいます。 データの中には「09」「9」が混在していて、これらを別々にカウントしたいのですが、(1)では結果を得ることが出来ません。シングルクォーテーションの使い方に間違いがあるのでしょうか? 別々にカウントする方法があればご教授いただけないでしょうか? よろしくお願いします。

  • AccessでOracleのテーブルをリンクし、Access側では読み取り専用にしたい

    社内にOracleデータベースでのシステムが立ち上がっているのですが、管理帳票の出力用に、OracleのデータをAccessで読み込みたいと思っています。 テーブルのリンクそのものは知っており、成功しているのですが、Oracleデータベースのデータを壊さないようにするため、このリンクテーブルを読み取り専用にしたいと思っています。どのようにすれば良いでしょうか。 なお、Oracle側で読み取り専用ユーザを作成して、そのユーザでリンクすれば良いことは理解していますが、それは最後の手段にしたいと思っています。別の方法でうまくできないでしょうか。

  • accessとオラクルの連携について

    お世話になります。アクセスでテーブルのデータをSQL文で取得し、 そのデータをオラクルのテーブルにinsertしたいと思ってます。 ただ、フィールドの数が40個もあるので insert into ・・・・Fields(0),Fields(1)・・・・ と記述するのはかなり面倒なので何かいい方法はないでしょうか よろしくお願いします。 なお、access側とオラクル側のテーブルは同じ型です。 ’ローカルテーブルのデータを取得 rec.Open "select * from tesuto", cnn ’取得したデータをinsertする Do Until rec.EOF sql= insert into value(Fields(0),Fields(1),・・・ rec1.Open "select * from tesuto1", cnn1 Loop

  • Access ファイルの権限を設定したい

    いつもお世話になっています。 Accessで作成したデータベースの権限の設定の仕方を教えてください。 市販のハンドブックで記載されている方法 メニューの「ツール」→「セキュリティ」→「ユーザー/グループのアカウント」での設定をやってみたのですが、この方法だと特定のデータベースだけでなく、操作するコンピュータ上にあるすべてのAccessファイルを開いたときに、ユーザー名とパスワードの確認画面が出てきてしまいます。 やりたいとことは、特定のファイルだけに設定したいと思います。 管理者とユーザーを設定して、ユーザーにはデータの更新程度の許可のみを与えるようにしたいと考えています。 よろしくお願いします。