• 締切済み

Oracle 10g 権限付与

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

  • Oracle
  • 回答数2
  • ありがとう数1

みんなの回答

  • lond_nag
  • ベストアンサー率57% (4/7)
回答No.2

ロール(任意の権限の集まり)の使い方で正解だと思いますが・・・ 具体的には、例えば「testrole1」「testrole2」という名前のロールを作って create role testrole1; create role testrole2; 「testrole1」をuser1,user3に、「testrole2」をuser2に付与して grant testrole1 to user1; grant testrole2 to user2; grant testrole1 to user3; 新規に表を作成したら、ロールに対して権限を付与すれば、そのロールを付与されているユーザは一括で権限が与えられる。 grant select on user0.atable to testrole1; >>この1文でtestrole1を持っているuser1とuser3だけ、user0.atableテーブルのSELECT権限を得る。 但し、ロール経由ではなく直接権限を与えられないと許可されない動作もあります。 ストアドメンバなどのEXECUTE権限がこれに当たったはずで注意が必要です。 詳しくはORACLEマニュアルのSQLリファレンス、セキュリティガイド辺りのロールに関する記述を参照してください。

neko0515
質問者

お礼

ありがとうございます。 結局、管理者にgrant any object privilegeを付与することで決まりました。 ご助力感謝いたします。

  • dyna_1550
  • ベストアンサー率34% (122/353)
回答No.1

ロールを作ればよい? そんな簡単な答えじゃないですよね・・・・

