Application Insights 中的资源、角色和访问控制

通过使用 Azure 基于角色的访问控制 (Azure RBAC),可以控制用户的权限,只允许特定的用户对 Application Insights 中的数据具有读取和更新访问权限。

重要

将访问权限分配给应用程序资源所属资源组或订阅(并非资源本身)中的用户。 分配 Application Insights 组件参与者角色。 此角色可确保统一控制对 Web 测试和警报及应用程序资源的访问。 了解详细信息

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

资源、组和订阅

首先,让我们定义一些术语:

  • 资源:Azure 服务的实例。 Application Insights 资源会收集、分析并显示从应用程序发送的遥测数据。 其他类型的 Azure 资源包括 Web 应用、数据库和 VM。

    若要查看资源,请打开 Azure 门户并登录,然后选择“所有资源”。 为找到资源,请在筛选器字段中输入资源的部分名称。

    Screenshot that shows a list of Azure resources.

  • 资源组:每个资源都属于一个组。 组是一种管理相关资源的简便方式,对于访问控制尤其如此。 例如,在一个资源组中,你可以放入一个 Web 应用、一个用于监视该应用的 Application Insights 资源,以及一个用于保存已导出数据的 Azure 存储资源。
  • 订阅:若要使用 Application Insights 或其他 Azure 资源,请登录到 Azure 订阅。 每个资源组都属于一个 Azure 订阅,你可以在其中选择价格包。 如果是组织订阅,所有者可以选择成员及其访问权限。
  • Microsoft 帐户:用于登录到 Azure 订阅、Xbox Live、Outlook.com 和其他 Microsoft 服务的用户名和密码。

控制资源组中的访问

除了为应用程序创建的资源外,也有为警报和 Web 测试隐藏的独立资源。 它们会附加到 Application Insights 资源所在的资源组。 还可以在其中放置其他 Azure 服务,例如网站或存储。

为另一用户提供访问权限

必须对订阅或资源组拥有所有者权限。

该用户必须具有 Microsoft 帐户或对组织 Microsoft 帐户的访问权限。 可以将访问权限提供给个人,以及提供给 Microsoft Entra ID 中定义的用户组。

转到资源组或直接转到资源本身

将“参与者”角色分配给 Azure RBAC。

有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

选择角色

如适用,链接会连接到关联的官方参考文档。

角色 在资源组中
所有者 可以更改任何内容,包括用户访问权限。
参与者 可以编辑任何内容,包括所有资源。
Application Insights 组件参与者 可以编辑 Application Insights 资源。
读者 可以查看但无法更改任何内容。
Application Insights 快照调试器 授予用户使用 Application Insights 快照调试器功能的权限。 此角色不包含在“所有者”或“参与者”角色中。
Azure 服务部署版本管理参与者 通过 Azure 服务部署进行部署的服务的参与者角色。
数据清除程序 清除个人数据的特殊角色。 有关详细信息,请参阅管理 Log Analytics 和 Application Insights 中的个人数据
Azure ExpressRoute 管理员 可以创建、删除和管理快速路由。
Log Analytics 参与者 Log Analytics 参与者可以读取所有监视数据并编辑监视设置。 编辑监视设置包括向 VM 添加 VM 扩展、读取存储帐户密钥以便能够从 Azure 存储配置日志收集、创建和配置自动化帐户、添加解决方案以及配置所有 Azure 资源上的 Azure 诊断。 如果在设置 Azure 诊断时遇到问题,请参阅 Azure 诊断
Log Analytics 读者 Log Analytics 读者可以查看和搜索所有监视数据并查看监视设置,包括查看所有 Azure 资源上的 Azure 诊断的配置。 如果在设置 Azure 诊断时遇到问题,请参阅 Azure 诊断
masterreader 允许用户查看所有内容,但不能进行更改。
监视参与者 允许读取所有监视数据并更新监视设置。
监视指标发布者 允许针对 Azure 资源发布指标。
监视读取者 可以读取所有监视数据。
资源策略参与者(预览) 通过企业协议回填的用户,具有创建/修改资源策略、创建支持票证和读取资源/层次结构的权限。
用户访问管理员 允许用户管理其他用户对 Azure 资源的访问。
网站参与者 允许管理网站(而非 Web 计划),但不允许访问这些网站。

编辑包括创建、删除和更新:

  • 资源
  • Web 测试
  • 警报
  • 连续导出

选择用户

如果希望的用户不在目录中,可以邀请具有 Microsoft 帐户的任何人。 如果他们使用 Outlook.com、OneDrive、Windows Phone 或 Xbox Live 之类的服务,他们就会有 Microsoft 帐户。

请参阅 Azure 基于角色的访问控制 (Azure RBAC) 一文。

PowerShell 查询确定角色成员身份

由于某些角色可以链接到通知和电子邮件警报,因此能够生成属于给定角色的用户的列表会很有帮助。 为了方便生成这些类型的列表,你可以根据特定需求调整以下示例查询。

为管理员角色 + 参与者角色查询整个订阅

(Get-AzRoleAssignment -IncludeClassicAdministrators | Where-Object {$_.RoleDefinitionName -in @('ServiceAdministrator', 'CoAdministrator', 'Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

在所有者和参与者的特定 Application Insights 资源的上下文中进行查询

$resourceGroup = "RGNAME"
$resourceName = "AppInsightsName"
$resourceType = "microsoft.insights/components"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup -ResourceType $resourceType -ResourceName $resourceName | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "

在所有者和参与者的特定资源组的上下文中进行查询

$resourceGroup = "RGNAME"
(Get-AzRoleAssignment -ResourceGroup $resourceGroup | Where-Object {$_.RoleDefinitionName -in @('Owner', 'Contributor') } | Select -ExpandProperty SignInName | Sort-Object -Unique) -Join ", "