2016/12/27(火)2016-12-27

おめざめ

0620ご飯食べて二度寝して顔洗って会社行くよ

あっ

ひげそり忘れた

おしごと

午前中

部門会議での発表資料の最終修正やら発表前レビューやらで午前中がすべてつぶれた。まぁしかたないね。

会議

会議で発表、まずまずの感触だけれどやっぱりお偉いさんには難しすぎる内容でどうしたもんやら。かみ砕いて話していくとすると4倍の時間かかっちゃうし……仕方ないのでまぁ頑張りつつあきらめて。
煙に巻く
やや技術用語で煙に巻く感があって嫌なんだけれどね。

OpenStack Policy.jsonを読む

今日のメインテーマ。色々ドキュメント漁ったり公式のドキュメント日本語のも英語のも読んだけれどイマイチ考えている通りに動かずもやもやしている。

検証環境

Ubuntu14.04.5の上に構築したOpenStack Mitaka版のdevstack

検証内容

devstackではadminとdemoのユーザが作られロールも割り当てられる。通常ロールで管理するがなるべく簡単に理解する為にUserIDで検証。
他人の作ったVMを消せないように
adminユーザーでnova bootしたVMをdemoユーザで消せないようにしたい。

変更内容

/etc/nova/policy.jsonを編集
"compute:delete": "user_id:%(user_id)s",
compute:delete行をuser_idが一致する時にのみ使える様にする。

検証失敗

demoユーザでadmin userのIDで構築したVMをnova deleteしてみるとあっさり消せる。ぇ~

パラメータ違い?

"compute:delete": "!",
にすれば誰もこの操作を行えなくなる筈なのにnova delete出来てしまう。あれ?nova deleteってcompute:deleteじゃないって事?もうちょっとがっつり確認が必要そうだ。しかしpolicy.jsonのドキュメント無いのかな。

総当たり

"os_compute_api:servers:delete": "user_id%(target.token.user_id)s",
まぁちょっとカンを働かせながら探していったらconsoleから消すのはこれでした。考えたらローカルであってもOS_AUTH_URLを入れてAPI叩いているわけでapi通信だなって分かればも少し解析早かったかも。

そして消す対象はtarget.token.user_idが正しいようだ。
最後に参考にしたURL
http://docs.openstack.org/security-guide/identity/policies.html
http://docs.openstack.org/mitaka/config-reference/policy-json-file.html

まだだめだった

target.token.user_idではダメっぽい。role辺りをもう少し検証する必要がありそう。