2015年3月18日水曜日

[kdb] Permission

認証に関するメモ

□ 参考: First Derivatives - q for Gods / 9 Permissions with kdb+
http://www.firstderivatives.com/lecture_series.asp


□ 設定方法
認証を行う方法は以下の2種類
  1. 起動オプションで -u or -U をつける
  2. .z.pw を変更する

kdb+で新しくセッションが作成される際には、以下の順序で処理が行われる
 -u/-U checks ⇒ .z.pw (user check) ⇒ .z.po(port open)

※ .z.pw はデフォルトでは常に1bが返るように定義されている

(1) 起動オプション -u [password_file] / -U [password_file]
事前にパスワードファイルを作成しておき、起動時にパスワードファイルを読み込む
-u: 初期ディレクトリより上の階層にはアクセスできない、OSコマンドは使用できない?
-U: 認証後は制限なし

パスワードファイルは user:password 形式で記載する。
passwordは生で書くか、kdbでmd5形式に変換したものを書く。

$ cat password_file
user:password

$ q -u password_file -p 5001

// md5に変換する方法
q) md5 "password"
0x5f4dcc3b5aa765d61d8327deb882cf99

// md5 hash でパスワードファイルを書く
$ cat password_file_md5
user:0x5f4dcc3b5aa765d61d8327deb882cf99


(2) .z.pw を変更する
.z.pw:{[user;pwd] ... ではユーザーごとに動きを制御することができる。
複雑な制御を行う時はこちらの方法がよい。
First Derivatives のq for Godsでは、message handlerと組み合わせることで User/Poweruser/Superuser ごとに可能なオペレーションを制御する方法が紹介されている。

.z.pw:{[user;pwd]
    // 判断
    // 1b or 0b を返す
  };

// message handler と組み合わせると相性がよいかも
.z.pg:{[query] ...}
.z.ps:{[query] ...}

0 件のコメント:

コメントを投稿