Wdrożenia dzierżawy z plikiem Bicep

W miarę dojrzewania organizacji może być konieczne zdefiniowanie i przypisanie zasad lub kontroli dostępu opartej na rolach (RBAC) platformy Azure w dzierżawie firmy Microsoft Entra. Szablony na poziomie dzierżawy umożliwiają deklaratywne stosowanie zasad i przypisywanie ról na poziomie globalnym.

Zasoby szkoleniowe

Jeśli wolisz dowiedzieć się więcej o zakresach wdrażania za pomocą szczegółowych wskazówek, zobacz Wdrażanie zasobów w subskrypcjach, grupach zarządzania i dzierżawach przy użyciu Bicep.

Obsługiwane zasoby

Nie wszystkie typy zasobów można wdrożyć na poziomie dzierżawy. Ta sekcja zawiera listę obsługiwanych typów zasobów.

W przypadku kontroli dostępu opartej na rolach platformy Azure (RBAC) platformy Azure użyj:

W przypadku szablonów zagnieżdżonych, które są wdrażane w grupach zarządzania, subskrypcjach lub grupach zasobów, użyj:

Do tworzenia grup zarządzania użyj:

Aby utworzyć subskrypcje, użyj:

Do zarządzania kosztami użyj:

Aby skonfigurować portal, użyj:

Wbudowane definicje zasad to zasoby na poziomie dzierżawy, ale nie można wdrażać niestandardowych definicji zasad w dzierżawie. Aby zapoznać się z przykładem przypisywania wbudowanej definicji zasad do zasobu, zobacz przykład tenantResourceId.

Ustawianie zakresu

Aby ustawić zakres na dzierżawę, użyj:

targetScope = 'tenant'

Wymagany dostęp

