4.10. Доступ к файлам на жестком диске из Oracle¶
Хранение информации в файловой системе сервера необходимо по нескольким причинам. Одна из них большие объемы данных, которые только добавляются в БД и очень редко обновляются. Например, изображения удобно хранить в файлах. При этом дамп базы становится намного меньше, а сами изображения могут быть доступны пользователям операционной системы, а не только пользователям БД.
Warning
Необходимо помнить, что доступ к файлам ОС может являться брешью в системе безопасности. Необдуманная раздача прав обязательно приведет, к умышленному или не умышленному взлому системы. На всех промышленных базах данных, необходимо установить сложные для расшифровки пароли основного пользователя системы (BTK) и системных пользователей SYS и SYSTEM. На данный момент только доступа пользователя к директории не достаточно. Необходимо выдавать доступ на эту директорию и пользователю владельцу схемы (BTK).
4.10.1. Настройка доступа¶
Сервис доступа к файлам ОС позволяет независимо определять четыре типа действия: чтение, запись, удаление, выполнение. Запись одновременно означает создание файла, если он не существует. Файлы, доступные в директории определяются шаблонами:
- Конкретный файл.
Полный путь к директории\имя файла
. Например:D:\TestJavaDir\test2.txt
- Все файлы в папке, исключая вложенные папки.
Полный путь к директории\*
. Например:D:\TestJavaDir\*
- Все файлы в данной папке и вложенных папках.
Полный путь к директории\-
. Например:D:\TestJavaDir\-
Настройка доступа может быть выполнена как для пользователя, так и для роли. Если необходима настройка для всех пользователей (и текущих и тех, что появятся в будущем), то можно проще всего создать доступ для пользователя PUBLIC.
Доступ может быть как разрешительным, так и запретительным:
- GRANT - Разрешает выполнение выбранных типов действий.
- RESTRICT - Запрещает выполнение выбранных типов действий.
Например, можно для всех пользователей (PUBLIC) разрешить доступ к чтению файла, а затем конкретному пользователю или роли запретить чтение этого файла. Кроме того, настройка доступа может быть выключена.
Сервис доступа к файлам основан на методах Java, потому база должна быть установлена с поддержкой Java (по умолчанию) и размер Java Pool должен быть не менее 32 МБ (рекомендованный размер порядка 100 МБ). Соответственно, основная безопасность доступа основана на Java и состоит из трех уровней защиты:
- Системный пользователь. Имеет возможность раздачи прав пользователям-администраторам для возможности настройки доступа. Выдача таких прав делается вручную с помощью операторов:
grant java_admin to user/rolename grant select on dba_java_policy to user/rolename grant select on dba_roles to user/rolename grant select on dba_users to user/rolename
Пользователь-администратор. Настраивает доступ с помощью “Интерфейса создания доступа к файлам” в Конфигураторе (
Главное меню\Сервисы\Список директорий
). В случае если у пользователя нет прав, выданных системным пользователем, будет выдана ошибка"Не удалось создать привелегию на директорию. Ошибка: ORA-29532..."
Пользователь. Использует выданный ему доступ к директории для чтения, записи, удаления или выполнения файлов.