Для того чтобы ограничить доступ пользователя к ресурсам или указать условие обработки паролей пользователя, можно сопоставить ему профиль (profile). Ограничивая объем вычислительных ресурсов, доступных пользователю, можно предотвратить их перерасход и нанесение ущерба работе других пользователей. (Печально известен так называемый отказ в обслуживании (denial of service)). Наложение ограничений на администрирование паролей способствует защите процесса аутентификации в БД Oracle. Для того чтобы использовать профили, следует разрешить динамические ограничения ресурсов при помощи параметра инициализации RESOURCE_LIMIT или же команды ALTER SYSTEM SET. Определив профиль командой CREATE PROFILE, можно назначить его пользователю посредством команды CREATE USER или ALTER USER.
Команда CREATE PROFILE позволяет создать профиль и назначить для него различные типы ограничений на расходование ресурсов. Для роли может быть указано несколько параметров. Инструкция имеет следующий синтаксис:
CREATE PROFILE имя_профиля
LIMIT {параметр_ресурса | параметр_пароля}
Ключевые слова для всех параметров:
Таблица
Ключевое слово
Назначение
UNLIMITED
Указывает, что для данного параметра нет ограничений
DEFAULT
Указывает, что параметр принимает значение, заданное для профиля DEFAULT. Изначально все значения профиля DEFAULT устанавливаются в UNLIMITED. Значения для профиля можно изменять при помощи команды ALTER PROFILE.
Значения параметров ресурсов задаются целыми числами, а значения параметров пароля – выражениями.
Ключевые слова для параметров ресурсов:
Таблица
Ключевое слово
Назначение
SESSIONS_PER_USER
Ограничивает количество одновременных сеансов пользователя.
CPU_PER_SESSION
Ограничивает время процессора для пользовательского сеанса (в сотых долях секунды)
CPU_PER_CALL
Ограничивает время процессора для отдельного пользовательского вызова (в сотых долях секунды)
CONNECT_TIME
Ограничивает общую фактическую продолжительность сеанса (в минутах). Если пользователь превышает значение этого параметра, сервер откатывает текущую транзакцию и завершает сеанс. Следующий вызов пользователя возвращает ошибку.
IDLE_TIME
Ограничивает время непрерывного ожидания пользователя (в минутах). Ограничение времени ожидания не применяется для длительных запросов.
LOGICAL_READS_PER_SESSION
Ограничивает количество логических блоков данных, считываемых в пользовательском сеансе, как из памяти, так и с диска
LOGICAL_READS_PER_CALL
Ограничивает количество логических блоков данных, считываемых в каждом пользовательском вызове, как из памяти, так и с диска
COMPOSITE_LIMIT
Ограничивает общую стоимость ресурсов сеанса (в сервисных единицах)
Ключевые слова для параметров пароля:
Таблица
Ключевое слово
Назначение
FAILED_LOGIN_ATTEMPTS
Ограничивает количество неудачных попыток регистрации пользователя, предшествующих блокировке его учетной записи
PASSWORD_LIFE_TIME
Устанавливает ограничение максимального срока действия одного пароля (в днях) для пользователя. По истечении срока пароль теряет силу.
PASSWORD_REUSE_TIME
Указывает, сколько дней должно пройти, прежде чем пароль можно будет задать повторно. Если для параметра задано целочисленное значение, то необходимо установить PASSWORD_ REUSE_ MAX в UNLIMITED.
PASSWORD_REUSE_MAX
Указывает сколько раз необходимо изменить пароль, прежде чем будет разрешено задать его повторно. Если для параметра задано целочисленное значение, то необходимо установить PASSWORD_REUSE_TIME в UNLIMITED.
PASSWORD_LOCK_TIME
Указывает количество дней, на которое будет заблокирована учетная запись пользователя в случае превышения количества попыток неудачной регистрации
PASSWORD_GRACE_TIME
Указывает, за какое количество дней до истечения срока действия пароля, выдается предупреждение
PASSWORD_VERIFY_ FUNCTION функция | NULL | DEFAULT
Разрешает применение функции PL/SQL для проверки сложности пароля
Команда ALTER PROFILE изменяет ограничения на расходование ресурсов или ограничения пароля для существующего профиля
ALTER PROFILE имя_профиля
LIMIT {параметр_ресурса | параметр_пароля}
В команде ALTER PROFILE применяются те же ключевые слова и значения, что и в CREATE PROFILE.
Существующий профиль при необходимости можно удалить командой DROP PROFILE
DROP PROFILE имя_профиля (CASCADE)
Ключевое слово CASCADE указывает, что назначение профиля для всех активных пользователей должно быть отменено, а их профили необходимо заменить на DEFAULT. Данную инструкцию следует применять при удалении профиля текущего активного пользователя.