クイックスタート: Azure CLI で Azure ブループリントを定義して割り当てる

重要

2026 年 7 月 11 日に、Blueprints (プレビュー) は非推奨になります。 既存のブループリントの定義と割り当てを Template Specsデプロイ スタックに移行します。 ブループリント アーティファクトは、デプロイ スタックの定義に使用される ARM JSON テンプレートまたは Bicep ファイルに変換されます。 アーティファクトを ARM リソースとして作成する方法については、次を参照してください。

このチュートリアルでは、Azure Blueprints を使用して、ご自分の組織内のブループリントの作成、発行、および割り当てに関連する一般的ないくつかのタスクを実行する方法について説明します。 このスキルは、Azure Resource Manager (ARM) テンプレート、ポリシー、セキュリティに基づいて、再利用可能で迅速にデプロイできる構成を開発するための一般的なパターンを定義するために役立ちます。

前提条件

  • Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
  • 過去に Azure Blueprints を使用したことがない場合は、Azure CLI から az provider register --namespace Microsoft.Blueprint を使用してリソース プロバイダーを登録してください。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Button to launch Azure Cloud Shell.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

ブループリント拡張機能を追加する

Azure CLI でブループリントの定義と割り当てを管理できるようにするには、拡張機能を追加する必要があります。 この拡張機能は、Azure CLI を使用できる場所であればどこでも機能します。 これには、bash on Windows 10Cloud Shell (スタンドアロン バージョンとポータル内のバージョンの両方)、Azure CLI Docker イメージ、またはローカルにインストールされた拡張機能が含まれます。

  1. 最新の Azure CLI がインストールされていることを確認します (2.0.76 以降)。 インストールされていない場合は、こちらの手順に従ってください。

  2. 選択された Azure CLI 環境では、次のコマンドで拡張機能をインポートします。

    # Add the Blueprint extension to the Azure CLI environment
    az extension add --name blueprint
    
  3. 拡張機能がインストールされていて、必要なバージョン (0.1.0 以降) であることを検証します。

    # Check the extension list (note that you might have other extensions installed)
    az extension list
    
    # Run help for extension options
    az blueprint -h
    

ブループリントを作成する

コンプライアンスの標準的なパターンを定義する最初のステップは、使用可能なリソースからブループリントを作成することです。 MyBlueprint という名前のブループリントを作成して、サブスクリプションのロールとポリシーの割り当てを構成してみましょう。 その後、リソース グループ、ARM テンプレート、およびそのリソース グループに対するロールの割り当てを追加します。

Note

Azure CLI を使用している場合、"ブループリント" オブジェクトが最初に作成されます。 追加する各 "成果物" でパラメーターを持つものについては、最初の "ブループリント" でパラメーターを事前に定義します。

  1. 初期 "ブループリント" オブジェクトを作成します。 parameters パラメーターは、すべてのブループリント レベルのパラメーターを含む JSON ファイルを受け取ります。 パラメーターは割り当て中に設定し、後の手順で追加する成果物によって使用されます。

    • JSON ファイル - blueprintparms.json

      {
         "storageAccountType": {
             "type": "string",
             "defaultValue": "Standard_LRS",
             "allowedValues": [
                 "Standard_LRS",
                 "Standard_GRS",
                 "Standard_ZRS",
                 "Premium_LRS"
             ],
             "metadata": {
                 "displayName": "storage account type.",
                 "description": null
             }
         },
         "tagName": {
             "type": "string",
             "metadata": {
                 "displayName": "The name of the tag to provide the policy assignment.",
                 "description": null
             }
         },
         "tagValue": {
             "type": "string",
             "metadata": {
                 "displayName": "The value of the tag to provide the policy assignment.",
                 "description": null
             }
         },
         "contributors": {
             "type": "array",
             "metadata": {
                 "description": "List of AAD object IDs that is assigned Contributor role at the subscription",
                 "strongType": "PrincipalId"
             }
         },
         "owners": {
             "type": "array",
             "metadata": {
                 "description": "List of AAD object IDs that is assigned Owner role at the resource group",
                 "strongType": "PrincipalId"
             }
         }
      }
      
    • Azure CLI コマンド

      # Login first with az login if not using Cloud Shell
      
      # Create the blueprint object
      az blueprint create \
         --name 'MyBlueprint' \
         --description 'This blueprint sets tag policy and role assignment on the subscription, creates a ResourceGroup, and deploys a resource template and role assignment to that ResourceGroup.' \
         --parameters blueprintparms.json
      

      Note

      ブループリントの定義をインポートするときは、blueprint.json というファイル名を使用します。 このファイル名は az blueprint import を呼び出すときに使用されます。

      既定では、ブループリント オブジェクトが既定のサブスクリプションに作成されます。 管理グループを指定するには、managementgroup パラメーターを使用します。 サブスクリプションを指定するには、subscription パラメーターを使用します。

  2. ストレージの成果物のリソース グループを定義に追加します。

    az blueprint resource-group add \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'storageRG' \
       --description 'Contains the resource template deployment and a role assignment.'
    
  3. サブスクリプションでロールの割り当てを追加します。 次の例では、指定されたロールを付与されたプリンシパル ID が、ブループリントの割り当て中に設定されるパラメーターに対して構成されます。 この例では、GUID が b24988ac-6180-42a0-ab88-20f7382dd24cContributor 組み込みロールを使用しています。

    az blueprint artifact role create \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'roleContributor' \
       --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c' \
       --principal-ids "[parameters('contributors')]"
    
  4. サブスクリプションでポリシーの割り当てを追加します。 この例では、GUID が 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71Apply tag and its default value to resource groups 組み込みポリシーを使用しています。

    • JSON ファイル - artifacts\policyTags.json

      {
         "tagName": {
            "value": "[parameters('tagName')]"
         },
         "tagValue": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Azure CLI コマンド

      az blueprint artifact policy create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'policyTags' \
         --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \
         --display-name 'Apply tag and its default value to resource groups' \
         --description 'Apply tag and its default value to resource groups' \
         --parameters artifacts\policyTags.json
      

      Note

      az blueprint を Mac で使用する場合は、パスを含んだパラメーター値の \/ に置き換えてください。 このケースでは、parameters の値が artifacts/policyTags.json になります。

  5. サブスクリプションでストレージ タグに対する別のポリシー割り当てを (storageAccountType_ parameter を再利用して) 追加します。 この追加のポリシー割り当て成果物は、ブループリントで定義されたパラメーターを複数の成果物で使用できることを示します。 この例では、storageAccountType を使用して、リソース グループにタグを設定します。 この値によって、次のステップで作成するストレージ アカウントに関する情報が提供されます。 この例では、GUID が 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71Apply tag and its default value to resource groups 組み込みポリシーを使用しています。

    • JSON ファイル - artifacts\policyStorageTags.json

      {
         "tagName": {
            "value": "StorageType"
         },
         "tagValue": {
            "value": "[parameters('storageAccountType')]"
         }
      }
      
    • Azure CLI コマンド

      az blueprint artifact policy create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'policyStorageTags' \
         --policy-definition-id '/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71' \
         --display-name 'Apply storage tag to resource group' \
         --description 'Apply storage tag and the parameter also used by the template to resource groups' \
         --parameters artifacts\policyStorageTags.json
      

      Note

      az blueprint を Mac で使用する場合は、パスを含んだパラメーター値の \/ に置き換えてください。 このケースでは、parameters の値が artifacts/policyStorageTags.json になります。

  6. リソース グループにテンプレートを追加します。 ARM テンプレートの template パラメーターには、テンプレートの標準的な JSON コンポーネントが含まれています。 また、テンプレートでは、それぞれをテンプレートに渡すことで、storageAccountTypetagNametagValue ブループリント パラメーターも再利用します。 ブループリント パラメーターは、parameters パラメーターを使用してテンプレートで使用でき、テンプレート JSON 内ではそのキーと値のペアを使用して値を挿入します。 ブループリントとテンプレート パラメーターの名前は同じでもかまいません。

    • JSON ARM テンプレート ファイル - artifacts\templateStorage.json

      {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
              "storageAccountTypeFromBP": {
                  "type": "string",
                  "metadata": {
                      "description": "Storage Account type"
                  }
              },
              "tagNameFromBP": {
                  "type": "string",
                  "defaultValue": "NotSet",
                  "metadata": {
                      "description": "Tag name from blueprint"
                  }
              },
              "tagValueFromBP": {
                  "type": "string",
                  "defaultValue": "NotSet",
                  "metadata": {
                      "description": "Tag value from blueprint"
                  }
              }
          },
          "variables": {
              "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]"
          },
          "resources": [{
              "type": "Microsoft.Storage/storageAccounts",
              "name": "[variables('storageAccountName')]",
              "apiVersion": "2016-01-01",
              "tags": {
                  "[parameters('tagNameFromBP')]": "[parameters('tagValueFromBP')]"
              },
              "location": "[resourceGroup().location]",
              "sku": {
                  "name": "[parameters('storageAccountTypeFromBP')]"
              },
              "kind": "Storage",
              "properties": {}
          }],
          "outputs": {
              "storageAccountSku": {
                  "type": "string",
                  "value": "[variables('storageAccountName')]"
              }
          }
      }
      
    • JSON ARM テンプレート パラメーター ファイル - artifacts\templateStorageParams.json

      {
         "storageAccountTypeFromBP": {
            "value": "[parameters('storageAccountType')]"
         },
         "tagNameFromBP": {
            "value": "[parameters('tagName')]"
         },
         "tagValueFromBP": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Azure CLI コマンド

      az blueprint artifact template create \
         --blueprint-name 'MyBlueprint' \
         --artifact-name 'templateStorage' \
         --template artifacts\templateStorage.json \
         --parameters artifacts\templateStorageParams.json \
         --resource-group-art 'storageRG'
      

      Note

      az blueprint を Mac で使用する場合は、パスを含んだパラメーター値の \/ に置き換えてください。 このケースでは、template の値が artifacts/templateStorage.json になり、parameters の値が artifacts/templateStorageParams.json になります。

  7. リソース グループにロールの割り当てを追加します。 前のロール割り当てエントリと同様に、次の例では、Owner ロールに対する定義識別子を使用して、ブループリントとは異なるパラメーターを指定します。 この例では、GUID が 8e3af657-a8ff-443c-a75c-2fe8c4bcb635Owner 組み込みロールを使用しています。

    az blueprint artifact role create \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'roleOwner' \
       --role-definition-id '/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635' \
       --principal-ids "[parameters('owners')]" \
       --resource-group-art 'storageRG'
    

ブループリントを発行する

これで成果物がブループリントに追加されたので、発行することができます。 発行すると、ブループリントをサブスクリプションに割り当てることができるようになります。

az blueprint publish --blueprint-name 'MyBlueprint' --version '{BlueprintVersion}'

{BlueprintVersion} の値は、文字、数字、ハイフンの (スペースまたは他の特殊文字を含まない) 文字列です。 最大長は 20 文字です。 一意で内容がわかるものを使用します (例: v20200605-135541)。

ブループリントを割り当てる

Azure CLI を使用してブループリントを発行すると、サブスクリプションに割り当てることができるようになります。 作成したブループリントを、ご自分の管理グループ階層下のいずれかのサブスクリプションに割り当てます。 ブループリントは、サブスクリプションに保存された場合、そのサブスクリプションに対してのみ割り当てることができます。 割り当てるブループリントは、blueprint-name パラメーターで指定します。 namelocationidentitylockblueprint パラメーターを指定するには、az blueprint assignment create コマンドで対応する Azure CLI パラメーターを使用するか、"パラメーター" の JSON ファイルでそれらを指定します。

  1. サブスクリプションに割り当てることにより、ブループリントのデプロイを実行します。 contributors および owners パラメーターにはロールの割り当てを付与するプリンシパルの objectIds の配列が必要なので、Azure Active Directory Graph API を使用して、独自のユーザー、グループ、またはサービス プリンシパルに対する parameters で使用するための objectIds を収集します。

    • JSON ファイル - blueprintAssignment.json

      {
         "storageAccountType": {
             "value": "Standard_GRS"
         },
         "tagName": {
             "value": "CostCenter"
         },
         "tagValue": {
             "value": "ContosoIT"
         },
         "contributors": {
             "value": [
                 "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
                 "38833b56-194d-420b-90ce-cff578296714"
             ]
         },
         "owners": {
             "value": [
                 "44254d2b-a0c7-405f-959c-f829ee31c2e7",
                 "316deb5f-7187-4512-9dd4-21e7798b0ef9"
             ]
         }
      }
      
    • Azure CLI コマンド

      az blueprint assignment create \
         --name 'assignMyBlueprint' \
         --location 'westus' \
         --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \
         --parameters blueprintAssignment.json
      
    • ユーザー割り当てマネージド ID

      ブループリントの割り当てでは、ユーザー割り当てマネージド ID を使用することもできます。 この場合、identity-type パラメーターは UserAssigned に設定され、user-assigned-identities パラメーターにより ID が指定されます。 {userIdentity} は、ご自分のユーザー割り当てのマネージド ID の名前に置き換えます。

      az blueprint assignment create \
         --name 'assignMyBlueprint' \
         --location 'westus' \
         --identity-type UserAssigned \
         --user-assigned-identities {userIdentity} \
         --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \
         --parameters blueprintAssignment.json
      

      ユーザー割り当てマネージド ID は、ブループリントを割り当てるユーザーにアクセス許可があれば、どのサブスクリプションおよびどのリソース グループに属していてもかまいません。

      重要

      Azure Blueprints は、ユーザー割り当てのマネージド ID を管理しません。 ユーザーが各自で十分なロールとアクセス許可を割り当てる必要があります。そうしないと、ブループリントの割り当てに失敗します。

リソースをクリーンアップする

ブループリントは、サブスクリプションから削除することができます。 多くの場合、アーティファクトのリソースが不要になったときは削除するようにします。 ブループリントを削除しても、そのブループリントの一部として割り当てられている成果物は後に残されます。 ブループリントの割り当てを解除するには、az blueprint assignment delete コマンドを使用します。

az blueprint assignment delete --name 'assignMyBlueprint'

次のステップ

このクイックスタートでは、Azure CLI を使用して、ブループリントを作成、割り当て、削除しました。 Azure Blueprints の詳細については、ブループリントのライフサイクルに関する記事に進んでください。