May 21, 2016

Azure X-Plat CLIでResource Policyを設定する

Azure X-Plat CLIのリリースサイクル OSS/Mac/Linux派なAzurerの懐刀、Azure X-Plat CLIのリリースサイクルは、おおよそ月次です。改善と機能追加を定期的にまわしていくことには意味があるのですが、いっぽう、Azureの機能追加へタイムリーに追随できないことがあります。短期間とはいえ、次のリリースまで空白期間ができてしまうのです。 たとえば、今回のテーマであるResource Policy。GA直後に公開されたドキュメントに、X-Plat CLIでの使い方が2016/5/21現在書かれていません。おやCLIではできないのかい、と思ってしまいますね。でもその後のアップデートで、できるようになりました。 機能リリース時点ではCLIでできなかった、でもCLIの月次アップデートで追加された、いまはできる、ドキュメントの更新待ち。こんなパターンは多いので、あきらめずに探ってみてください。 ポリシーによるアクセス管理 さて本題。リソースの特性に合わせて、きめ細かいアクセス管理をしたいことがあります。 VMやストレージのリソースタグに組織コードを入れること強制し、費用負担の計算に使いたい 日本国外リージョンのデータセンタを使えないようにしたい Linuxのディストリビューションを標準化し、その他のディストリビューションは使えなくしたい 開発環境リソースグループでは、大きなサイズのインスタンスを使えないようにしたい などなど。こういう課題にポリシーが効きます。 従来からあるRBACは「役割と人」目線です。「この役割を持つ人は、このリソースを読み取り/書き込み/アクションできる」という表現をします。組み込みロールの一覧を眺めると、理解しやすいでしょう。 ですが、RBACは役割と人を切り口にしているので、各リソースの多様な特性にあわせた統一表現が難しいです。たとえばストレージにはディストリビューションという属性はありません。無理してカスタム属性なんかで表現すると破綻しそうです。 リソース目線でのアクセス管理もあったほうがいい、ということで、ポリシーの出番です。もちろんRBACと、組み合わせできます。 X-Plat CLIでの定義方法 2016/4リリースのv0.9.20から、X-Plat CLIでもResource Policyを定義できます。 ポリシーの定義、構文はPowerShellと同じなので、公式ドキュメントに任せます。ご一読を。 ポリシーを使用したリソース管理とアクセス制御 X-Plat CLI固有部分に絞って紹介します。 ポリシー定義ファイルを作る CLIでインラインに書けるようですが、人類には早すぎる気がします。ここではファイルに。 例として、作成できるVMのサイズを限定してみましょう。開発環境などでよくあるパターンと思います。VM作成時、Standard_D1~5_v2に当てはまらないVMサイズが指定されると、拒否します。 { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Compute/virtualMachines" }, { "not": { "field": "Microsoft.Compute/virtualMachines/sku.name", "in": [ "Standard_D1_v2", "Standard_D2_v2","Standard_D3_v2", "Standard_D4_v2", "Standard_D5_v2" ] } } ] }, "then": { "effect": "deny" } } policy_deny_vmsize.json というファイル名にしました。では投入。ポリシー名は deny_vmsize とします。 Read more

© Copyright 2019 Toru Makabe

Powered by Hugo & Kiss.