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..."

    ../../_images/FileService_error.jpg
  • Пользователь. Использует выданный ему доступ к директории для чтения, записи, удаления или выполнения файлов.