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.