アプリ版:「スタンプのみでお礼する」機能のリリースについて

Oracleでの登録するユーザーと、ログインする個別ユーザーの違いで悩んでいます。

Oracleでの資格(ブロンズ)を取得するために勉強していますが、ユーザーの管理においてどうも整理がつきません。

と言うのも、資格の本(通称白本)での第七章では一般的なUnixユーザーを作るかのような形でユーザーを作成していくという風に記述されていくのに対して、下記サイトでは「ユーザーは人、スキーマはカバン、テーブル・ビューはノート・ペン」と言うように説明されます。

Oracleのスキーマとユーザーの違いとは?
https://sql-oracle.com/?p=110

すなわち、ユーザーは人、スキーマはカバンと言うように作っていくと、特定のAさんというユーザーに割り振られたエリア(スキーマ)内にテーブルやインデックスがあることになり、この場合はBさんと言うユーザーがアクセスすることができません。(スキーマを超える参照権限が付与されれば別ですがそういう運用をしているとは考えにくい・・・)

と言うことで、このOracleで言うユーザーと、一般的に個人個人で振り出されるログインユーザーは別の概念なんじゃないかと思ったのですが、これを確認することができないでいます。
まず、この考え方で合っているのか確認したいのと、もしその場合にはどういう実運用がなされるのかと言うのを知りたく思っています。
(Oracleユーザーは言わばロール権限の代替呼称であって、個人のログインユーザーはその権限に何らかの形で紐づけてユーザーの権限が付与されるなど)

どなたかお分かりになる方がいらっしゃいましたら教えて下さい。

A 回答 (9件)

No2です



>dbでの1スキーマ単位で1ユーザーを振り出すものとして作成し、それを皆で共有して複数人で使い回す

その使い方が一般的です。
DBのユーザはロールとほぼ概念が近く、ユーザを多く払い出すことは、パスワードを分ける程度の意味しかないので、クラサバのようにユーザ事にレコードや保存領域を分けるニーズなら有効ですが、システム保守のような場合は、セキュリティが高まりますが保守の負荷を考えると実用的ではないと思います。
    • good
    • 0
この回答へのお礼

皆様回答ありがとうございました。
理解が深まりました。
1.基本は発行したユーザーを使いまわし
2.OS認証と言う手もある
と言うことですね。

いろいろ調べましたが、
>保守の負荷
と言う観点を差っ引いても、OS認証は私好みです。
と言うのも、例えばデータセンターで開発・保守要員は他者ベンダーを常駐させる形にもなるので、OSでのユーザーID発行ごとに、unixやLinuxでのサブグループにOracleのグループを追加してしまえば、その開発・保守要員がいなくなった後のセキュリティ的に、対象ユーザーに対するパスワードが漏れる懸念が無いと言うことになりますので(単純にそのユーザー権限を無くしてしまえばアクセスできなくなる)。

この面から言って保守の負荷とはセキュリティの保持と言うのはトレードオフになる認識です。
OS認証ではPWを共有にしないためにPWが漏れず、セキュリティが堅牢になると言う利点があるのと、棚卸しでの管理が楽になると言う点からセキュリティをカチコチにするのであれば断然OS認証がいいと言う個人的判断になりました。

お礼日時:2021/01/23 11:11

すいません。


No2さんの回答を読んで、「OS認証」なるものを知りました。
基本的にORACLEは使う側で、設定等については素人です。
ググって調べたところ、OSのログインユーザとORACLEのユーザを、あらかじめ結び付けているようですね。
なので、同じユーザを使いまわしているんでしょう。

なるほど、勉強になりました。
失礼いたしました。
    • good
    • 0

No2です



ちょっとお酒を飲んでるので、よく読めてませんでした。

>ひょっとして、Windowsなどでsql plusでログインしているときって、作業担当者に対してユーザーを個別に振り出されているのではなくて、固定のスキーマを参照・変更できるユーザーを1つだけ降り出して担当者で使いまわしているんでしょうか? 

