安全的 Azure 托管 Grafana

Azure 托管 Grafana 提供用于可视化和监控来自多个源的数据的能力,并具备全面的仪表板和警报功能。 部署此服务时,请务必遵循安全最佳做法来保护数据、配置和基础结构。

本文提供了有助于保护 Azure 托管 Grafana 部署的安全建议。

网络安全

网络安全控制可防止未经授权的访问 Azure 托管 Grafana 工作区,并建立用于监视和可视化工作负载的安全通信边界。

  • 启用专用终结点:通过使用 Azure 专用链接在虚拟网络内路由流量,消除公共 Internet 暴露。 专用终端节点提供专用网络接口,以便直接连接到 Azure 托管的 Grafana,并防止数据泄露风险。 默认情况下,公共网络访问在新工作区上启用,因此显式配置专用终结点对于通过防止未经请求的 Internet 流量到达 Grafana 实例来最大程度地减少攻击面至关重要。 请参阅 “设置专用访问”。

  • 禁用公用网络访问:使用专用终结点时阻止所有基于 Internet 的连接,方法是将工作区配置为拒绝公用网络访问。 这会强制通过专用终结点进行所有通信,并减少攻击面。 禁用公共访问可防止 Azure 门户的 Pin 到 Grafana 功能正常工作,但建议使用这种权衡来增强生产环境中的安全性。 请参阅 “设置专用访问”。

  • 为专用终结点配置网络安全组:使用网络安全组(NSG)通过实施限制性规则来控制托管专用终结点的子网之间的流量流,同时允许必要的通信模式时拒绝未经授权的访问。 在部署专用终结点的子网上配置 NSG 规则,以控制访问权限。 请参阅 “设置专用访问”。

  • 使用确定性出站 IP 地址:在 Azure 托管 Grafana 标准层中启用确定性出站 IP 功能,以获取出站连接的可预测 IP 地址。 这允许配置数据源防火墙以允许特定的 IP 地址,从而减少广泛网络访问规则的需求。 默认情况下,Grafana 服务出站 IP 地址不是固定的,因此当数据源安全性需要 IP 允许列表时,此功能至关重要。 请参阅 “使用确定性的出站 IP”。

  • 了解网络通信模式:Azure 托管 Grafana 在端口 443 上使用 HTTPS 通过区域网关进行所有用户访问,没有用于 Grafana UI 的替代端口或非 HTTPS 协议。 这通过确保只允许 TLS 加密的流量来减少攻击途径。 从 Grafana 到数据源的出站连接通常使用 HTTPS 或这些服务所需的特定端口。 相应地配置防火墙规则和网络安全组,以仅允许必要的通信路径。

标识和访问管理

标识和访问控制控制可确保只有经过授权的用户和应用程序才能访问具有仪表板管理和数据可视化的适当权限的 Azure 托管 Grafana 资源。

  • 使用 Microsoft Entra ID 身份验证:将本地身份验证机制替换为 Microsoft Entra ID,以利用集中式标识管理、条件访问策略和高级安全功能。 这通过多重身份验证提供更好的安全性,并消除了长期机密。 请参阅 设置 Azure 托管 Grafana 身份验证和权限

  • 实现基于角色的访问控制(RBAC):使用内置 Grafana 角色分配用户和应用程序所需的最低权限,而不是使用管理角色。 使用 Azure RBAC 强制实施最低特权访问原则。 请参阅 管理用户和标识的访问权限

  • 确定数据源的当前用户身份验证的优先级:配置数据源以在支持时使用当前用户身份验证作为首选方法,因为这样可以确保每个用户只能通过自己的Microsoft Entra 标识访问他们拥有权限的数据,并遵循零信任原则。 如果当前用户身份验证不可用,请使用托管标识作为回退身份验证方法,在数据源中对 Azure Managed Grafana 进行身份验证,而无需将凭据存储在代码或配置中。 托管标识简化了凭据管理,并提供自动机密轮换。 请参阅 设置 Azure 托管 Grafana 身份验证和权限

  • 为数据访问分配监视读取者角色:使用托管标识身份验证时,请将与 Azure Managed Grafana 关联的托管标识授予“监视读取者”角色。可以在订阅级别上进行广泛访问,或者在包含需要可视化的监视数据的特定资源组或资源上进行设置。 这遵循最低特权原则,即在当前用户身份验证不可用时,仅将数据源访问权限限制为仅需要监视数据的资源。 请参阅 设置 Azure 托管 Grafana 身份验证和权限

  • 仔细管理来宾用户访问:Azure 托管 Grafana 仅允许Microsoft Entra 标识,要求将外部协作者添加为 Microsoft Entra 租户中的来宾用户。 通过仅邀请必要的外部用户并定期查看来宾帐户来严格控制来宾访问。 当不再需要来宾访问权限时,请移除这些权限,以减少因外部帐户被泄露或来宾权限过大而导致的潜在安全风险。 请参阅 管理用户和标识的访问权限

  • 限制管理权限:最大程度地减少具有 Grafana 管理员角色的用户数,这可能会更改关键设置,包括数据源和用户权限。 对于需要创建和修改仪表板的大多数高级用户,请使用 Grafana 编辑器角色,而仅将 Grafana 管理员角色保留给那些需要管理工作区配置和安全设置的用户。 请考虑将 Grafana Limited Viewer 角色用作新用户的默认角色,并结合显式仪表板共享,以默认提供最少的访问权限。 请参阅 管理用户和标识的访问权限

