Snabbstart: Definiera och tilldela en Azure-skiss med REST API

Viktigt!

Azure Blueprints (förhandsversion) kommer att dras tillbaka den 31 januari 2027, med en stegvis pensionering från och med 31 juli 2026. Migrera dina befintliga skissdefinitioner och tilldelningar till distributionsstackar (rekommenderas) och mallspecifikationer. Skissartefakter konverteras till ARM JSON-mallar eller Bicep filer som används för att definiera distributionsstackar. Den fullständiga stegvisa tidslinjen, påverkan och vanliga frågor och svar finns i Azure Blueprints pensionering eller https://aka.ms/AzureBlueprintsRetirement. Information om hur du skapar en artefakt som en ARM-resurs finns i:

I den här självstudien lär du dig att använda Azure Blueprints för att utföra några vanliga uppgifter som rör att skapa, publicera och tilldela en skiss i din organisation. Den här färdigheten hjälper dig att definiera vanliga mönster för att utveckla återanvändbara och snabbt distribuerade konfigurationer, baserat på Azure Resource Manager-mallar (ARM), principer och säkerhet.

Förutsättningar

Azure Cloud Shell

Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln, utan att behöva installera något i din lokala miljö.

Så här startar du Azure Cloud Shell:

Alternativ Exempel/länk
Välj Prova i det övre högra hörnet av ett kod- eller kommandoblock. Om du väljer Prova kopieras inte koden eller kommandot automatiskt till Cloud Shell. Skärmbild som visar ett exempel på Try It for Azure Cloud Shell.
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. Knapp för att starta Azure Cloud Shell.
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. Skärmbild som visar Cloud Shell-knappen i Azure Portal

Så här använder du Azure Cloud Shell:

  1. Starta Cloud Shell.

  2. Välj knappen Kopiera i ett kodblock (eller kommandoblock) för att kopiera koden eller kommandot.

  3. Klistra in koden eller kommandot i Cloud Shell-sessionen genom att välja Ctrl+Skift+V i Windows och Linux, eller genom att välja Cmd+Shift+V på macOS.

  4. Välj Retur för att köra koden eller kommandot.

Kom igång med REST API

Om du inte är bekant med REST API börjar du med att granska Azure REST API-referensen, särskilt avsnitten om begärande-URI och begärandetext. Den här snabbstarten använder dessa begrepp för att ge anvisningar för att arbeta med Azure Blueprints och förutsätter en fungerande kunskap om dem. Verktyg som ARMClient kan hantera auktorisering automatiskt och rekommenderas för nybörjare.

Information om Azure Blueprints-specifikationer finns i REST API för Azure Blueprints.

REST API och PowerShell

Om du inte redan har ett verktyg för att göra REST API-anrop kan du använda PowerShell för dessa anvisningar. Följande är ett exempelhuvud för autentisering med Azure. Generera ett autentiseringshuvud, även kallat en bearer token, och ange URI:n för REST API:et för att ansluta, tillsammans med eventuella parametrar eller en 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

Ersätt {subscriptionId} i föregående $restUri variabel för att få information om din prenumeration. Variabeln $response innehåller resultatet av cmdleten Invoke-RestMethod , som du kan parsa med cmdletar som ConvertFrom-Json. Om REST API-tjänstslutpunkten förväntar sig en Request Body, anger du en JSON-formaterad variabel för parametern -Body i Invoke-RestMethod.

Skapa en skiss

Det första steget när du definierar ett standardmönster för efterlevnad är att skapa en skiss från de tillgängliga resurserna. Nu ska vi skapa en skiss med namnet MyBlueprint för att konfigurera roll- och principtilldelningar för prenumerationen. Sedan lägger du till en resursgrupp, en ARM-mall och en rolltilldelning i resursgruppen.

Kommentar

När du använder REST-API:et skapas skissobjektet först. För varje artefakt som ska läggas till som har parametrar definierar du parametrarna i förväg på den första skissen.

I varje REST API-URI ersätter du följande variabler med dina egna värden:

  • {YourMG} – Ersätt med ID:t för hanteringsgruppen.
  • {subscriptionId} – Ersätt med ditt prenumerations-ID.

Kommentar