No1の方と言い回しが違うだけで、同じことの説明になりますが、Webシステムが全盛の今、Oracleでユーザ管理をするのはOracleの知識を伴うので、「同じOracleユーザで利用する」という利用方法が一般的です。

クラサバの場合は、Oracleにダイレクトに接続するためセキュリティの観点からユーザを分けます。そのメリットデメリットは分かるでしょうから省きます。

Webシステムの場合、システムからアクセスするユーザーしかいないので、保守要員がログインするOracleユーザは通常、1つを使いまわしします。

例えば、100人同時に同じユーザでログインしても、トランザクションで制御されるので、問題は発生しません。

最初に、クラサバですか?Webですか?と聞いたのはその辺の事情です。
    • good
    • 0

sql*plusでログインするとき、あるユーザでログインしていますよね?


そのユーザは、ORACLE設定時に登録したものではないんですか?
あなたがORACLEを設定していないのなら、設定担当者に教えてもらった方が早いです。
linuxやwindowsごとに権限を変えたいなら、それ用のユーザやロールを登録してやれば可能です。もちろん、linuxならこのユーザで、windowsならこのユーザで、というような運用ルールが必要ですが。

それから、端末のログインユーザとORACLEのログインユーザを混同しないように。別ものですから。
    • good
    • 0
この回答へのお礼

色々と教えて頂きありがとうございました。
↓でのdyna_1550さんへの御礼にも記載しましたが、私の認識で根本的な誤りがあったようです。
ただここで潰せて良かった感じです。

お礼日時:2021/01/20 20:38

No2です



>1.Linuxサーバーにteratermでログイン
>2.そのログインした後に表示されるコマンドプロンプト上でsql*plusを起動

もしかして、これはOS認証になってるので勘違いしてるのでは?

OS認証をご存じなければ説明しますが、ググるのが早いと思います。
    • good
    • 0
この回答へのお礼

くんこばさんからの回答も併せ、だんだんと自分の誤認が見えてきました。
まずOracleで発行するユーザーの単位と作業者ユーザーの単位は異なっていて、作業者ごとにOracleユーザーを割り振るものだと思っていましたが、それは誤りで、dbでの1スキーマ単位で1ユーザーを振り出すものとして作成し、それを皆で共有して複数人で使い回す・・・と。
ブロンズの白本p233では「AさんのEMP表に対してSELECT分を実行したい場合は「SELECT ON A.emp」オブジェクト権限が必要」と言うような表現をしており、紛らわしいんですよね・・・実際の作業者個人一人一人に個別に割り当てられているものではなく、飽くまでスキーマ単位への振り出しである、という認識になりました。

OS認証の勘違いではなく、根本から認識が誤っていたようです。
ただ、OS認証の件についてはこのようなものもあるのだと勉強になりました。ありがとうございます。

お礼日時:2021/01/20 20:36

ORACLEのユーザとは、「ORACLEというデータベースシステムを利用するユーザ」のこと。

ORACLEを使うだけなのか、メンテナンスまでするのか。
担当者ごとのログイン管理っていうのは、ORACLEを使用したアプリを使う担当者ってことで、つまり業務担当者のことを指してます。
この場合のユーザは、ORACLEから見ると、あくまでひとつのデータです。
なので、あなたが考えているユーザとは異なりますね。
後者のユーザについての記述は、一切忘れてください。

ORACLEはたしか、ユーザとロール、それぞれに権限が割り振ることができたと思います。
そこに注力して勉強してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

下の方の御礼にも記載しましたが、sql*plusなどの専用クライアントソフトでOracleのサーバー側の通信は受け付けるから、端末のログインユーザーが何のidでログインしてようが知ったことではなく、sql*plusなどでのログイン時には、どの担当者であっても作成された該当のOracleユーザーidを使いまわしている、と言う認識であってますでしょうか?

お礼日時:2021/01/20 00:10

No2です



補足ありがとうございます。少し、状況が見えてきました。

「ログインする個別ユーザー」というのは何に対してログインと言っているのでしょうか。

