Создание и управление профилями

У профиля два назначения: управление использованием пароля и ограничением на кол-во используемых ресурсов сессии. Проверка использования пароля всегда включена, проверка использования ресурсов доступна только при включенном параметре RESOURCE_LIMIT=TRUE (по-умолчанию выключено). Профили используются по умолчанию, но профили по умолчанию (применяются ко всем пользователям, в том числе и к SYS и SYSTEM) проверяют очень мало.

EXAM TIP

Profile password limits are always enforced; profile resource limits

are enforced only if the instance parameter RESOURCE_LIMIT is TRUE.

Управление паролями

К паролю могут быть применены следующие ограничения

  • FAILED_LOGIN_ATTEMPTS – устанавливает число последовательно неправильных вводов пароля перед блокировкой аккаунта. Если вводится корректный пароль до блокировки, счётчик обнуляется
  • PASSWORD_LOCK_TIME – устанавливает количество (в днях) до блокировки аккаунта после FAILED_LOGIN_ATTEMPTS
  • PASSWORD_LIFE_TIME – количество (в днях) до окончания жизни пароля. После этого пароль ещё может быть активным какое-то время в зависимости от PASSWORD_GRACE_TIME
  • PASSWORD_GRACE_TIME – количество (в днях) после первой успешной попытки подключения после окончания жизни пароля пока будет выводиться предложение сменить пароль. Старый пароль действителен в этом время
  • PASSWORD_REUSE_TIME – Количество дней перед тем как пароль может быть использован заново (значение пароля)
  • PASSWORD_REUSE_MAX – устанавливает сколько раз может быть использован один и тот же пароль
  • PASSWORD_VERIFY_FUNCTION – имя функции для выполнения при смене пароля. Целью предполагается проверка нового пароля на необходимый уровень безопасности, но вы можете использовать для любых целей.

Ограничение ресурсов

 Ограничениями накладывами на использование ресурсов сервера (kernel limits) являются

SESSION_PER_USER количество параллельных подключений которые может создать один и тот же аккаунт. Сессии по достижении этого значения будут блокироваться

CPU_PER_SESSION – время процессора (в сентисекундах) которое серверный процесс сессии может использовать до принудительного завершения

CPU_PER_CALL — время процессора (в сентисекундах) которое серверный процесс может использовать для выполнения одной SQL команды до принудительной остановки выполнения запроса

LOGICAL_READS_PER_SESSION – количество блоков которое может считать сессия (независимо из буффера или с диска) перед принудительным отключением сессии

LOGICAL_READS_PER_CALL – количество блоков которое может считать запрос (независимо из буффера или с диска) перед принудительной остановкой выполнения запроса

PRIVATE_SGA – для сессий подключенных используя архитектуру общего сервера, количесво килобайт которое сессия может использоватья в SGA

CONNECT_TIME – в минутах, масимальная длительность сессии

IDLE_TIME – в минутах, длительность бездействия по достижении которой сессия принудительно отключается

COMPOSITE_LIMIT – взвешенная сумма других атрибутов. Не рассматриваем в этом курсе

Все ограничения по использования ресурсов не будут выполняться до установки параметра экземпляра RESOURCE_LIMIT. По умолчанию значение FALSE. Включить можно выполнив запрос

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

Когда сессия отключается из-за достижения лимита, если была неподтвержденная транзакция – она отменяется. Если останавливается выполнение запроса – то изменения сделанные этим запросом отменяются, но все выполненные команды до этого остаются в силе и неподтверждёнными.

TIP

Profiles can be used to limit resource usage, but a much more

sophisticated tool is the Resource Manager

Создание и назначение профилей

Управлять профилями можно через Database Control или SQL *Plus. Для просмотра текущих профилей пользователей выполните запрос

 

select username,profile from dba_users;

 

По умолчанию все аккаунты (за исключением двух внутренних аккаунтов DBSNMP и WKSYS) будут использовать профиль DEFAULT. Запрос для просмотра профиля

 

select * from dba_profiles where profile=’DEFAULT’;

 

Профиль DEFAULT не имеет ограничений на ресурсы, но существуют несколько ограничения на пароли

62

Эти ограничения не слишком сильные: пароль может вводится неверно 10 раз перед блокировкой аккаунта на один день, и пароль истекает через полгода с грейс периодом в неделю. Простейший способ применить более строгие ограничения к паролям это выполнить скрипт поставляемый с Oracle $ORACLE_HOME/rdbms/admin/utlpwdmg.sql. Этот скрипт создаст функции VERIFY_FUNCTION и VERIFY_FUNCTION_11G и затем выполните запрос

ALTER PROFILE DEFAULT LIMIT

PASSWORD_LIFE_TIME 180

PASSWORD_GRACE_TIME 7

PASSWORD_REUSE_TIME UNLIMITED

PASSWORD_REUSE_MAX UNLIMITED

FAILED_LOGIN_ATTEMPTS 10

PASSWORD_LOCK_TIME 1

PASSWORD_VERIFY_FUNCTION verify_function_11G;

 

Эта команда изменит профиль DEFAULT. Все пользователи с профилем DEFAULT (все пользователи по умолчанию) сразу подхватят новые значения. Единственным изменение будет использование функции verify_function_11G. Эта функция будет проверять пароль на соответствие определённым критериям, а именно

  • Новый пароль должен быть длинной не менее 8 символов
  • Пароль не должен совпадать с именем пользователя
  • Часто использумые простые пароли (к примеру oracle) будут отклонены
  • Новый пароль должен содержать минимум одну заглавную букву и одну цифру
  • Пароль должен отличаться минимум в три символа от предыдущего

Можно рассмотреть эту функцию как пример и изменить согласно вашим требованиям. Вообще желательно создать отдельные профили для разныз групп пользователей.

Для создания профиля используется команду CREATE PROFILE, устанавливая необходимые ограничения. Неустановленные значения будут выставлены в зависимости от значений в профиле DEFAULT. Например рассмотрим сценарий где пользователи могут открывать только одну сессию, администраторы могут создавать сколько угодно сессий и должны менять пароль раз в неделю с грейс периодом в день, а программисты могут открывать две сессии. Для этого можно выполнить команды

alter profile default limit sessions_per_user 1;

Затем создать профиль dba_profile и назначить его пользователю system

create profile dba_profile limit sessions_per_user unlimited password_life_time 7 password_grace_time 1;

alter user system profile dba_profile;

И создать профиль для программистов

create profile programmers_profile limit sessions_per_user 2;

alter user jon profile programmers_profile;

alter user sue profile programmers_profile;

Для вступления ограничений по ресурсам в силу необходимо установить параметр экземпляра

alter system set resource_limit=true;

Если экземпляр использует SPFILE это изменение применится к файлу параметров и будет использоваться даже после перезапуска.

Профиль нельзя удалить если он назначен какому-либо пользователю. Можно либо вначале перевести пользователей на другой профиль, либо использовать директиву CASCADE использование которой автоматически переназначит пользователей использующих удаляемый профиль назад на профиль DEFAULT.

Добавить комментарий