Вопрос по oracle, security – Как отключить истечение срока действия пароля Oracle?

159

Я использую Oracle для разработки. Срок действия пароля для учетной записи начальной загрузки, которую я всегда использую для восстановления базы данных, истек.

Как навсегда отключить срок действия пароля для этого пользователя (и всех остальных пользователей)?

Я использую Oracle 11g, у которого по умолчанию истекает срок действия паролей.

Я думаю, что я сделаю именно это. Я обсуждал, для какого сайта он больше подходит, так как это базовый вопрос базы данных, а не вопрос DBA. Josh Kodroff
Я думаю, вам лучше спросить об этом на serverfault.com. Я не собираюсь форсировать это, потому что вы сказали, что используете его для разработки, и я думаю, что есть шанс, что кто-то здесь узнает, и / или другие здесь могут извлечь выгоду из этой информации. Bill the Lizard
Не уверен, что такое политика дублирования для межсайтовых вопросов, но вот ссылка:serverfault.com/questions/37622/… Josh Kodroff

Ваш Ответ

5   ответов
279

ого профиля пользователя в Oracle, сначала проверьте, какой профиль использует пользователь:

select profile from DBA_USERS where username = '<username>';

Затем вы можете изменить лимит, чтобы он никогда не истек, используя:

alter profile <profile_name> limit password_life_time UNLIMITED;

Если вы хотите предварительно проверить лимит, вы можете использовать:

select resource_name,limit from dba_profiles where profile='<profile_name>';
Для полноты, если вам нужно сменить пользователя на другой профиль:ALTER USER Bob PROFILE MyNonExpiringProfile;.
Это изменило профиль. Тем не менее, у меня есть пользователи, чьи пароли имеют срок действия, потому что профиль по умолчанию имел его при создании. Как изменить эти учетные записи, чтобы срок действия пароля не истек?
изменить пользователя aaa разблокировка учетной записи;
select username,expiry_date,account_status from dba_users;  для просмотра account_status. для тех аккаунтов, срок действия которых истекает, вам может понадобиться сбросить пароль один раз в последний раз.
82

development Вы можете отключить политику паролей, если другой профиль не был установлен (т.е. отключить истечение срока действия пароля по умолчанию):

ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL;

тем сбросьте пароль и разблокируйте учетную запись пользователя. Это никогда не должно истечь снова:

alter user user_name identified by new_password account unlock;
1

так как это может привести к возможным угрозам конфиденциальности, целостности и доступности данных.

Однако, если вы хотите так.

Если у вас есть правильный доступ, используйте следующий SQL

SELECT username, account_status FROM dba_users;

Это должно дать вам такой результат.

   USERNAME                       ACCOUNT_STATUS
------------------------------ -----------------

SYSTEM                         OPEN
SYS                            OPEN
SDMADM                         OPEN
MARKETPLACE                    OPEN
SCHEMAOWNER                    OPEN
ANONYMOUS                      OPEN
SCHEMAOWNER2                   OPEN
SDMADM2                        OPEN
SCHEMAOWNER1                   OPEN
SDMADM1                        OPEN
HR                             EXPIRED(GRACE)

USERNAME                       ACCOUNT_STATUS
------------------------------ -----------------

APEX_PUBLIC_USER               LOCKED
APEX_040000                    LOCKED
FLOWS_FILES                    LOCKED
XS$NULL                        EXPIRED & LOCKED
OUTLN                          EXPIRED & LOCKED
XDB                            EXPIRED & LOCKED
CTXSYS                         EXPIRED & LOCKED
MDSYS                          EXPIRED & LOCKED

Теперь вы можете использовать Pedro Carri & o xE7; o answerhttps://stackoverflow.com/a/6777079/2432468

16

что срок действия пароля по умолчанию никогда не истекает. Тем не менее, вы можете настроить профиль для своего пользовательского набора и установитьPASSWORD_LIFE_TIME, Увидетьorafaq Больше подробностей. Ты можешь видетьВот для примера перспективы и использования одного человека.

Я думаю, что в новой версии 11g (в отличие от обновления) с рекомендуемой улучшенной безопасностью пароли по умолчанию истекают через 30 дней.
На 11g это 180 дней:docs.oracle.com/cd/E38689_01/pt853pbr0/eng/pt/tadm/…
33

изменение профиля пользователя (например, профиля DEFAULT) надлежащим образом приведет к тому, что пароли, которые после установки никогда не истекут.

Однако, как указывает один комментатор, пароли, установленные под старыми значениями профиля, могут быть уже истекшими, и (если после указанного льготного периода профиля) учетная запись заблокирована.

Решение для паролей с истекшим сроком действия с заблокированными учетными записями (как указано в ответе на комментарий) заключается в использовании одной версии команды ALTER USER:

ALTER USER xyz_user ACCOUNT UNLOCK;

Однако команда разблокировки работает только для учетных записей, где учетная запись фактически заблокирована, но не для тех учетных записей, которые находятся в льготном периоде, то есть, когда срок действия пароля истек, но учетная запись еще не заблокирована. Для этих учетных записей пароль должен быть сброшен с помощью другой версии команды ALTER USER:

ALTER USER xyz_user IDENTIFIED BY new_password;

Ниже приведен небольшой сценарий SQL * Plus, который привилегированный пользователь (например, пользователь 'SYS') может использовать для сброса пароля пользователя к текущему существующему хешированному значению, хранящемуся в базе данных.

РЕДАКТИРОВАТЬ: более старые версии Oracle хранят пароль или хэш пароля в столбце pword, более новые версии Oracle хранят хэш пароля в столбце spare4. Приведенный ниже сценарий изменен для сбора столбцов pword и spare4, но для использования столбца spare4 для сброса учетной записи пользователя; изменить по необходимости.

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';
Столбец SYS.USER $ .PASSWORD будет содержать только хэш версии пароля без учета регистра (в верхнем регистре?). В Oracle 11, если вы не установите системный параметр SEC_CASE_SENSITIVE_LOGON = FALSE, в столбце SYS.USER $ .SPARE4 будет хэшировать пароль с учетом регистра.
Спасибо за помощь. Так сложно найти подходящий ответ. Любой другой ответ относится только к PASSWORD_LIFE_TIME.
Ответ обновлен. Спасибо, @Morbo, за комментарий.

Похожие вопросы