求创建托管专用端点实现Azure托管Grafana私有访问Azure Monitor的Bicep脚本
Azure托管Grafana私有访问Azure Monitor账户的Bicep实现
要让Azure托管Grafana访问无公共端点的Azure Monitor账户,核心是为Grafana配置托管专用端点(Managed Private Endpoint),而非单独创建普通专用端点资源。以下是完整可运行的Bicep脚本:
完整Bicep代码
// 可自定义的参数,按需修改 param location string = resourceGroup().location param grafanaName string = 'mg-global' param monitorWorkspaceName string = '<你的Azure Monitor账户名称>' param subnetId string = '<目标子网资源ID>' // 创建Azure托管Grafana实例 resource managedGrafana 'Microsoft.Dashboard/grafana@2023-09-01' = { name: grafanaName location: location sku: { name: 'Standard' } // 启用系统分配身份,用于权限验证 identity: { type: 'SystemAssigned' } properties: { apiKey: 'Disabled' // 禁用公网访问,强制走私有链路 publicNetworkAccess: 'Disabled' // 关联Azure Monitor工作区 grafanaIntegrations: { azureMonitorWorkspaceIntegrations: [ { azureMonitorWorkspaceResourceId: resourceId('Microsoft.Monitor/accounts', monitorWorkspaceName) } ] } // 配置托管专用端点,连接到Azure Monitor账户 managedPrivateEndpoints: [ { name: 'pe-grafana-monitor' properties: { // 目标Azure Monitor账户的资源ID privateLinkResourceId: resourceId('Microsoft.Monitor/accounts', monitorWorkspaceName) // Azure Monitor账户对应的私有链接组ID,固定值 groupIds: [ 'azureMonitorWorkspace' ] // 指定专用端点部署的子网 subnet: { id: subnetId } } } ] } } // 必须配置:为Grafana系统身份分配Azure Monitor读取权限,否则无法拉取数据 var monitorReaderRoleId = '73c42c96-874c-492b-b04d-ab87d138a893' // 监控读取者角色固定ID resource grafanaMonitorRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: guid(managedGrafana.id, monitorReaderRoleId, monitorWorkspaceName) scope: resourceId('Microsoft.Monitor/accounts', monitorWorkspaceName) properties: { roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', monitorReaderRoleId) principalId: managedGrafana.identity.principalId principalType: 'ServicePrincipal' } }
关键说明
- 托管专用端点的优势:直接在Grafana资源内定义,由Azure托管Grafana服务自动管理生命周期,无需手动维护普通专用端点资源,完全匹配门户配置的逻辑。
- 版本兼容性:使用
2023-09-01版本的Grafana API,确保managedPrivateEndpoints属性被支持。 - 权限必填项:系统身份的读取权限是数据拉取的前提,不可省略。
内容的提问来源于stack exchange,提问作者Christian Vorhemus
相关产品推荐
相关产品推荐

