1. Cloud Service
1) 서비스 및 사업자
(1) 사업자 유형
- CSP(Cloud Service Provider) : Cloud 서비스 제공자
- MSP(Managed Service Provider) : Cloud 도입/구축/운영 등 관리서비스 제공자

(2) 클라우드 서비스 유형
- IaaS : Infra서비스 대여 예) EC2
- PaaS : Platform서비스 대여 예) RDS : 완전 관리형 DB - 이중화, 백업 등의 관리기능 포함
- SaaS
2) AWS 기본 설정
(1) IAM (Identity and Access Management)
- 접근제어 서비스( 사용자, 그룹, 역할 및 권한을 관리 )
- 중앙집중식, 세분화된 접근제어, 정책기반 관리, MFA(다중 인증지원)
- 권장 설정 :
루트 계정이 아닌 IAM사용자 생성
MFA필수 생성
정책은 최소 권한원칙
AccessKey주기적 교체
CloudTrail로 IAM활동 로깅 및 모니터링
① IAM 사용자 - 개별 resource에 접근할 수 있는 계정
② 그룹 - 여러 사용자를 묶는 단위
③ 역할(Role) - 특정 권한을 가진 임시권한 세트
④ 정책 (Policy)
- 권한을 정의한 문서
- 누가(Principal)이 어떤 Resource에 어떤 조건(Condition)으로 어떤 작업(Action) 수행
⑤ 자격증명 (Identity)
- 리소스 접근시 사용자 이름, 비밀번호, AccessKey등의 자격증명 필요
(2) 인증과 인가
① 인증 : 비밀번호, MFA, 엑세스 토큰
② 인가 : 요청에 대해 정책을 평가하여 인가여부 허용/거부
(3) Resources
① 리소스 생성 방법
- Web Console, AWS SDK, AWS CLI, CloudFormation/Terraform
② 고가용성 ( 지역 및 가용영역 )
- Region ( 물리적으로 격리된 데이터 센터의 그룹 )
- AZ(Availiability Zone: 가용 영역) : 하나의 region내 독립적인 데이터 센터 ( Region별로 2~3개 )

3) 사용 권한
(1) 접근보안
① 로그인 접근

② IAM권한 없는 경우

③ 보안자격증명 : MFA할당 (구글 authenticator)

(2) 정책 생성
- 권한 설정 ( JSON 형태로 Custom가능, 지역별 구분 있으나 s3는 region관계 없이 가능 )
- Sid, Effect, Action, Resource ( 리전/버킷 이름 설정 )
- Statement 내부에 배열 형태로 여러 개의 권한 조건을 설정 ( +문 추가 )

(3) 권한 설정
① 추가 생성한 IAM 계정에 권한주기

4) EC2
- 가상머신(VM)형태의 인스턴스를 제공하는 컴퓨팅 서비스
- 운영체제, CPU, 메모리, 디스크 등 하드웨어 자원을 유연하게 설정


** 인코딩, 압축 풀기등이 메모리 집약적
(1)설정
① AMI(EC2 실행 template) : 소프트웨어 환경을 정의한 이미지 파일
- OS, 어플리케이션, 네트워크, 보안 설정
- AmazonLinux, MacOS, Ubuntu, Window, RedHat, .. 등등의 다양한 이미지

