快速入门:使用 Microsoft Graph 资源创建和部署第一个 Bicep 文件

在本快速入门中,你将创建一个 Bicep 文件,该文件声明Microsoft Entra 安全组和托管服务标识(MSI),分别表示Microsoft Graph 资源和 Azure 资源。 然后,将 MSI 添加为组的所有者。 你还将了解 Bicep 扩展如何通过提供类型安全性、语法验证和自动完成来简化开发。 最后,使用已登录用户部署 Bicep 文件。

重要

Microsoft Graph Bicep 目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

先决条件

  • Azure 订阅:如果你不拥有 Azure 订阅, 请在开始之前创建一个免费帐户

  • 安装 Bicep 工具:若要为 Bicep 开发设置环境,请参阅 安装 Bicep 工具

    • 本快速入门使用 Visual Studio (VS) Code 进行创作。 因此,安装 VS Code 和 Bicep 扩展。
    • 对于部署,可以安装 Azure CLI 或 Azure PowerShell。
    • 或者,对于创作,可以安装 Visual Studio 和 Bicep 扩展,该扩展提供相同的创作体验。
    • 如果使用 Azure Powershell,请确保 VS Code 扩展和 Azure CLI 或 Bicep CLI 具有 Bicep 版本 v0.27.1 或更高版本。
  • Microsoft Entra 角色:需要有权创建安全组。 默认情况下,用户具有此权限。 但是, 管理员可能会关闭此默认值 ,在这种情况下,至少需要分配 用户管理员 角色。

添加 Microsoft Graph 应用程序组

启动 VS Code 并在同一文件夹中创建两个新文件 main.bicep bicepconfig.json

接下来,若要能够在 Bicep 文件中声明 Microsoft Graph 资源,需要通过配置 bicepconfig.json来启用 Bicep 预览功能:

{
    "experimentalFeaturesEnabled": {
        "extensibility": true
    }
}

main.bicep 中,键入provider microsoftGraph,让 Bicep 编译器知道你包括Microsoft图形类型。 在下一行中,使用 resource 关键字定义资源。 键入 resource exampleGroup并添加空格。

provider microsoftGraph

resource exampleGroup

在该符号名称的后面添加空格时,会显示资源类型的列表。 继续键入 ,直到可以从可用选项中选择 Microsoft.Graph/Groups

选择资源类型的Microsoft图形组的屏幕截图。

提示

如果未在 VS Code 中看到 Intellisense 选项,请确保已安装先决条件中指定的 Bicep 扩展。 如果已安装该扩展,请在打开 Bicep 文件后给 Bicep 语言服务一些时间来启动。 右下角的通知指示服务正在启动。 当该通知消失时,服务正在运行。

选择 Microsoft.Graph/Groups 后,会显示可用的 API 版本 - beta 或 v1.0。 始终选择 v1.0,除非它不可用,或者所需的资源属性仅在 beta 版中可用。 对于本快速入门,请使用 v1.0。

选择资源类型的 API 版本的屏幕截图。

在资源类型的单引号后面,添加 = 和一个空格。 你将看到用于为资源添加属性的选项。 选择“required-properties”。

屏幕截图显示如何添加所需属性。

此选项用于添加在部署时所需的所有资源类型属性。 选择此选项后,组具有以下属性:

resource exampleGroup 'Microsoft.Graph/groups@v1.0' = {
  displayName: 
  mailEnabled: 
  mailNickname: 
  securityEnabled: 
  uniqueName: 
}

为这些属性提供值,将 mailEnabled 设置为 false securityEnabled。true uniqueName 表示此组资源的不可变客户端提供的密钥。

添加托管标识资源

使用 Bicep 扩展的 VS Code 通过提供预定义的代码片段(例如创建托管标识的代码片段)简化了开发。 在 main.bicep 中,键入 man,然后从列表中选择 res-managed-identity,然后按 [TAB] 或 [ENTER]。

添加资源片段的屏幕截图。

注意:当前不支持可扩展资源(如 Microsoft Graph 资源)的资源片段

Bicep 文件现在包含以下代码:

resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = {
  name: 'name'
  location: location
}

可以通过添加参数定义来location修复缺少的参数定义错误。 在提供程序定义下,添加 param location string = resourceGroup().location。 有关此处使用的函数的详细信息,请参阅 resourceGroup()。 将托管标识的名称从 name .exampleManagedIdentity

使托管标识成为组资源的所有者

在资源中 exampleGroup ,创建一个新行 uniqueName,键入 ow,其中显示 所有者 是唯一匹配的属性选项,然后按 [TAB] 或 [ENTER]。

添加所有者属性的屏幕截图。

owners 属性是一个数组,因此[],通过键入 m 并选取 managedIdentity(托管标识的符号名称),键入属性并选取属性,键入另一个属性并选取 principalId,然后引用托管标识的主体 ID。

引用托管标识的屏幕截图。

main.bicep 文件现在应如下所示:

provider microsoftGraph

param location string = resourceGroup().location

resource exampleGroup 'Microsoft.Graph/groups@v1.0' = {
  displayName: 'My example group'
  mailEnabled: false
  mailNickname: 'my-example-group'
  securityEnabled: true
  uniqueName: 'myExampleGroup'
  owners: [managedIdentity.properties.principalId]
}

resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = {
  name: 'exampleManagedIdentity'
  location: location
}

使用已登录用户部署 Bicep 文件

使用以下示例登录到 Azure CLI 或 Azure PowerShell 来部署 Bicep 文件。

az group create --name exampleRG --location eastus

az deployment group create --resource-group exampleRG --template-file main.bicep

部署完成后,应会看到一条指出部署成功的消息。

注意

由于复制延迟,将托管服务标识(MSI)添加为 Microsoft Entra 组的所有者可能会导致部署失败。 稍候一下,然后再次部署相同的 Bicep 文件。

清理资源

如果不再需要本文中创建的 Azure 资源,请使用 Azure CLI 或 Azure PowerShell 模块删除快速入门资源组。

注意

资源组是 Azure 概念,对 Microsoft Graph 资源没有影响。 需要清理 Microsoft Graph 资源,并发出Microsoft Graph 的其他请求。 为此,可以使用 Azure CLI 或 Azure PowerShell、 Microsoft Graph CLIMicrosoft Graph PowerShell

以下示例演示了先删除 Azure 资源的命令,然后使用 Azure CLI 和 Azure PowerShell 删除 Microsoft Graph 资源。

az group delete --name exampleRG

az rest --method delete --url https://graph.microsoft.com/v1.0/groups(uniqueName=%27myExampleGroup%27)

下一步