이전에는 테스트, 개발 생산성을 위해 퍼블릭 서브넷에서 모든 접근을 허용함
배포를 진행함에 따라 보안 처리 필요, private 서브넷으로 이전하려함
이전
인터넷 게이트웨이 연결 - 엔드포인트로만 간편하게 접속할 수 있도록 퍼블릭으로 연결
defalut 보안그룹 - VPC 내 인스턴스들과 네트워킹
내 IP 허용 보안그룹 - 개발을 위해 연결 필요 시 본인의 IP만 보안그룹에 추가하여 개발을 진행함
전체 허용 보안그룹 - 이후 Github actions 를 통해 테스트를 진행할 때, github actions 의 서비스 컴퓨터의 IP를 알 수 없으므로 통합 테스트에서 사용을 위해 일시적으로 모든 IP 에 대해 열어두었음 // 테스트 해결 방법 https://www.inforum.me/memos/512
이후
NAT 게이트웨이만 연결 - 외부로 전송만 가능하도록 미리 만들어둔 nat 만 연결하여 프라이빗으로 설정
default 보안그룹만 설정 - VPC 내 인스턴스를 제외하고는 접근 불가
그런데, 개발이나 DB 접속이 필요할 때, 이전에는 URL로 간단하게 접속했지만 이제 추가적인 처리가 필요했음
SSH 터널을 이용하여 퍼블릭으로 설정해둔 dev ec2 인스턴스에 ssh 연결을 통해 접속함
이후 이전과 동일하게 엔드포인트를 통해 접근
build.gradle에 ssh 연결을 위한 의존성 추가
// ssh 연결
implementation 'com.jcraft:jsch:0.1.44-1'
application.yml에 ssh 접속 정보 추가
ssh:
remote_jump_host: # 연결할 ec2 IP 주소
ssh_port: # 포트 (기본은 22)
user: # 접속할 유저명 (ec2-user를 사용하여 마스터로 연결)
private_key: # public key를 통해 인증할 것이므로 private key가 있는 경로를 설정함
database_port: # db port (psql은 기본 5432)