Azure Policyの設定手順、効果をAzure VMサイズ制限で確認

2020-12-13Azure,Policy,Virtual Machine

仮想マシン(Azure VM)のサイズ制限を例にポリシー(Azure Policy)設定や挙動について確認してみました。

    • ポリシーの概要(効果)
    • ビルトインポリシー(仮想マシン(Azure VM)のサイズ制限)定義をリソースグループに割り当て
    • 割り当てたポリシーの確認
    • 仮想マシン(Azure VM)のデプロイやサイズ変更してポリシーの効果、ログ確認

※今回はビルトインポリシーを利用しています。

スポンサーリンク

ポリシー(Azure Policy)のデフォルト定義を割り当て

ポリシー(Azure Policy)とは

Azure Policy

ポリシー(Azure Policy)はリソースに対して制限するサービスになります。
リソースのデプロイや設定を制限や修復する事でコンプライアンスとセキュリティを強化します。

1言で纏めてみるとルールを決めてそのルールに沿わないような作業を禁止する事が出来るサービスと言えます。
設定を強制する事が出来るので、セキュリティの緩いリソースの作成を防げます。

    • デプロイを許可するリージョンを制限する
    • 許可されたリソースの種類以外はデプロイさせない
    • 仮想マシン(Azure VM)のネットワークセキュリティグループ(NSG)を強制する

ポリシー(Azure Policy)の適用範囲もサブスクリプションやリソースグループと言うように指定出来ます。
除外設定も可能です。
独自ルールのポリシー(Azure Policy)を作成する事も出来ます。

複数の関連するポリシー定義をグループ化してイニシアティブ定義とする事も出来ます。

Azure Policy イニシアチブ定義の構造

ポリシー(Azure Policy)の効果

ポリシー(Azure Policy)には効果の種類があります。

Azure Policy の効果について

ポリシー(Azure Policy)には評価の順番があります。

評価の順序

ポリシー(Azure Policy)の効果を評価順に概要を纏めます。

効果(評価順) 概要
①Disabled

ポリシーを無効化します。
テスト時に一時的に無効化するなどで利用します。

②Append 既存のリソースに新しい設定を追加します。
既存リソースに診断設定を追加してログ収集させるような場合などに利用します。
Append はタグ以外のプロパティで使用することを目的としています。
②Modify 既存のリソース設定に新しい設定を追加します。
既存のリソースグループにタグを追加しするような場合などに利用します。
Modifyはタグのプロパティで使用することを目的としています。
③Deny ポリシー定義に一致した場合にリソースデプロイメントを拒否またはブロックします。
ポリシー定義に合致しないリソースの作成を拒否したい場合に利用します。
④Audit ポリシー定義に一致した場合にアクテビティログに出力します。
デプロイメント等の操作自体は許可されます。
⑤Manual リソースまたはスコープのコンプライアンスを自己証明します。
評価をアクティブにスキャンさせずに手動の変更をコンプライアンス状態とします。
⑥AuditIfNotExists

ポリシー定義に一致しないリソースの存在を監査しログに出力します。
DeployIfNotExistsとの違いはリソースを新規にデプロイせずログにのみ出力します。

⑥DeployIfNotExists 

ポリシー定義に一致しないリソースが存在した場合、一致したリソースをデプロイします。
AuditIfNotExistsとの違いはリソースを新規に作成します。

⑦denyAction リソースに対する操作をブロックするために使われます。
現時点ではDELETEのみがサポートされており、リソースの削除を防ぐことが出来ます。

※denyActionはプレビュー段階になります。
※同じ評価順の効果は同時に評価されます。

ビルトインのポリシー(Azure Policy)を適用

ビルトインのポリシー定義はサブスクリプションやリソースグループに割り当てることが出来ます。
今回はリソースグループ(test-rg)に割り当てます。
許可されている仮想マシンサイズ SKUのビルトインのポリシー定義を適用します。

※許可されている仮想マシンサイズ SKUはDenyの効果を持つポリシー定義です。

ポリシー定義割り当て
ポリシーの左側のメニューで定義を選択します。
検索にVirtual Machine Sizeと入力します。
Allowed virtual machine size SKUsを選択します。

許可されている仮想マシンサイズ SKUのポリシー定義が表示されます。
割り当てを選択します。

※Denyの効果を持つポリシー定義です。

スコープでポリシー定義を適用する範囲を指定します。
今回はリソースグループ(test-rg)を指定しています。

※その他の項目はデフォルトのままとしています。

詳細設定です。
リソースセレクターを利用すると対象のリソースを細かく制限する事が出来ます。

リソースセレクター(プレビュー)

オーバライドを利用すると効果だけを変更する事が出来ます。

オーバーライド (プレビュー)

今回はデフォルトのまま進みます。

ポリシー定義のパラメータを設定します。
仮想マシンサイズを制限するポリシーでは許可するサイズを指定します。

※試験用にStandard B2als_v2のみを許可する設定としています。

修復の設定です。
deployNotExists もしくは modifyの効果を持つ場合はリソースに対する操作が発生します。
リソース操作する権限としてマネージドIDが必要になります。

※今回はDenyの効果なのでマネージドIDは作成せず進めます。

非準拠時に表示するメッセージを設定出来ます。
”B2als v2以外のサイズは許可されません”と設定しています。
確認画面です。
内容を確認し作成を選択します。

割り当ての確認

ポリシー(Azure Policy)の割り当てを確認します。

割り当て確認
ポリシーの左側のメニューで割り当てを選択します。
割り当てされているポリシーの一覧が表示されます。
リソースグループのスコープにポリシーが割り当てされています。
ポリシーを選択するとポリシーの設定内容が表示されます。
パラメータ設定の内容が表示されます。
コンプライアンスの表示を選択すると準拠状況が表示されます。
既存リソースの準拠準拠が分かります。

適用されたポリシーの確認

新規に仮想マシン(Azure VM)をデプロイ

新規に仮想マシン(Azure VM)をデプロイしてポリシー(Azure Policy)の効果を確認します。

ポリシーの効果確認
ポリシー(Azure Policy)で許可されたサイズが選択できないようになっている事が確認出来ます。

既存の仮想マシン(Azure VM)をサイズ変更

height: 10px;

既存リソースへのポリシー(Azure Policy)の効果を確認します。
デプロイ済みの仮想マシン(Azure VM)のサイズを変更して確認します。

サイズ変更して確認
サイズ変更がエラーになっている事が確認出来ます。

アクテビティログを確認

アクテビティログへの出力内容を確認します。

アクテビティログ
コンプライアンスの表示からポリシーに該当したアクテビティログを表示できます。
仮想マシン(Azure VM)の変更に失敗したログとポリシーが適用されたログが確認出来ます。

準拠してない仮想マシン(Azure VM)を起動

今回のポリシー(Azure Policy)はサイズ変更に対する制限になります。
準拠していない仮想マシン(Azure VM)であったとしても起動する事は出来ます。
仮想マシン(Azure VM)の起動は設定変更を伴いません。
その為ポリシー(Azure Policy)が適用されません。

最後に

今回は仮想マシン(Azure VM)のサイズ制限を例にポリシー(Azure Policy)設定や挙動について確認してみました。
クラウドでの操作ミスや意図せぬ挙動を簡単な設定で防ぐことが出来るのはとても便利かと思います。

今後も引き続き試してみたいと思います。

スポンサーリンク