Szybki start: definiowanie i przypisywanie strategii platformy Azure przy użyciu interfejsu API REST

Ważne

Azure Blueprints (wersja zapoznawcza) zostanie wycofana 31 stycznia 2027 r. z wycofaniem etapowym od 31 lipca 2026 r. Zmigruj istniejące definicje planów i przypisania do Deployment Stacks (zalecane) i Template Specs. Artefakty Blueprint są konwertowane na szablony ARM JSON lub pliki Bicep służące do definiowania stosów wdrożenia. Pełny harmonogram etapów, wpływ zmian oraz FAQ znajdziesz w artykule wycofanie usługi Azure Blueprints lub https://aka.ms/AzureBlueprintsRetirement. Aby dowiedzieć się, jak utworzyć artefakt jako zasób ARM, zobacz:

Z tego samouczka dowiesz się, jak używać usługi Azure Blueprints do wykonywania niektórych typowych zadań związanych z tworzeniem, publikowaniem i przypisywaniem strategii w organizacji. Ta umiejętność ułatwia definiowanie typowych wzorców w celu opracowywania konfiguracji wielokrotnego użytku i szybkiego wdrażania na podstawie szablonów, zasad i zabezpieczeń usługi Azure Resource Manager (ARM).

Wymagania wstępne

  • Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
  • Zarejestruj dostawcę Microsoft.Blueprint zasobów. Aby uzyskać wskazówki, zobacz Dostawcy i typy zasobów.

Azure Cloud Shell

Platforma Azure udostępnia Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać za pośrednictwem przeglądarki. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Opcja Przykład/link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie pozycji Wypróbuj nie powoduje automatycznego skopiowania kodu lub polecenia do usługi Cloud Shell. Zrzut ekranu przedstawiający przykład narzędzia Try It dla usługi Azure Cloud Shell.
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. Przycisk uruchamiania usługi Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Zrzut ekranu przedstawiający przycisk usługi Cloud Shell w witrynie Azure Portal

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji Cloud Shell, naciskając Ctrl+Shift+V w systemach Windows i Linux lub Cmd+Shift+V w systemie macOS.

  4. Wybierz Enter, aby uruchomić kod lub polecenie.

Wprowadzenie do interfejsu API REST

Jeśli nie znasz interfejsu API REST, zacznij od przejrzenia dokumentacji interfejsu API REST platformy Azure, w szczególności sekcji dotyczących identyfikatora URI żądania i treści żądania. Ten przewodnik z serii Szybki start wykorzystuje te pojęcia, aby przedstawić wskazówki dotyczące pracy z usługą Azure Blueprints, i zakłada praktyczną znajomość tych pojęć. Narzędzia, takie jak ARMClient , mogą automatycznie obsługiwać autoryzację i są zalecane dla początkujących.

Aby uzyskać specyfikacje usługi Azure Blueprints, zobacz Interfejs API REST usługi Azure Blueprints.

Interfejs REST API i PowerShell

Jeśli jeszcze nie masz narzędzia do wykonywania wywołań interfejsu API REST, rozważ wykonywanie tych instrukcji w programie PowerShell. Poniżej znajduje się przykładowy nagłówek do uwierzytelniania za pomocą platformy Azure. Wygeneruj nagłówek uwierzytelniający, czasami nazywany tokenem bearer, i podaj URI interfejsu API REST, aby nawiązać połączenie z dowolnymi parametrami lub elementem 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

Zastąp {subscriptionId} w poprzedniej zmiennej $restUri, aby uzyskać informacje o swojej subskrypcji. Zmienna $response zawiera wynik Invoke-RestMethod polecenia cmdlet, które można przeanalizować za pomocą poleceń cmdlet, takich jak ConvertFrom-Json. Jeśli punkt końcowy usługi REST API oczekuje Request Body, podaj zmienną sformatowaną jako JSON do parametru -Body w Invoke-RestMethod.

Tworzenie strategii

Pierwszym krokiem podczas definiowania standardowego wzorca zgodności jest utworzenie strategii z dostępnych zasobów. Utwórzmy schemat o nazwie MyBlueprint, aby skonfigurować przypisania ról i zasad w ramach subskrypcji. Następnie dodajesz grupę zasobów, szablon ARM i przypisanie roli dla grupy zasobów.

Uwaga

Podczas korzystania z interfejsu API REST najpierw tworzony jest obiekt schemat. Dla każdego artefaktu, który ma zostać dodany i ma parametry, należy z wyprzedzeniem zdefiniować te parametry w początkowym planie.

W każdym identyfikatorze URI interfejsu API REST zastąp następujące zmienne własnymi wartościami:

  • {YourMG} — Zastąp identyfikatorem swojej grupy zarządzania.
  • {subscriptionId} - Zastąp swoim identyfikatorem subskrypcji.

Uwaga

Można również tworzyć strategie na poziomie subskrypcji. Aby uzyskać więcej informacji, zobacz tworzenie strategii na podstawie przykładu subskrypcji.

  1. Utwórz początkowy obiekt schematu. Request Body zawiera właściwości planu, wszelkie grupy zasobów do utworzenia oraz wszystkie parametry na poziomie planu. Parametry ustawiasz podczas przypisywania i są one używane przez artefakty, które dodasz w kolejnych krokach.

    • Identyfikator URI interfejsu API REST

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
      
    • Treść żądania

      {
          "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. Dodaj przypisanie roli na poziomie subskrypcji. Element Request Body definiuje rodzaj artefaktu, właściwości odpowiadają identyfikatorowi definicji roli, a tożsamości podmiotów są przekazywane w postaci tablicy wartości. W poniższym przykładzie tożsamości podmiotów głównych, którym przypisano określoną rolę, są konfigurowane za pomocą parametru ustawianego podczas przypisywania strategii. W tym przykładzie użyto Contributor wbudowanej roli z identyfikatorem GUID b24988ac-6180-42a0-ab88-20f7382dd24c.

    • Identyfikator URI interfejsu API REST

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleContributor?api-version=2018-11-01-preview
      
    • Treść żądania

      {
          "kind": "roleAssignment",
          "properties": {
              "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
              "principalIds": "[parameters('contributors')]"
          }
      }
      
  3. Dodaj przypisanie zasad na poziomie subskrypcji. Element Request Body definiuje rodzaj artefaktu, właściwości odpowiadają definicji zasady lub inicjatywy, a przypisanie zasady jest skonfigurowane tak, aby używać zdefiniowanych parametrów strategii podczas przypisywania strategii. W tym przykładzie użyto wbudowanej zasady Apply tag and its default value to resource groups o identyfikatorze GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • Identyfikator URI interfejsu API REST

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyTags?api-version=2018-11-01-preview
      
    • Treść żądania

      {
          "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. Dodaj dodatkowe przypisanie zasad dla tagu magazynu (ponownie używając storageAccountType_ parameter) na poziomie subskrypcji. Ten dodatkowy artefakt przypisania zasad pokazuje, że parametr zdefiniowany w strategii może być używany przez więcej niż jeden artefakt. W tym przykładzie używasz polecenia storageAccountType, aby ustawić tag dla grupy zasobów. Ta wartość dostarcza informacji o koncie magazynowym, które utworzysz w następnym kroku. W tym przykładzie użyto wbudowanej zasady Apply tag and its default value to resource groups o identyfikatorze GUID 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71.

    • Identyfikator URI interfejsu API REST

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyStorageTags?api-version=2018-11-01-preview
      
    • Treść żądania

      {
          "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. Dodaj szablon w grupie zasobów. Element Request Body dla szablonu ARM zawiera standardowy składnik JSON szablonu i definiuje docelową grupę zasobów przy użyciu elementu properties.resourceGroup. Szablon również ponownie wykorzystuje parametry blueprintu storageAccountType, tagName i tagValue, przekazując każdy z nich do szablonu. Parametry schematu są udostępniane szablonowi przez zdefiniowanie properties.parameters, a wewnątrz pliku JSON szablonu ta para klucz-wartość jest używana do wstawienia wartości. Nazwy parametrów schematu i szablonu mogą być takie same, ale tutaj są różne, aby zilustrować, jak każdy z nich jest przekazywany ze schematu do artefaktu szablonu.

    • Identyfikator URI interfejsu API REST

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/templateStorage?api-version=2018-11-01-preview
      
    • Treść żądania

      {
          "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. Dodaj przypisanie roli dla grupy zasobów. Podobnie jak w poprzednim wpisie dotyczącym przypisania roli, w poniższym przykładzie użyto identyfikatora definicji roli Owner i przypisano do niego inny parametr niż w planie. W tym przykładzie użyto wbudowanej roli Owner, z identyfikatorem GUID 8e3af657-a8ff-443c-a75c-2fe8c4bcb635.

    • Identyfikator URI interfejsu API REST

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleOwner?api-version=2018-11-01-preview
      
    • Treść żądania

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

Publikowanie strategii

Teraz, po dodaniu artefaktów do strategii, nadszedł czas, aby go opublikować. Opublikowanie powoduje udostępnienie planu do przypisania do subskrypcji.

  • Identyfikator URI interfejsu API REST

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

Wartość parametru {BlueprintVersion} to ciąg liter, cyfr i łączników (bez spacji ani innych znaków specjalnych). Maksymalna długość wynosi 20 znaków. Użyj czegoś unikatowego i informacyjnego, takiego jak v20180622-135541.

Przypisz schemat

Po opublikowaniu strategii przy użyciu interfejsu API REST można przypisać ją do subskrypcji. Przypisz strategię utworzoną do jednej z subskrypcji w hierarchii grup zarządzania. Jeśli strategia została zapisana w subskrypcji, można ją przypisać tylko do tej subskrypcji. Element Request Body określa strategię Blueprint do przypisania oraz nazwę i lokalizację dla dowolnych grup zasobów w definicji strategii Blueprint. Request Body Zawiera również wszystkie parametry zdefiniowane w strategii i używane przez co najmniej jeden dołączony artefakt.

W każdym identyfikatorze URI interfejsu API REST zastąp następujące zmienne własnymi wartościami:

  • {tenantId} — Zastąp element identyfikatorem dzierżawy.
  • {YourMG} — Zastąp identyfikatorem ID swojej grupy zarządzającej.
  • {subscriptionId} — Zastąp swoim identyfikatorem subskrypcji.
  1. Przypisz jednostce usługi Azure Blueprints rolę Owner w subskrypcji docelowej. AppId jest statyczny (f71766dc-90d9-4b7d-bd9d-4499c4331c3f), ale identyfikator jednostki usługi głównej różni się w zależności od dzierżawcy. Użyj następującego interfejsu API REST, aby pobrać szczegóły dotyczące dzierżawcy. Używa interfejsu API programu Graph usługi Azure Active Directory, który ma inną autoryzację.

    • Identyfikator URI interfejsu API REST

      GET https://graph.windows.net/{tenantId}/servicePrincipals?api-version=1.6&$filter=appId eq 'f71766dc-90d9-4b7d-bd9d-4499c4331c3f'
      
  2. Uruchom wdrażanie strategii, przypisując ją do subskrypcji. Ponieważ parametry contributors i owners wymagają tablicy objectIds podmiotów zabezpieczeń, którym ma zostać przypisane przypisanie roli, użyj interfejsu API Azure Active Directory Graph, aby zebrać objectIds do użycia w Request Body dla własnych użytkowników, grup lub jednostek usługi.

    • Identyfikator URI interfejsu API REST

      PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
      
    • Treść żądania

      {
          "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"
      }
      
    • Tożsamość zarządzana przypisana przez użytkownika

      W przypisaniu strategii można również użyć tożsamości zarządzanej przypisanej przez użytkownika. W takim przypadku identity część treści żądania zmienia się w następujący sposób. Zastąp elementy {yourRG} i {userIdentity} odpowiednio nazwą grupy zasobów i nazwą tożsamości zarządzanej przypisanej przez użytkownika.

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

      Tożsamość zarządzana przypisana przez użytkownika może znajdować się w dowolnej subskrypcji i grupie zasobów, do której użytkownik przypisujący strategię ma uprawnienia.

      Ważne

      Usługa Azure Blueprints nie zarządza tożsamością zarządzaną przypisaną przez użytkownika. Użytkownicy są odpowiedzialni za przypisanie odpowiednich ról i uprawnień, w przeciwnym razie przypisanie blueprintu nie powiedzie się.

Czyszczenie zasobów

Usuń przypisanie schematu

Strategię można usunąć z subskrypcji. Usunięcie często przeprowadza się, gdy zasoby artefaktu przestają być potrzebne. Po usunięciu planu artefakty przypisane w ramach tego planu pozostają. Aby usunąć przypisanie planu, użyj następującej operacji interfejsu API REST:

  • Adres URI interfejsu API REST

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

Usunięcie schematu

Aby usunąć sam schemat, użyj następującej operacji interfejsu API REST:

  • Identyfikator URI interfejsu API REST

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

Następne kroki

W tym przewodniku Szybki start utworzono i przypisano plan oraz usunięto go przy użyciu interfejsu API REST. Aby dowiedzieć się więcej o usłudze Azure Blueprints, przejdź do artykułu dotyczącego cyklu życia usługi Azure Blueprints.