Du kan också skapa skisser på prenumerationsnivå. Mer information finns i Skapa skiss i prenumerationsexempel.

  1. Skapa det första skissobjektet. Innehåller Request Body egenskaper om skissen, eventuella resursgrupper som ska skapas och alla parametrar på skissnivå. Du anger parametrarna under tilldelningen och de används av artefakterna som du lägger till i senare steg.

    • REST API-URI

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
      
    • Begärans brödtext

      {
          "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. Lägg till en rolltilldelning i prenumerationen. Request Body Definierar typen av artefakt, egenskaperna justeras till rolldefinitionsidentifieraren och huvudidentiteterna skickas som en matris med värden. I följande exempel konfigureras de huvudidentiteter som beviljats den angivna rollen till en parameter som anges under skisstilldelningen. I det här exemplet används den inbyggda rollen Contributor, med GUID:t b24988ac-6180-42a0-ab88-20f7382dd24c.

    • REST API-URI

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

      {
          "kind": "roleAssignment",
          "properties": {
              "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
              "principalIds": "[parameters('contributors')]"
          }
      }
      
  3. Lägg till en principtilldelning på prenumerationen. Definierar Request Body typen av artefakt, egenskaperna justeras efter en princip- eller initiativdefinition och principtilldelningen konfigureras för att använda de definierade skissparametrarna under skisstilldelningen. I det här exemplet används den inbyggda principen Apply tag and its default value to resource groups, som har GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • REST API-URI

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyTags?api-version=2018-11-01-preview
      
    • Innehåll i begäran

      {
          "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. Lägg till ytterligare en principtilldelning för lagringstaggen (genom att återanvända storageAccountType_ parameter) på prenumerationsnivå. Den här ytterligare principtilldelningsartefakten visar att en parameter som definierats för skissen kan användas av mer än en artefakt. I exemplet använder storageAccountType du för att ange en tagg i resursgruppen. Det här värdet innehåller information om det lagringskonto som du skapar i nästa steg. I det här exemplet används den inbyggda principen Apply tag and its default value to resource groups, som har GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • REST API-URI

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyStorageTags?api-version=2018-11-01-preview
      
    • Begärans brödtext

      {
          "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. Lägg till en mall under resursgruppen. Request Body För en ARM-mall ingår den normala JSON-komponenten i mallen och definierar målresursgruppen med properties.resourceGroup. Mallen återanvänder också ritningsparametrarna storageAccountType, tagName och tagValue genom att skicka var och en av dem till mallen. Ritningsparametrarna görs tillgängliga för mallen genom att definiera properties.parameters, och i mallens JSON används det nyckel/värde-par som nyckeln anger för att infoga värdet. Parameternamnen i ritningen och mallen kan vara identiska, men är olika här för att illustrera hur var och en av dem förs vidare från ritningen till mallartefakten.

    • REST API-URI

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

      {
          "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. Lägg till en rolltilldelning under resursgruppen. I likhet med den tidigare rolltilldelningsposten använder följande exempel definitionsidentifieraren för rollen och ger den Owner en annan parameter än skissen. I det här exemplet används den inbyggda rollen Owner, med GUID:t 8e3af657-a8ff-443c-a75c-2fe8c4bcb635.

    • REST API-URI

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleOwner?api-version=2018-11-01-preview
      
    • Begärans innehåll

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

Publicera en skiss

Nu när du har lagt till artefakterna i skissen är det dags att publicera den. Publicering gör skissen tillgänglig för tilldelning till en prenumeration.

  • REST API-URI

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

Värdet för {BlueprintVersion} är en sträng med bokstäver, siffror och bindestreck (utan blanksteg eller andra specialtecken). Maximal längd är 20 tecken. Använd något unikt och informativt, till exempel v20180622-135541.

Tilldela en skiss

När du har publicerat en skiss med hjälp av REST API kan den tilldelas till en prenumeration. Tilldela ritningen som du har skapat till någon av prenumerationerna i din hanteringsgruppshierarki. Om skissen sparas till en prenumeration kan den endast tilldelas till den prenumerationen. Request Body Anger skissen som ska tilldelas och ger namn och plats till alla resursgrupper i skissdefinitionen. Request Body innehåller också alla parametrar som definierats i skissen och som används av en eller flera kopplade artefakter.

I varje REST API-URI ersätter du följande variabler med dina egna värden:

  • {tenantId} - Ersätt med ditt klientorganisations-ID.
  • {YourMG} – Ersätt med ID:t för hanteringsgruppen.
  • {subscriptionId} – Ersätt med ditt prenumerations-ID.
  1. Tilldela tjänstens huvudnamn för Azure Blueprints rollen Owner på målprenumerationen. AppId är statiskt (f71766dc-90d9-4b7d-bd9d-4499c4331c3f), men tjänstens huvudnamns-ID varierar beroende på klientorganisation. Använd följande REST API för att hämta information om din klientorganisation. Den använder Azure Active Directory Graph API, som har olika auktorisering.

    • REST API-URI

      GET https://graph.windows.net/{tenantId}/servicePrincipals?api-version=1.6&$filter=appId eq 'f71766dc-90d9-4b7d-bd9d-4499c4331c3f'
      
  2. Kör distributionen av blueprinten genom att tilldela den en prenumeration. Eftersom parametrarna contributors och owners kräver en matris med objectIds för de säkerhetsobjekt som ska beviljas rolltilldelningen använder du Azure Active Directory Graph API för att hämta objectIds för användning i Request Body för dina egna användare, grupper eller tjänsthuvudnamn.

    • REST API-URI

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

      {
          "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"
      }
      
    • Användartilldelad hanterad identitet

      En skisstilldelning kan även använda en användartilldelad hanterad identitet. I det här fallet ändras identity-delen av brödtexten i begäran enligt följande. Ersätt {yourRG} och {userIdentity} med ditt resursgruppnamn och namnet på din användartilldelade hanterade identitet.

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

      Den användartilldelade hanterade identiteten kan finnas i valfri prenumeration och resursgrupp som användaren som tilldelar skissen har behörigheter till.

      Viktigt!

      Azure Blueprints hanterar inte den användartilldelade hanterade identiteten. Användarna ansvarar för att tilldela tillräckligt med roller och behörigheter, annars misslyckas skisstilldelningen.

Rensa resurser

Ta bort en skisstilldelning

Du kan ta bort en skiss från en prenumeration. Borttagningen görs ofta när artefaktresurserna inte längre behövs. När en skiss tas bort blir artefakterna som tilldelats som en del av skissen kvar. Om du vill ta bort en skisstilldelning använder du följande REST API-åtgärd:

  • REST API-URI

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

Ta bort en skiss

Om du vill ta bort själva skissen använder du följande REST API-åtgärd:

  • REST API-URI

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

Nästa steg

I den här snabbstarten skapade du, tilldelade och tog bort en ritning med REST-API:t. Om du vill veta mer om Azure Blueprints fortsätter du till artikeln om skissens livscykel.