Podmiot zabezpieczeń wdrażający szablon musi mieć uprawnienia do tworzenia zasobów w zakresie dzierżawy. Podmiot zabezpieczeń musi mieć uprawnienia do wykonywania akcji wdrażania (Microsoft.Resources/deployments/*) i utworzenia zasobów zdefiniowanych w szablonie. Na przykład aby utworzyć grupę zarządzania, podmiot zabezpieczeń musi mieć uprawnienie Współautor w zakresie dzierżawy. Aby utworzyć przypisania ról, podmiot zabezpieczeń musi mieć uprawnienie Właściciel.

Globalny Administracja istrator identyfikatora entra firmy Microsoft nie ma automatycznie uprawnień do przypisywania ról. Aby włączyć wdrożenia szablonów w zakresie dzierżawy, administrator globalny Administracja istrator musi wykonać następujące czynności:

  1. Podnieś poziom dostępu do konta, aby administrator globalny Administracja mógł przypisywać role. Aby uzyskać więcej informacji, zobacz Podnoszenie poziomu dostępu w celu zarządzania wszystkimi subskrypcjami platformy Azure i grupami zarządzania.

  2. Przypisz właściciela lub współautora do podmiotu zabezpieczeń, który musi wdrożyć szablony.

    New-AzRoleAssignment -SignInName "[userId]" -Scope "/" -RoleDefinitionName "Owner"
    
    az role assignment create --assignee "[userId]" --scope "/" --role "Owner"
    

Podmiot zabezpieczeń ma teraz wymagane uprawnienia do wdrożenia szablonu.

Polecenia wdrażania

Polecenia dla wdrożeń dzierżaw są inne niż polecenia dla wdrożeń grup zasobów.

W przypadku interfejsu wiersza polecenia platformy Azure użyj polecenia az deployment tenant create:

az deployment tenant create \
  --name demoTenantDeployment \
  --location WestUS \
  --template-file main.bicep

Aby uzyskać bardziej szczegółowe informacje o poleceniach wdrażania i opcjach wdrażania szablonów usługi ARM, zobacz:

Lokalizacja i nazwa wdrożenia

W przypadku wdrożeń na poziomie dzierżawy należy podać lokalizację wdrożenia. Lokalizacja wdrożenia jest oddzielona od lokalizacji wdrażanych zasobów. Lokalizacja wdrożenia określa miejsce przechowywania danych wdrożenia. Wdrożenia subskrypcji i grup zarządzania również wymagają lokalizacji. W przypadku wdrożeń grup zasobów lokalizacja grupy zasobów jest używana do przechowywania danych wdrożenia.

Możesz podać nazwę wdrożenia lub użyć domyślnej nazwy wdrożenia. Domyślna nazwa to nazwa pliku szablonu. Na przykład wdrożenie pliku o nazwie main.bicep powoduje utworzenie domyślnej nazwy wdrożenia głównego.

Dla każdej nazwy wdrożenia lokalizacja jest niezmienna. Nie można utworzyć wdrożenia w jednej lokalizacji, gdy istnieje wdrożenie o tej samej nazwie w innej lokalizacji. Jeśli na przykład utworzysz wdrożenie dzierżawy o nazwie deployment1 w centralus, nie będzie można później utworzyć innego wdrożenia z nazwą deployment1, ale lokalizacją westus. Jeśli zostanie wyświetlony kod InvalidDeploymentLocationbłędu , użyj innej nazwy lub tej samej lokalizacji co poprzednie wdrożenie dla tej nazwy.

Zakresy wdrażania

Podczas wdrażania w dzierżawie można wdrożyć zasoby w:

  • dzierżawa
  • grupy zarządzania w ramach dzierżawy
  • subskrypcje
  • grupy zasobów

Zasób rozszerzenia może być o określonym zakresie dla miejsca docelowego, który różni się od docelowego wdrożenia.

Użytkownik wdrażający szablon musi mieć dostęp do określonego zakresu.

W tej sekcji przedstawiono sposób określania różnych zakresów. Te różne zakresy można połączyć w jednym szablonie.

Zakres do dzierżawy

Zasoby zdefiniowane w pliku Bicep są stosowane do dzierżawy.

targetScope = 'tenant'

// create resource at tenant
resource mgName_resource 'Microsoft.Management/managementGroups@2021-04-01' = {
  ...
}

Zakres do grupy zarządzania

Aby zakierować grupę zarządzania w ramach dzierżawy, dodaj moduł. Użyj funkcji managementGroup, aby ustawić jej scope właściwość. Podaj nazwę grupy zarządzania.

targetScope = 'tenant'

param managementGroupName string

// create resources at management group level
module  'module.bicep' = {
  name: 'deployToMG'
  scope: managementGroup(managementGroupName)
}

Zakres subskrypcji

Aby zakierować subskrypcję w ramach dzierżawy, dodaj moduł. Użyj funkcji subscription, aby ustawić jej scope właściwość. Podaj identyfikator subskrypcji.

targetScope = 'tenant'

param subscriptionID string

// create resources at subscription level
module  'module.bicep' = {
  name: 'deployToSub'
  scope: subscription(subscriptionID)
}

Zakres do grupy zasobów

Aby zakierować grupę zasobów w ramach dzierżawy, dodaj moduł. Użyj funkcji resourceGroup, aby ustawić jej scope właściwość. Podaj identyfikator subskrypcji i nazwę grupy zasobów.

targetScope = 'tenant'

param resourceGroupName string
param subscriptionID string

// create resources at resource group level
module  'module.bicep' = {
  name: 'deployToRG'
  scope: resourceGroup(subscriptionID, resourceGroupName)
}

Tworzenie grupy zarządzania

Poniższy szablon tworzy grupę zarządzania.

targetScope = 'tenant'
param mgName string = 'mg-${uniqueString(newGuid())}'

resource mgName_resource 'Microsoft.Management/managementGroups@2021-04-01' = {
  name: mgName
  properties: {}
}

Jeśli Twoje konto nie ma uprawnień do wdrażania w dzierżawie, nadal możesz tworzyć grupy zarządzania, wdrażając je w innym zakresie. Aby uzyskać więcej informacji, zobacz Grupa zarządzania.

Przypisywanie roli

Poniższy szablon przypisuje rolę w zakresie dzierżawy.

targetScope = 'tenant'

@description('principalId of the user that will be given contributor access to the resourceGroup')
param principalId string

@description('roleDefinition for the assignment - default is owner')
param roleDefinitionId string = '8e3af657-a8ff-443c-a75c-2fe8c4bcb635'

var roleAssignmentName = guid(principalId, roleDefinitionId)

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: roleAssignmentName
  properties: {
    roleDefinitionId: tenantResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
    principalId: principalId
  }
}

Następne kroki

Aby dowiedzieć się więcej o innych zakresach, zobacz: