01-AWS 인프라
클라우드는 인터넷을 통해서 언제 어디서든지 원하는 때 원하는 만큼의 IT 리소스를 손쉽게 사용할 수 있게 하는 서비스를 말한다.
https://www.youtube.com/watch?v=S2GZQ6TbfQc
클라우드 서비스 종류
전통적인 클라우드 서비스 분류 대신 AWS 클라우드 기준 서비스 종류를 파악
- IaaS
- PaaS
- SaaS
- Serverless
1. IaaS (Infrastructure as a Service)
IaaS는 클라우드에서 서버, 스토리지, 네트워크와 같은 IT 인프라를 가상화하여 제공하는 서비스입니다. 사용자는 운영체제와 애플리케이션을 직접 설치하고 관리하며, 클라우드 제공업체는 하드웨어와 네트워크를 관리합니다.
특징
- 서버 및 스토리지 등 기본 인프라 제공.
- 사용자가 OS, 애플리케이션 등 상위 계층을 설정 및 관리.
- 유연한 확장성과 종량제 요금제.
예시
- AWS EC2
- Microsoft Azure Virtual Machines
- Google Compute Engine
사용 사례
- 데이터 센터를 대체하여 웹 애플리케이션 호스팅.
- 가상 머신을 활용한 테스트 및 개발 환경 구축.
2. PaaS (Platform as a Service)
PaaS는 애플리케이션 개발 및 배포를 위한 플랫폼을 제공합니다. 사용자는 서버나 운영체제를 관리할 필요 없이 개발에만 집중할 수 있습니다.
특징
- 미들웨어, 데이터베이스, 런타임 환경 등 개발에 필요한 도구 제공.
- 인프라 관리는 클라우드 제공업체가 담당.
- 개발 속도 향상과 간편한 배포 가능.
예시
- Google App Engine
- Heroku
- Microsoft Azure App Service
사용 사례
- 웹 및 모바일 애플리케이션 개발.
- API 기반 서비스 구축.
3. SaaS (Software as a Service)
SaaS는 완전히 관리된 소프트웨어를 인터넷을 통해 제공하는 서비스입니다. 사용자는 브라우저나 애플리케이션을 통해 소프트웨어를 사용하며, 설치나 유지보수가 필요 없습니다.
특징
- 소프트웨어와 관련된 모든 것이 클라우드에서 제공됨.
- 사용자는 기능을 활용하기만 하면 됨.
- 구독 기반 요금제.
예시
- Google Workspace (Gmail, Google Docs)
- Microsoft Office 365
- Salesforce
사용 사례
- 이메일 서비스, 문서 작성 및 협업 도구.
- 고객 관계 관리(CRM) 시스템.
4. Serverless
Serverless는 서버 관리를 신경 쓰지 않고 이벤트 기반으로 코드를 실행할 수 있는 클라우드 아키텍처입니다. 사용자는 필요한 코드만 작성하고 나머지는 클라우드 제공업체가 처리합니다.
특징
- 서버가 항상 실행되지 않고 요청 시에만 작동.
- 비용은 실행 시간과 호출 횟수에 따라 청구.
- 자동 확장 지원.
예시
- AWS Lambda
- Google Cloud Functions
- Microsoft Azure Functions
사용 사례
- API 백엔드 구축.
- 데이터 처리 및 분석 작업 자동화.
- IoT 이벤트 처리.
클라우드 구현 모델
- 퍼블릭
- 프라이빗
- 하이브리드
- 멀티
1. 퍼블릭 클라우드 (Public Cloud)
퍼블릭 클라우드는 제3자 클라우드 서비스 제공자가 소유하고 운영하며, 인터넷을 통해 다수의 사용자에게 서비스를 제공합니다.
특징
- 다중 테넌트 환경: 여러 사용자가 동일한 인프라를 공유.
- 유연성과 확장성이 뛰어나며, 사용량 기반으로 비용을 지불.
- 제공업체가 모든 하드웨어, 소프트웨어 및 유지보수를 관리.
장점
- 초기 투자 비용 없음: 인프라를 소유할 필요 없이 사용 가능.
- 빠른 확장성: 필요에 따라 자원을 쉽게 늘리거나 줄일 수 있음.
- 유지보수 부담 감소: 제공업체가 관리.
단점
- 보안 우려: 데이터가 인터넷을 통해 전송되고 저장되므로 해킹 위험 존재.
- 규제 준수 문제: 특정 산업 규제를 충족하기 어려울 수 있음.
- 제한된 사용자 제어권.
사용 사례
- 웹 애플리케이션 호스팅, 협업 도구, 이메일 서비스 등.
2. 프라이빗 클라우드 (Private Cloud)
프라이빗 클라우드는 특정 조직만을 위해 설계된 전용 클라우드 환경입니다. 온프레미스(내부 데이터 센터)나 외부 제공업체가 운영할 수 있습니다.
특징
- 단일 테넌트 환경: 하나의 조직만 사용 가능.
- 높은 보안성과 제어권 제공.
- 맞춤형 설정 가능.
장점
- 데이터 보안 및 규제 준수 용이.
- 높은 성능과 안정성.
- 사용자 지정 가능: 기업 요구에 맞게 설계 가능.
단점
- 초기 투자 비용 높음: 인프라 구축 및 유지보수 필요.
- 확장성 제한: 물리적 자원 한계 존재.
- 운영 및 관리 복잡성 증가.
사용 사례
- 금융, 의료 등 민감한 데이터를 처리하는 산업.
3. 하이브리드 클라우드 (Hybrid Cloud)
하이브리드 클라우드는 퍼블릭 클라우드와 프라이빗 클라우드를 결합하여 사용하는 모델입니다. 두 환경 간 데이터와 애플리케이션을 통합하여 운영합니다.
특징
- 민감한 데이터는 프라이빗 클라우드에서 처리하고, 나머지는 퍼블릭 클라우드를 활용.
- 워크로드를 유연하게 분산 가능.
장점
- 비용 절감: 비핵심 애플리케이션은 퍼블릭 클라우드를 사용하여 비용 절약.
- 보안 강화: 민감한 데이터는 프라이빗 환경에서 보호.
- 유연성: 비즈니스 요구에 따라 리소스를 조정 가능.
단점
- 관리 복잡성 증가: 두 환경을 통합하고 운영해야 함.
- 초기 설정 비용 높음.
- 데이터 이전 시 성능 문제 발생 가능.
사용 사례
- 데이터 백업 및 복구, 계절적 트래픽 증가 대응 등.
4. 멀티 클라우드 (Multi Cloud)
멀티 클라우드는 여러 퍼블릭 클라우드 제공업체의 서비스를 동시에 사용하는 전략입니다. 필요에 따라 각기 다른 벤더의 서비스를 선택해 활용합니다.
특징
- 동일한 유형(퍼블릭 또는 프라이빗)의 여러 클라우드를 병렬로 사용.
- 특정 벤더 종속성을 줄임.
장점
- 장애 시 복원력 강화: 한 벤더의 장애가 전체 시스템에 영향을 미치지 않음.
- 비용 최적화: 각 벤더의 강점을 활용하여 효율적인 비용 구조 설계 가능.
- 유연성 증대: 다양한 워크로드에 적합한 플랫폼 선택 가능.
단점
- 관리 복잡성 증가: 여러 플랫폼을 통합하고 관리해야 함.
- 보안 및 규정 준수 문제 발생 가능.
- 상호 운용성과 데이터 이동 문제.
사용 사례
- 글로벌 기업의 다양한 지역별 서비스 제공, 벤더 종속성 회피 등.
AWS 글로벌 인프라
데이터 센터
물리영역: 보안 요원, 울타리, 출입 통제 등 물리적인 보안과 전력, 냉난방 등 건물을 운영하는 설비와 시스템을 의미
IT 인프라 영역: 서버, 네트워크, 스토리지, 로드 배런서, 라우터 등 일반적인 IT 인프라 디바이스를 의미
운영 영역: 데이터센터를 운영 및 유지 관리하는 인원을 의미
가용 영역
한 개 이상의 데이터 센터들의 모음을 의미
각 데이터 센터는 분산되어 있으며, 초고속 광통신 전용망으로 연결되어 있다.
리전
리전은 해당 지리적인 영역 내에서 격리되고 물리적으로 분리된 여러 개의 가용 영역의 모음을 말한다. 리전은 최소 2개의 가용 영역으로 구성되고 최대 6개의 가용 영역으로 구성된 리전도 있다.
엣지
외부 인터넷과 AWS 글로벌 네트워크망과 연결하는 별도의 센터.
엣지는 엣지 로케이션과 리전별 엣지 캐시로 구성된다. CloudFront와 같은 CDN 서비스의 데이터 캐시 기능을 제공한다.
- CloudFront, Direct Connect, Route 53, AWS Shield, AWS Global Accelerator가 엣지에서 동작
AWS 사용하기 - 접근 방법 3가지
- AWS 관리 콘솔
- AWS CLI
- AWS SDK
SSH 접근시..
- ppk : 윈도우 OS로 Putty프로그램 사용 시
- pem : 맥 OS나 리눅스 내장 SSh 사용 시
LabGuide - AWS Systems Manager Session Manager | Notion
작성자 : gasida.cloudnet@, 업데이트 : 2022.09.1 , 업데이트 : 2020.08.23
gasidaseo.notion.site
SSH over HTTP Tunneling 활용
SSH over HTTP Tunneling은 방화벽(L7 Firewall)에서 SSH 프로토콜(TCP 22 포트)을 차단하고 HTTP 프로토콜(TCP 80 포트)만 허용하는 환경에서 SSH 접속을 가능하게 하는 기술입니다. 이 방법은 HTTP 트래픽을 통해 SSH 트래픽을 우회하여 서버에 접속할 수 있도록 합니다.
작동 원리
- HTTP 터널 생성
사용자는 HTTP 프로토콜(TCP 80)을 이용하여 대상 서버와 연결하고, HTTP 터널을 생성합니다.- 이 단계에서는 SSH 클라이언트가 직접 SSH 포트를 사용하지 않고, HTTP 요청을 통해 터널링을 설정합니다.
- SSH 통신 전송
생성된 HTTP 터널 위에서 SSH 클라이언트가 SSH 트래픽을 전송합니다.- HTTP 요청으로 변환된 SSH 데이터가 방화벽을 우회하여 대상 서버의 SSH 포트(TCP 22)로 전달됩니다.
- 대상 서버와 연결
대상 서버는 HTTP 터널을 통해 전달된 SSH 데이터를 복원하고, 정상적인 SSH 연결을 제공합니다.
이미지 설명
- HTTP 터널 생성 (1번 과정)
- 사용자가 TCP 80 포트를 통해 대상 서버에 HTTP 요청을 보냅니다.
- 방화벽은 TCP 22 포트를 차단하지만, TCP 80 포트는 허용하므로 HTTP 터널 생성이 가능합니다.
- SSH 데이터 전송 (2번 과정)
- 사용자는 HTTP 터널 위에서 SSH 클라이언트를 통해 데이터를 전송합니다.
- 방화벽은 이 데이터가 HTTP 트래픽으로 위장되어 있으므로 차단하지 않습니다.
- 대상 서버와 연결 (3번 과정)
- 대상 서버는 HTTP 터널을 통해 전달된 데이터를 해석하여 SSH 세션을 설정합니다.
구현 방법
1. 준비물
- SSH 클라이언트: PuTTY, OpenSSH 등.
- HTTP 프록시 도구: corkscrew 또는 proxytunnel과 같은 소프트웨어.
- HTTP 프록시 서버: 대상 서버에 설치되어 있어야 함.
2. 구현 단계
- HTTP 프록시 도구 설치
- Linux/Unix 환경에서는 corkscrew 또는 proxytunnel 설치:
sudo apt-get install corkscrew
sudo apt-get install proxytunnel
SSH 클라이언트 설정
- SSH 클라이언트의 구성 파일(~/.ssh/config)에 다음 내용을 추가:
Host target-server
HostName <대상 서버 IP>
Port 22
ProxyCommand corkscrew <프록시 주소> <프록시 포트> %h %p
터널링 실행
- 아래 명령어로 SSH 접속 시도:
ssh target-server
Windows 환경
- PuTTY를 사용하는 경우:
- "Connection > Proxy" 설정에서 프록시 유형(HTTP)과 주소/포트를 입력.
- 이후 일반적인 방식으로 SSH 연결 시도.
주의사항
- 이 방법은 보안 정책 우회를 위한 목적으로 사용될 수 있으므로, 반드시 허가된 환경에서만 사용해야 합니다.
- 대상 서버에 HTTP 프록시 소프트웨어가 설치되어 있어야 하며, 적절한 인증 및 보안 설정이 필요합니다.
- 네트워크 성능이 다소 저하될 수 있습니다(HTTP 프로토콜로 변환되기 때문).
사용 사례
- 회사나 조직의 방화벽이 특정 프로토콜(예: SSH)을 차단하고, HTTP만 허용하는 경우.
- 제한된 네트워크 환경에서 원격 서버에 안전하게 접속해야 하는 경우.
1. 상황 설명
- 사용자(나): 컴퓨터를 쓰고 있어요. 그런데 내가 접속하려는 대상 서버는 방화벽(L7 Firewall) 때문에 직접 연결이 안 돼요.
- 방화벽은 TCP 22(SSH 접속용 포트)를 막아놨어요.
- 대신 TCP 80(HTTP 웹사이트 접속용 포트)은 열려 있어요.
- 그런데 다행히 SSH 서버라는 "도우미 컴퓨터"가 있어요. 이 컴퓨터는 방화벽 바깥쪽에 있어서 누구나 접속할 수 있어요.
2. SSH Remote Port Forwarding의 역할
SSH Remote Port Forwarding은 이렇게 막혀 있는 대상 서버와 내 컴퓨터 사이에 **"비밀 터널"**을 만들어주는 기술이에요.
- 내가 먼저 **도우미 컴퓨터(SSH 서버)**에 연결해요.
- 그다음, 도우미 컴퓨터가 대상 서버와 연결을 대신 해줘요.
- 이제 나는 도우미 컴퓨터를 통해 대상 서버에 접속할 수 있어요.
3. 비유로 이해하기
- 사용자(나): 집에 있는 사람.
- 대상 서버: 친구 집인데, 문이 잠겨 있어서 못 들어가요.
- SSH 서버(도우미 컴퓨터): 친구 집 옆에 있는 카페. 카페 주인이 친구 집으로 물건을 전달해줄 수 있어요.
- 내가 카페 주인에게 "친구 집으로 물건 좀 가져다주세요"라고 부탁해요.
- 카페 주인이 친구 집으로 가서 물건을 전달하고, 다시 나에게 답장을 가져다줘요.
- 나는 친구 집과 직접 연결하지 않아도, 카페 주인을 통해 소통할 수 있어요.
4. 동작 과정
이미지를 참고하며 단계별로 설명해볼게요:
① 사용자 → SSH 서버 연결
- 사용자가 먼저 SSH 서버(도우미 컴퓨터)에 연결해요.
- 이때 SSH 명령어를 사용해서 원격 포트 포워딩을 설정합니다:
ssh -R 8080:192.168.0.10:80 user@ssh-server.com
-
- 080: 도우미 컴퓨터에서 열릴 포트 번호.
- 192.168.0.10: 대상 서버의 내부 주소(IP).
- 80: 대상 서버의 웹 서비스 포트.
② SSH 서버 → 대상 서버 연결
- SSH 서버가 사용자 대신 대상 서버와 연결을 만듭니다(TCP 80 포트를 사용).
③ 사용자 → 대상 서버 데이터 전송
- 이제 사용자는 도우미 컴퓨터(SSH 서버)를 통해 대상 서버와 통신할 수 있어요.
- 예를 들어, 브라우저에서 http://ssh-server-ip:8080으로 접속하면 대상 서버의 웹 페이지를 볼 수 있어요.