작성
·
15
·
수정됨
0
퍼블릭 서브넷: Bastion host (외부 접속용)
프라이빗 서브넷: 실제 EC2 애플리케이션 서버
목표: GitHub Actions + Docker를 사용해 프라이빗 EC2에 배포
제가 찾은 방법은 첫번째로
GitHub Actions에서 Bastion host로 먼저 SSH 접속
Bastion에서 프라이빗 EC2로 SSH 중계
내부 EC2에서 Docker pull & deploy
방식인데요 이 방식으로 하려면 bastion host 보안 그룹 인바운드 규칙을 모든 IP 허용을 해야해서 이게 맞나 싶습니다.
그리고 다른 방법은 github self-hosted runner를 쓰는 건데요. 아직 잘 모르는 영역이라 해보기 전에 질문 올립니다.
제가 말한 방법 이외에 또 다른 방법이 있는지 궁금하기도 해서 도와주시면 감사하겟습니다
답변 2
0
안녕하세요 Reverie님! 질문 잘해주셨어요 !
질문해 주신내용에 대해 답변드려볼게요 ~
"이 방식으로 하려면 bastion host 보안 그룹 인바운드 규칙을 모든 IP 허용을 해야해서 이게 맞나 싶습니다."
-> Bastion Host의 보안 그룹에서 모든 IP를 허용하는 것은 보안상 좋은 방법이 아니에요 !
Bastion Host는 특정 IP에서만 접근할 수 있도록 제한하는 것이 원칙이에요 !
또한 GitHub Actions의 러너 IP를 허용해야 하는데
이 IP가 계속 변경되기 때문에 결국 모든 IP를 허용해야해서 보안적으로 매우 취약해요 !
"github self-hosted runner"
-> 첫번째 방법보다 훨씬 좋은 선택이에요 ~
EC2에 GitHub Runner를 직접 설치하고,
GitHub Actions는 외부가 아니라 Runner 내부에서 직접 실행되므로 SSH가 필요없어요 !
그래서 내부 네트워크 안에서 docker pull, docker compose up 등을 바로 실행 가능해요 ~
보안상 Bastion SSH 개방이 필요 없고,
CI/CD 파이프라인을 완전히 내부망에서 실행 가능하다는 점이 장점이죠 :)
"다른 방법 SSM Session Manager"
-> SSM Session Manager를 사용하면 SSH 포트를 열지 않고도
프라이빗 EC2에 안전하게 접근할 수 있어요 !
EC2에 IAM Role 부여를 통해 SSH 포트를 열 필요없이
GitHub Actions에서 AWS CLI로 SSM을 통해 명령을 실행할수 있어요 !
아래 레퍼런스들 참고해보시면 도움이 되실것 같아서 첨부해드려요 :)
https://itcodeheaven.tistory.com/118
https://musma.github.io/2019/11/29/about-aws-ssm.html
추가로 궁금하신 점 있으시면 또 질문 남겨주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. Reverie님.
프라이빗 서브넷에 위치한 EC2 애플리케이션 서버에 배포하기 위한 Bastion Host 사용 방법에 대해 질문 주셨네요. Bastion Host를 통해 보안성을 유지하면서 배포 작업을 이어가는 것이 핵심입니다.
GitHub Actions에서 직접 Bastion Host로 SSH 연결 후, 프라이빗 EC2로 중계하는 방식은 보안 그룹 설정에서 보안이 취약해질 수 있습니다. 특히, Bastion Host의 인바운드 규칙을 전 IP에 개방하는 것은 가능하면 피하는 것이 좋습니다.
대안 방법:
GitHub Actions Runner: 프라이빗 EC2 내에서 GitHub Actions Runner를 사용하면 외부로부터의 접근 없이 프라이빗 서브넷 내에서 배포 작업이 이루어집니다. 이는 보안성을 높이는 데 도움이 됩니다.
VPN 또는 AWS Direct Connect 활용: Bastion Host의 트래픽만 VPN이나 Direct Connect를 통해 전달하도록 설정하여, 외부 IP 접근을 차단하고 내부 네트워크를 통해 보다 안전하게 접근하는 방법입니다.
Self-hosted Runner: 이 방법은 GitHub 자체에서 제공하는 runner를 사용하여 사설 네트워크 내에서 직접 CI/CD를 실행할 수 있게 합니다. 이는 네트워크 외부로부터의 접근을 제한할 수 있으므로 보안을 크게 향상시킵니다.
참고 게시물:
GitHub Actions와 Bastion Host를 통한 보안 연결 방식을 잘 이해하실 수 있도록 관련된 게시물을 확인해보세요:
각 방법의 장단점을 고려하여 프로젝트에 최적화된 CI/CD 환경을 구축해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.