OpenStackのpolicy.jsonを個別ユーザ仕様にする

コンポーネント毎に設置されている policy.json ですが、デフォルト設定だけでも多いのに、隠れ設定もいっぱいあるため把握するのが非常に面倒くさいです。

が、デフォだと他人が作成したVMを勝手に削除したり色々できてしまうので、
グッと我慢して、隠れ設定のページを見つけたり、他人のVMをイジれないようにしました。



Nova

目的は、別ユーザが作成したVMを削除したり、コンソール覗いたり、Volumeを弄ったり、スナップショット取ったりできないようにすることです。参考にしたページはこちら
  • Re: [rhos-list] Control Access to instance termination

  • /etc/nova/policy.json

    この設定で不満なところは、

  • compute_extension:keypairs が不要だったので制限すると、VM起動時に”キーペアが取得できない”というエラーが表示されるようになった
  • 一般ユーザがポート開放できないように compute_extension:security_groups を制限したら、現在開放されているポート一覧すら見れなくなった

  • それ以外のVM回りに関しては、大体うまく制限できたと思います。


    Quantum

    Quantumを使ってるので、ネットワーク周りはこちらになります。
    この辺は運用ルール上、一般ユーザに一切必要なかったのでバシバシ制限しています。

    /etc/quantum/policy.json


    Cinder

    こちらはNova同様、別ユーザのボリュームやスナップショットにイタズラできないようにしています。参考ページはこちら。
  • cinder/cinder/tests/policy.json at master · rnirmal/cinder · GitHub

  • /etc/cinder/policy.json


    Glance

    隠し設定は探しましたが、結果的に設定は何もイジっていません。参考ページはこちら。
  • Policies — glance 2013.2.a65.g9daf387 documentation

  • /etc/glance/policy.json

    目的としては、一般ユーザがイメージの作成をできないようにしたかったのですが、add_image を制限してしまうと、なんとスナップショット作成もできなくなってしまうという罠が。

    glance image-download を抑制する気持ちで download_image を制限したら、VM作成自体できなくなるという動きも。



    全体的には、細かい項目に分けられていて十分だとは思うのですが、痒いところに届かなかったというか、実際に検証したり、ソースを追わないと影響範囲がはっきりしないので、便利さはまだ少し欠けるなという印象でした。

    なので、存在する設定項目を全て policy.json に記述しておくのと、
    それなりにでもドキュメントに説明があったらいいなと思う次第でした。