DBAtlas · 데이터베이스 운영 아틀라스

비밀번호 정책 profile 생성 및 사용자에게 할당

Oracle보안

명령어

-- Hardened profile for application/human users:
CREATE PROFILE app_user_prf LIMIT
  FAILED_LOGIN_ATTEMPTS    5
  PASSWORD_LOCK_TIME       1/24          -- 1 hour lock
  PASSWORD_LIFE_TIME       90
  PASSWORD_GRACE_TIME      7
  PASSWORD_REUSE_TIME      365
  PASSWORD_REUSE_MAX       10
  INACTIVE_ACCOUNT_TIME    60            -- accounts unused for 60 days are locked
  PASSWORD_VERIFY_FUNCTION ora12c_strong_verify_function;

-- Service accounts: password never expires, gradual password rollover enabled:
CREATE PROFILE service_account_prf LIMIT
  FAILED_LOGIN_ATTEMPTS    UNLIMITED
  PASSWORD_LIFE_TIME       UNLIMITED
  PASSWORD_ROLLOVER_TIME   1;            -- old and new password both valid for 1 day

ALTER USER customer_app PROFILE app_user_prf;

-- Check:
SELECT username, profile, account_status,
       TO_CHAR(expiry_date,'YYYY-MM-DD') AS expiry_date, lock_date
FROM   dba_users
WHERE  profile IN ('APP_USER_PRF', 'SERVICE_ACCOUNT_PRF');

SELECT profile, resource_name, limit
FROM   dba_profiles
WHERE  profile = 'APP_USER_PRF' AND resource_type = 'PASSWORD'
ORDER  BY resource_name;

하는 일

profile은 로그인 실패 잠금, 비밀번호 수명, 재사용, 복잡도(verify function), 비활성 계정 잠금 규칙을 사용자 그룹에 적용한다. PASSWORD_ROLLOVER_TIME은 서비스 계정의 비밀번호를 변경하는 동안 애플리케이션이 서비스 중단 없이 전환할 수 있게 한다.

사용 시점

보안 감사/CIS benchmark 요구 사항, 새 애플리케이션 사용자 생성 시, DEFAULT profile의 느슨한 값을 사용자 그룹별로 분리하기 위해.

주의

추가 라이선스가 없다. 서비스 계정에 FAILED_LOGIN_ATTEMPTS 한도가 있으면 비밀번호가 틀린 앱 서버 하나가 계정을 잠가 운영 장애를 일으킬 수 있다. 애플리케이션 계정의 PASSWORD_LIFE_TIME은 예기치 않은 EXPIRED 상태를 유발할 수 있다. verify function은 SYS 아래에 있어야 한다(없으면 @?/rdbms/admin/utlpwdmg.sql. 이 스크립트는 DEFAULT profile도 수정한다). profile을 변경해도 기존 비밀번호는 다시 검증되지 않는다.

DBAtlas에서 열기 →

관련 항목