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