数据保护

数据保护控制可确保 Azure Managed Grafana 中存储的配置数据、仪表板定义和用户信息经过正确加密和保护,防止未经授权的访问。

  • 确保传输中数据加密:对于数据源连接,加密取决于外部数据源的配置和功能。 尽可能在数据源设置中配置加密的端点(HTTPS),以确保 Grafana 和数据源之间的安全通信。 Azure 托管的数据源(如 Azure Monitor)会自动配置加密连接,但自定义数据源要求你根据目标系统的功能配置 TLS/SSL 连接。 请参阅 如何管理 Azure 托管 Grafana 中的数据源

  • 保护数据源连接:使用安全身份验证方法配置数据源,而不是直接在 Grafana 中存储凭据。 按照上述标识和访问管理部分中详述的优先身份验证方法进行作。 默认的 Azure Monitor 数据源已使用托管身份验证进行了预配置,但您应根据您的安全要求以及是否需要控制按用户的数据访问来评估是否将此数据源更改为当前用户身份验证。 请参阅 如何管理 Azure 托管 Grafana 中的数据源

  • 实现适当的仪表板和文件夹权限:使用 Grafana 的内置权限系统根据用户角色和职责控制对仪表板和文件夹的访问。 确保只有经过授权的人员才能访问敏感的监视数据。 请参阅 管理用户和标识的访问权限

日志记录和监控

日志记录和监视功能提供对 Azure 托管 Grafana 使用模式、身份验证事件和系统运行状况的可见性,以便进行安全分析和合规性报告。

  • 启用审核日志记录的诊断设置:配置诊断设置以将 Grafana 登录事件和其他日志流式传输到 Log Analytics、存储帐户或事件中心,以便进行集中监视和安全分析。 这提供用户访问模式和系统事件的可见性。 请看 使用诊断设置监控 Azure 托管 Grafana

  • 配置日志保留策略:根据符合性要求和安全分析需求为诊断日志建立适当的保留期。 使用适当的访问控制将日志存储在安全、防篡改的存储位置。 请看 使用诊断设置监控 Azure 托管 Grafana

合规性和治理

合规性和治理控制可确保 Azure 托管 Grafana 部署满足数据保护和访问管理的组织策略和法规要求。

  • 实施 Azure Policy 控制:使用 Azure Policy 在整个组织中审核和强制实施 Azure 托管 Grafana 配置。 内置策略可用于禁用公用网络访问、强制使用专用链接、禁用服务帐户,并确保配置了诊断日志记录。 请参阅 Azure Policy 的内置策略定义(针对 Managed Grafana)

  • 强制实施专用网络访问要求:应用“Azure 托管 Grafana 工作区应禁用公用网络访问”策略,以确保所有工作区都使用专用终结点而不是公共 Internet 连接。 此策略可以审核现有配置或拒绝创建不符合的工作区。 请参阅 Azure Policy 的内置策略定义(针对 Managed Grafana)

  • 配置资源标记进行治理:将一致的标记应用于 Azure 托管 Grafana 资源,以支持成本管理、安全分类和合规性报告。 使用标记标识资源所有者、环境和数据敏感度级别。 请参阅 “使用标记”来组织 Azure 资源和管理层次结构

  • 建立访问评审过程:为 Azure 托管 Grafana 权限实施定期访问评审,以确保用户仅维护必要的访问级别。 删除未使用的帐户,并根据不断变化的角色要求调整权限。 请参阅 Microsoft Entra ID 访问审查是什么?

备份和恢复

备份和恢复控制可防止数据丢失,并确保 Azure 托管 Grafana 监视功能在中断或灾难期间保持业务连续性。

  • 启用区域冗余以实现高可用性:在受支持的区域中创建 Azure 托管 Grafana 工作区时配置区域冗余,以跨可用性区域分配虚拟机。 这在区域级别故障中断期间提供自动故障转移功能,无需用户干预。 请参阅 Azure 托管 Grafana 服务可靠性

  • 规划多区域部署策略:出于灾难恢复目的,在多个区域中部署 Azure 托管 Grafana 工作区,因为Microsoft不提供此服务的跨区域灾难恢复。 在发生区域性服务中断期间,跨区域保持一致的仪表板配置,实现无缝故障转移功能。 请参阅 Azure 托管 Grafana 服务可靠性

  • 导出和版本控制仪表板配置:定期将仪表板定义和数据源配置导出到版本控制系统或备份存储位置。 这样可以还原监视功能并维护配置历史记录,以实现符合性和恢复目的。 使用 Grafana 的原生导出功能备份仪表板配置的 JSON 定义。 请参阅 如何创建仪表板

特定于服务的安全性

