인프런 커뮤니티 질문&답변
최종 미션 아키텍처 적용 후에 CI/CD 문제 질문 드립니다
작성
·
39
·
수정됨
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를 통한 보안 연결 방식을 잘 이해하실 수 있도록 관련된 게시물을 확인해보세요:
- 프라이빗 서브넷의 보안 및 배포 사례: Bastion Host를 활용한 보안 배포에 대한 깊이 있는 설명이 포함되어 있습니다.
각 방법의 장단점을 고려하여 프로젝트에 최적화된 CI/CD 환경을 구축해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




