Share via


Guia de início rápido: definir e atribuir um plano do Azure com a CLI do Azure

Importante

Em 11 de julho de 2026, os Blueprints (Preview) serão preteridos. Migre suas definições e atribuições de blueprint existentes para Especificações de modelo e Pilhas de implantação. Os artefatos do Blueprint devem ser convertidos em modelos JSON ARM ou arquivos Bicep usados para definir pilhas de implantação. Para saber como criar um artefato como um recurso ARM, consulte:

Neste tutorial, você aprenderá a usar o Azure Blueprints para executar algumas das tarefas comuns relacionadas à criação, publicação e atribuição de um plano em sua organização. Essa habilidade ajuda você a definir padrões comuns para desenvolver configurações reutilizáveis e rapidamente implantáveis, com base em modelos, políticas e segurança do Azure Resource Manager (ARM).

Pré-requisitos

  • Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
  • Se você não tiver usado o Azure Blueprints antes, registre o provedor de recursos por meio da CLI do Azure com az provider register --namespace Microsoft.Blueprint.

Azure Cloud Shell

O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Ligação
Selecione Experimentar no canto superior direito de um código ou bloco de comandos. Selecionar Experimentar não copia automaticamente o código ou comando para o Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. Button to launch Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. Screenshot that shows the Cloud Shell button in the Azure portal

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e Linux ou selecionando Cmd+Shift+V no macOS.

  4. Selecione Enter para executar o código ou comando.

Adicionar a extensão do blueprint

Para habilitar a CLI do Azure para gerenciar definições e atribuições de blueprint, você deve adicionar a extensão. Essa extensão funciona onde quer que você possa usar a CLI do Azure. Isso inclui bash no Windows 10, Cloud Shell (tanto a versão autônoma quanto a que está dentro do portal), a imagem do Azure CLI Docker ou uma extensão instalada localmente.

  1. Verifique se a CLI mais recente do Azure está instalada (pelo menos 2.0.76). Se não estiver ainda instalado, siga estas instruções.

  2. Em seu ambiente de CLI do Azure de escolha, importe a extensão com o seguinte comando:

    # Add the Blueprint extension to the Azure CLI environment
    az extension add --name blueprint
    
  3. Valide se a extensão foi instalada e é a versão esperada (pelo menos 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
    

Criar um esquema

O primeiro passo na definição de um padrão de conformidade é compor um esquema a partir dos recursos disponíveis. Vamos criar um plano chamado MyBlueprint para configurar atribuições de função e política para a assinatura. Em seguida, você adiciona um grupo de recursos, um modelo ARM e uma atribuição de função no grupo de recursos.

Nota

Quando você estiver usando a CLI do Azure, o objeto blueprint é criado primeiro. Para cada artefato a ser adicionado que tenha parâmetros, você define os parâmetros com antecedência no esquema inicial.

  1. Crie o objeto esquema inicial. O parameters parâmetro usa um arquivo JSON que inclui todos os parâmetros de nível de blueprint. Você define os parâmetros durante a atribuição e eles são usados pelos artefatos adicionados em etapas posteriores.

    • Arquivo 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"
             }
         }
      }
      
    • Comando da CLI do Azure

      # 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
      

      Nota

      Use o nome do arquivo blueprint.json ao importar suas definições de blueprint. Esse nome de arquivo é usado quando você chama az blueprint import.

      O objeto blueprint é criado na assinatura padrão por padrão. Para especificar o grupo de gerenciamento, use o parâmetro managementgroup. Para especificar a assinatura, use o parâmetro subscription.

  2. Adicione o grupo de recursos para os artefatos de armazenamento à definição.

    az blueprint resource-group add \
       --blueprint-name 'MyBlueprint' \
       --artifact-name 'storageRG' \
       --description 'Contains the resource template deployment and a role assignment.'
    
  3. Adicione uma atribuição de função na assinatura. No exemplo a seguir, as identidades principais concedidas à função especificada são configuradas para um parâmetro que é definido durante a atribuição do blueprint. Este exemplo usa a Contributor função interna, com um GUID de b24988ac-6180-42a0-ab88-20f7382dd24c.

    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. Adicione uma atribuição de política na assinatura. Este exemplo usa a Apply tag and its default value to resource groups política interna, com um GUID de 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • Arquivo JSON - artefatos\policyTags.json

      {
         "tagName": {
            "value": "[parameters('tagName')]"
         },
         "tagValue": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Comando da CLI do Azure

      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
      

      Nota

      Quando você usa az blueprint em um Mac, substitua \ por / para valores de parâmetro que incluem o caminho. Neste caso, o valor para parameters torna-se artifacts/policyTags.json.

  5. Adicione outra atribuição de política para a marca de armazenamento (reutilizando storageAccountType_ parameter) na assinatura. Este artefacto de atribuição de política adicional demonstra que um parâmetro definido no esquema é utilizável por mais do que um artefacto. No exemplo, você usa o storageAccountType para definir uma marca no grupo de recursos. Esse valor fornece informações sobre a conta de armazenamento que você cria na próxima etapa. Este exemplo usa a Apply tag and its default value to resource groups política interna, com um GUID de 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • Arquivo JSON - artefatos\policyStorageTags.json

      {
         "tagName": {
            "value": "StorageType"
         },
         "tagValue": {
            "value": "[parameters('storageAccountType')]"
         }
      }
      
    • Comando da CLI do Azure

      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
      

      Nota

      Quando você usa az blueprint em um Mac, substitua \ por / para valores de parâmetro que incluem o caminho. Neste caso, o valor para parameters torna-se artifacts/policyStorageTags.json.

  6. Adicione um modelo em grupo de recursos. O template parâmetro para um modelo ARM inclui os componentes JSON normais do modelo. O modelo também reutiliza os storageAccountTypeparâmetros , tagNamee tagValue blueprint passando cada um para o modelo. Os parâmetros do blueprint estão disponíveis para o modelo usando o parâmetro parameters, e dentro do modelo JSON esse par chave-valor é usado para injetar o valor. Os nomes dos parâmetros blueprint e template podem ser os mesmos.

    • Arquivo de modelo JSON ARM - artefatos\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')]"
              }
          }
      }
      
    • Arquivo de parâmetro de modelo JSON ARM - artefatos\templateStorageParams.json

      {
         "storageAccountTypeFromBP": {
            "value": "[parameters('storageAccountType')]"
         },
         "tagNameFromBP": {
            "value": "[parameters('tagName')]"
         },
         "tagValueFromBP": {
            "value": "[parameters('tagValue')]"
         }
      }
      
    • Comando da CLI do Azure

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

      Nota

      Quando você usa az blueprint em um Mac, substitua \ por / para valores de parâmetro que incluem o caminho. Neste caso, o valor para template torna-se artifacts/templateStorage.json, e parameters torna-se artifacts/templateStorageParams.json.

  7. Adicione uma atribuição de função no grupo de recursos. Semelhante à entrada de atribuição de função anterior, o exemplo a seguir usa o identificador de definição para a Owner função e fornece um parâmetro diferente do blueprint. Este exemplo usa a Owner função interna, com um GUID de 8e3af657-a8ff-443c-a75c-2fe8c4bcb635.

    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'
    