特定于服务的安全控制可以解决 Azure 托管 Grafana 中提供的独特安全注意事项和功能,以便进行 API 身份验证和自动访问管理。

  • 根据需要禁用 API 密钥和服务帐户:默认情况下禁用 API 密钥创建,以防止通过服务帐户自动访问,除非集成方案特别需要。 服务帐户和 API 密钥可以有效地绕过Microsoft Entra 身份验证,并允许使用基于令牌的身份验证访问 Grafana,这可能会破坏集中式标识管理和多重身份验证的默认安全模型。 仅当合法自动化用例(如 CI/CD 管道)需要时才启用 API 密钥,并实现适当的令牌生命周期管理。 请参阅 如何在 Azure 托管 Grafana 中使用服务帐户

  • 实现适当的服务帐户令牌管理:当需要服务帐户时,请配置具有适当过期时间和最少必要权限的令牌。 使用限制最严格的 Grafana 角色,该角色允许执行必要的任务(除非绝对需要,否则选择查看者或编辑者,而不是管理员)。 利用令牌过期设置,避免选择“无过期”选项,除非在操作上是不可避免的。 定期轮换服务帐户令牌并撤销未使用的令牌,以减少凭据泄露的风险。 在 Azure Key Vault 等系统中安全地存储令牌,并且永远不会在日志或客户端代码中公开令牌。 通过诊断设置中的 Grafana 登录事件监视服务帐户使用情况,以跟踪令牌何时用于身份验证。 请参阅 如何在 Azure 托管 Grafana 中使用服务帐户

  • 文档恢复过程:创建详细的恢复过程,包括重新创建工作区、还原配置和重新建立数据源连接的步骤。 定期测试恢复过程,以确保它们保持最新且有效。 请参阅 Azure 托管 Grafana 服务可靠性

Azure 托管 Grafana 提供专为数据可视化、仪表板管理并监视工作负载而设计的独特安全功能,这些工作负载需要特别注意以维护安全操作。

  • 保护数据源插件配置:配置数据源插件时,请遵循标识和访问管理部分中详述的优先身份验证方法,确保数据访问安全。 对于需要直接凭据的数据源,请使用 Azure Key Vault 安全地存储和检索连接信息。 在环境中启用插件之前,请仔细评估和批准这些插件,因为你负责确定哪些插件符合安全要求和组织标准。 请参阅 如何管理 Azure 托管 Grafana 中的数据源 以及如何 管理 Azure 托管 Grafana 中的插件

  • 控制插件访问和评估插件信任:仔细查看和批准环境中启用的所有插件,无论是核心 Grafana 插件、社区插件还是 Grafana Enterprise 插件。 仅安装监视用例所需的插件,并满足组织对质量、合规性和安全性的标准。 第三方插件具有自己的发布频率、安全影响和更新进程,这些进程不受Microsoft控制。 你有责任确定哪些插件满足你的要求和安全需求。 监视插件的安全问题使用情况,并定期查看已安装的插件,以确保它们保持必要且可信。 请参阅 如何在 Azure 托管 Grafana 中管理插件

  • 启用 CSRF 保护:配置 CSRF Always Check in Grafana 设置 以增强安全性,方法是拒绝具有与 Grafana 实例源不匹配的源标头的请求。 此设置通过严格验证请求来源来提供对跨站点请求伪造(CSRF)攻击的额外保护。 由于 Azure 托管 Grafana 通过其特定域访问,并且不支持匿名访问,因此启用此设置对功能的影响最小,同时提供增强的安全性。 请参阅 如何配置 Grafana 设置

  • 安全仪表板快照共享:除非用例明确要求,否则禁用外部快照发布。 “外部启用”设置允许用户将仪表板快照发布到外部公共服务器(snapshots.raintank.io),该服务器可将敏感数据公开给具有快照链接的任何人,并绕过Microsoft Entra 身份验证控件。 请考虑在 Grafana 设置中禁用此功能,将快照限制为Microsoft Entra 租户中的仅限本地共享。 请参阅 “如何配置 Grafana 设置 ”和 “如何共享仪表板”。

  • 实现仪表板共享安全性:与外部用户共享仪表板或在应用程序中嵌入仪表板时,请使用适当的身份验证并确保不会公开敏感数据。 配置仪表板权限以将编辑功能限制为仅授权用户。 请参阅 “如何共享仪表板”。

  • 保护 API 和集成终结点:如果将 Azure 托管 Grafana 与外部系统集成或使用编程访问,请确保 API 密钥得到正确保护和定期轮换。 在自动化方案中使用具有最少所需权限的服务主体。 请参阅 管理用户和标识的访问权限

  • 利用内置安全默认值:Azure 托管 Grafana 默认实现多个不需要配置的安全功能。 完全禁用匿名访问,确保所有用户都必须通过 Microsoft Entra ID 进行身份验证。 插件安装受到限制,以防止未经验证的插件执行任意代码。 没有具有默认凭据的本地管理员用户,因为所有管理访问权限都通过 Microsoft Entra 角色进行控制。 这些默认安全措施可减少攻击面,而无需执行其他配置步骤。