安全对象:编辑错误消息中的信息¶
与安全对象相关的错误消息的行为如下:
- 变更前:
与安全对象相关的错误消息显示完整消息。
- 变更后:
可能会编辑与安全对象相关的错误消息。
此变更适用于与以下类型对象相关的错误消息:
有关安全对象的详细信息,请参阅 使用安全对象控制数据访问。
在扩展或评估安全对象期间检测到错误时,将考虑对错误消息进行编辑。编辑错误消息后,错误代码保持不变。
可能有两种类型的错误消息变更:执行过程中的编辑和执行后的元数据编辑。以下各节将介绍这些类型的变更。
执行过程中的编辑¶
在操作期间返回错误时,可以编辑整条错误消息或其中一部分。通常,当用户尝试使用安全对象时,如果没有安全对象的 OWNERSHIP 权限,则会发生此类错误消息编辑。
执行后的元数据编辑¶
用户可以在错误发生后查看有关错误的元数据,包括错误消息。例如,用户可以在 Snowsight 的 Query History 页面中查看此元数据,也可以通过查询视图和调用 Snowflake Information Schema 中的函数来查看此元数据。在执行过程中编辑错误消息时,始终会在执行后,在元数据中为所有用户编辑错误消息。
在执行过程中未编辑错误消息时,对于某些用户,该消息在元数据中显示不变,对于其他用户,则会编辑该消息。在以下任一情况下,元数据中的错误消息都保持不变:
查看元数据的用户具有 AUDIT 权限。
查看元数据的用户已将 ENABLE_UNREDACTED_SECURE_OBJECT_ERROR 用户参数设置为
TRUE。具有 AUDIT 权限的用户可以为用户设置此参数。查看元数据的用户执行了导致错误的语句。
在所有其他情况下,都会编辑元数据中的错误消息。编辑的错误消息包括文本:Error in secure object。
错误消息编辑示例¶
以下示例显示了被编辑的错误消息。编辑可以在执行过程中发生,也可以在执行后的元数据中发生。
示例 :查询安全视图¶
在以下示例中,对安全视图具有 SELECT 权限的用户对返回错误的视图执行查询。
创建安全视图:
删除视图查询中使用的表:
对视图列执行查询。
变更前向所有用户显示错误消息¶
变更后向某些用户显示的编辑后的错误消息¶
示例 2:运行调用安全函数的查询¶
在以下示例中,对安全函数具有 USAGE 权限的用户执行调用安全函数的查询,但安全函数返回错误。
示例 2a:函数实参导致错误¶
创建安全函数:
执行调用安全函数的查询:
变更前向所有用户显示错误消息¶
变更后向某些用户显示的编辑后的错误消息¶
示例 2b:删除函数所依赖的对象¶
创建安全函数:
删除函数中使用的表:
执行调用安全函数的查询:
变更前向所有用户显示错误消息¶
变更后向某些用户显示的编辑后的错误消息¶
示例 3:掩码策略返回错误¶
在以下示例中,用户对具有掩码策略的视图运行查询时遇到错误。
创建掩码策略:
创建视图并在视图中的列上设置掩码策略:
删除掩码策略中使用的表:
以对掩码策略没有所有权权限的用户身份对视图执行查询:
变更前向所有用户显示错误消息¶
变更后向某些用户显示的编辑后的错误消息¶
示例 4:行访问策略返回错误¶
在以下示例中,用户对具有行访问策略的视图运行查询并遇到错误。
创建行访问策略:
创建视图并在视图上添加行访问策略:
删除行访问策略中使用的表:
以对行访问策略没有 OWNERSHIP 权限的用户身份查询视图:
变更前向所有用户显示错误消息¶
变更后向某些用户显示的编辑后的错误消息¶
参考:1858