собирать информацию dba_users в базе данных Oracle при подключении как обычный пользователь без предоставления привилегий - PullRequest
0 голосов
/ 12 марта 2019

Я хочу запросить DBA_USER, чтобы идентифицировать sys и не-sys пользователей / схемы.Однако мое клиентское приложение не может подключиться как пользователь SYS, поэтому я не могу напрямую запрашивать dba_users.Я не могу предоставить привилегии пользователю, как упомянуто в ответе -> собирать информацию dba_users в базе данных Oracle при подключении от имени пользователя , поскольку это недостаток безопасности.

При дальнейшем расследовании я обнаружил, что all_usersсодержит те же данные, что и dba_users, но с меньшим значением no.столбцов (и меньше деталей).

Итак, используя это, я пришел к следующему запросу -

SELECT distinct owner 
FROM all_tables 
where owner IN (SELECT username FROM all_users) 
and tablespace_name not in ('SYSTEM','SYSAUX')

Я могу выполнить этот запрос как обычный или не системныйпользователь.

Это завершено?Я хотел бы пойти дальше и использовать этот запрос в моем производственном коде.Кто-нибудь может указать на любые потенциальные проблемы или данные, которые я мог бы пропустить, используя этот запрос (используя all_users, а не dba_users).Заранее спасибо.

1 Ответ

2 голосов
/ 12 марта 2019

Ваш вопрос предполагает, что вы можете получить доступ к информации в базе данных, к которой у вас нет прав доступа.

База данных настроена для защиты от таких сценариев.

Что касается вашего «хака» -

Это завершено?

Нет. Ваш запрос не захватит схемы, которые эффективно используются в качестве учетных записей для входа. То есть схемы, которые пусты. Эти пользователи существуют, но у них не будет строк в представлении _TABLES.

Кроме того, если вы хотите пойти по этому пути, вы должны использовать представление DBA_OBJECTS. Ваша схема может иметь представление, но не таблицу. А также, если вы сделаете запрос к представлениям ALL_, вы сможете увидеть только словарь данных, который у вас есть для просмотра.

Конец дня - вам нужна любовь DBA_ view. Вы DBA? Если это так, предоставьте выбор пользователю вашего приложения и заблокируйте его, чтобы он не мог быть использован для плохих вещей.

Если вы НЕ администратор базы данных, попросите вашего администратора базы данных найти решение.

...