2013-07-17 4 views
1

Мне нужно защитить пользователя oracle для вставки/обновления/удаления из внешних программ, написанных мной.Аудит на oracle schema для операторов dml

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

Я думаю, что в моем случае контрольный след приближается, но я просто не то, что ищу. Потому что мне нужно сейчас, из какой программы происходит соединение с БД. Например, мне нужно зарегистрировать все подключения, которые вставляют/обновляют/удаляют с помощью выполняемых заявлений, которые исходят от разработчика или жаба sql. Но все остальные соединения могут проходить без аудита.

На ежедневной основе у меня много соединений, поэтому регистрация всего перегружена.

Надеюсь, у одного из вас есть хорошая идея о том, как настроить это.

С уважением

+0

Ваше название и бирки говорят об изменениях в ревизии. Но тогда ваше описание говорит о «обеспечении безопасности» и, по-видимому, подразумевает, что вы хотите предотвратить DML, если он не приходит из приложения. Является ли цель разрешить DML и проводить аудит DML, исходящий от чего-то другого, кроме приложения? Или цель предотвратить запуск DML? Насколько безопасно должно быть решение? Поскольку имя приложения должно поступать из приложения, которое выполняется на клиентской машине, компетентный пользователь может легко взломать эти данные, манипулируя их машиной. –

+0

Это не должно быть безопасным. Пользователи могут делать некоторые вставки/обновления и удалять, но нам просто нужно их отслеживать. Раньше у некоторых кто-то делал обновление, и что-то забыл в своей статье. Если мы сможем отслеживать эти изменения, мы можем увидеть, какие записи могли быть заражены. Таким образом, это чистый аудит и отсутствие безопасности, поэтому я упомянул только тег аудита – nightfox79

+0

OK. Является ли цель знать, что SQL-оператор был запущен? Или какие строки были обновлены? Предполагая, что строки становятся модифицированными другими процессами и что через какое-то время между действием пользователя и обнаруженной проблемой знание команды SQL может не указывать, какие строки удовлетворяли критериям оператора в момент его выполнения. В чем разница между пользователем, допустившим ошибку, и выявленной проблемой? Не могли бы вы использовать технологию flashback, а не аудит? –

ответ

2

Вы можете использовать продукт Oracle: Oracle Audit Vault и Database Firewall. Поскольку вы также хотите узнать, из какой программы происходит соединение, вам нужен брандмауэр базы данных. Он может контролировать весь трафик через базу данных, указывая IP-адрес и клиент, с которого было запущено соединение. Вы также можете указать, хотите ли вы провести аудит DML или DDL или других операторов. Данные хранятся локально в базе данных продукта, а не в защищенной цели (в вашей базе данных). Просто посмотрите, это просто то, что вам нужно: http://www.oracle.com/technetwork/products/audit-vault-and-database-firewall/overview/overview-1877404.html

+0

Большое спасибо, это действительно то, что мне нужно. – nightfox79

+0

Рад, что это помогло :) – Hari

Смежные вопросы