PostgreSQL | 역할(사용자) ROLE 생성 | 역할 암호 만료 설정(ALTER ROLE)

PostgreSQL에 연결된 역할의 인증에 사용할 비밀번호에 대해서 역할을 만들 때와 역할을 생성한 후에도 속성을 변경하여 비밀번호 만료를 설정할 수 있다. 여기에서는 역할의 비밀번호 만료를 설정하는 방법과 비밀번호가 비활성화된 역할을 다시 암호 인증을 할 수 있도록 설정하는 방법에 대해 설명한다.

비밀번호 만료 설정

역할 만들 때 비밀번호 만료를 설정하려면 다음과 같이 실행한다.

CREATE ROLE name
  WITH LOGIN PASSWORD 'password' VALID UNTIL 'timestamp'

LOGIN 및 PASSWORD ‘password’속성을 설정하여 만드는 역할은 PostgreSQL의 연결 역할로 사용할 수 있지만, VALID UNTIL 'timestamp'를 설정하여 사용하는 암호 만료를 ’timestamp’까지 설정할 수 있다.

또한 생성된 역할에 대해 비밀번호 만료 특성만을 설정한 경우 다음과 같이 실행한다.

ALTER ROLE name WITH VALID UNTIL 'timestamp'

현재 설정되어 있는 비밀번호 만료를 ’timestamp’까지 설정한다.

유효 기간은 ‘2020-10-31 20:33:10’과 같이 지정한다. 지정된 날짜와 시간이 되었을 때부터 비밀번호가 비활성화된다. 만약 ‘2020-10-31’처럼 날짜만 지정하면 ‘2020-10-31 00:00:00’와 같다.

그러면 실제로 해보도록 하자. 현재 생성된 mykuma 롤의 유효 기간을 ‘2020-10-10 06:00:00’로 설정한다.

devkuma=# alter role mykuma with valid until '2020-10-10 06:00:00';
ALTER ROLE
devkuma=#

mykuma 역할의 비밀번호 만료가 설정되었다.

비밀번호 만료를 설정한 후에 psql 메타 명령 \du를 사용하여 mykuma 역할의 속성을 표시하여 보면, 암호 만료가 설정되어있는 것을 확인할 수 있다.

devkuma=# \du mykuma
                             롤 목록
 롤 이름 |                   속성                    | 소속 그룹:
---------+-------------------------------------------+------------
 mykuma  | 비밀번호 만료기한: 2020-10-10 06:00:00+09 | {}


devkuma=#

암호 만료가 설정 역할은 비밀번호가 만료되기 전에 PostgreSQL에 연결되어 있지 않으면 비밀번호가 만료되는 날짜와 시간이 되어도 연결은 그대로 사용할 수 있다. 그러나 연결을 끊기면 비밀번호 인증 실패한다.

암호가 비활성화 된 상태에서 연결을 시도하면 “psql: 오류: 서버 접속 실패: 치명적오류: 사용자 “mykuma"의 password 인증을 실패했습니다“고 표시되어 연결에 실패한다.

C:\Users\kimkc>psql -U mykuma -d postgres
mykuma 사용자의 암호:
psql: 오류: 서버 접속 실패: 치명적오류:  사용자 "mykuma"의 password 인증을 실패했습니다

C:\Users\kimkc>

암호 만료 설정을 취소하기

비밀번호가 만료되어 비활성화 된 경우에는 새로운 비밀번호를 설정해도 인증할 수 없다. 다시 해당 역할이 비밀번호 인증을 할 수 있게하려면 비밀번호 만료 설정을 ALTER ROLE 명령을 사용하여 취소해야 한다.

그러면 실제로 시도한다. 암호를 현재 사용할 수 없는 mykuma 역할에 대해 암호 만료 설정을 취소하려면 만료일로 현재보다 나중의 날짜와 시간을 다시 지정하거나 무기한을 의미하는 ‘infinity’를 설정하면 된다.

postgres=# alter role mykuma with valid until 'infinity';
ALTER ROLE
postgres=#

mykuma 역할의 암호 만료 설정이 취소되었다. 정확하게는 비밀번호 만료 무기한 설정되었다.

다시 psql 메타 명령 \du를 사용하여 mykuma 역할의 속성을 표시해 보면, 암호 만료가 ‘infinity’로 설정되어 있는 것을 확인할 수 있다.

postgres=# \du mykuma
                      롤 목록
 롤 이름 |            속성             | 소속 그룹:
---------+-----------------------------+------------
 mykuma  | 비밀번호 만료기한: infinity | {}


postgres=#

유효 기간 설정 변경 후에 해당 역할로 PostgreSQL에 접속해 보면 문제없이 암호 인증이 통해서 연결할 수 있다.

C:\Users\kimkc>psql -U mykuma -d postgres
mykuma 사용자의 암호:
psql (12.2)
도움말을 보려면 "help"를 입력하십시오.

postgres=>

여기까지 역할의 암호 만료를 설정하는 방법과 암호가 비활성화 된 역할을 다시 암호 인증을 실시 할 수 있도록 설정하는 방법에 대해 알아보았다.