Собрание заметок из опыта работы с УКМ
В командной строке выполняем такие команды, в конце жмыкаем энтер (если в строке есть ; значит тоже её пишем):
Синим, что может написать система. Черным, что мы пишем. (в скобках мой коментарий, его не пишем)
C :\ Documents and Settings \Администратор> Set nls _ lang = russian _ cis . ru 8 pc 866 (только для оракл 11, что бы видеть читабельные надписи)
C :\ Documents and Settings \Администратор > sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 — Production on Tue May 31 16:38:51 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> conn sys/
ORA-28001: the password has expired
Изменение пароля для sys
Новый пароль qqq (набранные символы не будут отображаться)
Повторите новый пароль: qqq (набранные символы не будут отображаться)
Пароль изменен
SQL>select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users; (смотрим у кого просрочен пароль)
USERNAME ACCOUNT_STATUS EXPIRY_D ------------------------------ -------------------------------- -------- ПЕТРОВ EXPIRED & LOCKED 31/05/11
И т.п.
SQL> ALTER PROFILE default LIMIT password_life_time UNLIMITED; (стираем сроки «годности»)
SQL> commit; (на всякий пожарный случай)
SQL>select username,ACCOUNT_STATUS,EXPIRY_DATE from dba_users; (смотрим у кого просрочен пароль)
USERNAME ACCOUNT_STATUS EXPIRY_D ------------------------------ -------------------------------- -------- ПЕТРОВ OPEN
И т.п.
SQL> conn supermag/
ORA-28001: the password has expired
Изменение пароля для sys
Make Oracle password never expire
Question: I am getting a password expired problem. I want to fix this user ID such that the user ID never expires the password. I want to keep my password and set Oracle to never expire my password.
How do I make a password non-expiring?
Solution for making a password never expire:
SQL> connect sys/secret_password as sysdba;
SQL> alter user sysman account unlock ;
— SQL> alter user DBUSER identified by newpa$$word;
— See these important notes in you want to changing_your_password.
Next, change the profile limit to unlimited.
SQL> alter profile DEFAULT limit PASSWORD_REUSE_TIME unlimited;
SQL> alter profile DEFAULT limit PASSWORD_LIFE_TIME unlimited;
Check the password expiry date
SQL> select username, account_status, EXPIRY_DATE from dba_users where username=’BURLESON’;
USERNAME ACCOUNT_STATUS EXPIRY_DATE
—————————— —————————- ———
BACMONIT OPEN UNLIMITED
Oracle Training from Don Burleson
The best on site » Oracle training classes» are just a phone call away! You can get personalized Oracle training by Donald Burleson, right at your shop!
Burleson is the American Team
Note: This Oracle documentation was created as a support and Oracle training reference for use by our DBA performance tuning consulting professionals. Feel free to ask questions on our Oracle forum .
Verify experience! Anyone considering using the services of an Oracle support expert should independently investigate their credentials and experience, and not rely on advertisements and self-proclaimed expertise. All legitimate Oracle experts publish their Oracle qualifications.
Errata? Oracle technology is changing and we strive to update our BC Oracle support information. If you find an error or have a suggestion for improving our content, we would appreciate your feedback. Just e-mail:
and include the URL for the page.
Burleson Consulting
The Oracle of Database Support
Copyright © 1996 — 2020
All rights reserved by Burleson
Oracle ® is the registered trademark of Oracle Corporation.
How do I turn off Oracle password expiration?
I’m using Oracle for development. The password for a bootstrap account that I always use to rebuild my database has expired. How do I turn off password expiration for this user (and all other users) permanently? I’m using Oracle 11g, which has passwords expire by default.
Josh Kodroff
asked Jul 8, 2009 at 2:32
Josh Kodroff Josh Kodroff
27.4k 27 27 gold badges 95 95 silver badges 148 148 bronze badges
I think you might be better off asking this on serverfault.com. I’m not going to force it because you did say you’re using it for development, and I think there’s still a chance someone here will know and/or others here might benefit from this information.
Jul 8, 2009 at 2:58
I think I’ll do just that. I was debating which site it was more appropriate for, since it’s a basic database question and not so much a DBA thing.
Jul 8, 2009 at 11:58
Not sure what the dupe policy is for cross-site questions, but here’s the link: serverfault.com/questions/37622/…
Jul 8, 2009 at 12:04
6 Answers 6
To alter the password expiry policy for a certain user profile in Oracle first check which profile the user is using:
select profile from DBA_USERS where username = '';
Then you can change the limit to never expire using:
alter profile limit password_life_time UNLIMITED;
If you want to previously check the limit you may use:
select resource_name,limit from dba_profiles where profile='';
3,551 28 28 gold badges 38 38 silver badges 38 38 bronze badges
answered Jul 21, 2011 at 13:47
Pedro Carriço Pedro Carriço
4,058 2 2 gold badges 16 16 silver badges 11 11 bronze badges
This altered the profile. However, I have users whose passwords are set to expire because the default profile had it as such when they were created. How do I alter these user accounts so the password doesn’t expire?
May 11, 2012 at 20:41
select username,expiry_date,account_status from dba_users; to view the account_status. for those expiring account, you may need to reset the password once for the last time.
Dec 7, 2012 at 1:59
alter user aaa account unlock;
Oct 9, 2013 at 21:23
For completeness, if you need to change a user to another profile: ALTER USER Bob PROFILE MyNonExpiringProfile; .
– user565869
May 13, 2015 at 18:28
no rows selected on the query «select profile from DBA_USERS where username = ‘
Oct 14, 2019 at 6:25
For development you can disable password policy if no other profile was set (i.e. disable password expiration in default one):
ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL;
Then, reset password and unlock user account. It should never expire again:
alter user user_name identified by new_password account unlock;
answered Sep 11, 2013 at 19:09
1,434 1 1 gold badge 10 10 silver badges 9 9 bronze badges
As the other answers state, changing the user’s profile (e.g. the ‘DEFAULT’ profile) appropriately will lead to passwords, that once set, will never expire.
However, as one commenter points out, passwords set under the profile’s old values may already be expired, and (if after the profile’s specified grace period) the account locked.
The solution for expired passwords with locked accounts (as provided in an answering comment) is to use one version of the ALTER USER command:
ALTER USER xyz_user ACCOUNT UNLOCK;
However the unlock command only works for accounts where the account is actually locked, but not for those accounts that are in the grace period, i.e. where the password is expired but the account is not yet locked. For these accounts the password must be reset with another version of the ALTER USER command:
ALTER USER xyz_user IDENTIFIED BY new_password;
Below is a little SQL*Plus script that a privileged user (e.g. user ‘SYS’) can use to reset a user’s password to the current existing hashed value stored in the database.
EDIT: Older versions of Oracle store the password or password-hash in the pword column, newer versions of Oracle store the password-hash in the spare4 column. Script below changed to collect the pword and spare4 columns, but to use the spare4 column to reset the user’s account; modify as needed.
REM Tell SQL*Plus to show before and after versions of variable substitutions. SET VERIFY ON SHOW VERIFY REM Tell SQL*Plus to use the ampersand '&' to indicate variables in substitution/expansion. SET DEFINE '&' SHOW DEFINE REM Specify in a SQL*Plus variable the account to 'reset'. REM Note that user names are case sensitive in recent versions of Oracle. REM DEFINE USER_NAME = 'xyz_user' REM Show the status of the account before reset. SELECT ACCOUNT_STATUS, TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE, TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE FROM DBA_USERS WHERE USERNAME = '&USER_NAME'; REM Create SQL*Plus variable to hold the existing values of the password and spare4 columns. DEFINE OLD_SPARE4 = "" DEFINE OLD_PASSWORD = "" REM Tell SQL*Plus where to store the values to be selected with SQL. REM Note that the password hash value is stored in spare4 column in recent versions of Oracle, REM and in the password column in older versions of Oracle. COLUMN SPARE4HASH NEW_VALUE OLD_SPARE4 COLUMN PWORDHASH NEW_VALUE OLD_PASSWORD REM Select the old spare4 and password columns as delimited strings SELECT '''' || SPARE4 || '''' AS SPARE4HASH, '''' || PASSWORD || '''' AS PWORDHASH FROM SYS.USER$ WHERE NAME = '&USER_NAME'; REM Show the contents of the SQL*Plus variables DEFINE OLD_SPARE4 DEFINE OLD_PASSWORD REM Reset the password - Older versions of Oracle (e.g. Oracle 10g and older) REM ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_PASSWORD; REM Reset the password - Newer versions of Oracle (e.g. Oracle 11g and newer) ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_SPARE4; REM Show the status of the account after reset SELECT ACCOUNT_STATUS, TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE, TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE FROM DBA_USERS WHERE USERNAME = '&USER_NAME';
Пароли Oracle: аутентификация пользователей
Аутентификацией базой данных называют аутентификацию учетной записи и пароля непосредственно программным обеспечением Oracle. Однако, хотя аутентификация базой данных проста в настройке, она не является единственным или лучшим средством аутентификации пользователей Oracle. Существует несколько способов аутентификации пользователей базы данных — способов, не зависящих от БД.
В этой моей статье блога будет освещен наиболее часто применяемый способ аутентификации пользователей Oracle посредством базы данных. Затем мы кратко рассмотрим другие средства аутентификации пользователей — внешнюю, прокси- и централизованную аутентификацию пользователей.
Аутентификация базой данных
Аутентификация базой данных — это стандартная проверка полномочий доступа пользователя за счет применения паролей базы данных. При использовании аутентификации пользователей базой данных необходимо располагать строгой политикой управления паролями.
Вот пример аутентификации базой данных:
SQL> CREATE USER scott IDENTIFIED BY tiger;
Управление паролями
В зависимости от способа создания базы данных (вручную или с помощью DBCA) Oracle будет содержать несколько учетных записей с заданными по умолчанию паролями. Если табличное пространство создается вручную, БД может содержать только учетные записи SYS, SYSTEM, DBSNMP (учетная запись агента Intelligent Agent (Интеллектуальный агент) Oracle) и OUTLN (имя пользователя для управления средством управления хранимыми планами выполнения). В некоторых случаях пользователь scott (владелец старой схемы демонстрационной БД Oracle) также создается с заданным по умолчанию паролем tiger. Стандартная база данных, созданная DBCA, может содержать до 32 определенных по умолчанию учетных записей пользователей.
В рамках защиты базы данных необходимо использовать все стандартные методики управления паролями, включая изменение паролей с заданными интервалами, проверку паролей на сложность и предотвращение повторного использования старых паролей.
Рассмотрим, как Oracle создает заданные по умолчанию учетные записи пользователей в новой базе данных. Запрос, показанный в листинге ниже, выводит все имена пользователей и их состояние. Учетная запись может быть открытой или же заблокированной либо утратившей силу.
Открытая (open) учетная запись — учетная запись, с которой можно регистрироваться в базе данных, при условии наличия действующего пароля. Заблокированная (locked) учетная запись должна быть явно разблокирована администратором БД. Обычно заблокированная учетная запись является результатом попыток входа пользователя в базу данных с неправильным паролем большее количество раз, чем разрешено указанным пределом. Утратившая силу (expired) учетная запись — это учетная запись, пароль которой должен быть изменен, что обеспечивает невозможность использования тех же самых паролей.
SQL> SELECT username, account_status 2 FROM dba_users; USERNAME ACCOUNT_STATUS ---------- ---------------- MGMT_VIEW OPEN SYS OPEN SYSTEM OPEN DBSNMP OPEN SYSMAN OPEN SCOTT OPEN OUTLN EXPIRED & LOCKED HR EXPIRED & LOCKED . . . 32 rows selected SQL>
Администратор БД должен изменить пароли всех созданных по умолчанию учетных записей пользователей немедленно после создания базы данных. Все ненужные учетные записи, созданные по умолчанию, должны быть заблокированы и признаны утратившими силу.
Пароли по умолчанию пользователей Oracle
Имя пользователя | Пароль | Зашифрованный пароль |
ADAMS | WOOD | 72CDEF4A3483F60D |
ADLDEMO | ADLDEMO | 147215F51929A6E8 |
APPLSYS | FND | 0F886772980B8C79 |
APPLYSYSPUB | PUB | A5E09E84EC486FC9 |
APPS | APPS | D728438E8A5925E0 |
AQDEMO | AQDEMO | 5140E342712061DD |
AQJAVA | AQJAVA | 8765D2543274B42E |
AQUSER | AQUSER | 4CF13BDAC1D7511C |
AUDIOUSER | AUDIOUSER | CB4F2CEC5A352488 |
AURORA$JIS$ UTILITY$ |
Random Password (Случайный пароль) |
. |
AURORA$ORB$ UNAUTHENTICATED |
INVALID | 80C099F0EADF877E |
BLAKE | PAPER | 9435F2E60569158E |
CATALOG | CATALOG | 397129246919E8DA |
CDEMO82 | CDEMO83 | 7299A5E2A5A05820 |
CDEMOCOR | CDEMOCOR | 3A34F0B26B951F3F |
CDEMOUCB | CDEMOUCB | CEAE780F25D556F8 |
CDEMORID | CDEMORID | E39CEFE64B73B308 |
CENTRA | CENTRA | 63BF5FFE5E3EA16D |
CLARK | CLOTH | 7AAFE7D01511D73F |
COMPANY | COMPANY | 402B659C15EAF6CB |
CSMIG | CSMIG | 09B4BB013FBD0D65 |
CTXDEMO | CTXDEMO | CB6B5E9D9672FE89 |
CTXSYS | CTXSYS | 24ABAB8B06281B4C |
DBSNMP | DBSNMP | E066D214D5421CCC |
DEMO | DEMO | 4646116A123897CF |
DEMO8 | DEMO9 | 0E7260738FDFD678 |
EMP | EMP | B40C23C6E2B4EA3D |
EVENT | EVENT | 7CA0A42DA768F96D |
FINANCE | FINANCE | 6CBBF17292A1B9AA |
FND | FND | 0C0832F8B6897321 |
GPFD | GPFD | BA787E988F8BC424 |
GPLD | GPLD | 9D561E4D6585824B |
HR | HR | 4C6D73C3E8B0F0DA |
HLW | HLW | 855296220C095810 |
IMAGEUSER | IMAGEUSER | E079BF5E433F0B89 |
IMEDIA | IMEDIA | 8FB1DC9A6F8CE827 |
JONES | STEEL | B9E99443032F059D |
JMUSER | JMUSER | 063BA85BF749DF8E |
LBACSYS | LBACSYS | AC9700FD3F1410EB |
MDSYS | MDSYS | 9AAEB2214DCC9A31 |
MFG | MFG | FC1B0DD35E790847 |
MIGRATE | MIGRATE | 5A88CE52084E9700 |
MILLER | MILLER | D0EFCD03C95DF106 |
MMO2 | MMO3 | AE128772645F6709 |
MODTEST | YES | BBFF58334CDEF86D |
MOREAU | MOREAU | CF5A081E7585936B |
NAMES | NAMES | 9B95D28A979CC5C4 |
MTSSYS | MTSSYS | 6465913FF5FF1831 |
MXAGENT | MXAGENT | C5F0512A64EB0E7F |
OCITEST | OCITEST | C09011CB0205B347 |
ODS | ODS | 89804494ADFC71BC |
ODSCOMMON | ODSCOMMON | 59BBED977430C1A8 |
OE | OE | D1A2DFC623FDA40A |
OEMADM | OEMADM | 9DCE98CCF541AAE6 |
OLAPDBA | OLAPDBA | 1AF71599EDACFB00 |
OLAPSVR | INSTANCE | AF52CFD036E8F425 |
OLAPSYS | MANAGER | 3FB8EF9DB538647C |
ORACACHE | Random Password (Случайный пароль) |
. |
ORAREGSYS | ORAREGSYS | 28D778112C63CB15 |
ORDPLUGINS | ORDPLUGINS | 88A2B2C183431F00 |
ORDSYS | ORDSYS | 7EFA02EC7EA6B86F |
OSE$HTTP$ADMIN | Random Password (Случайный пароль) |
. |
OUTLN | OUTLN | 4A3BA55E08595C81 |
PERFSTAT | PERFSTAT | AC98877DE1297365 |
PM | PM | C7A235E6D2AF6018 |
PO | PO | 355CBEC355C10FEF |
PO8 | PO8 | 7E15FBACA7CDEBEC |
PO7 | PO7 | 6B870AF28F711204 |
PORTAL30 | PORTAL31 | D373ABE86992BE68 |
PORTAL30_DEMO | PORTAL30_DEMO | CFD1302A7F832068 |
PORTAL30_PUBLIC | PORTAL30_PUBLIC | 42068201613CA6E2 |
PORTAL30_SSO | PORTAL30_SSO | 882B80B587FCDBC8 |
PORTAL30_SSO_PS | PORTAL30_SSO_PS | F2C3DC8003BC90F8 |
PORTAL30_SSO _PUBLIC |
PORTAL30_SSO _PUBLIC |
98741BDA2AC7FFB2 |
POWERCARTUSER | POWERCARTUSER | 2C5ECE3BEC35CE69 |
PRIMARY | PRIMARY | 70C3248DFFB90152 |
PUBSUB | PUBSUB | 80294AE45A46E77B |
QS | QS | 4603BCD2744BDE4F |
QS_ADM | QS_ADM | 3990FB418162F2A0 |
QS_CB | QS_CB | 870C36D8E6CD7CF5 |
QS_CBADM | QS_CBADM | 20E788F9D4F1D92C |
QS_CS | QS_CS | 2CA6D0FC25128CF3 |
QS_ES | QS_ES | 9A5F2D9F5D1A9EF4 |
QS_OS | QS_OS | 0EF5997DC2638A61 |
QS_WS | QS_WS | 0447F2F756B4F460 |
RE | RE | 933B9A9475E882A6 |
REPADMIN | REPADMIN | 915C93F34954F5F8 |
RMAIL | RMAIL | DA4435BBF8CAE54C |
RMAN | RMAN | E7B5D92911C831E1 |
SAMPLE | SAMPLE | E74B15A3F7A19CA8 |
SCOTT | TIGER | F894844C34402B67 |
SDOS_ICSAP | SDOS_ICSAP | C789210ACC24DA16 |
SECDEMO | SECDEMO | 009BBE8142502E10 |
SH | SH | 54B253CBBAAA8C48 |
SYS | CHANGE_ON_INSTALL | 4DE42795E66117AE |
SYSADM | SYSADM | BA3E855E93B5B9B0 |
SYSTEM | MANAGER | D4DF7931AB130E37 |
TAHITI | TAHITI | F339612C73D27861 |
TDOS_ICSAP | TDOS_ICSAP | 7C0900F751723768 |
TRACESVR | TRACE | F9DA8977092B7B81 |
TSDEV | TSDEV | 29268859446F5A8C |
TSUSER | TSUSER | 90C4F894E2972F08 |
USER0 | USER0 | 8A0760E2710AB0B4 |
USER1 | USER1 | BBE7786A584F9103 |
USER2 | USER2 | 1718E5DBB8F89784 |
USER3 | USER3 | 94152F9F5B35B103 |
USER4 | USER4 | 2907B1BFA9DA5091 |
USER5 | USER5 | 6E97FCEA92BAA4CB |
USER6 | USER6 | F73E1A76B1E57F3D |
USER7 | USER7 | 3E9C94488C1A3908 |
USER8 | USER8 | D148049C2780B869 |
USER9 | USER9 | 0487AFEE55ECEE66 |
UTLBSTATU | UTLESTAT | C42D1FA3231AB025 |
VIDEOUSER | VIDEOUSER | 29ECA1F239B0F7DF |
VIF_DEVELOPER | VIF_DEV_PWD | 9A7DCB0C1D84C488 |
VIRUSER | VIRUSER | 404B03707BF5CEA3 |
VRR1 | VRR2 | 811C49394C921D66 |
WEBDB | WEBDB | D4C4DCDD41B05A5D |
WKSYS | WKSYS | 545E13456B7DDEA0 |
Чувствительность пароля к регистру символов
По умолчанию все пароли в Oracle Database 11g и 12c зависят от регистра. Параметр инициализации SEC_CASE_SENSITIVE_LOGON управляет чувствительностью паролей к регистру символов. Значение этого параметра по умолчанию — true, т.е. по умолчанию все пароли зависят от регистра. Если по какой-либо причине, например, из-за того, что некоторые приложения используют жестко закодированные пароли, которые должны быть независимыми от регистра, то установкой параметра SEC_CASE_SENSITIVE_LOGON в false базе данных можно указать на необходимость игнорирования регистра символов при проверке паролей:
sec_case_sensitive_logon=false
Как изменить пароль пользователя Oracle
При модернизации более ранних версий БД до Oracle Database 11g пароли остаются независимыми от регистра, поскольку таким было поведение предшествующих версий. Чтобы сделать их зависимыми от регистра, необходимо с помощью оператора ALTER USER изменить пароль каждого пользователя.
При обновлении до Oracle Database 11g пароли остаются независимыми от регистра до тех пор, пока они не будут изменены. Если параметр SEC_CASE_SENSITIVE_LOGON установлен в используемое по умолчанию значение true, все новые пароли будут зависимыми от регистра, подобно паролям в новой базе данных версии Oracle Database 11g. В только что обновленной базе данных можно выполнить следующий запрос, чтобы выяснить, в какой версии был установлен или изменен пароль пользователя:
SQL> SELECT username, password, password_versions FROM dba_users; USERNAME PASSWORD PASSWORD -------------------- --------- -------- MGMT_VIEW 10G 11G SYS 10G 11G SYSTEM 10G 11G DBSNMP 10G 11G SYSMAN 10G 11G RMAN 10G 11G SH 10G 11G . . . 39 rows selected. SQL>
Столбец PASSWORD_VERSIONS отображает версию базы данных, в которой пароль был первоначально установлен или изменен. Результат запроса показывает, что все пароли были либо созданы, либо изменены в версии Oracle Database 11g. Этот запрос не позволяет увидеть (зашифрованные) пароли, как можно было в предшествующих версиях, но зашифрованные пароли доступны для просмотра через представление USER$.
При неудачных попытках подключения с применением неправильного пароля после третьей неудачной попытки база данных увеличит временной интервал между последующими попытками максимум до 10 секунд.
Поддержка защищенных паролей
В дополнение к зависимости всех паролей от регистра символов, Oracle предлагает также другие функциональные возможности для обеспечения поддержки защищенных паролей. К ним относится передача всех введенных пользователями паролей посредством надежного алгоритма хеширования (SHA-1, который использует 160-битный ключ) и их сравнение с хранимыми верительными данным этого пользователя, а также дополнение всех паролей уникальным случайным значением для гарантии уникальности результирующих верительных данных.
Блокировка учетных записей
Следующий оператор позволяет разблокировать для свободного доступа любую заблокированную учетную запись пользователя:
SQL> ALTER USER hr ACCOUNT UNLOCK; User altered. SQL>
С помощью оператора CREATE PROFILE или ALTER PROFILE можно вынудить Oracle блокировать любую учетную запись после определенного числа неудачных попыток регистрации. Oracle позволяет задавать продолжительность интервала, в течение которого учетная запись должна оставаться заблокированной после указанного количества неудачных попыток входа в базу данных. По истечении этого времени Oracle автоматически разблокирует учетную запись. Чтобы закрыть эту лазейку, просто установите длительность периода блокирования в значение UNLIMITED (не ограничено).
Ниже приведен пример создания профиля с заданным временным периодом блокирования учетной записи:
SQL> CREATE PROFILE test_profile 2 LIMIT FAILED_LOGIN_ATTEMPTS 5 3* PASSWORD_LOCK_TIME UNLIMITED Profile created. SQL>
База данных заблокирует учетную запись немедленно по достижении предела неудачных попыток регистрации FAILED_LOGIN_ATTEMPTS. Однако с помощью следующей команды администратор БД может разблокировать учетную запись пользователя в любое время:
SQL> ALTER USER hr ACCOUNT UNLOCK; User altered. SQL>
Истечение срока действия пароля
Политики устаревания паролей, гарантирующие, что пользователи не смогут применять один и тот же пароль в течение длительного времени — стандартная составляющая безопасности базы данных. Как только срок действия пароля истекает, пользователь вынужден изменить его. Пароль можно объявить утратившим силу с помощью команды ALTER USER, как показано в следующем примере:
SQL> ALTER USER hr IDENTIFIED BY hr PASSWORD EXPIRE; User altered. SQL>
Этого же можно достичь также командой ALTER PROFILE:
SQL> ALTER PROFILE test_profile 2* LIMIT PASSWORD_LIFE_TIME 30; Profile altered. SQL> ALTER USER hr PROFILE test_profile; User altered. SQL>
Приведенный оператор ALTER PROFILE ограничивает срок действия пароля 30 днями, и об этом можно любезно напомнить пользователю, используя в операторе ALTER PROFILE конструкцию PASSWORD_GRACE_TIME. Как только конструкция PASSWORD_GRACE_TIME определена, при первой регистрации пользователя после окончания срока действия пароля пользователь получит предупреждение о том, что пароль утратит силу через три дня. Если пользователь не изменит пароль в течение трехдневного предупредительного периода, пароль утратит силу. После того как срок действия пароля истекает, пароль должен быть изменен.
SQL> CONNECT hr/hr ERROR: ORA-28001: the password has expired Changing password for hr New password: ** Retype new password: ** Password changed Connected. SQL>
Файл паролей
Oracle позволяет выбирать, как привилегированные пользователи должны подключаться к базе данных. Привилегированные пользователи — это пользователи, которые могут выполнять такие задачи, как запуск и остановка базы данных. По умолчанию только пользователь SYS обладает полномочиями SYSDBA и SYSOPER, которые считаются полномочиями высокого уровня. Пользователь SYS может предоставлять эти полномочия другим пользователям.
Конечно, любой администратор БД, который знает пароль пользователя SYS, может зарегистрироваться в качестве этого пользователя и выполнять привилегированные задачи. Однако, явно предоставляя чрезвычайно важные полномочия SYSDBA и SYSOPER пользователям, вы вынуждаете их указывать свое имя пользователя и пароль, что позволяет легко отслеживать действия привилегированных пользователей. Параметр инициализации REMOTE_LOGIN_PASSWORDFILE указывает, должна БД Oracle проверять наличие файла паролей.
Параметр REMOTE_LOGIN_PASSWORDFILE может принимать перечисленные ниже значения.
- none. Никакой файл паролей не используется, и база данных разрешает только пользователям, подлинность которых установлена операционной системой, выполнять привилегированные задачи по администрированию базы данных.
- exclusive. Только одна база данных может использовать файл паролей. Файл может содержать данные как пользователя SYS, так и других пользователей.
- shared. В системе создан файл паролей, который может использоваться несколькими базами данных. Файл паролей может содержать данные как пользователя SYS, так и других пользователей.
Для обеспечения наивысшей степени безопасности в Oracle рекомендуют применять опцию REMOTE_LOGIN_PASSWORDFILE=SHARED. Существует способ создания файла паролей и указания пользователей, которые могут обладать полномочиями SYSDBA и SYSOPER, вручную, но при использовании опции EXCLUSIVE Oracle будет автоматически добавлять пользователей в файл паролей при предоставлении им полномочий SYSDBA и SYSOPER. Для выяснения того, кому, кроме определенного по умолчанию пользователя SYS, выданы эти полномочия, можно запросить представление V$PWFILE_USERS:
SQL> CONNECT sys/life1 AS SYSDBA; Connected. SQL> GRANT sysoper, sysdba TO tester; Grant succeeded. SQL> SELECT * FROM v$pwfile_users; USERNAME SYSDB SYSOP -------- ----- ----- SYS TRUE TRUE TESTER TRUE TRUE SQL>
Команда orapwd служит для создания нового файла паролей. Следующий вывод демонстрирует значения, которые можно передавать с командой orapwd, а также то, какие из них являются обязательными, а какие — необязательными.
$ orapwd Usage: orapwd file= password= entries= force= ignorecase= nosysdba= where file - name of password file (required), имя файла паролей (обязательно) password - password for SYS (optional), пароль для пользователя SYS (необязательно) entries - maximum number of distinct DBA (required), максимальное количество отдельных администраторов БД (обязательно) force - whether to overwrite existing file (optional), указывает, нужно ли перезаписывать существующий файл (необязательно) ignorecase - passwords are case-insensitive (optional), пароли не зависят от регистра (необязательно) nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only). указывает, нужно ли препятствовать входу SYSDBA (необязательно только для Database Vault) There must be no spaces around the equal-to (=) character. Символ "равно" (=) не должен быть окружен пробелами S
Следующая команда создает новый файл паролей по имени testpwd:
$ orapwd FILE=testpwd PASSWORD=remorse1 ENTRIES=20
Шифрованные пароли
По умолчанию пароли пользователей Oracle не шифруются, и это делает их уязвимыми для несанкционированного использования. Устанавливая следующие переменные среды — одну на клиенте, другую на сервере, — можно обеспечить, что Oracle всегда будет шифровать пароль при его пересылке по сети. Установите на клиенте следующую переменную:
ora_encrypt_login=true
На сервере должна быть установлена следующая переменная:
dblink_encrypt_login=true
На заметку! Все пароли всегда автоматически шифруются во время сетевых подключений. При этом используется модифицированный алгоритм DES (Data Encryption Standard — стандарт шифрования данных).
Внешняя аутентификация
Еще один метод аутентификации пользователей базы данных — метод внешней аутентификации, при котором учетные записи пользователей на уровне операционной системы сопоставляются с именами пользователей в базе данных. Oracle осуществляет управление полномочиями пользователей в самой базе данных, но аутентификация пользователей производится операционной системой, которая является внешней по отношению к БД. Преимущество этого метода состоит в том, что будет требоваться единственное имя пользователя для операционной системы и для подключений к базе данных. Это может также облегчить аудит действий пользователей, поскольку имена в базе данных и учетные записи операционной системы совпадают.
Для применения аутентификации операционной системой вначале потребуется установить параметр конфигурации OS_AUTHENT_PREFIX в файле init.ora:
OS_AUTHENT_PREFIX = ""
Пара кавычек не должна содержать пробел.
На заметку! По умолчанию параметру OS_AUTHENT_PREFIX присваивается значение «OPS$«, но это делается только для поддержания обратной совместимости.
При повторном запуске базы данных можно начать использовать внешнюю аутентификацию средствами операционной системы. Чтобы активизировать аутентификацию операционной системой, пользователей необходимо создавать следующим образом:
SQL> CREATE USER salapati IDENTIFIED EXTERNALLY; User created. SQL>
Обратите внимание, что новому пользователю не присваивается пароль — он в нем не нуждается. До тех пор, пока пользователь может войти в операционную систему, все, что ему нужно сделать для входа в базу данных — это ввести следующую команду:
$ sqlplus /
На заметку! Хорошо известная учетная запись Oracle OPS$ORACLE — это простая разновидность приведенного примера внешней аутентификации. OPS$ — префикс, используемый Oracle, начиная с версии Oracle 5. Для внешней аутентификации операционной системой можно использовать любой префикс или вообще его не указывать.
Внешняя аутентификация операционной системой, описанная в этом разделе, не позволяет пользователям подключаться через службу Oracle Net, поскольку этот метод аутентификации считается не слишком безопасным. Поэтому конфигурации с разделяемым сервером, использующие Oracle Net, по умолчанию не могут применять внешнюю аутентификацию операционной системой. Для изменения этого определенного по умолчанию поведения потребуется установить следующий параметр в файле init.ora:
REMOTE_OS_AUTHENT=TRUE
Прокси-аутентификация
Прокси-аутентификация позволяет одному постоянному сеансу базы данных выполнять переключение на других пользователей без необходимости осуществлять вход/выход из БД. Для поддержки взаимодействия пользователя с базой данных Oracle можно использовать несколько продуктов промежуточного слоя. Часто веб-сервер служит промежуточным слоем или слоем приложения, связывающего клиентов с базой данных. Промежуточный слой может выполнять аутентификацию пользователей или же передавать имя пользователя и пароль в базу данных для выполнения аутентификации. Ниже приведен пример санкционирования подключений посредством регистрации пользователя базы данных из узла промежуточного слоя с применением аутентификации с применением пароля.
SQL> ALTER USER salapati 2 GRANT CONNECT THROUGH appserv 3* AUTHENTICATED USING PASSWORD; User altered. SQL>
В следующем примере показано, как разрешить постоянному сеансу, запущенному на сервере appserv, временно принимать идентичность salapati, если постоянный сеанс предоставляет пароль этого пользователя:
SQL> ALTER USER salapati 2* GRANT CONNECT THROUGH appserv; User altered. SQL>
Централизованная авторизация пользователей
Если используется опция Oracle Advanced Security (Расширенная безопасность Oracle), для выполнения аутентификации пользователей можно использовать службу каталогов, работающую на основе LDAP (Lightweight Directory Access Protocol — облегченный протокол службы каталогов), такую как Oracle Internet Directory (OID). Служба на основе каталога позволяет создавать пользователей предприятия, которым можно назначать глобальные роли. Централизованное управление пользователями позволяет применять однократную регистрацию — т.е. чтобы получить доступ ко всем необходимым им базам данных, пользователи должны зарегистрироваться только один раз.
Поскольку опция Oracle Advanced Security используется не всеми базами данных, подробное описание реализации централизованной авторизации пользователей не приводится. Для ознакомления с подробным описанием этой функциональной возможности обращайтесь к руководству Oracle Advanced Security Administrator’s Guide (Руководство администратора расширенной системы безопасности Oracle), доступном на веб-сайте:
http://tahiti.oracle.com