Azure SQL 权限:如何允许使用 Query Performance Insight,但不更改定价层等设置?
Azure SQL Permissions: How to allow using Query Performance Insight, but not changing settings such as the pricing tier?
我想授予我们的团队成员使用 Azure SQL 数据库的 Query Performance Insight 功能的必要权限,包括查看 long-运行 查询的查询文本的可能性.
他们已经拥有“Reader”和“监控贡献者”角色,因此他们可以访问 Azure 门户中的查询性能洞察功能并查看长运行 查询的 ID。但是,当他们单击长 运行 查询时,他们看不到查询文本。显示错误,指示“运行 查询时连接超时”。
如果我为他们分配“SQL DB Contributor”角色,他们将能够使用该功能,但他们也可以更改数据库设置,例如我不希望的定价层。
是否有满足我需要的角色分配?
我认为您需要创建一个 Azure 自定义角色,如 https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles 中所述。
您可以从 Reader 开始,然后添加您想要的权限,或者从 SQL DB Contributor 开始,然后删除您不需要的权限。 这需要试验。
从您的订阅中创建一个新的自定义角色:
然后您将从该角色添加或排除权限:
我感兴趣的权限是:
列出查询存储文本 - 用于添加到 Reader
和更新数据库 - 用于从数据库贡献者中排除
完成后,您将转到包含您的数据库的 服务器 的访问控制边栏选项卡,然后添加具有该新自定义角色的用户。测试、调整、重复,直到获得所需的安全配置文件。您使用哪个角色作为基础取决于您希望采用的最低权限安全模型的接近程度。
编辑: 找出分配权限的一种可能方法是:
- 扩展数据库
- 缩小规模
- 转到资源组,select你的数据库,然后导出模板
- 检查 JSON,这将是操作期间应用的 ARM(您可能需要查看多个部署才能弄清楚)
- 找到操作后,JSON 中的提供者应该会为您提供线索,告诉您要从您创建的任何角色中排除什么。
添加到@WaitingForGuacamole 的回答:我们最终创建了一个包含 Microsoft.Sql/servers/databases/queryStore/write
和 Microsoft.Sql/servers/databases/topQueries/queryText/action
的自定义角色定义。将此自定义角色定义分配给已在 Azure SQL 服务器上拥有 Reader
角色的团队成员,然后允许他们在 Query Performance Insight 中查看查询文本。
实际的两个权限是由一位非常乐于助人的 Azure 支持工程师提供给我们的。 YMMV,它也可能只使用 Microsoft.Sql/servers/databases/topQueries/queryText/action
(除了读取权限),如 Azure Docs Github issue 所示。但是,支持工程师认为我们还需要 Microsoft.Sql/servers/databases/queryStore/write
一个,但我们没有继续研究原因。
我想授予我们的团队成员使用 Azure SQL 数据库的 Query Performance Insight 功能的必要权限,包括查看 long-运行 查询的查询文本的可能性.
他们已经拥有“Reader”和“监控贡献者”角色,因此他们可以访问 Azure 门户中的查询性能洞察功能并查看长运行 查询的 ID。但是,当他们单击长 运行 查询时,他们看不到查询文本。显示错误,指示“运行 查询时连接超时”。
如果我为他们分配“SQL DB Contributor”角色,他们将能够使用该功能,但他们也可以更改数据库设置,例如我不希望的定价层。
是否有满足我需要的角色分配?
我认为您需要创建一个 Azure 自定义角色,如 https://docs.microsoft.com/en-us/azure/role-based-access-control/custom-roles 中所述。
您可以从 Reader 开始,然后添加您想要的权限,或者从 SQL DB Contributor 开始,然后删除您不需要的权限。 这需要试验。
从您的订阅中创建一个新的自定义角色:
然后您将从该角色添加或排除权限:
我感兴趣的权限是:
列出查询存储文本 - 用于添加到 Reader
和更新数据库 - 用于从数据库贡献者中排除
完成后,您将转到包含您的数据库的 服务器 的访问控制边栏选项卡,然后添加具有该新自定义角色的用户。测试、调整、重复,直到获得所需的安全配置文件。您使用哪个角色作为基础取决于您希望采用的最低权限安全模型的接近程度。
编辑: 找出分配权限的一种可能方法是:
- 扩展数据库
- 缩小规模
- 转到资源组,select你的数据库,然后导出模板
- 检查 JSON,这将是操作期间应用的 ARM(您可能需要查看多个部署才能弄清楚)
- 找到操作后,JSON 中的提供者应该会为您提供线索,告诉您要从您创建的任何角色中排除什么。
添加到@WaitingForGuacamole 的回答:我们最终创建了一个包含 Microsoft.Sql/servers/databases/queryStore/write
和 Microsoft.Sql/servers/databases/topQueries/queryText/action
的自定义角色定义。将此自定义角色定义分配给已在 Azure SQL 服务器上拥有 Reader
角色的团队成员,然后允许他们在 Query Performance Insight 中查看查询文本。
实际的两个权限是由一位非常乐于助人的 Azure 支持工程师提供给我们的。 YMMV,它也可能只使用 Microsoft.Sql/servers/databases/topQueries/queryText/action
(除了读取权限),如 Azure Docs Github issue 所示。但是,支持工程师认为我们还需要 Microsoft.Sql/servers/databases/queryStore/write
一个,但我们没有继续研究原因。