ポリシーを使用して基準を適用する

完了

リソース グループを使用することでリソースがより適切に整理されました。請求報告や監視ソリューションのためにリソースにタグを付けました。 リソースのグループ化とタグ付けは既存のリソースで大きな力を発揮しました。しかしながら、新しいリソースに規則を確実に適用するにはどうすれば良いでしょうか。 Azure 環境で基準を適用する方法としてポリシーがいかに役立つか見てみましょう。

Azure Policy とは何ですか。

Azure Policy は、ポリシーの作成、割り当て、管理に使用できるサービスです。 このポリシーは、リソースが従う必要がある規則を適用して強制します。 これらのポリシーは、リソースが作成されるときにこれらの規則を強制したり、既存のリソースの有効性を確認し、規則に従っていることを判断したりできます。

ポリシーでは、たとえば、特定の種類のリソースのみ作成を許可したり、特定の Azure リージョンでのみリソースを許可したりするルールを適用できます。 Azure 環境全体で命名規則を適用できます。 特定のタグがリソースに適用されるように強制することもできます。 それではポリシーのしくみを見てみましょう。

ポリシーの作成

すべてのリソースに Department タグを関連付け、そのタグが存在しない場合には、作成を確実に禁止したいと思います。 新しいポリシー定義を作成し、それを 1 つの範囲に割り当てます。この場合、範囲は msftlearn-core-infrastructure-rg リソース グループになります。 ポリシーは Azure portal、Azure PowerShell、または Azure CLI から作成し、割り当てることができます。 この演習では、ポータルでポリシーを作成します。

ポリシーの定義を作成する

  1. まだ行っていない場合は、Web ブラウザーで Azure portal に移動します。 上部ナビゲーション バーの検索ボックスで「ポリシー」を検索し、[ポリシー] サービスを選択します。

  2. 左側のメニューの [作成] セクションで、[定義] ペインを選択します。

  3. 組み込みポリシーの一覧が表示されるので、組み込みポリシーを使用することができます。 今回は、独自のポリシーを作成します。 上部メニューから [+ ポリシー定義] を選択します。

  4. このボタンをクリックすると、[新しいポリシー定義] ダイアログが表示されます。 [定義の場所] を設定するには、青い [スコープ セレクターを起動 (...)] を選択します。ポリシーを保存するサブスクリプションを選択します。これはリソース グループと同じサブスクリプションにしてください。 [選択] ボタンを選択します。

  5. [新しいポリシー定義] ダイアログに戻り、[名前] フィールドに「Enforce tag on resource」 (リソースにタグを適用する) と入力します。

  6. [説明] には、「This policy enforces the existence of a tag on a resource」 (このポリシーでは、強制的にリソースにタグを適用します) と入力します。

  7. [カテゴリ] には [既存のものを使用] を選択し、[全般] カテゴリを選択します。

  8. [ポリシー ルール] では、ボックスに入っているテキストを全部削除し、次の JSON を貼り付けます。

    {
      "mode": "Indexed",
      "policyRule": {
        "if": {
          "field": "[concat('tags[', parameters('tagName'), ']')]",
          "exists": "false"
        },
        "then": {
          "effect": "deny"
        }
      },
      "parameters": {
        "tagName": {
          "type": "String",
          "metadata": {
            "displayName": "Tag Name",
            "description": "Name of the tag, such as 'environment'"
          }
        }
      }
    }
    

    ポリシー定義は以下の例のようになります。 [保存] を選択してポリシー定義を保存します。

    Screenshot of Azure portal showing the new policy definition dialog.

ポリシー割り当てを作成する

ポリシーを作成しましたが、まだ有効にしていません。 ポリシーを有効にするには、割り当てを作成する必要があります。 今回は、msftlearn-core-infrastructure-rg リソース グループという範囲にポリシーを割り当てます。このリソース グループに含まれる全部にポリシーが適用されます。

  1. ポリシー ペインで、左側の [作成] セクションの [割り当て] を選択します。

  2. 上部にある [ポリシーの割り当て] を選択します。

  3. [ポリシーの割り当て] ウィンドウで、ポリシーをリソース グループに割り当てます。 [スコープ] で、青色のスコープ セレクターを起動 (...) を選択します。サブスクリプションと msftlearn-core-infrastructure-rg リソース グループを選択し、[選択] ボタンを選択します。

  4. [ポリシー定義] で、青色のポリシー定義ピッカーを起動 (...) を選択します。[種類] ドロップダウンで [カスタム] を選択し、作成した [Enforce tag on resource] (リソースにタグを適用する) ポリシーを選択し、[追加] をクリックします。

  5. 画面の上部にある [パラメーター] タブを選択します。

  6. [パラメーター] ウィンドウの [タグ名] には「Department」と入力します。

  7. [確認と作成] を選択し、次に [作成] を選択して割り当てを作成します。

ポリシーをテストする

これでポリシーがリソース グループに割り当てられました。Department タグなしでリソースを作成しようとすると失敗します。

重要

ポリシーの割り当てが有効になるまで 30 分ほどかかる場合があります。 この遅延のため、次の手順ではポリシーの検証が成功する可能性がありますが、デプロイは失敗します。 このような場合は、もう少し待ってからデプロイを再試行してください。

  1. Azure portal のメニューまたは [ホーム] ページから [リソースの作成] を選択します。

  2. [ストレージ アカウント] を検索し、[ストレージ アカウント] を選択します。 結果から、[作成] を選択します。

  3. サブスクリプションを選択し、msftlearn-core-infrastructure-rg リソース グループを選択します。

  4. [ストレージ アカウント名] には、自分で選んだ名前を付けますが、グローバルで一意の名前にする必要があります。

  5. 残りのオプションは既定値のままにし、[確認] を選択します。

    Department タグがリソースに付いていないため、リソース作成の検証は失敗します。 ポリシーによって検証エラーが発生しない場合は、有効になるまでさらに数分待つことが必要な場合があります。

    Screenshot of Azure portal showing a policy validation failure on a new storage account without a tag.

    ストレージ アカウントを正常にデプロイできるように違反を解消します。

  6. [ストレージ アカウントの作成] ウィンドウの上部にある [タグ] を選択します。

  7. Department:Finance タグを一覧に追加します。

    Screenshot of Azure portal showing a new Department tag to add during creation.

  8. 次に、[確認] をクリックします。 妥当性検証で合格が出ます。[作成] を選択すると、ストレージ アカウントが作成されます。

ポリシーを使用して基準を適用する

ポリシーを使用し、リソースを整理するタグを確実にリソースに付ける方法を確認しました。 ポリシーを利用して利益を得る方法は他にもあります。

たとえば、ポリシーを使用し、リソースをデプロイできる Azure リージョンを制限できます。 組織で規制が厳しい場合、あるいはデータの置き場所に関して法律または条例による規制がある場合、そのような要件に違反する地理的領域でリソースがプロビジョニングされないようにポリシーを役立てることができます。

ポリシーを使用して、デプロイする仮想マシン サイズの種類を制限することもできます。 運用サブスクリプションでは大規模な VM サイズを許可し、開発サブスクリプションではコストを最小限に抑えることがあります。 開発サブスクリプションでポリシーを利用し、大規模 VM サイズを禁止することで、確実にそのようなデプロイが回避されます。

ポリシーを使用し、命名規則を強制することもできます。 特定の命名規則について組織が標準を設定している場合、ポリシーを使用してその命名規則を強制することで、Azure リソース全体で一貫した命名規則標準が守られます。