«Аудит создания сеанса по сеансу» против «Аудит создания сеанса путем доступа»? - PullRequest
5 голосов
/ 09 февраля 2011

Когда я включаю аудит для , создайте сеанс следующим образом:

audit create session by session;

Затем я запрашиваю следующее:

select * from dba_priv_audit_opts;

Результат:

USERNAME | PROXY_NAME | AUDIT_OPTION   | SUCCESS   | FAILURE  |
...............................................................
 -       | -          | CREATE SESSION | BY ACCESS | BY ACCESS|

Но когда я включаю аудит для , создайте сеанс следующим образом:

 audit create session by access;

Затем я запрашиваю следующее:

select * from dba_priv_audit_opts;

Результат тот же:

USERNAME | PROXY_NAME | AUDIT_OPTION   | SUCCESS   | FAILURE  |
...............................................................
 -       | -          | CREATE SESSION | BY ACCESS | BY ACCESS|

Почему?У вас есть идеи?

1 Ответ

6 голосов
/ 09 февраля 2011

11gR2 и выше:

BY SESSION фактически отключено, и все проверки выполняются для каждого доступа.

11gR1 иниже:

Разница между BY SESSION и BY ACCESS заключается в том, что при указании BY SESSION Oracle будет пытаться объединить несколько записей аудита в одну запись, когда сеанс исоответствие проверенного действия.

Работает только для операторов SQL, отличных от DDL. Из приведенной выше ссылки:

Если указать параметры оператора или системные привилегии, которые проверяют язык определения данных (DDL), то база данных автоматически проверяет доступ независимо от того, задано ли предложение BY SESSION или предложение BY ACCESS.

Поскольку CREATE SESSION является выражением DDL, Oracle проверяет этот оператор при доступе.

...