関連するQ&A

  • 参照権限の付与方法

    環境は、Windows Server 2003、Oracle 9.2.0.6.0 になります。 userAが持っている表、ビューの参照権限を userBに与えようと思います。 userAでログインし、以下のSQLを発行したところ、  grant select any table to userB; 以下のエラーが出ました。  ORA-01031:権限が不足しています。 これは、userAに権限を付与する権限がないのだと 理解しました。 ■疑問1 この現象は、userAに権限を付与する権限がない との理解で正しいでしょうか? また、userAに「権限を付与する権限」を付与するには どのようなSQLを発行すればよいでしょうか? ■疑問2 systemユーザでログインし、userBに権限を与える方法も あると思います。 その場合、以下のSQL文になると思います。  grant select on userA.testtable to userB この場合、表、ビュー1つずつ与える必要がありますが、  grant select any table to userB; のように、全ての表、ビューを参照権限を与えることはできるでしょうか?

  • DBへの権限付与について

    MySQLで、ユーザーを作成しGRANT文でDBへの権限を 付与したのですが、DBにアクセスできません。 原因がわかりましたら、教えていただけますでしょうか。 まず、rootユーザーでユーザーを作成し、DBへの参照権限を付与。 >GRANT ALL ON TESTDB.* TO USER01@localhost IDENTIFIED BY 'passwd'; rootユーザーで権限を確認。 >SHOW GRANTS FOR USER01@localhost; GRANT USAGE ON *.* TO 'USER01'@'localhost' GRANT ALL PRIVILEGES ON `TESTDB`.* TO 'USER01'@'localhost' ユーザー:USER01 でログインし、DBの参照を確認。 > SHOW DATABASES; information_schema SHOW DATABASES の結果に、TESTDB が出てくるはずと 思うのですが、なぜ表示されないのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • Oracleでオブジェクト権限を調べるディクショナリは?

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

  • ユーザーへのディレクトリ権限付与について

    WindowsXPのOracle9i環境にて、 まず、以下のようにしてユーザ「username」を作成しました。 create user username identified by Password default tablespace tab_space temporary tablespacetemp; grant dba,resource,connect to username; 次にsysユーザにて、CREATE DIRECTORY FILE_PATH as 'd:\temp'; ディレクトリを作成しました。 そして、そのディレクトリに対して、以下のように権限付与しようとすると、「ユーザ"username"が存在しません。」エラーが発生します。 grant READ,WRITE ON directory dir to username; また、grant READ,WRITE ON directory dir to public; とすると、権限付与は成功しますが、ユーザusernameにはディレクトリ参照権限は与えられていませんでした。 何か間違っておりますでしょうか? それとも何か手順で足らないものがあるのでしょうか? ご教示いただければと思います。

  • 管理者権限の付与

    PCゲームのディスクチェック時に 「ディスクチェックには管理者権限が必要です。  →現在のユーザーをログオフして管理者権限のあるユーザーで入りなおしてください   現在のユーザーに管理者権限を付与してください」 このようになって先に進めません。 管理者権限を付与するにはどういった操作をすればいいですか?

  • ユーザー名について(権限付与の例)

    GRANT (権限名) on (オブジェクト) to ABC とします。 ユーザー名ABCは使用中のPCのオラクルの中にもありますし、遠隔で使用しているサーバーにもあるとします。 接続はいつも ABC/(Pass)@(サーバー名) です。 上のGRANT文ですと、使用中のPCに付与されています。 遠隔のABCに付与する場合どうするのでしょうか?

  • Oracle 10g 他スキーマの参照権限をはずす方法

    Oracle 10g 他スキーマの参照権限をはずす方法 ユーザを2個作成したら、ユーザ名と同一のスキーマが2個できました。 デフォルトで他スキーマの参照権限がついているようです。 この権限をはずす事はできますでしょうか。 以下のSQLでははずせませんでした。 REVOKE ALL ON YAMADA.* TO TANALA;

  • PostgreSQLでテーブルに付与した権限の一覧は出せますか?

    PostgreSQL7.2.3 を利用しています。 現在いろいろと開発を行いテーブルが数10となりました テーブル個別に GRANT文を発行していたのですが・・・ 個々のテーブルに対しどのDBユーザ(グループ)が 何の権限を持っているか解らなくなってきました。 現在付与されている権限の一覧表示機能みたいなものはありますか? マニュアルで発見できませんでしたので無いのかもしれませんが、 ご存知の方いましたらお教えください。 不要な権限を残したままでは、セキュリティホール(?)になるのでは? と考えています。皆さんはどうされているのでしょう? 「ありません」という回答でも助かります・・・

  • 管理者権限の削除と付与

    Windows Vista Business について質問です。 他のエディションでも同じだとは思います。 友達から質問されたので、こちらで調べてみたのですが、 はっきりしないので、質問させていただきました。 AdministratorとGuestのユーザーは無効になっています。 おそらく OS インストール時から無効だと思いまし、 一度も有効にはしていないようです。 インストール時に作成したユーザーAと、 後から作成したユーザーBがあります。 最初はユーザーAには管理者の権限があったのですが、 今は管理者権限がなくなっているそうです。 ユーザーBには最初から管理者権限はありません。 質問は、管理者権限のあったユーザーAには、 自分の管理者権限を削除する事が可能なのでしょうか。 それはごく簡単にできる事なのでしょうか。 それをする時には警告メッセージがでないのでしょうか。 また、現在管理者権限を持つユーザーがひとつもない状態で、 ユーザーAに管理者権限を付与する事は可能なのでしょうか。 可能であればその方法を教えてください。 友達が試した事では、 Administratorのユーザーを有効にするコマンドが、 ユーザーAでは使えなかったので困っているようです。 これができれば、ユーザーAに管理者権限を戻す事はできるのだと思います。 ユーザーAで新しいユーザーを作成しても、 そのユーザーに管理者権限を付与する事はできませんよね。 どなたか、よい方法があれば教えてください。 OSの再インストールしかなければ、そのように友達に伝えたいと思います。

  • ドメインの一般ユーザーにローカルの管理者権限を付与したい

    ドメインの一般ユーザーにローカルコンピューターの管理者権限を付与する方法を教えてください。ドメイン管理者のパスワードは知っています。