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


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

비밀번호 만료 설정

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

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 명령을 사용하여 취소해야 한다.

그러면 실제로 시도합니다. 암호가 현재 사용할 수있는 momo 역할에 대해 암호 만료 설정을 취소하려면 만료로 현재보다 먼저 날짜와 시간을 다시 지정하거나 무기한을 의미하는 ‘infinity’를 설정하십시오 .

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

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

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

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


postgres=#

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

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

postgres=>

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