② IP
- 기본적으로 동적 IP할당
- Elastic IP ( 고정된 퍼블릭 IP이며 인스턴스와 독립적으로 존재, 등록하여 연결 )
** 탄력적 IP삭제 : release (삭제 없음)
③ 방화벽
- 보안그룹 : inbound규칙과 outbound 규칙을 설정하여 트래픽을 제어
- 기본구성
inbound : 모든 traffic차단 후 특정 ip나 포트에 대해서만 허용,
outbound : 모든 traffic허용 후 특정 ip나 포트에 대해서만 차단
④ 접속
- 키페어 방식으로 인스턴스 접속 (mobaxterm이나 putty등으로 접속)
⑤ User data
- EC2 인스턴스 시작시 실행할 명령어/스크립트 제공 (특정 소프트웨어 설치나 설정 수행)
예) nginx등의 기본적인 구동을 설정
(2) 구동 설정
region설정 ➡ 인스턴스 시작 ➡ 인스턴스 이름 설정 ➡ 이미지(OS) ➡ 인스턴스 유형 ➡ 키페어 설정(ssh접속시 사용할 키페어 생성 후 로컬에 저장하여 사용 ) ➡ 네트워크 설정 (보안그룹 생성 ,보안그룹 설정을 편집하여 이름을 변경해 줌) ➡ 스토리지 ➡ 고급 설정 ( User data등을 삽입하여 초기 설정 )
(3) 인스턴스 접속
① EC2 Instance Connect로 연결 (AWS EC2 페이지에서 연결 버튼으로 브라우저 로딩하여 접속)
② Key-pair를 이용하여 SSH로 접속
(4) Role 생성 (임시 권한)
- 특정 권한을 가진 임시권한 세트를 생성하여 특정한 리소스에 설정
- 개별 리소스, 외부 계정이나 서비스의 접근에 대한 설정을 허용할수 있음
① IAM에서 역할생성 (EC2에 S3의 접근가능한 역할 생성)

② AccessKey 활용
- AWS CLI나 SDK 같은 도구를 사용하여 AWS 리소스를 관리할 때 사용
- User - 보안 자격증명 - accesskey생성 (access Key와 비밀 key)
- accesskey발급 후 aws configure에서 key를 입력하고 데이터 형태 확정
#S3 bucket 확인
aws --version
aws-cli/2.27.57 Python/3.9.23 Linux/6.1.147-172.266.amzn2023.x86_64 source/x86_64.amzn.2023
[ec2-user@ip-10-0-1-87 ~]$ aws configure
AWS Access Key ID [None]: myaccesskeyID
AWS Secret Access Key [None]: mysecretKey
Default region name [None]:
Default output format [None]:json
[ec2-user@ip-10-0-1-87 ~]$ aws s3 ls
2025-08-20 13:26:37 sesac.tutor.bucket
(5) 시작 template
- Resource 기본 옵션이나 이미지로 프로비져닝 옵션을 미리 지정해둠
- 시작 Template설정 ( OS를 비롯한 각종 옵션 설정)
- 인스턴스의 이미지로 구동중인 EC2의 이미지를 스냅샷으로 저장
( template에서 (내 AMI) 에서 추가 )
5) VPC
- AWS내에서 논리적으로 격리된 네트워크 ( 클라우드 리소스를 논리적 격리 )
- IP주소범위, 서브넷, 라우팅 테이블, 네트워크 게이트웨이 설정 필요
- VPC는 EC2와 동일 Region, 서브넷과는 동일 가용 영역내에 위치
(1) Subnet
- VPC 내에서 격리된 네트워크
예) VPC_A : 10.1.0.0/16에서 2개로 구분 ---> 10.1.1.0/24, 10.1.2.0/24
① Public Subnet
- 외부 Internet 접근이 가능하도록 Internet Gateway설정
- Routing Table에서 Internet Gateway주소를 설정
② Private Subnet (Default)
- 서브넷의 기본 설정 (inbound 차단), 내부 VPC의 리소스만 접근 가능
- Private 내부 리소스가 인터넷 사용시, NAT 게이트웨이를 활용하여 outbound설정
( Private 내부 리소스 접근시 Bastion Host나 EICE활용 )
** 서브넷 네트워크 IP주소 범위 (CIDR)
예) 192.168.0.0/24 ( 32비트 중에 24비트를 네트워크 주소, 호스트 8비트 )
③ NACL (Network Access Control List) : 서브넷 단위로 접근제어
- VPC의 서브넷 수준에서 Traffic 제어
- 명시적 설정 ( inbound와 outbound stateless )
- 보안 그룹과 접근제어 대상이 다름 ( EC2 단위 접근제어, Stateful- 규칙만 설정가능, inbound허용시 outbound연동)


(2) VPC 생성
- 기본 혹은 subnet등 기타 설정을 추가하여 생성

(3) Subnet생성
① 서브넷 생성
- VPC선택 후 private, public용 subnet 생성
( 기본 Routing Table자동 생성 , private )

② Public Subnet인 경우의 설정
- internet gateway 생성 (VPC)
- public용 routing table로 생성 (VPC) 라우팅 편집 : Internet Gateway추가
- routing table의 서브넷 연결편집
- 보안 그룹 설정 ( 보안 규칙 설정 후 EC2에 연결 적용 )






