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

2020-12-13Azure,Policy,Virtual Machines

Azure Policy(ポリシー)の設定手順や、ポリシー適用時の挙動について簡単にまとめました。
今回は、仮想マシン(Azure VM)のサイズ制限を例に確認しています。

    • ポリシーの概要や効果
    • ビルトインポリシー(仮想マシンのサイズ制限)の適用手順
    • ポリシー割り当て後の動作確認
    • ポリシーが適用された際のログ確認

※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※本記事では、Azure Policyをポリシーと記載している場合があります。
※Azureのビルトインポリシーを利用して確認しています。

スポンサーリンク

Azure Policyのデフォルト定義を割り当て

Azure Policyとは

Azure Policy

Azure Policyは、Azure上のリソースに対して様々な制限やコンプライアンスルールを適用するサービスです。
リソースのデプロイや設定を制限したり、自動で修復したりすることで、組織のコンプライアンスとセキュリティを強化します。

一言でまとめると、”あらかじめ定めたルールに違反する操作を制限・禁止し、必要に応じて設定の強制や自動修復も可能なサービス”です。
セキュリティ要件を満たさないリソースの作成を防止することができます。

Azure Policyの代表的な活用例として、次のようなものがあります。

    • リソースのデプロイを許可するリージョンを限定(他のリージョンでのリソースデプロイを禁止)
    • 許可されたリソースの種類以外はデプロイできないよう制限
    • 仮想マシンにNSG(ネットワークセキュリティグループ)のアタッチを強制

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 Policyの効果を確認します。

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

既存の仮想マシンをサイズ変更

height: 10px;

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

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

アクテビティログを確認

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

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

準拠してない仮想マシンを起動

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

—広告—

最後に

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

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

スポンサーリンク