使用 Bicep 檔案部署租用戶
隨著組織逐漸成熟,您可能需要定義和指派 Microsoft Entra 租用戶中的原則或 Azure 角色型存取控制 (Azure RBAC)。 您可以使用租用戶層級範本,以宣告方式套用原則,並在全域層級指派角色。
訓練資源
如果您比較想要透過逐步指導來了解部署範圍,請參閱使用 Bicep 將資源部署到訂用帳戶、管理群組和租用戶。
支援的資源
並非所有的資源類型都可部署至租用戶等級。 本節將列出支援的資源類型。
針對 Azure 角色型存取控制 (Azure RBAC),請使用:
若為部署至管理群組、訂閱或資源群組的巢狀範本,請使用:
若為建立管理群組,請使用:
若為建立訂閱,請使用:
若要管理成本,請使用:
若為設定入口網站,請使用:
內建原則定義是租用戶等級的資源,但您無法在租用戶部署自訂原則定義。 如需將內建原則定義指派給資源的範例,請參閱 tenantResourceId 範例。
集合範圍
若要將範圍設定為租用戶,請使用:
targetScope = 'tenant'
必要的存取權
部署範本的主體必須具備在租用戶範圍建立資源的權限。 主體必須擁有執行部署動作 (Microsoft.Resources/deployments/*
) 並建立在範本中定義之資源的權限。 例如,若要建立管理群組,主體必須具備租用戶範圍的「參與者」權限。 若要建立角色指派,主體必須具備「擁有者」權限。
Microsoft Entra ID 的全域管理員不會自動具備指派角色的權限。 若要在租用戶範圍啟用範本部署,全域管理員必須執行下列步驟:
提升帳戶存取權,讓全域管理員可以指派角色。 如需詳細資訊,請參閱提高存取權以管理所有 Azure 訂用帳戶和管理群組。
將「擁有者」或「參與者」指派給需要部署範本的主體。
New-AzRoleAssignment -SignInName "[userId]" -Scope "/" -RoleDefinitionName "Owner"
az role assignment create --assignee "[userId]" --scope "/" --role "Owner"
主體現在具備部署範本所需的權限。
部署命令
用於租用戶部署的命令與用於資源群組部署的命令不同。
針對 Azure CLI,使用 az deployment tenant create:
az deployment tenant create \
--name demoTenantDeployment \
--location WestUS \
--template-file main.bicep
有關用於部署 ARM 範本的部署命令和選項,如需詳細資訊,請參閱:
部署位置和名稱
針對租用戶層級部署,您必須提供部署的位置。 部署的位置與您部署的資源位置不同。 部署位置會指定部署資料的儲存位置。 訂閱和管理群組部署也需要位置。 針對資源群組 (部分機器翻譯) 部署,資源群組的位置會用來儲存部署資料。
您可以提供部署的名稱,或使用預設的部署名稱。 預設名稱是範本檔案的名稱。 例如,部署名稱為 main.bicep 的檔案會建立 main 的預設部署名稱。
對於每個部署名稱而言,此位置是不可變的。 當某個位置已經有名稱相同的現有部署時,您無法在其他位置建立部署。 例如,如果您在 centralus 中建立名稱為 deployment1 的租用戶部署,稍後就無法再使用名稱 deployment1 建立另一個部署,而只能在 westus 的位置建立另一個部署。 如果您收到錯誤代碼 InvalidDeploymentLocation
,請使用不同的名稱或與先前該名稱部署相同的位置。
部署範圍
在 Bicep 檔案中,使用 resource
關鍵詞宣告的所有資源都必須部署在與部署相同的範圍。 對於租使用者部署,這表示 resource
Bicep 檔案中的所有宣告都必須部署至相同租使用者,或部署相同租用戶中資源的子或擴充資源。
不過,這項限制不適用於 existing
資源。 您可以在與部署不同的範圍內參考現有的資源。
若要在單一部署內的多個範圍部署資源,請使用 模組。 部署模組會觸發「巢狀部署」,讓您以不同的範圍為目標。 部署父 Bicep 檔案的用戶必須具有在那些範圍起始部署的必要許可權。
您可以從租使用者範圍 Bicep 檔案中的下列範圍部署資源:
將範圍設為租用戶
在 Bicep 檔案中定義的資源會套用至租用戶。
targetScope = 'tenant'
// create resource at tenant
resource mgName_resource 'Microsoft.Management/managementGroups@2023-04-01' = {
...
}
將範圍設為管理群組
若要鎖定租用戶內的管理群組,請新增模組。 您可以使用 managementGroup 函式來設定其 scope
屬性。 提供管理群組名稱。
targetScope = 'tenant'
param managementGroupName string
// create resources at management group level
module 'module.bicep' = {
name: 'deployToMG'
scope: managementGroup(managementGroupName)
}
將範圍設為訂閱
若要以租用戶內的訂閱為目標,請新增模組。 使用訂閱函式來設定其 scope
屬性。 提供訂閱識別碼。
targetScope = 'tenant'
param subscriptionID string
// create resources at subscription level
module 'module.bicep' = {
name: 'deployToSub'
scope: subscription(subscriptionID)
}
將範圍設為資源群組
若要以租用戶內的資源群組為目標,請新增模組。 使用 resourceGroup 函式來設定其 scope
屬性。 提供訂閱識別碼和資源群組名稱。
targetScope = 'tenant'
param resourceGroupName string
param subscriptionID string
// create resources at resource group level
module 'module.bicep' = {
name: 'deployToRG'
scope: resourceGroup(subscriptionID, resourceGroupName)
}
建立管理群組
下列範本會建立管理群組。
targetScope = 'tenant'
param mgName string = 'mg-${uniqueString(newGuid())}'
resource mgName_resource 'Microsoft.Management/managementGroups@2023-04-01' = {
name: mgName
properties: {}
}
如果您的帳戶沒有部署至租用戶的權限,您仍然可以藉由部署至另一個範圍,來建立管理群組。 如需詳細資訊,請參閱管理群組。
指派角色
下列範本會在租用戶範圍指派角色。
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
}
}
下一步
若要了解其他範圍,請參閱: