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

—広告—

適用されたAzure Policyの効果を確認

新規に仮想マシンをデプロイしてAzure Policyの効果を確認

新規に仮想マシンをデプロイし、Azure Policyの効果を確認します。

Azure Policyの効果確認
Azure Policyによって、許可されていないサイズが選択できないことが確認できます。

既存の仮想マシンをサイズ変更してAzure Policyの効果を確認

既存リソースに対するAzure Policyの効果を確認します。
デプロイ済みの仮想マシンのサイズを変更し、適用状況を確認します。

仮想マシンのサイズ変更して確認
仮想マシンのサイズ変更がエラーになっていることが確認できます。

Azure Policyの効果をアクティビティログで確認

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

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

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

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

—広告—

最後に

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

引き続き、いろいろ試してみたいと思います。

スポンサーリンク