Home > 2010年04月

2010年04月 Archive

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Comments (Close): -
  • TrackBack (Close): -

DB2 9 エンジニア試験準備 4:セキュリティ その3

  • Posted by: Nakunaru
  • 2010-04-22 Thu 23:34:40
  • db2
前回はこちら(http://hitai.blog72.fc2.com/blog-entry-56.html

今日は特権周りです。
基本的にはこちら(http://www.ibm.com/developerworks/jp/data/library/dataserver/j-d_db2security01/)をみておけばよいかと。(なげやり)

問題集ででてたのは、ある操作のために必要な特権を理解しているかを問う問題。
例えば前回でてきたLOAD権限。これは表にデータをロードする権限だけど、表に対するinsert特権も持ってないと実行できないとか。
それと、ORACLEの権限を知っていれば問題ないけど、index特権、references特権はDB初心者にはわかりにくそうなので要チェックかも。

それと、ORACLEにはない概念としてCONTROL特権とALLの違いもチェックしておきたいかも。
CONTROL特権はそのオブジェクトへの全ての特権に加え、
・表のdrop、runstats、reorgを実行する許可
・control以外の特権を他のユーザへ付与する許可(with grant optionのような振る舞い)
を与えられることになる。

内部の動きとしては、control特権を付与すると、selectやinsertなどの特権が暗黙的に付与されるようで、後にcontrol特権をrevokeしても、暗黙的に付与されたselectなどの特権はそのまま残ってしまう。
それぞれ個別にrevokeが必要なので注意。

control特権を付与できるのは、SYSADM、DBADM、CONTROL特権を持つユーザのみ。
control特権は、SYSADM、DBADM、オブジェクトの作成者にデフォルトで付与されている。

control特権を持たずに、select特権などを他のユーザへ付与したい場合には、with grant option付きで特権を付与されている必要がある。

といったところ。
試験対策本には、表への特権だけでなく索引など他のオブジェクトに対する特権も問題として記載されていたので、どの特権がどのオブジェクトで有効なのか、マニュアル(http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp)などで要確認。

えーとあとは、デフォルトでpublicに付与されてしまっているconnectとカタログへのselect特権、create table特権なども一応確認。


ということで、権限周りはこれでおしまい。
次回はクラサバの接続について確認する予定です。




DB2 9 エンジニア試験準備 3:セキュリティ その2

  • Posted by: Nakunaru
  • 2010-04-19 Mon 23:40:05
  • db2
前回はこちら(http://hitai.blog72.fc2.com/blog-entry-55.html

えーと、この前は認証のあたりを勉強しました。
今度は権限と特権です。

オラクルでは権限というと、CREATE TABLE権限とかCREATE SEQUENCE権限といったシステム権限と、SELECT ON 表名といったオブジェクトへのアクセス権を指定するオブジェクト権限があるわけですが、DB2の権限は複数の権限のセットで、オラクルのロールっぽいイメージみたいです。
DB2にもロールはロールで別にあるみたいなので、ちょっと表現が違うかもしれませんが。

で、権限で主だったものには以下の5つがあるようです。
・SYSADM
・SYSCTRL
・SYSMAINT
・SYSMON
・DBADM
・LOAD

それぞれが何をする権限なのか、は一旦置いといて、この権限の分類から。

上記権限のSYSで始まる名前のもは、インスタンス単位で付与される権限です。
その中でもSYSADM権限はすべての操作が可能な強力な権限になります。
細かい解説はこちらで

この権限は、自動で付与されるユーザと、明示的な付与を受けるユーザがいます。
自動で権限を付与されるのは、インスタンスの所有者ユーザ。
それと、dbm cfgのSYSADM_GROUPにOSグループ名が指定されている場合、そのグループに所属するユーザにも与えられます。
で、このSYSADM_GROUPがnullの場合には、OSの管理者グループに与えられる。
という説明があるんだけど、OSの管理者グループって、unixのrootグループとか、winのadministratorsグループのことなのか、それともインスタンスの所有者が所属しているグループのことなのかが未検証。
DB2ではユーザ認証はos側でやるため、インスタンスに関する権限はosグループに対して与えられるという考えぽい。

参考になりそうなQAページを見つけたのでリンクを貼っておきます。
http://www-01.ibm.com/support/docview.wss?uid=std38260b7e2626b3298492572ad000dbf26

このSYS~権限についてはdb2 get dbm cfgでみるしかないっぽいんだけど、オラクルのshow parameter みたいに絞り込みができないのがちょっと不満。
unix系のosを使っているのなら

db2 get dbm cfg | grep SYS

みたいに結果をgrepすればそれっぽいことができるかも。
windowsでも、適当なgrepコマンドにpathを通しておけば同様に使えました。
客先とかで、grepを入れられない場合には、

db2 get dbm cfg > cfg.txt

とか、適当なファイルにリダイレクトして、エディタで開いてCtrl+Fで検索とかなのかな。


V8の試験対策本では、SYS~権限でこれができる、できないって問題がちょいちょい出てるみたいだから、一覧表できっちり抑えておこう。

で、DBADM,LOAD他の権限はDB単位で付与するもので、grant文で付与します。

grant sysadm on database to ユーザ名

to の後ろは
to ユーザ名 / to グループ名
どちらでも書ける。
ただし、ユーザ名とグループ名で同じ名前がある場合には
to USER ユーザ名 / to GROUP グループ名
とすること。

ちなみにrevokeするには
revoke sysadm on database from ユーザ名

権限の保持状態を確認するには
SELECT * FROM syscat.dbauth

なんだけど、ここでちょいとハマリ。
dbadmをrevokeしても、syscat.dbauthに権限情報が残る。
これは、dbadmを付与する際に、関連する下位の権限も一緒に付与されており、dbadmだけをrevokeしてもそれらが残ってしまうから。
http://www.ibm.com/developerworks/jp/data/library/dataserver/j-d_db2security01/
こちらの表3.データベース権限、に記載されているものは、個別にrevokeする必要があるので注意。

dbの権限も試験対策本で結構突っ込んだ問題があったようなので、きっちり対策をすること。

といったところで、今日はここまで。
次は特権周りを確認する予定。





DB2 9 エンジニア試験準備 2:セキュリティ

  • Posted by: Nakunaru
  • 2010-04-08 Thu 23:08:58
  • db2
前回はこちら(http://hitai.blog72.fc2.com/blog-entry-54.html







昨日は気圧が低かったせいか、頭の頭痛が痛くて寝てしまいました。

今日はセキュリティの分野です。
db2の認証方式は、OracleでいうとOS認証のみ(Radiusとかはあるけど一旦おいといて)で、データベース側での認証はありません。
OS認証といっても、DBサーバが入っているマシンでのOS認証と、db2クライアントがインストールされているマシンでのOS認証がある。

正確には、認証タイプ(AUTHENTICATION)には以下のパラメータが設定できる。らしい。
SERVER
→全てサーバOS側で認証

SERVER_ENCRYPT
→SERVERの設定+送信されたユーザ名/パスワードが暗号化される

KERBEROS
→サーバ/クライアント双方にケルベロスがセットアップされていればケルベロスで認証。
 どちらかにセットアップされていなければエラーで認証失敗。

KRB_SERVER_ENCRYPT
→クライアントがケルベロスならケルベロスで認証。そうでないならSERVER_ENCRYPTで。

CLIENT
→クライアントOSで認証を”許可”。
 TRUST_ALLCLNTSとTRUST_CLNTAUTによって挙動が変化。

DATA_ENCRYPT
→データを暗号化する。(通信データの暗号化のこと?それともユーザ名/パスワード?)
 V8.1以前のクライアントからは接続不可能。

DATA_ENCRYPT_CMP
→上と何がちがうかよくわからん。
 基本的には一緒で、下位レベルクライアントの場合、ユーザデータを暗号化しないらしい。

GSSPLUGIN
GSS_SERVER_ENCRYPT
めんどくさいので省略。
というかここみて。(http://www.ibm.com/developerworks/jp/data/library/dataserver/j-d_db2security01/)


で、ここで疑問に思ったのが、認証タイプがCLIENTの動作。
例えば、
サーバOS:SV_USERユーザを作成済み
クライアントOS:CL_USERユーザを作成済み
AUTHENTICATIONをCLIENTに変更
TRUST_ALLCLNTSをYesに変更

この状態で、どのユーザでどんな認証が受けられ、どんな操作ができるのか。
ということで実験してみた。

ケース1:
クライアントOSにはCL_USERでログオン済み。
> db2 connect to sample
→成功。
list applicationsをすると、CL_USERでセッションがあることがわかる。
つまり、connectで明示的にユーザ名/パスワードを指定しなければ、現在ログオン中のユーザが使用される。
そして、サーバにはCL_USERなんてものはいないが、クライント側で認証されているので接続要求は通ってしまう。

ケース2:
クライアントOSにはCL_USERでログオン済み。
> db2 connect to sample user cl_user using xxxx
→成功。
理由はケース1と同じ。

そして、ケース1、2ともにカタログ表は参照可能。
例えば、select * from syscat.tablesなどができてしまう。
そしてcreate tableも通ってしまった。
ただし、sampleのemp表などは見れない。
これはどんな権限、特権があるのか小一時間悩んだのだけど、なんてことはない。
publicがcreate table特権を持っているのと、デフォルトではカタログの参照もできる状態だっただけ。
publicからcreate table権限を剥奪すれば、CL_USERはまったくなにも出来ない子になった。


そこでもう一つの疑問。
サーバで認証しないということは、どんな名前のユーザがアクセスしてくるかわからないということ。
ということは、事前に特権を与えておきたくても、与えられないとい。
使いどころとしては、複数のAPサーバからdb2へ接続する場合、各APサーバごとにOSユーザを割当、そのユーザ権限においてAPを起動し、そこからdb2に接続するような場合です。とあるドキュメントに書いてあったけど実運用としては考えにくいかも。
普通はSERVER認証でいいはず。
試験対策として、どこまで覚えておけばいいかなー。といったところが悩ましい。
参考書があればいいんだけど。(IBMさんまだ出さないんですか?)


とりあえずここまでが認証タイプの確認。
ついでにコマンド周りをめもめも。

接続
connect to [user [using ]]

インスタンスパラメータ(データベースマネージャ構成パラメータ)の参照
get dbm cfg [show detail]

インスタンスパラメータ(データベースマネージャ構成パラメータ)の変更
update dbm cfg using

パラメータによっては再起動が必要。
db2stop
db2start

明日は権限まわりの予定。



DB2 9 エンジニア試験準備 1:プランニング

  • Posted by: Nakunaru
  • 2010-04-07 Wed 00:01:30
  • db2
ちょっと勉強の間が空いてしまったので、改めて最初から。
国内ではV9対応の参考書もないし手探りな感じです。

以下のページがとても参考になりそうなので、色々と見ながら進めています。
http://d.hatena.ne.jp/kakku22/20091025/1256461211
kakku blog - DB2エンジニア V9(DB2 9 Fundamentals)に合格する方法のまとめ

試験は、Planning/Security/Working with Databases and Database Objects/Working with DB2 Data using SQL and XQuery/Working with DB2 Tables, Views and Indexes/Data Concurrency、以上の6つのカテゴリから出題で、問題数の割合も決まっているらしい。
SQLとindex周りは他のDBと大きく変わらないだろう、と思うわけだけど、pureXMLは新機能で出題が多そうなのできっちり押さえておく予定。

まずはプランニングの分野から前回の復習をしてみた。

まず製品郡はV8と変更になったところがあって、
Enterprise Developer Editionに Personal Developer Editionが統合されて単一の製品になったっぽい。
V8の問題集にはEnterpriseなのかPersonalなのかを問う問題があったきがしたけど、ここは変更と。
クライアントも開発クライアントとリモートクライアントが統合されているみたい。
などなど。
基本的にはIBMのサイト(http://www-06.ibm.com/software/jp/data/db2/v9/edition.html)を参照だけど、試験対策にはちょっと不安なので英語版のサイト(http://www-03.ibm.com/certify/tests/obj730.shtml と http://www.ibm.com/developerworks/offers/lp/db2cert/db2-cert730.html)をエキサイト翻訳に助けてもらいながら必死に読む。
エクステンダー周りもV8とは大分違っているようなのでしっかり確認しておくこと。
日本のサイトではXML周りについては言及されてないけど、英語サイトにはしっかりあるのでこれも要チェック。

次にツール周辺だけど、とりあえずはコントロールセンターと、そこから呼び出せるツールを一通り触って何ができるツールかを把握。
あとはV8の問題集で引っかけ問題とかポイントを把握すれば十分かもしれない。(まだ受験してないけど)
CLPのコマンドオプションは、どこまで突っ込まれるか解らないので、V8の問題集にあるオプションはもちろん、基本的なDB管理作業に必要なものはオンラインマニュアルで調べて覚えておくこと。
db2gcf -u -i インスタンス名 とか見つけてちょっと感動。試験にはでないだろうけど。
ここでみつけたんだけど。(http://db2.jugem.cc/?eid=1750

次がOLTPとDWHの概要について。
これは一般的なそれぞれの違いを知っていればいいのかなー。
一応上に張ったチュートリアルの英語サイトでドキュメントをチェック。

最後に非リレーショナルなデータについて。
これはイメージエクステンダー、spatialエクステンダー、xmlエクステンダー、Net Searchエクステンダー、geodeticエクステンダーについて、ざっくりと確認。
geodeticはspatialとの違いが解りにくいので問題にしやすいかも。要チェック。
Net Searchエクステンダーは9.5(だったかな?)からtext searchに置き換えられるとかなんとか。
試験は9.1準拠でいいはずだけど一応チェックしておこう。
XMLもpureXMLとの違いが多分聞かれるから、それぞれしっかり確認をしておくこと。


うーん。しかし日本語ドキュメントが少ない。
上に張った英語ドキュメントか、有志のブログが主な情報源なところがなんとも。
「5分でわかるDB2」みたいなとてもgoodなコンテンツもあるんだから、もうちょっと日本IBMさんにはがんばっていただきたいなと。

試験が終わったら、ライセンスに違反しない範囲で情報公開できればと考えています。
さー、明日はセキュリティ分野だ。




Index of all entries

Home > 2010年04月

タグクラウド
Categories
Monthly
Recent Entries
Recent Comments
Recent Trackbacks
Appendix

Nakunaru

    Author:Nakunaru

    データベース(ORACLEとかSQL ServerとかDB2とかMySQLとか)とか技術者教育とかプログラムとか。
    気になる技術を少しずつ勉強していきます。


Return to page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。