Sdílet prostřednictvím


Rychlý start: Definování a přiřazení podrobného plánu Azure pomocí rozhraní REST API

Důležité

11. července 2026 se podrobné plány (Preview) přestanou používat. Migrujte existující definice a přiřazení podrobného plánu do šablonových specifikací a zásobníků nasazení. Artefakty podrobného plánu se mají převést na šablony JSON ARM nebo soubory Bicep používané k definování zásobníků nasazení. Informace o vytváření artefaktu jako prostředku ARM najdete tady:

V tomto kurzu se naučíte používat Azure Blueprints k provádění některých běžných úloh souvisejících s vytvářením, publikováním a přiřazením podrobného plánu v rámci vaší organizace. Tato dovednost vám pomůže definovat běžné vzory pro vývoj opakovaně použitelných a rychle nasaditelných konfigurací na základě šablon, zásad a zabezpečení Azure Resource Manageru (ARM).

Požadavky

Azure Cloud Shell

Azure hostí interaktivní prostředí Azure Cloud Shell, které můžete používat v prohlížeči. Pro práci se službami Azure můžete v prostředí Cloud Shell použít buď Bash, nebo PowerShell. Předinstalované příkazy Cloud Shellu můžete použít ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do místního prostředí.

Spuštění služby Azure Cloud Shell:

Možnost Příklad nebo odkaz
Vyberte Vyzkoušet v pravém horním rohu bloku kódu nebo příkazu. Výběrem možnosti Vyzkoušet se kód ani příkaz automaticky nekopíruje do Cloud Shellu. Snímek obrazovky znázorňující příklad možnosti Vyzkoušet pro Azure Cloud Shell
Přejděte na adresu https://shell.azure.com nebo výběrem tlačítka Spustit Cloud Shell otevřete Cloud Shell v prohlížeči. Tlačítko pro spuštění Azure Cloud Shellu
Zvolte tlačítko Cloud Shell v pruhu nabídky v pravém horním rohu webu Azure Portal. Snímek obrazovky znázorňující tlačítko Cloud Shell na webu Azure Portal

Použití Azure Cloud Shellu:

  1. Spusťte Cloud Shell.

  2. Výběrem tlačítka Kopírovat v bloku kódu (nebo bloku příkazů) zkopírujte kód nebo příkaz.

  3. Vložte kód nebo příkaz do relace Cloud Shellu tak, že ve Windows a Linuxu vyberete ctrl+Shift+V nebo vyberete Cmd+Shift+V v macOS.

  4. Stisknutím klávesy Enter spusťte kód nebo příkaz.

Začínáme s rozhraním REST API

Pokud rozhraní REST API neznáte, začněte tím, že si prohlédnete referenční informace k rozhraní Azure REST API, konkrétně části týkající se identifikátoru URI požadavku a textu požadavku. V tomto rychlém startu se tyto koncepty používají k poskytování pokynů pro práci s Azure Blueprints a předpokládá jejich pracovní znalosti. Nástroje, jako je ARMClient , můžou automaticky zpracovávat autorizaci a doporučuje se pro začátečníky.

Specifikace služby Azure Blueprints najdete v rozhraní REST API služby Azure Blueprints.

REST API a PowerShell

Pokud nemáte nástroj na volání REST API, můžete k zadání těchto pokynů použít PowerShell. Následuje ukázková hlavička pro ověřování v Azure. Vygenerujte ověřovací hlavičku, někdy označovanou jako nosný token, a zadejte identifikátor URI rozhraní REST API pro připojení s libovolnými parametry nebo parametrem Request Body:

# Log in first with Connect-AzAccount if not using Cloud Shell

$azContext = Get-AzContext
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile)
$token = $profileClient.AcquireAccessToken($azContext.Subscription.TenantId)
$authHeader = @{
    'Content-Type'='application/json'
    'Authorization'='Bearer ' + $token.AccessToken
}

# Invoke the REST API
$restUri = 'https://management.azure.com/subscriptions/{subscriptionId}?api-version=2020-01-01'
$response = Invoke-RestMethod -Uri $restUri -Method Get -Headers $authHeader

