- https://www.devkuma.com/docs/postgresql/pghba-conf-%ED%8C%8C%EC%9D%BC-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95/ 페이지의 내용을 참조하여 작성 및 실습하였습니다.
- 자세한 개념은 앞 링크를 참조하여 주세요. 저는 실습 위주로 진행합니다.
- pg_hba.conf 파일을 통해 보안 설정을 할 수 있습니다.
- 이를 테면, 사용자 접근 권한과 인증 방식에 대한 내용을 설정할 수 있는데요,
- 아래에서 예를 들어 설명해보겠습니다.
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
- TYPE : local, host, hostssl, hostnossl 중 하나를 설정합니다.
- DATABASE : 연결할 수 있는 데이터베이스 이름을 지정합니다.
- 복수 지정하는 경우는 쉼표 (,)로 구분하여 작성합니다.
- USER : 연결할 수 있는 사용자 이름을 지정합니다.
- 복수 지정하는 경우는 쉼표(,)로 구분하여 작성합니다.
- 특수한 값 all을 지정하면 모든 사용자를 의미합니다.
- ADDRESS : 연결할 수 있는 호스트 이름 또는 IP 주소 범위를 지정합니다.
- TYPE 은 https://www.devkuma.com/docs/postgresql/pghba-conf-%ED%8C%8C%EC%9D%BC-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95/ 페이지를 참조하여 작성하시면 됩니다.
- 자 그럼 이제 새로 생성한 h****계정으로 예제를 수행해보겠습니다.
# 아까 생성한 계정과 권한이 부여된 temp 데이터베이스로 접속해보겠습니다.
[vagrant@default /]$ psql -U h**** temp
Password for user h****:
psql (9.2.24)
Type "help" for help.
- 접속이 잘 되는것을 확인했으니 설정을 수정해보겠습니다.
- USER 에 all 로 되어있는 항목을 postgres로 수정하겠습니다.
- 이 말은, localhost의 모든 데이터베이스에 접속하되, postgres 계정의 연결만을 허용하겠다는 의미입니다.
- METHOD는 md5 방식의 암호 인증 방식을 사용하겠습니다.
sudo vi /var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all postgres md5
- 서비스를 재시작 후 h**** 계정으로 로그인을 하면 다음의 SSL 에러로 접속이 불가한 것을 확인할 수 있습니다.
[vagrant@default /]$ sudo vi /var/lib/pgsql/data/pg_hba.conf
[vagrant@default /]$ sudo systemctl restart postgresql
[vagrant@default /]$ psql -U h**** temp
psql: FATAL: no pg_hba.conf entry for host "[local]", user "h****", database "temp", SSL off
[vagrant@default /]$ psql -U postgres temp
Password for user postgres:
psql (9.2.24)
Type "help" for help.
- 테스트가 잘 수행되는 걸 봤으니 pg_hba.conf 파일의 원래 설정으로 되돌리겠습니다.
- 저는 주로 local(VM)이 아닌 외부 ip(Host)에서의 접속을 수행할 테니, host 설정을 다음과같이 해두겠습니다.
- 참고로 0.0.0.0/0 은 어떤 ip와 port로 접속해도 접속이 가능하며, ::1/128은 localhost를 의미합니다.
- 저는 vagrant를 통해 private ip를 사용하므로 0.0.0.0/0으로 열어두었지만, 만약 보안을 따로 설정해야 하는 상황이라면 ADDRESS와 METHOD를 다른 값으로 수정해야 합니다.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 md5
'웹 개발' 카테고리의 다른 글
[Maria DB] 설치 (0) | 2022.05.07 |
---|---|
[Postgres] 설치 (0) | 2022.05.07 |
댓글