6) Private Subnet의 Instance
- Bation Host, EICE 방식으로 접근 가능
(1) Bastion Host
① public 으로부터 인바운드 허용 ( private subnet에 연결된 보안그룹에서 ssh, http, icmp )
② pem.key로 public 인스턴스 접속 후 private 인스턴스에 통신 확인 (ping)
# Public Instance 접속
ssh -i [my_key-pair].pem ubuntu@[EC2_public_ip]
# Subnet내 private instance를 IP로 연결( 10.0.1.26으로 연결 )
ubuntu@ip-10-0-1-26:~$ ping 10.0.3.75 #private instance의 vpc내 주소
# PING 가능 (Private Subnet의 보안그룹에서 Public으로 Inbound허용 후)
ubuntu@ip-10-0-1-26:~$ ping 10.0.3.75
PING 10.0.3.75 (10.0.3.75) 56(84) bytes of data.
64 bytes from 10.0.3.75: icmp_seq=1 ttl=64 time=0.207 ms
64 bytes from 10.0.3.75: icmp_seq=2 ttl=64 time=0.215 ms
64 bytes from 10.0.3.75: icmp_seq=3 ttl=64 time=0.215 ms
64 bytes from 10.0.3.75: icmp_seq=4 ttl=64 time=0.215 ms
64 bytes from 10.0.3.75: icmp_seq=5 ttl=64 time=0.212 ms
64 bytes from 10.0.3.75: icmp_seq=6 ttl=64 time=0.221 ms
64 bytes from 10.0.3.75: icmp_seq=7 ttl=64 time=0.210 ms
^C
--- 10.0.3.75 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6165ms
rtt min/avg/max/mdev = 0.207/0.213/0.221/0.004 ms
③ private 인스턴스에 접속 ( public 인스턴스에서 )
- local의 pem.key를 복사/생성하여 ssh연결
# Public Instance에서 Key복사 생성
ubuntu@ip-10-0-1-26:~$ mkdir key-je
ubuntu@ip-10-0-1-26:~$ cd key-je/
ubuntu@ip-10-0-1-26:~/key-je$ vim [my_key_pair].pem # key-perm복사
ubuntu@ip-10-0-1-26:~/key-je$ sudo chmod 400 [my_key_pair].pem #권한 조정
# Public에서 Private 인스턴스로 접속 (내부 IP이용하여 접속)
ubuntu@ip-10-0-1-26:~/key-je$ ssh -i [my_key_pair].pem ubuntu@10.0.3.75
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.3.75' (ED25519) to the list of known hosts.
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-1029-aws x86_64)
④ Private Instance의 인터넷 허용 ( NAT GATEWAY 통신 )
- NAT Gateway : 연동된 Private Subnet영역의 Outbound요청 처리
( Outbound는 전체 트래픽 가능)
- VPC에서 NAT Gateway생성
( public subnet에 연결, 외부 접속을 위한 Elastic IP할당 )

- VPC의 리소스 Map에서 생성확인 후 Private Subnet의 Routing Table 추가
( 인스턴스가 배치된 private.subnet이 연결된 routing 테이블에 NAT에 연결 )


** 인터넷 연결

(2) EICE (EC2 Instance Connect Endpoint )
- VPC 연결, EC2 연결을 설정
① 보안 그룹 설정 ( EICE를 위한 별도의 보안그룹 생성 )
- Outbound : 22번, Private 보안그룹의 Traffic
22번, Todo-db 보안그룹의 Traffic
② Private Security
- Private security group의 inbound 보안 규칙에 EICE 보안그룹 설정
③ EICE로 Instance연결


___________________________________________________________
Price Policy : https://instances.vantage.sh
** 비용 소모가 큰 Resource : NAT, EIP( Release ), EC2
비용 소모가 적은 Resource: VPC
'Infra' 카테고리의 다른 글
| AWS_Cloud_6th (0) | 2025.09.08 |
|---|---|
| AWS_Cloud_5th (0) | 2025.09.04 |
| AWS_CLOUD_2nd (3) | 2025.08.23 |
| Spring Cloud MSA_1 (0) | 2025.08.07 |