Nahraďte {subscriptionId} předchozí $restUri proměnnou, abyste získali informace o vašem předplatném. Proměnná $response obsahuje výsledek Invoke-RestMethod rutiny, kterou můžete parsovat s rutinami, jako je ConvertFrom-Json. Pokud koncový bod služby REST API očekává Request Body, zadejte proměnnou ve formátu JSON parametru -Body Invoke-RestMethod.

Vytvoření podrobného plánu

Jako první krok při definování standardního vzoru pro dodržování předpisů je sestavení podrobného plánu z dostupných prostředků. Pojďme vytvořit podrobný plán s názvem MyBlueprint pro konfiguraci přiřazení rolí a zásad pro předplatné. Potom do skupiny prostředků přidáte skupinu prostředků, šablonu ARM a přiřazení role.

Poznámka:

Při použití rozhraní REST API se nejprve vytvoří objekt podrobného plánu . Pro každý artefakt , který má parametry, definujete parametry předem v počátečním podrobném plánu.

V každém identifikátoru URI rozhraní REST API nahraďte následující proměnné vlastními hodnotami:

  • {YourMG} – Nahraďte ID vaší skupiny pro správu.
  • {subscriptionId} – Nahraďte ID předplatného.

Poznámka:

Podrobné plány můžete vytvářet také na úrovni předplatného. Další informace najdete v tématu Vytvoření podrobného plánu v příkladu předplatného.

  1. Vytvořte počáteční objekt blueprint. Obsahuje Request Body vlastnosti podrobného plánu, všechny skupiny prostředků, které se mají vytvořit, a všechny parametry na úrovni podrobného plánu. Parametry nastavíte během přiřazení a artefakty, které přidáte v dalších krocích.

    • Identifikátor URI v REST API

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
      
    • Text požadavku

      {
          "properties": {
              "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.",
              "targetScope": "subscription",
              "parameters": {
                  "storageAccountType": {
                      "type": "string",
                      "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"
                      }
                  },
                  "owners": {
                      "type": "array",
                      "metadata": {
                          "description": "List of AAD object IDs that is assigned Owner role at the resource group"
                      }
                  }
              },
              "resourceGroups": {
                  "storageRG": {
                      "description": "Contains the resource template deployment and a role assignment."
                  }
              }
          }
      }
      
  2. Přidejte přiřazení role v předplatném. Definuje Request Body druh artefaktu, vlastnosti odpovídají identifikátoru definice role a hlavní identity se předávají jako pole hodnot. V následujícím příkladu jsou hlavní identity udělené zadanou rolí nakonfigurovány na parametr, který je nastaven během přiřazení podrobného plánu. V tomto příkladu Contributor se používá předdefinovaná role s identifikátorem GUID b24988ac-6180-42a0-ab88-20f7382dd24c.

    • Identifikátor URI v REST API

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleContributor?api-version=2018-11-01-preview
      
    • Text požadavku

      {
          "kind": "roleAssignment",
          "properties": {
              "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
              "principalIds": "[parameters('contributors')]"
          }
      }
      
  3. Přidejte přiřazení zásad v předplatném. Definuje Request Body druh artefaktu, vlastnosti odpovídají definici zásady nebo iniciativy a přiřazení zásady je nakonfigurováno tak, aby používalo definované parametry podrobného plánu během přiřazení podrobného plánu. Tento příklad používá Apply tag and its default value to resource groups předdefinované zásady s identifikátorem GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • Identifikátor URI v REST API

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyTags?api-version=2018-11-01-preview
      
    • Text požadavku

      {
          "kind": "policyAssignment",
          "properties": {
              "description": "Apply tag and its default value to resource groups",
              "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71",
              "parameters": {
                  "tagName": {
                      "value": "[parameters('tagName')]"
                  },
                  "tagValue": {
                      "value": "[parameters('tagValue')]"
                  }
              }
          }
      }
      
  4. Přidejte další přiřazení zásad pro značku úložiště (opětovným použitím storageAccountType_ parameter) v předplatném. Tento další artefakt přiřazené zásady ukazuje, že parametr definovaný v podrobném plánu může používat více artefaktů. V tomto příkladu storageAccountType použijete k nastavení značky ve skupině prostředků. Tato hodnota poskytuje informace o účtu úložiště, který vytvoříte v dalším kroku. Tento příklad používá Apply tag and its default value to resource groups předdefinované zásady s identifikátorem GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • Identifikátor URI v REST API

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyStorageTags?api-version=2018-11-01-preview
      
    • Text požadavku

      {
          "kind": "policyAssignment",
          "properties": {
              "description": "Apply storage tag and the parameter also used by the template to resource groups",
              "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71",
              "parameters": {
                  "tagName": {
                      "value": "StorageType"
                  },
                  "tagValue": {
                      "value": "[parameters('storageAccountType')]"
                  }
              }
          }
      }
      
  5. Přidejte šablonu do skupiny prostředků. Šablona Request Body ARM obsahuje normální komponentu JSON šablony a definuje cílovou skupinu prostředků pomocí properties.resourceGroup. Šablona také znovu použije storageAccountTypeparametry , tagNamea tagValue podrobného plánu předáním každé šablony. Parametry podrobného plánu jsou k dispozici šabloně definováním properties.parametersa uvnitř souboru JSON šablony, který pár klíč-hodnota použije k vložení hodnoty. Názvy parametrů podrobného plánu a šablony můžou být stejné, ale liší se zde, aby bylo možné znázornit, jak jednotlivé předávají z podrobného plánu do artefaktu šablony.

    • Identifikátor URI v REST API

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/templateStorage?api-version=2018-11-01-preview
      
    • Text požadavku

      {
          "kind": "template",
          "properties": {
              "template": {
                  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                  "contentVersion": "1.0.0.0",
                  "parameters": {
                      "storageAccountTypeFromBP": {
                          "type": "string",
                          "defaultValue": "Standard_LRS",
                          "allowedValues": [
                              "Standard_LRS",
                              "Standard_GRS",
                              "Standard_ZRS",
                              "Premium_LRS"
                          ],
                          "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": "[resourceGroups('storageRG').location]",
                      "sku": {
                          "name": "[parameters('storageAccountTypeFromBP')]"
                      },
                      "kind": "Storage",
                      "properties": {}
                  }],
                  "outputs": {
                      "storageAccountSku": {
                          "type": "string",
                          "value": "[variables('storageAccountName')]"
                      }
                  }
              },
              "resourceGroup": "storageRG",
              "parameters": {
                  "storageAccountTypeFromBP": {
                      "value": "[parameters('storageAccountType')]"
                  },
                  "tagNameFromBP": {
                      "value": "[parameters('tagName')]"
                  },
                  "tagValueFromBP": {
                      "value": "[parameters('tagValue')]"
                  }
              }
          }
      }
      
  6. Přidejte přiřazení role do skupiny prostředků. Podobně jako u předchozí položky přiřazení role používá následující příklad identifikátor definice pro Owner roli a poskytuje jiný parametr než podrobný plán. V tomto příkladu Owner se používá předdefinovaná role s identifikátorem GUID 8e3af657-a8ff-443c-a75c-2fe8c4bcb635.

    • Identifikátor URI v REST API

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleOwner?api-version=2018-11-01-preview
      
    • Text požadavku

      {
          "kind": "roleAssignment",
          "properties": {
              "resourceGroup": "storageRG",
              "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
              "principalIds": "[parameters('owners')]"
          }
      }
      