参照ページとして紹介されている「Oracleのスキーマとユーザーの違いとは? 」をザクっとみると、Windowsへのログインのようですが、それであればOracleのユーザとは別物です。

「一般的に個人個人で振り出されるログインユーザー」の一般的は、おそらく、Windowsのログインのことですよね。

主語が欠けているのが分かりにくさになってる気がします。

まず、Oracleのオブジェクト管理について理解しましょう。
https://docs.oracle.com/cd/E15817_01/server.111/ …

※OracleMasterを受けるのであれば、原則、Oracleのページで学ぶことを推奨します

ユーザの運用管理については、No1の方の補足的な説明になりますが、「新規ユーザー作成時に最低限割り当てるべき権限」などでググると良いと思います。

ざっくり言うと、運用では以下の管理を行います。
・ロール
・デフォルト表領域
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>「ログインする個別ユーザー」というのは何に対してログインと言っているのでしょうか。

Oracleがインストールされている対象サーバーに対してです。
例えばLinuxサーバーにOracleがインストールされている時、
1.Linuxサーバーにteratermでログイン
2.そのログインした後に表示されるコマンドプロンプト上でsql*plusを起動
と言う想定ですが、1はLinuxで振り出されるユーザーを使っているからいいのでしょうけれども、2でログインする時のユーザーの管理はどうしているんだろう、と言うことなのです。1とどうやって紐づけているのか? 

ひょっとして、Windowsなどでsql plusでログインしているときって、作業担当者に対してユーザーを個別に振り出されているのではなくて、固定のスキーマを参照・変更できるユーザーを1つだけ降り出して担当者で使いまわしているんでしょうか? 

あるいは上記の1・2のログイン方法がそもそもにおいて間違っていて、サーバーに直接ログインした後にOracleのアプリにログイン、と言う手法ではなく、常にsql*plusなどの専用クライアントアプリでしか通信は受け付けないから、サーバーに直接ログインと言う前段が間違っているのかも、とも思いました(つまりクライアントのIDがどうであろうと知ったこっちゃなく、sql*plusでログインしたIDが合っていればいいんだよ的な運用を予想しています。そしてそれはイコール、やはりOracleで作成したユーザーと言うは、どれだけ作業者がいようともそれは使いまわす運用を想定しているのであって、個別の人間には振り出さないと言うことにもなります)。

色々アドバイス頂きありがとうございました。
これから調査致します。

お礼日時:2021/01/20 00:07

質問の意図が、わかるようなわからないような・・・



クラサバでシステム構築をしようとしていますか?

利用者が直接DBに接続して操作する場合は、アクセス権をユーザー単位で制御する場合があるので、気にする必要がありますが、Webのような3層構造の場合は、システムが接続者になるので、スキーマ=ユーザに近い感覚になります。

「ログインユーザ」が、Webシステムなのか、クラサバなのかはっきりしないと、ごちゃごちゃになると思います。
    • good
    • 0
この回答へのお礼

はい、想定はクラサバでいます。WEB+DBではありません。
例えば、データセンターの中にあるUnixサーバーにOracleをインストールしたとして、そこに開発メンバーを数名入れるとします。
そうした時、作業はサーバーに直接つないであるコンソールではなく、作業ルームからteratermなりPoderosaなりで接続して色々作業をやると思うのですが、そこに繋げられるユーザー作成と権限付与などのスキーム運用はどうすべきなのだろう、と言うことで想像がつかないでいたのです。

お礼日時:2021/01/19 22:37

あなたの認識で合ってますよ。


ORACLEの場合は、ユーザというよりは確かにロールですね。
担当者ごとのログイン管理は、個別のテーブルで行う感じです。

ややこしいですけど、慣れですよ。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました! 
ちなみに、
>担当者ごとのログイン管理は、個別のテーブルで行う感じ
と言うのは具体的にどうやっているのでしょうか? 
もし時間ありましたらこの点軽く教えて頂ければと思います。
例えば開発メンバーにUnixユーザーを割り振った時に、既にあるOracleユーザーに対してどう紐づけていくか、など・・・

お礼日時:2021/01/19 22:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す