SQL> @ $ORACLE_HOME/rdbms/admin/utlpwdmg.sql
SQL> ! vi $ORACLE_HOME/rdbms/admin/utlpwdmg.sql
- SQL 에서도 vi 편집기 활용가
[SQL]
SELECT username, profile FROM dba_users;
SELECT * FROM dba_profiles WHERE PROFILE = 'DEFAULT';
#1) PROFILE 생성
CREATE PROFILE insa_profile LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED;
#2) 유저에게 생성된 profile 지정
ALTER USER insa PROFILE insa_profile;
#3) 유저에게 지정된 profile 확인
SELECT username, PROFILE FROM dba_users WHERE username = 'INSA';
#3) 계정 잠김 확인 select문
SELECT username, account_status, to_char(lock_date, 'yyyy-mm-dd hh24:mi:ss')
FROM dba_users
WHERE username = 'INSA';
#4) 계정풀기
ALTER USER insa ACCOUNT UNLOCK;
#5) 계정풀린 SELECT문
SELECT username, account_status, to_char(lock_date, 'yyyy-mm-dd hh24:mi:ss')
FROM dba_users
WHERE username = 'INSA';
#1) PRODUCE 생성
CREATE PROFILE INSA_PROFILE LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED;
#2) 수정후 확인
SELECT * FROM dba_profiles WHERE PROFILE = 'INSA_PROFILE';
#3) 로그인
- 틀리게 로그인
SQL> conn insa/insa
SQL> conn insa/insa
SQL> conn insa/oracle
#4) 로그인 실패 확인
SELECT username, account_status, to_char(lock_date, 'yyyy-mm-dd hh24:mi:ss')
FROM dba_users
WHERE username = 'INSA';
#5) 로그인 확인
SQL> conn insa/oracle
#6) PROFILE 삭제
DROP PROFILE insa_profile CASCADE;
#7) user 정보 확인
SELECT * FROM dba_profiles WHERE profile = 'INSA_PROFILE';
#1) PROFILE 생성
CREATE PROFILE insa_profile LIMIT
PASSWORD_LIFE_TIME 2/1440
PASSWORD_GRACE_TIME 1/1440;
#2) PROFILE 생성 확인
select * from dba_profiles where profile = 'INSA_PROFILE';
#2-1) USER에게 지정
ALTER USER insa PROFILE insa_profile;
#2-2) USER에게 지정 후 확인
SELECT username, profile FROM dba_users;
#2-3) USER에게 지정 후 확인
- 계정의 액세스 상태, 상태 시간 정보 확인
SELECT username, account_status, to_char(expiry_date, 'yyyy-mm-dd hh24:mi:ss')
FROM dba_users
WHERE username = 'INSA';
#4) DBA_PROFILE 확인
select * from dba_profiles where profile = 'INSA_PROFILE';
#1) INSA_PROFILE 수정
ALTER PROFILE insa_profile LIMIT
PASSWORD_LIFE_TIME 180
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL;
#2) 수정된 부분 확인
SELECT * FROM dba_profiles where profile = 'INSA_PROFILE';
#3) insa/oracle 로 변경
ALTER USER insa IDENTIFIED BY oracle;
#1) 특정한 부분 수정
ALTER PROFILE insa_profile LIMIT
PASSWORD_REUSE_TIME 2/1440 -- 2분 이후 재사용
-- and 존재
PASSWORD_REUSE_MAX 1; -- 1번은 수정해야 한다.
해석) insa_profile을 수정할 건데,
패스워드를 수정해야 할 경우는 2분 이후에 이전 패스워드와 동일하게 재사용이 가능하되, 이전 패스워드 다른 패스워드로는 1번은 수정해야 가능하다.
#2) 수정된 부분 확인
SELECT * FROM dba_profiles where profile = 'INSA_PROFILE';
#3) insa/oracle 변경
ALTER USER insa IDENTIFIED BY oracle;
ALTER USER insa IDENTIFIED BY oracle; -- ORA-28007: 비밀번호를 재사용될 수 없습니다
#3-1) 다른 패스워드로 변경
--2분뒤에 이전 패스워드로 변경가능한지 체크
ALTER USER insa IDENTIFIED BY oracle1;
#3-2) 패스워드 insa/oracle 로 변경
ALTER USER insa IDENTIFIED BY oracle;
#1) 패스워드 함수 변경
ALTER PROFILE insa_profile LIMIT
PASSWORD_VERIFY_FUNCTION verify_function_itwill;
- 기존에 있는 verify_function을 verify_function_itwill 로 명칭 변경
#1-1) 함수명 변경
CREATE OR REPLACE FUNCTION verify_function_itwill --함수 생성
(username varchar2, -- 유저명
password varchar2, -- 새로운 pwd
old_password varchar2) -- 이전 pwd
RETURN boolean IS
n boolean; -- 참거짓
m integer; -- 정수값
differ integer;
isdigit boolean;
ischar boolean;
ispunct boolean;
db_name varchar2(40); --문자형
digitarray varchar2(20);
punctarray varchar2(25);
chararray varchar2(52);
i_char varchar2(10);
simple_password varchar2(10);
reverse_user varchar2(32);
BEGIN
#1-2) BEGIN 절에서 NLS_LOWER(password) IN () 변경
- 'happy1234' 추가
-- Check if the password is too simple. A dictionary of words may be
-- maintained and a check may be made so as not to allow the words
-- that are too simple for the password.
IF NLS_LOWER(password) IN ('welcome1', 'database1', 'account1', 'user1234', 'password1', 'oracle123', 'computer1', 'abcdefg1', 'change_on_install', 'happy1234') THEN
--pwd에 () 포함되면
raise_application_error(-20006, 'Password too simple');
END IF;
#1-2) BEGIN 절에서 simple_password 에 회사명 추가
-- Check if the password is the same as oracle (1-100)
simple_password := 'itwill'; -- 회사명
FOR i IN 1..100 LOOP
i_char := to_char(i);
if simple_password || i_char = NLS_LOWER(password) THEN
raise_application_error(-20007, 'Password too simple ');
END IF;
END LOOP;
#2) 변경된profile 확인
SELECT * FROM dba_profiles where profile = 'INSA_PROFILE';
#3) TEST 해보기
- 유저명/패스워드 를 ALTER문으로 변경
ALTER USER insa IDENTIFIED BY itwill99; -- itwill 포함된 패스워드+8자리부족
ALTER USER insa IDENTIFIED BY james12; -- 문자의 길이
ALTER USER insa IDENTIFIED BY oracle12; -- itwill 포함된 패스워드+8자리 부족
ALTER USER insa IDENTIFIED BY happy1234; -- 흔한 문자로 지정된 패스워드
ALTER USER insa IDENTIFIED BY december; -- 패스워드 8자리
ALTER USER insa IDENTIFIED BY december#@123; -- 지정한 특수문자 없는 문자 사용
ALTER USER insa IDENTIFIED BY itwill12345; --생성가능
'Data Base > Linux' 카테고리의 다른 글
231222 Linux_password file 생성, SYSDBA ROLE 인증체크 (1) | 2023.12.22 |
---|---|
231222 Linux_RESOURCE 관리, PROFILE 관리 (0) | 2023.12.22 |
231221 Linux_profile 관리, passwd 관리 (0) | 2023.12.21 |
231221 Linux_ Definer' right 와 Invoker's right (1) | 2023.12.21 |
231221 Linux_role 권한 관리, role 비활성화/활성화 설정 (0) | 2023.12.21 |