Publikování podrobného plánu

Teď, když jste do podrobného plánu přidali artefakty, je čas ho publikovat. Publikování zpřístupní podrobný plán pro přiřazení k předplatnému.

  • Identifikátor URI v REST API

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/versions/{BlueprintVersion}?api-version=2018-11-01-preview
    

Hodnota {BlueprintVersion} je řetězec písmen, číslic a pomlček (bez mezer nebo jiných speciálních znaků). Maximální délka je 20 znaků. Použijte něco jedinečného a informativního, například v20180622-135541.

Přiřazení podrobného plánu

Po publikování podrobného plánu pomocí rozhraní REST API je možné ho přiřadit předplatnému. Přiřaďte podrobný plán, který jste vytvořili, k jednomu z předplatných v hierarchii skupin pro správu. Pokud se podrobný plán uloží do předplatného, můžete ho přiřadit jenom k ho. Určuje Request Body podrobný plán, který se má přiřadit, a poskytne název a umístění pro všechny skupiny prostředků v definici podrobného plánu. Request Body poskytuje také všechny parametry definované v podrobném plánu a používané jedním nebo více připojenými artefakty.

V každém identifikátoru URI rozhraní REST API nahraďte následující proměnné vlastními hodnotami:

  • {tenantId} – Nahraďte ID tenanta.
  • {YourMG} – Nahraďte ID vaší skupiny pro správu.
  • {subscriptionId} – Nahraďte ID předplatného.
  1. Zadejte instanční objekt Azure Blueprints roli Owner v cílovém předplatném. Jedná se o AppId statickou (f71766dc-90d9-4b7d-bd9d-4499c4331c3f), ale ID instančního objektu se liší podle tenanta. K vyžádání podrobností pro vašeho tenanta použijte následující rozhraní REST API. Používá rozhraní Graph API služby Azure Active Directory, které má jinou autorizaci.

    • Identifikátor URI v REST API

      GET https://graph.windows.net/{tenantId}/servicePrincipals?api-version=1.6&$filter=appId eq 'f71766dc-90d9-4b7d-bd9d-4499c4331c3f'
      
  2. Spusťte nasazení podrobného plánu tím, že ho přiřadíte k předplatnému. Vzhledem k tomu, že parametry contributors owners vyžadují udělení přiřazení role pole objectIds objektů zabezpečení, použijte rozhraní Azure Active Directory Graph API ke shromažďování objectIds informací o použití ve Request Body vašich vlastních uživatelích, skupinách nebo instančních objektech.

    • Identifikátor URI v REST API

      PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
      
    • Text požadavku

      {
          "properties": {
              "blueprintId": "/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint",
              "resourceGroups": {
                  "storageRG": {
                      "name": "StorageAccount",
                      "location": "eastus2"
                  }
              },
              "parameters": {
                  "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"
                      ]
                  }
              }
          },
          "identity": {
              "type": "systemAssigned"
          },
          "location": "westus"
      }
      
    • Spravovaná identita přiřazená uživatelem

      Přiřazení podrobného plánu může také použít spravovanou identitu přiřazenou uživatelem. V tomto případě se identity část textu požadavku změní následujícím způsobem. Nahraďte {yourRG} název {userIdentity} vaší skupiny prostředků a názvem spravované identity přiřazené uživatelem.

      "identity": {
          "type": "userAssigned",
          "tenantId": "{tenantId}",
          "userAssignedIdentities": {
              "/subscriptions/{subscriptionId}/resourceGroups/{yourRG}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{userIdentity}": {}
          }
      },
      

      Spravovaná identita přiřazená uživatelem může být v libovolném předplatném a skupině prostředků, ke které má uživatel přiřazení podrobného plánu oprávnění.

      Důležité

      Azure Blueprints nespravuje spravovanou identitu přiřazenou uživatelem. Uživatelé zodpovídají za přiřazení dostatečných rolí a oprávnění nebo přiřazení podrobného plánu selže.

Vyčištění prostředků

Zrušení přiřazení podrobného plánu

Podrobný plán můžete odebrat z předplatného. Odebrání se často provádí v případě, že už nepotřebujete prostředky artefaktů. Po odebrání podrobného plánu zůstanou přiřazené artefakty, které byly jeho součástí. K odebrání přiřazeného podrobného plánu použijte následující operaci REST API:

  • Identifikátor URI v REST API

    DELETE https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
    

Odstranění podrobného plánu

K odebrání samotného podrobného plánu použijte následující operaci REST API:

  • Identifikátor URI v REST API

    DELETE https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
    

Další kroky

V tomto rychlém startu jste vytvořili, přiřadili a odebrali podrobný plán pomocí rozhraní REST API. Další informace o Azure Blueprints najdete v článku o životním cyklu podrobného plánu.