Publicar um esquema

Agora que você adicionou os artefatos ao projeto, é hora de publicá-lo. A publicação disponibiliza o esquema para atribuição a uma assinatura.

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

O valor para {BlueprintVersion} é uma sequência de letras, números e hífenes (sem espaços ou outros caracteres especiais). O comprimento máximo é de 20 carateres. Use algo único e informativo, como v20200605-135541.

Atribuir um esquema

Depois de publicar um plano usando a CLI do Azure, ele pode ser atribuído a uma assinatura. Atribua o esquema que você criou a uma das assinaturas na hierarquia do grupo de gerenciamento. Se o esquema for salvo em uma assinatura, ele só poderá ser atribuído a essa assinatura. O blueprint-name parâmetro especifica o esquema a ser atribuído. Para fornecer os nameparâmetros , location, identity, lock, e , use blueprint os parâmetros correspondentes da CLI do az blueprint assignment create Azure no comando ou forneça-os no arquivo JSON de parâmetros .

  1. Execute a implementação do esquema, atribuindo-o a uma subscrição. Como os contributors parâmetros e owners exigem que uma matriz dos principais receba a atribuição de função, use a API do Azure Ative Directory Graph para coletar o objectIds para uso no parameters para seus próprios usuários, grupos ou entidades de objectIds serviço.

    • Arquivo 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"
             ]
         }
      }
      
    • Comando da CLI do Azure

      az blueprint assignment create \
         --name 'assignMyBlueprint' \
         --location 'westus' \
         --resource-group-value artifact_name=storageRG name=StorageAccount location=eastus \
         --parameters blueprintAssignment.json
      
    • Identidade gerida atribuída pelo utilizador

      Uma atribuição de blueprint também pode usar uma identidade gerenciada atribuída pelo usuário. Nesse caso, o identity-type parâmetro é definido como UserAssigned, e o user-assigned-identities parâmetro especifica a identidade. Substitua {userIdentity} pelo nome da identidade gerenciada atribuída pelo usuário.

      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
      

      A identidade gerenciada atribuída pelo usuário pode estar em qualquer assinatura e grupo de recursos ao qual o usuário que atribui o blueprint tenha permissões.

      Importante

      O Azure Blueprints não gerencia a identidade gerenciada atribuída pelo usuário. Os usuários são responsáveis por atribuir funções e permissões suficientes, ou a atribuição do blueprint falhará.

Clean up resources (Limpar recursos)

Pode remover um esquema de uma subscrição. A remoção é, muitas vezes, feita quando os recursos de artefacto já não são precisos. Quando um esquema é removido, os artefactos atribuídos como parte desse esquema são deixados para trás. Para remover uma atribuição de blueprint, use o az blueprint assignment delete comando:

az blueprint assignment delete --name 'assignMyBlueprint'

Próximos passos

Neste início rápido, você criou, atribuiu e removeu um esquema com a CLI do Azure. Para saber mais sobre os Blueprints do Azure, continue para o artigo do ciclo de vida do blueprint.