EXA_DBA_* tables incomplete for users with SELECT ANY DICTIONARY
Details
| Detail name | Value |
|---|---|
| Changelog Number | 11349 |
| Type | Bug |
| Status | Resolved |
| Affected Versions | Exasol 7.0.0 |
| Fix Versions | Exasol 7.0.10 |
| Resolution Date | 2021-06-05 |
Background
System privilege SELECT ANY DICTIONARY gives access to the metadata for all objects without giving access to the data in the underlying objects.
Description
Users with SELECT ANY DICTIONARY are not able to see all entries for the EXA_DBA_* tables. Specifically, the user can only see entries for objects which they have read access on (USAGE + SELECT).
Preparation
create user dict identified by A; grant create session to dict; grant SELECT ANY DICTIONARY to dict; CREATE SCHEMA test; CREATE TABLE t(a int); impersonate dict;
Example
-- As SYS has a table/column it should show 1 row but shows 0 rows select * from EXA_DBA_COLUMNS;
Workaround
Grant SELECT ANY TABLE privilege to to user along with SELECT ANY DICTIONARY privilege.
That will also allow accessing the underlying data
grant SELECT ANY TABLE to dict;
Fix
EXA_DBA_* tables show the expected metadata for all objects, regardless of the permissions on the underlying objects.