快速入门:使用 Microsoft Graph 资源创建和部署第一个 Bicep 文件
在本快速入门中,你将创建一个 Bicep 文件,该文件声明Microsoft Entra 安全组和托管服务标识(MSI),分别表示Microsoft Graph 资源和 Azure 资源。 然后,将 MSI 添加为组的所有者。 你还将了解 Bicep 扩展如何通过提供类型安全性、语法验证和自动完成来简化开发。 最后,使用已登录用户部署 Bicep 文件。
重要
本快速入门文章使用动态类型引用,而不是弃用的内置类型,将于 2025 年 1 月 24 日停用。 在停用日期之前,内置类型(由 extension microsoftGraph
其表示)将与新的动态类型共存。 如果任何现有 Bicep 文件都使用内置类型, 请切换到使用动态类型 以避免将来出现任何 Bicep 文件部署问题。
重要
Microsoft Graph Bicep 目前为预览版。 有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
先决条件
拥有有效的 Azure 订阅:如果你不拥有 Azure 订阅, 请在开始之前创建一个免费帐户 。
安装用于创作和部署的 Bicep 工具。 本快速入门将 VS Code 与用于创作的 Bicep 扩展配合使用,将 Azure CLI 用于部署。 还针对 Azure PowerShell 提供了示例。 所需的最低 Bicep 版本为 v0.30.3。
具有 Microsoft Entra 角色,该角色 分配创建安全组的权限。 默认情况下,用户具有此权限。 但是, 管理员可以关闭此默认值 ,在这种情况下,至少需要分配 组管理员 角色。
添加 Microsoft Graph 应用程序组
启动 VS Code 并在同一文件夹中创建两个新文件 main.bicep 和 bicepconfig.json。
接下来,若要能够在 Bicep 文件中声明 Microsoft Graph 资源,需要通过配置 bicepconfig.json来启用 Bicep 预览功能并指定 Microsoft Graph Bicep 类型版本。
此示例使用 v1.0 资源并声明用户友好的扩展名称“microsoftGraphV1_0”来引用br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:0.1.8-preview
Microsoft 工件注册表中的类型版本。
{
"experimentalFeaturesEnabled": {
"extensibility": true
},
// specify an alias for the version of the v1.0 dynamic types package you want to use
"extensions": {
"microsoftGraphV1_0": "br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:0.1.8-preview"
}
}
还可以在同一 Bicep 文件中声明 Microsoft graph 资源,方法是从Microsoft 工件注册表添加对 beta 类型版本的另一个引用。
在 main.bicep 中,键入microsoftGraphV1_0
extension microsoftGraphV1_0
用于引用Microsoft 工件注册表中的动态类型包的用户友好名称。 该extension
语句使 Bicep 编译器知道你正在包括bicepconfig.json中定义的Microsoft图形类型。 在下一行中,使用 resource
关键字定义资源。 键入 resource exampleGroup
并添加空格。
extension microsoftGraphV1_0
resource exampleGroup
在该符号名称的后面添加空格时,会显示资源类型的列表。 继续键入 组 ,直到可以从可用选项中选择 Microsoft.Graph/Groups 。
提示
如果未在 VS Code 中看到 Intellisense 选项,请确保已安装先决条件中指定的 Bicep 扩展。 如果已安装该扩展,请在打开 Bicep 文件后给 Bicep 语言服务一些时间来启动。 右下角的通知指示服务正在启动。 当该通知消失时,服务正在运行。
选择 Microsoft.Graph/Groups 后,会显示可用的 API 版本 - beta 或 v1.0。 始终选择 v1.0,除非它不可用,或者所需的资源属性仅在 beta 版中可用。 对于本快速入门,请使用 v1.0。
在资源类型的单引号后面,添加 = 和一个空格。 你将看到用于为资源添加属性的选项。 选择“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]。
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 文件现在应如下所示:
extension microsoftGraphV1_0
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 文件。 本文档中的 Azure CLI 示例使用 Bash 控制台。
## Sign in to Azure CLI
az login
## Create a resource group
az group create --name exampleRG --location eastus
## Deploy the Bicep file
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 CLI 或 Microsoft Graph PowerShell。
以下示例演示了先删除 Azure 资源的命令,然后使用 Azure CLI 和 Azure PowerShell 删除 Microsoft Graph 资源。
## Delete the resource group
az group delete --name exampleRG
## Delete the Microsoft Graph group
az rest --method delete --url 'https://graph.microsoft.com/v1.0/groups%28uniqueName=%27myExampleGroup%27%29'