ALL_COL_COMMENTS 不是 return 给定某个用户的所有 table 个对象
ALL_COL_COMMENTS doesn't return all table objects given a certain user
当以架构所有者身份登录时,我可以运行查询
select * from ALL_COL_COMMENTS WHERE TABLE_NAME LIKE 'BLEH_%';
而且我可以看到我期望的所有表格和列。
但是,如果我以不同的用户身份登录,相同的查询将 return 一些 这些表,但不是全部。
为什么 ALL_COL_COMMENTS
return 不考虑用户的相同结果集?
所有这些表的所有者都是相同的(模式所有者)。其他用户可以在 ALL_COL_COMMENTS
中看到这些表的子集,但就其而言其他表不存在。
这是 Oracle 一贯实施的安全基本原则 - 如果您对某个对象没有任何权限,那么就您而言,该对象不存在。根据 "a need to know basis" 的原则,泄露有关它的任何信息都是安全漏洞。
数据字典没有什么不同 - 如果您对 table 没有任何权限,您甚至不能查询有关它的结构信息(例如,当数据字典存在时) .就你而言,没有这样的 table.
不应该 return 相同的结果集而不考虑用户。 documentation for ALL_TAB_COMMENTS
表示:
ALL_TAB_COMMENTS displays comments on the tables and views accessible to the current user.
类似的评论显示在其他 ALL_*
表中,它们显示了 USER_*
、ALL_*
和 DBA_*
版本之间的差异。
The introduction to the static data dictionary views 更清楚:
Many data dictionary tables have three corresponding views:
An ALL_
view displays all the information accessible to the current
user, including information from the current user's schema as well as
information from objects in other schemas, if the current user has
access to those objects by way of grants of privileges or roles.
A DBA_
view displays all relevant information in the entire database.
DBA_
views are intended only for administrators. They can be accessed
only by users with the SELECT ANY DICTIONARY
privilege. This privilege
is assigned to the DBA role when the system is initially installed.
A USER_
view displays all the information from the schema of the
current user. No special privileges are required to query these views.
如果您的 'other' 用户看不到这些视图中的表,那么它对它们没有任何权限。他们只能看到他们 拥有权限的那些。这是故意的,因为@Mureinik 提到的原因。
当以架构所有者身份登录时,我可以运行查询
select * from ALL_COL_COMMENTS WHERE TABLE_NAME LIKE 'BLEH_%';
而且我可以看到我期望的所有表格和列。
但是,如果我以不同的用户身份登录,相同的查询将 return 一些 这些表,但不是全部。
为什么 ALL_COL_COMMENTS
return 不考虑用户的相同结果集?
所有这些表的所有者都是相同的(模式所有者)。其他用户可以在 ALL_COL_COMMENTS
中看到这些表的子集,但就其而言其他表不存在。
这是 Oracle 一贯实施的安全基本原则 - 如果您对某个对象没有任何权限,那么就您而言,该对象不存在。根据 "a need to know basis" 的原则,泄露有关它的任何信息都是安全漏洞。
数据字典没有什么不同 - 如果您对 table 没有任何权限,您甚至不能查询有关它的结构信息(例如,当数据字典存在时) .就你而言,没有这样的 table.
不应该 return 相同的结果集而不考虑用户。 documentation for ALL_TAB_COMMENTS
表示:
ALL_TAB_COMMENTS displays comments on the tables and views accessible to the current user.
类似的评论显示在其他 ALL_*
表中,它们显示了 USER_*
、ALL_*
和 DBA_*
版本之间的差异。
The introduction to the static data dictionary views 更清楚:
Many data dictionary tables have three corresponding views:
An
ALL_
view displays all the information accessible to the current user, including information from the current user's schema as well as information from objects in other schemas, if the current user has access to those objects by way of grants of privileges or roles.A
DBA_
view displays all relevant information in the entire database.DBA_
views are intended only for administrators. They can be accessed only by users with theSELECT ANY DICTIONARY
privilege. This privilege is assigned to the DBA role when the system is initially installed.A
USER_
view displays all the information from the schema of the current user. No special privileges are required to query these views.
如果您的 'other' 用户看不到这些视图中的表,那么它对它们没有任何权限。他们只能看到他们 拥有权限的那些。这是故意的,因为@Mureinik 提到的原因。