понедельник, 15 июля 2013 г.

Парольная функция Oracle

1. Создание функции

su - oracle
$export ORACLE_SID=
$export NLS_LANG=AMRICAN_AMERICA.CL8MSWIN1251

SQL>@$ORACLE_HOME/rdbms/admin/testdb_utlpwdmg.sql;

/u01/app/oradb/product/11.2.0.3/dbhome_1/rdbms/admin/utlpwdmg.sql



2. Изменяем профиль DEFAULT

включить функцию:

ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION testdb_verify_function;

отключить функцию:

alter profile default limit password_verify_function NULL;



3. Все другие профили унаследуют эту функцию от профиля DEFAULT
   если у них параметр PASSWORD_VERIFY_FUNCTION установлен в DEFAULT

ALTER PROFILE NAME_PROFILE LIMIT PASSWORD_VERIFY_FUNCTION DEFAULT;


4. Сменить у пользователя профиль по умолчанию можно так:

alter user dba_angor profile unlimited_profile;



Стандартная функция

1. Пароль совпадает с именем пользователя.
2. Длина пароля меньше 4-х символов.
3. Пароль слишком простой (совпвдвет со стандартными словами : welcome, database, oracle и т.д.)
4. Не содержит ни одной цифры. (0123456789)
5. Не содержит ни одной буквы. (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)
6. Не содержит ни одного спецсимвола. (!"#$%&()``*+,-/:;<=>?_)
7. Пароль не отличается от предыдущего на 3 символа.

Профиль такой :

ALTER PROFILE DEFAULT    LIMIT

PASSWORD_LIFE_TIME       60          //Количество дней до истечения срока действия пароля.                            
PASSWORD_GRACE_TIME      10          //Количество дней, в течении которых предупреждается о необходимости смены пароля.
PASSWORD_REUSE_TIME      1800        //Количество дней по истечении которого можно повторно использовать пароль.      
PASSWORD_REUSE_MAX       UNLIMITED   //Количество раз повторного использования пароля.                                
FAILED_LOGIN_ATTEMPTS    3           //Количество неудачных попыток входа, прежде чем заблокировать уч. запись.       
PASSWORD_LOCK_TIME       1/1440      //Количество дней на которое блокируется учетная запись.                         
PASSWORD_VERIFY_FUNCTION verify_function;


Функция проверки пароля для TESTDB

1. Пароль совпадает с именем пользователя.
2. Длина пароля меньше 8-х символов.
3. Пароль слишком простой (совпвдвет со стандартными словами : welcome, database, oracle и т.д.)
4. Не содержит ни одной цифры. (0123456789)
5. Не содержит ни одной буквы. (abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)
6. Пароль не отличается от предыдущего на 1 символ.

Профиль такой :

alter PROFILE "DEFAULT"   LIMIT

SESSIONS_PER_USER         UNLIMITED
CPU_PER_SESSION           UNLIMITED
CPU_PER_CALL              UNLIMITED
CONNECT_TIME              UNLIMITED
IDLE_TIME                 UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL    UNLIMITED
COMPOSITE_LIMIT           UNLIMITED
PRIVATE_SGA               UNLIMITED

PASSWORD_LIFE_TIME        UNLIMITED  //Количество дней до истечения срока действия пароля.
PASSWORD_GRACE_TIME       UNLIMITED  //Количество дней, в течении которых предупреждается о необходимости смены пароля.
PASSWORD_REUSE_TIME       1/24/60    //Количество дней по истечении которого можно повторно использовать пароль.
PASSWORD_REUSE_MAX        5          //Количество раз повторного использования пароля.
FAILED_LOGIN_ATTEMPTS     5          //Количество неудачных попыток входа, прежде чем заблокировать уч. запись.
PASSWORD_LOCK_TIME        1/24/60*3  //Количество дней на которое блокируется учетная запись.
PASSWORD_VERIFY_FUNCTION  testdb_verify_function;


 Повторно пароль можно использовать по истечении времени  PASSWORD_REUSE_TIME
но при этом параметр PASSWORD_REUSE_MAX не должен иметь значение UNLIMITED
должна быть реальная цифра. Описано в документе [ID 228991.1]



FAILED_LOGIN_ATTEMPTS – определяет количество неудачных попыток входа, прежде чем заблокировать учетную запись. Если указан верный пароль до окончания количества попыток, то счетчик сбрасывается на ноль.
PASSWORD_LOCK_TIME – количество дней, на которое блокируется учетная запись, при превышении количества неудачных попыток регистрации, определяемых параметром FAILED_LOGIN_ATTEMPTS
PASSWORD_LIFE_TIME – количество дней до истечения срока действия пароля
PASSWORD_GRACE_TIME – количество дней до истечения срока действия пароля, когда будет напоминаться о необходимости его смены. В это время старый пароль действует
PASSWORD_REUSE_TIME – количество дней, по истечение которого можно повторно использовать пароль
PASSWORD_REUSE_MAX – количество раз повторного использования пароля
PASSWORD_VERIFY_FUNCTION – имя функции для проверки пароля на соответствие требованиям. Вызывается при смене пароля пользователем
SESSIONS_PER_USER – количество сеансов на одного пользователя (количество входов в системы под одним логином). При превышении установленного количества сеанс блокируется
CPU_PER_SESSION – процессорное время отводимое серверному процессу сеанса, прежде чем сеанс будет завершен
CPU_PER_CALL – Процессорное время отводимое на каждое SQL предложение, прежде чем выполнение будет прервано
LOGICAL_READS_PER_SESSION  - количество блоков прочитываемых за сеанс
LOGICAL_READS_PER_CALL – количество блоков, которые могут быть прочитаны одиночным предложением
PRIVATE_SGA – Для сеансов подключенных по распределенной архитектуре, указывает количество килобайт которые выделяются сеансу
CONNECT_TIME  -время подключения, задается в минутах. Определяет длительность подключения к базе данных. По истечении сеанс принудительно завершается
IDLE_TIME – время простоя, задается в минутах. По истечении этого времени простаивающий сеанс будет принудительно завершен
COMPOSITE_LIMIT – Взвешенная сумма CPU_PER_SESSION, CONNECT_TIME, OGICAL_READS_PER_SESSION и PRIVATE_SGA. Это продвинутое средство настройки, которое требует специальной подготовки
При превышении ограничения на ресурсы сеанс принудительно завершается, транзакция находящаяся в процессе исполнения откатывается.