Как ограничить видимость активности DBA_AUDIT_TRAIL схемой или другими возможностями, чтобы увидеть активность для целевых схем - PullRequest
1 голос
/ 29 мая 2020

Я прошу администратора базы данных включить ведение журнала DBA_AUDIT_TRAIL, и я получаю обратно sh pu. В некоторых средах, когда я запрашиваю эту таблицу, регистрируется активность изменений, в других - нет.

Меня интересует только несколько схем. На мой взгляд, если бы моя видимость этой таблицы могла быть ограничена схемами, которые я заинтересован в отслеживании, то потенциально могло бы быть меньше сопротивления предоставлению мне доступа. Как лучше всего предоставить мне доступ только к объектам в списке целевой схемы? Есть ли альтернативное представление, к которому мне может быть предоставлен доступ?

Существует ли существующее представление Oracle, которое ограничивает активность строк только теми объектами, которые в противном случае видны пользователю, или мы должны создать собственное представление или, что более примитивно, скажем, создать такое представление

SELECT * FROM DBA_AUDIT_TRAIL WHERE OWNER IN ('schema1','schema2') 

и ограничить доступ SELECT к представлению? Я не уверен, что этот запрос не возвращает строк в некоторых окружениях, потому что ведение журнала не включено, или у меня просто нет надлежащего доступа.

Ответы [ 3 ]

2 голосов
/ 29 мая 2020

Как правило, лучше всего установить базу данных, в которой у вас есть доступ ко всему (DBA, SYSDBA и c.) Затем вы можете просто просмотреть документацию и попробовать все. Вы получите доверие своих администраторов баз данных намного быстрее, если они заметят, что вы знаете, о чем говорите. Например, здесь или здесь .

На ваш вопрос: Аудит можно полностью отключить для базы данных, но это редко. Если он включен, вам необходимо включить его для всей схемы или для отдельных объектов, таких как таблицы. Ограничение доступа для чтения к DBA_AUDIT_TRAIL является хорошей практикой, так как там, вероятно, есть данные, которые необходимо защитить (например, личные входы и т. Д. c).

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

Представление, ограничивающее данные, - отличная идея, вы должны работать вместе с администраторами баз данных, чтобы создать его. для тебя.

РЕДАКТИРОВАТЬ: Очевидно, и пример в порядке. Потребовалось время, так как мне пришлось включить аудит, который по умолчанию отключен для бродячих ящиков Oracle.

Как вы предлагаете, администратор базы данных может создать AS SYSDBA представление поверх DBA_AUDIT_TRAIL, отфильтровывая указывает c OWNER, или текущий подключенный сеанс (чтобы каждый пользователь мог видеть действия аудита в своих собственных таблицах):

CREATE OR REPLACE VIEW USER_AUDIT_TRAIL 
AS
SELECT *
  FROM DBA_AUDIT_TRAIL 
 WHERE username = SYS_CONTEXT('USERENV','SESSION_USER');

Доступ к этому представлению может быть предоставлен вам или для всех пользователей:

CREATE PUBLIC SYNONYM USER_AUDIT_TRAIL FOR SYS.USER_AUDIT_TRAIL;
GRANT SELECT ON USER_AUDIT_TRAIL TO PUBLIC;

Пожалуйста, поговорите с администраторами баз данных, они могут захотеть исключить некоторые столбцы и строки представления из публикации c.

1 голос
/ 30 мая 2020

Хотя кто-то может создать представление, как вы предлагаете, это не обязательно ограничит ваш доступ к основному контрольному журналу, поскольку доступ к словарю данных в Oracle не является детализированным. Обычно это все или ничего - так что вы можете иметь собственное представление, но по-прежнему имеете доступ к DBA_AUDIT_TRAIL, потому что привилегия «SELECT ANY DICTIONARY» потребуется в большинстве сред. Единственный способ, который, как я вижу, может сработать, - это создать представление в специальной схеме приложения с необходимыми привилегиями, используя права определителя, а затем предоставить выборочный доступ к этому представлению вашей учетной записи.

* 1004 очень мелкозернистый. Если он еще не включен и не используется другими, его можно включить только для того, вы хотите проверять, чтобы не было необходимости создавать настраиваемое представление.
1 голос
/ 29 мая 2020

Я не нашел альтернативного представления, основанного на DBA_AUDIT_TRAIL или UNIFIED_AUDIT_TRAIL.

Я думаю, что решение состоит в создании ваших собственных представлений с ограниченными привилегиями.

Ваш администратор базы данных должен уметь если аудит включен или нет, с единым контрольным журналом или без него и что проверяется: на самом деле он / она, скорее всего, единственный, кто может это проверить (если нет какой-либо отдельной роли для администрирования безопасности базы данных).

...