안녕하세요, 코린이의 코딩 학습기 채니 입니다.
"유데미" AWS 강의를 참고하여 포스팅한 개인 공부 내용입니다.
EC2 보안그룹
→ 보안 그룹을 이용해 EC2 인스턴스의 인바운드 / 아웃바운드 트래픽 제어
→ 허용 규칙만 허용
→ 인바운드 / 아웃바운드에 허용되는 대상 지정
→ 컴퓨터의 IP 주소 참조 혹은 보안 그룹이 서로 참조
참고사항
- 여러 인스턴스에 연결 가능 (하나의 인스턴스가 여러 보안 그룹을 가질 수 있음)
- 리전이나 특정 VPC 조합에 고정
- 다른 리전 혹은 VPC로 변경하면 새로 보안 그룹을 생성해야함
- EC2 외부에 위치
- ⭐️SSH 전용으로 별도의 보안 그룹을 관리하는 것이 좋음⭐️
- 타임아웃이 발생하면 보안 그룹 문제
- 기본적으로 모든 인바운드 트래픽은 차단 → 모든 아웃바운드 트래픽은 허용
⭐️주요 포트⭐️
- 22 (SSH / SFTP)
- 보안 셸
- 리눅스에서 EC2 인스턴스 로그인 시 사용
- SFTP → SSH를 이용한 파일 업로드 (보안 파일 전송 프로토콜)
- 21 (FTP)
- 파일 전송 프로토콜용
- 파일 공유에 파일 업로드 시 사용
- 80 (HTTP)
- 보안이 적용되지 않은 웹사이트에 액세스 시 사용
- 443 (HTTPS)
- 보안이 적용된 웹사이트
- 3389 (RDP)
- 원격 데스크톱 프로토콜용
- 윈도우 인스턴스 로그인 시 사용
SSH (보안 셸)
→ 유지 관리나 작업을 위해 서버 내부에 연결하기 위해 사용 (맥 or 리눅스 or window10 이상)
→ 터미널이나 커맨드 라인에서 원격 컴퓨터나 서버 제어
SSH를 이용해 EC2 인스턴스 내부 연결하는 방법
$ ssh ec2-user@3.143.230.26
ssh ec2-user
→ Amazon Linux 2 AMI는 이미 한 명의 사용자가 설정되어 있고, 해당 사용자 이름이 ec2-user
(EC2 인스턴스를 Amazon Linux 2 AMI로 만듦)
@
→ 특정 서버에서 해당 사용자에 액세스 하고 싶음을 의미
3.143.230.26
→ EC2 인스턴스의 공개 IP
→ 인스턴스 재시작 시 변경될 수 있음
The authenticity of host '3.143.230.26 (3.143.230.26)' can't be established.
ED25519 key fingerprint is SHA256:Sbu8+51KOWZzvcXWT7R3ALMlN4pfovj/JxbcbW0o/Dk.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '3.143.230.26' (ED25519) to the list of known hosts.
ec2-user@3.143.230.26: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
⚠️ 위 오류는 권한이 없음을 의미 (다운로드한 키를 지정하면 해결됨)
이전에 생성한 인증서를 다운받고, 이를 지정 (✅ 공백이 없어야함)
인증서가 있는 디렉토리로 이동하고, 접속 명령어 입력
$ pwd
/Users/parkchaeeun/study/aws
$ ssh -i EC2Tutorial.pem ec2-user@3.143.230.26
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'EC2Tutorial.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "EC2Tutorial.pem": bad permissions
ec2-user@3.143.230.26: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
보호되지 않은 키 파일이 존재한다는 오류 메세지가 확인되어 해당 권한을 변경해줘야 함
$ chmod 0400 EC2Tutorial.pem
$ ssh -i EC2Tutorial.pem ec2-user@3.143.230.26
, #_
~\_ ####_ Amazon Linux 2
~~ \_#####\
~~ \###| AL2 End of Life is 2025-06-30.
~~ \#/ ___
~~ V~' '->
~~~ / A newer version of Amazon Linux is available!
~~._. _/
_/ _/ Amazon Linux 2023, GA and supported until 2028-03-15.
_/m/' https://aws.amazon.com/linux/amazon-linux-2023/
12 package(s) needed for security, out of 15 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-172-31-39-119 ~]$
SSH를 이용해 EC2 인스턴스에 접속된 것을 확인할 수 있음
✅ chmod 0400 → 소유자의 읽기 권한 허용하는 리눅스 셸 명령어
https://www.ibm.com/docs/ko/i/7.4?topic=directories-chmod
명령어 입력
[ec2-user@ip-172-31-39-119 ~]$ whoami
ec2-user
[ec2-user@ip-172-31-39-119 ~]$ ping google.com
PING google.com (142.250.191.110) 56(84) bytes of data.
64 bytes from ord38s28-in-f14.1e100.net (142.250.191.110): icmp_seq=1 ttl=114 time=15.7 ms
64 bytes from ord38s28-in-f14.1e100.net (142.250.191.110): icmp_seq=2 ttl=114 time=15.8 ms
exit 혹은 ctrl+d를 입력하여 접속 해제할 수 있음
EC2 인스턴스 역할 데모
EC2 인스턴스에 접속해서 여러 작업을 수행할 수 있는데, 현재 나의 EC2 인스턴스는 aws CLI를 내부적으로 포함하고 있음
EC2 인스턴스 접속 후 iam user list 가져오기
$ aws iam list-users
Unable to locate credentials. You can configure credentials by running "aws configure".
현재 iam에 접근할 권한 설정이 안되어있으므로, aws configure 명령어를 통해 Access key ID / PWD 등을 입력해야 함.
하지만 해당 방법은 보안 상으로 최악!
이럴 때 사용할 수 있는 것이 IAM 역할
해당 IAM 역할을 EC2 인스턴스에 역결하여 자격 증명을 제공함
✅ 연결하는 법 → (IAM - Instance - Security - Modify IAM Role)
$ aws iam list-users
{
"Users": [
{
"UserName": "chany-dev",
"PasswordLastUsed": "2023-12-14T12:34:51Z",
"CreateDate": "2023-11-20T13:17:49Z",
"UserId": "AIDAXFK2SSD7E7AC4LXKY",
"Path": "/",
"Arn": "arn:aws:iam::492500586750:user/chany-dev"
}
]
}
EC2 인스턴스 구매 옵션
- EC2 On Demand (사용하는 만큼 요금 지불)
- Linux or Windows → 초당 비용 청구
- 이외 시스템 → 시간당 비용 청구
- 높은 가격이지만, 선결제가 없음
- 장기 약정 필요하지 않음
- 연속적인 단기 워크로드에 적합 (애플리케이션의 동작을 예측할 수 없을 때)
- EC2 Reserved (예약 인스턴스)
- 특정 인스턴스 속성 예약 (인스턴스 유형, 리전, 테넌시 및 OS ...)
- 온디맨드에 비해 비용을 약 72% 절약 가능
- 예약 기간을 1년 or 3년으로 지정
- 전체 선결제 / 부분 선결제 / 선결제 없이도 가능
- 특정 리전으로 범위 지정 or 특정 AZ 용량 예약하도록 영역 지정
- 애플리케이션이 안정된 상태로 사용되는 데이터베이스 등에 적합
- 전환형 예약 인스턴스도 있음
- 인스턴스 제품군, 운영체제 및 범위, 테넌시, 유형 변경 가능
- EC2 Savings Plans
- 장기 사용에 따른 할인 가능 (약 70%)
- 시간당 10달러의 비용을 1년 ~ 3년동안 약정
- 초과 사용량은 온디맨드 가격으로 청구
- 특정 인스턴스 제품군과 리전에 한해 사용 가능
- 인스턴스 크기에 구애 받지 않고, Linux ~ Windows간 전환 가능
- 테넌시 → 호스트, 전용 및 기본값 전환 가능
- EC2 Spot Instances
- 가장 파격적인 할인 제공 (약 90%)
- 인스턴스가 언제든 중단될 수 있음
- 스팟 인스턴스에 지불하고자 하는 가격보다 높아질 경우 인스턴스 중단
- 가장 비용 효율적
- 서비스가 중단되어도 복귀하기 쉬운 워크로드에 적합 (⭐️중요한 작업이나 데이터베이스 등에는 적합하지 않음⭐️)
- 배치 작업
- 데이터 분석
- 이미지 처리 및 분산된 워크로드
- 시작 및 종료 시점이 유동적인 워크로드 등
- EC2 Dedicated Hosts (전용 호스트)
- 사용 사례에 맞춘 EC2 인스턴스 용량을 가진 물리적 서버
- 소켓 or 코어 or VM 소프트웨어 라이선스 당 청구
- 가장 높은 가격대 (실제로 물리적인 서버를 예약하기 때문)
- 규정 준수 요구 사항이 있거나 기존 서버 결합 소프트웨어 라이선스, 사용자 라이선스를 사용해야 할 경우 적합
- 온디맨드로 초당 청구되거나 1년 or 3년 계약 가능
- EC2 Dedicated Instances (전용 인스턴스)
- 사용자의 전용 하드웨어에서 실행 (물리적 서버와 다름)
- 인스턴스 배치 제어 불가
전용 인스턴스와 전용 호스트의 차이점
1️⃣ 전용 인스턴스
→ 사용자 하드웨어에 고유한 인스턴스를 가짐
2️⃣ 전용 호스트
→ 물리적 서버 자체에 액세스하여 저수준 하드웨어에 대한 가시성 제공
EC2 Capacity Reservations (용량 예약)
- 원하는 기간 동안 특정 AZ에 온디맨드 인스턴스 예약 가능
- 이후 필요 시마다 해당 용량에 액세스
- 시간 약정이 없음 → 용량 예약 혹은 취소 언제든 가능
- 요금 할인 X
- 인스턴스 실행 여부와 관계없이 온디맨드 요금 청구
- 특정한 AZ에 위치하는 단기의 연속적인 워크로드에 적합
상황에 따른 적합한 EC2 인스턴스를 고르는 문제가 나온다고 하네...ㅎ..ㅠㅠ.. 어렵겠당..
블로그에 정리는 안했지만, 리조트를 예로 들어 설명해주는 거 계속 보면서 익히자! (43강)
'Cloud > AWS' 카테고리의 다른 글
AWS) Amazon EFS, EBS와 EFS 차이점 (0) | 2024.01.16 |
---|---|
AWS) EC2 인스턴스 스토리지 - EBS, AMI (1) | 2023.12.26 |
AWS) EC2 - 옵션 및 인스턴스 유형 (0) | 2023.11.30 |
AWS) IAM 역할, 보안도구 및 공통 책임 모델 (0) | 2023.11.29 |
AWS) IAM 및 AWS CLI (0) | 2023.11.20 |