访问控制问题故障排除¶
如果因为用于运行查询的角色缺乏所需的访问控制权限导致 SQL 语句失败,您可以使用 EXPLAIN_PRIVILEGES 函数来精确确定缺少哪些权限。
以管理员身份进行故障排除¶
拥有 Snowflake 中所有对象权限的管理员可以对任意 SQL 语句调用 EXPLAIN_PRIVILEGES 函数。
小技巧
如果您希望没有对象权限的用户也能够使用 EXPLAIN_PRIVILEGES 来诊断访问控制问题,请授予他们 RESOLVE ALL ON ACCOUNT 权限。
示例:列出运行 SQL 语句所需的所有权限
输出示例:
此输出表明,您需要数据库 MYDB 的任意权限,AND 架构 MYDB.MYSCHEMA 的 MONITOR 权限。
示例:列出特定角色缺少的权限
以下调用确定 ``analyst_role``(包括其授予角色的权限)是否具有执行 SELECT 语句所需的权限,如果没有,则返回缺少的权限。
对自己的查询进行故障排除¶
您必须至少对查询中引用的对象拥有一项权限,才能调用 EXPLAIN_PRIVILEGES 函数。如果对象的这些权限不足以成功运行查询,可以调用 EXPLAIN_PRIVILEGES 函数,并将 missing_only 实参设置为 true,以确定所需的其他权限。
例如,如果您拥有 mydb、myschema 和 mytable 对象的权限,但仍然由于访问控制问题导致查询失败,请运行以下命令:
如果当前角色缺少权限,该函数将返回您所需的具体权限。例如: