📄 2025.12.03 (Day 28) - AWS 클라우드 기초: AWS 개요, 계정 관리, IAM 서비스


1. 핵심 개념 정리

# 핵심 개념 간결한 설명 실무/보안 관점에서의 중요성
1 클라우드 컴퓨팅 인터넷을 통해 IT 리소스를 온디맨드(On-Demand) 로 제공하고, 종량제(Pay-as-you-go) 방식으로 사용한 만큼만 비용을 지불하는 모델입니다. 자본 비용을 운영 비용으로 전환하여 초기 투자 부담을 제거합니다. 용량 추정 없이 필요한 만큼 즉시 확장/축소 가능하며, 전 세계 배포가 몇 분 만에 가능합니다.
2 AWS 글로벌 인프라 전 세계에 리전(Region)가용 영역(AZ) 으로 구성된 인프라를 운영합니다. 리전은 지리적으로 분리된 데이터센터 그룹이며, AZ는 리전 내 물리적으로 독립된 데이터센터입니다. 고가용성(HA)재해 복구(DR) 를 위해 다중 AZ 배포가 필수입니다. 리전 선택 시 지연시간, 컴플라이언스(데이터 주권), 비용, 서비스 가용성을 고려해야 합니다.
3 탄력성 (Elasticity) 수요에 따라 리소스를 자동으로 확장(Scale Out) 하거나 축소(Scale In) 할 수 있는 특성입니다. Auto Scaling을 통해 트래픽 증가 시 자동으로 인스턴스를 추가하고, 감소 시 제거하여 비용을 최적화합니다. 트래픽 급증 시 서비스 중단 방지비용 효율성을 동시에 달성합니다.
4 AWS 주요 서비스 컴퓨팅(EC2, Lambda), 스토리지(S3, EBS), 데이터베이스(RDS, DynamoDB), 네트워킹(VPC, CloudFront), 보안(IAM, KMS), 관리(CloudWatch, CloudTrail)로 구성됩니다. 각 서비스를 조합하여 사용해야 효과적입니다. 예: EC2(웹 서버) + RDS(DB) + S3(정적 파일) + CloudFront(CDN) + ELB(로드 밸런서).
5 AWS 프리 티어 신규 가입자에게 12개월 동안 제한적으로 무료 서비스를 제공합니다. EC2 t2.micro(750시간/월), S3 5GB, RDS 750시간/월, Lambda 100만 요청/월 등이 포함됩니다. 학습 및 테스트 환경 구축에 적합합니다. 단, 프리 티어 한도 초과 시 과금 발생에 주의해야 하며, CloudWatch Billing Alarm 설정이 필수입니다.
6 IAM (Identity and Access Management) AWS 리소스에 대한 액세스 제어를 담당하는 서비스입니다. 사용자(User), 그룹(Group), 역할(Role), 정책(Policy) 으로 구성됩니다. 보안의 핵심입니다. 루트 계정 사용 최소화, MFA 활성화, 최소 권한 원칙(Least Privilege), 역할 기반 접근 제어가 필수입니다.
7 IAM 사용자 & 그룹 IAM 사용자는 개별 사용자 또는 애플리케이션에 대한 자격 증명입니다. IAM 그룹은 유사한 권한이 필요한 사용자들을 묶어 관리하는 단위로, 그룹에 정책을 연결하면 소속 사용자 모두에게 적용됩니다. 권한 관리의 간소화를 위해 개별 사용자가 아닌 그룹에 권한을 할당해야 합니다. 예: Developers 그룹(EC2, S3 읽기/쓰기), Administrators 그룹(모든 권한).
8 IAM 정책 (Policy) JSON 형식으로 작성된 권한 정의 문서입니다. Effect(Allow/Deny), Action(수행 가능한 작업), Resource(대상 리소스), Condition(적용 조건)으로 구성됩니다. 최소 권한 원칙을 준수해야 합니다. 너무 넓은 권한(예: :)은 보안 위험이 높습니다. Explicit Deny가 Explicit Allow보다 우선합니다.
9 IAM 역할 (Role) 임시 자격 증명을 제공하는 엔티티로, 장기 자격 증명(Access Key) 없이 권한을 위임받습니다. EC2 인스턴스, Lambda 함수, 다른 AWS 계정 등이 역할을 assume하여 권한을 획득합니다. Access Key 하드코딩을 방지하여 보안을 강화합니다. EC2 인스턴스가 S3에 접근할 때 Access Key 대신 IAM 역할을 사용하는 것이 Best Practice입니다.
10 AWS Organizations 여러 AWS 계정을 중앙에서 관리하는 서비스입니다. 조직 단위(OU)로 계정을 그룹화하고, 통합 결제SCP(Service Control Policy) 로 계정 수준 권한을 제한합니다. 대규모 조직의 거버넌스비용 절감에 필수입니다. Production OU와 Development OU를 분리하여 서로 다른 정책 적용이 가능합니다.

2. 실습 내용

(A) AWS CLI 기본 사용법

AWS CLI 설치 및 구성:

  • aws –version → CLI 버전 확인
  • aws configure → 설정 (Access Key ID, Secret Access Key, 리전, 출력 형식 순서로 입력)
    • Default region name: ap-northeast-2 (서울)
    • Default output format: json
  • aws sts get-caller-identity → 현재 자격 증명 확인 (UserId, Account, Arn 출력)
  • 설정 파일 위치:
    • ~/.aws/credentials → Access Key 저장
    • ~/.aws/config → 리전 및 출력 형식 저장

S3 기본 명령어:

  • aws s3 ls → S3 버킷 목록 조회
  • aws s3 mb s3://my-unique-bucket-name-20251203 –region ap-northeast-2 → 버킷 생성
  • aws s3 cp test.txt s3://my-unique-bucket-name-20251203/ → 파일 업로드
  • aws s3 ls s3://my-unique-bucket-name-20251203/ → 버킷 내 파일 목록
  • aws s3 cp s3://my-unique-bucket-name-20251203/test.txt ./downloaded.txt → 파일 다운로드
  • aws s3 sync ./local-folder s3://my-unique-bucket-name-20251203/backup/ → 디렉터리 동기화
  • aws s3 rb s3://my-unique-bucket-name-20251203 –force → 버킷 강제 삭제 (파일 포함)

EC2 기본 명령어:

  • aws ec2 describe-instances → EC2 인스턴스 목록
  • aws ec2 describe-instances –region us-east-1 → 특정 리전 인스턴스 목록
  • aws ec2 describe-instances –filters “Name=instance-state-name,Values=running” → 실행 중만 필터링
  • aws ec2 describe-security-groups → 보안 그룹 목록

(B) IAM 사용자 및 정책 생성 실습

1. IAM 사용자 생성 (Console):

  1. AWS Management Console → IAM → 사용자(Users) → 사용자 추가
  2. 사용자 이름: developer-john
  3. 액세스 유형: 프로그래밍 방식 액세스 + AWS Console 액세스
  4. 권한 설정: AmazonS3ReadOnlyAccess 연결
  5. 태그 추가: Key=Department, Value=Engineering
  6. Access Key ID와 Secret Access Key 저장 (다시 볼 수 없음)

2. IAM 그룹 생성 및 사용자 추가:

  1. IAM → 그룹(Groups) → 그룹 생성 → 그룹 이름: Developers
  2. 정책 연결: AmazonEC2FullAccess, AmazonS3FullAccess, AmazonRDSReadOnlyAccess
  3. 사용자 → developer-john → 그룹 탭 → 그룹에 사용자 추가

3. IAM 정책 JSON 구조:

S3 특정 버킷 읽기 권한 예시:

  • Version: “2012-10-17”
  • Statement:
    • Effect: Allow, Action: s3:ListBucket, Resource: arn:aws:s3:::company-data
    • Effect: Allow, Action: s3:GetObject, Resource: arn:aws:s3:::company-data/*

EC2 인스턴스 시작/중지 권한 (특정 리전만):

  • Effect: Allow
  • Action: ec2:StartInstances, ec2:StopInstances, ec2:DescribeInstances
  • Resource: *
  • Condition: StringEquals → aws:RequestedRegion → ap-northeast-2

시간 기반 액세스 제어 예시:

  • Effect: Allow, Action: s3:*
  • Condition: DateGreaterThan(aws:CurrentTime: 2025-01-01) AND DateLessThan(aws:CurrentTime: 2025-12-31)

4. IAM 역할 생성 (EC2 → S3 접근):

  1. IAM → 역할(Roles) → 역할 만들기
  2. 신뢰할 수 있는 엔터티: AWS 서비스 → EC2
  3. 권한 정책 연결: AmazonS3FullAccess
  4. 역할 이름: EC2-S3-Access-Role
  5. EC2 콘솔 → 인스턴스 선택 → 작업 → 보안 → IAM 역할 수정 → EC2-S3-Access-Role 선택
  6. EC2 인스턴스 내부에서 aws s3 ls 실행 → Access Key 없이 S3 접근 가능

(C) AWS Management Console 실습

S3 버킷 생성 및 파일 업로드:

  1. AWS Console → S3 → 버킷 만들기
  2. 버킷 이름: my-first-bucket-20251203 (전역적으로 고유한 이름 필요)
  3. AWS 리전: 아시아 태평양(서울) ap-northeast-2
  4. 퍼블릭 액세스 차단: 모든 퍼블릭 액세스 차단 (기본값, 권장)
  5. 태그: Key=Environment, Value=Learning
  6. 버킷 생성 후 파일 업로드 → 객체 URL 확인 (퍼블릭 차단 시 403 Forbidden)

버킷 정책으로 퍼블릭 읽기 허용 (보안 위험 주의):

  • 적용 방법:
    1. 버킷 → 권한(Permissions) 탭 → 퍼블릭 액세스 차단 설정 편집 → 체크 해제
    2. 버킷 정책 편집 → JSON 정책 붙여넣기
    3. 정책 내용: Effect: Allow, Principal: “”, Action: s3:GetObject, Resource: arn:aws:s3:::my-first-bucket-20251203/
  • 결과: 브라우저에서 객체 URL 접근 → 파일 내용 표시

(D) AWS Budgets 설정 (과금 방지)

예산 알림 설정:

  1. AWS Console → Billing and Cost Management → Budgets → Create budget
  2. 예산 유형: Cost budget
  3. 예산 이름: Monthly-Budget-10USD, 기간: Monthly, 예산 금액: $10.00
  4. 알림 설정: Actual cost >= 80% 도달 시 이메일 알림
  • 결과: 월 사용 비용이 $8 초과 시 이메일 알림 발송

CloudWatch Billing Alarm (대체 방법):

  1. CloudWatch 서비스 이동 (us-east-1 리전 필수)
  2. Alarms → Create alarm → Billing → Total Estimated Charge
  3. 조건: Greater/Equal than $10 → SNS 주제 생성 → 이메일 추가

3. 실무/보안 관점 분석

분야 적용 시나리오
클라우드 아키텍처 설계 다층 아키텍처: EC2(웹 서버) + RDS(DB) + S3(정적 파일) + CloudFront(CDN) + ELB(로드 밸런서)로 3-Tier 아키텍처 구축. 고가용성 설계: 최소 2개 이상의 AZ에 리소스 분산 배치로 단일 장애점(SPOF) 제거. 재해 복구: 다중 리전 배포, S3 Cross-Region Replication으로 데이터 백업.
보안 & 컴플라이언스 IAM 보안 강화: 루트 계정 MFA 필수 활성화, 루트 계정 Access Key 삭제, 비밀번호 정책 강화(최소 14자, 대소문자/숫자/특수문자, 90일 만료). 최소 권한 원칙: IAM Policy Simulator로 권한 테스트, 불필요한 : 권한 제거. Access Key 관리: 90일마다 교체, CloudTrail로 사용 이력 추적, 코드에 하드코딩 금지.
DevOps & 자동화 Infrastructure as Code: AWS CloudFormation 또는 Terraform으로 인프라를 코드화하여 버전 관리. CI/CD 파이프라인: CodeCommit → CodeBuild → CodeDeploy → CodePipeline으로 자동화. 모니터링: CloudWatch로 CPU, 메모리, 디스크 사용률 모니터링, 임계값 초과 시 SNS 알림.
비용 관리 & FinOps 태그 기반 비용 추적: 모든 리소스에 태그 부여(Environment, Department, Project), 부서별/프로젝트별 비용 분석. 예산 알림: AWS Budgets로 월 예산 설정, Cost Anomaly Detection으로 비정상 비용 증가 자동 탐지. 리소스 최적화: Trusted Advisor로 활용도 낮은 EC2 인스턴스 식별, 미사용 EBS 스냅샷/Elastic IP 삭제.

4. 개인 인사이트 및 다음 단계

  • 배운 점/느낀 점: 클라우드는 “필요한 만큼, 필요한 때에” 리소스를 사용하는 완전히 다른 접근 방식임을 체감했습니다. AWS 보안의 핵심은 IAM임을 명확히 깨달았습니다. 루트 계정 노출, 과도한 권한 부여, Access Key 하드코딩 등 IAM 설정 실수가 대형 데이터 유출 사고로 이어지는 사례가 많으므로, “최소 권한 원칙"과 “역할 기반 접근 제어"를 처음부터 습관화해야겠습니다.
  • 심화 방향: EC2 인스턴스 배포(Security Group, Elastic IP, Auto Scaling, Load Balancer 연동), VPC 네트워킹(Public/Private Subnet 분리, Bastion Host), RDS 데이터베이스(Multi-AZ), S3 심화(버전 관리, Lifecycle Policy, CloudFront CDN), CloudFormation/Terraform IaC 실습을 목표로 합니다.

5. 추가 참고사항 (Quick Reference)

AWS 주요 서비스 & 보안 고려사항

서비스 카테고리 서비스명 설명 보안 고려사항
컴퓨팅 EC2 가상 서버 Security Group 최소 권한, Key Pair 안전 보관, IMDSv2 사용
Lambda 서버리스 함수 실행 역할 최소 권한, 환경 변수 암호화
스토리지 S3 객체 스토리지 퍼블릭 액세스 차단, 버킷 정책 최소 권한, 암호화(SSE-S3/SSE-KMS)
EBS 블록 스토리지 볼륨 암호화, 스냅샷 정기 백업
데이터베이스 RDS 관계형 DB Private Subnet 배치, SSL/TLS 연결, 자동 백업
DynamoDB NoSQL DB IAM 정책으로 테이블 접근 제어, Point-in-Time Recovery
네트워킹 VPC 가상 사설 네트워크 Public/Private Subnet 분리, NACL + Security Group 다층 방어
CloudFront CDN HTTPS 강제, WAF 연동, Geo Restriction
Route 53 DNS 서비스 DNSSEC 활성화, Failover Routing
보안 IAM 액세스 관리 루트 계정 MFA, 최소 권한, Access Key 교체
KMS 키 관리 서비스 키 자동 교체, Key Policy 최소 권한
Secrets Manager 비밀번호 저장 자동 교체, VPC Endpoint 사용
모니터링 CloudWatch 모니터링 & 로그 Metric Filter로 이상 탐지, 알람 설정
CloudTrail API 감사 로그 모든 리전 활성화, S3 버킷 암호화
GuardDuty 위협 탐지 자동 활성화 권장, SNS 알림 연동

IAM 정책 JSON 키워드 정리

요소 설명 예시
Version 정책 언어 버전 (항상 “2012-10-17”) “Version”: “2012-10-17”
Statement 권한 정의 배열 “Statement”: […]
Effect Allow(허용) 또는 Deny(거부) “Effect”: “Allow”
Action 수행 가능한 작업 “Action”: “s3:GetObject”
Resource 대상 리소스 ARN “Resource”: “arn:aws:s3:::my-bucket/*”
Principal 주체 (리소스 기반 정책에서 사용) “Principal”: {“AWS”: “arn:aws:iam::123456789012:user/john”}
Condition 조건부 접근 제어 “Condition”: {“IpAddress”: {“aws:SourceIp”: “192.0.2.0/24”}}

자주 사용하는 Condition 연산자:

  • StringEquals: 문자열 완전 일치 (aws:username, aws:RequestedRegion)
  • StringLike: 와일드카드 포함 문자열 (s3:prefix)
  • IpAddress: 소스 IP 제한 (aws:SourceIp)
  • DateGreaterThan / DateLessThan: 시간 기반 제한
  • Bool: Boolean 값 (aws:SecureTransport → HTTPS 강제)
  • NumericLessThan: 숫자 비교 (s3:max-keys)

IAM 모범 사례 체크리스트

  • 루트 계정 MFA 활성화
  • 루트 계정 Access Key 삭제
  • 일상 작업용 IAM 사용자 생성 (Administrator 권한)
  • IAM 사용자 MFA 활성화
  • IAM 비밀번호 정책 강화 (최소 14자, 대소문자/숫자/특수문자)
  • 그룹 기반 권한 관리 (개별 사용자에게 직접 정책 연결 지양)
  • 최소 권한 원칙 적용 (: 권한 금지)
  • Access Key 90일마다 교체
  • 미사용 IAM 사용자 및 Access Key 삭제
  • EC2 인스턴스에 IAM 역할 연결 (Access Key 하드코딩 금지)
  • CloudTrail 활성화 (모든 API 호출 로깅)
  • IAM Access Analyzer로 외부 공유 리소스 점검

AWS Well-Architected Framework 5가지 기둥

기둥 핵심 원칙
Operational Excellence (운영 우수성) Infrastructure as Code, 모니터링 및 로깅, 장애 대응 프로세스 문서화
Security (보안) IAM 최소 권한, 데이터 암호화(저장 중/전송 중), 다층 방어, 보안 이벤트 탐지
Reliability (안정성) 다중 AZ 배포, Auto Scaling으로 자동 복구, 정기 백업 및 DR 계획
Performance Efficiency (성능 효율성) 적절한 인스턴스 타입 선택, 캐싱(CloudFront, ElastiCache), 서버리스 활용
Cost Optimization (비용 최적화) Reserved Instances/Savings Plans, Auto Scaling, S3 Lifecycle Policy

리전 선택 기준

고려 사항 세부 내역
지연시간 사용자와 가까운 리전. 한국 사용자 → 서울(ap-northeast-2)
비용 리전마다 요금 차이. 일반적으로 us-east-1이 가장 저렴
컴플라이언스 EU GDPR → EU 리전(eu-west-1), 한국 개인정보보호법 → 서울 리전
서비스 가용성 신규 서비스는 주로 us-east-1부터 출시
재해 복구 다중 리전 배포 시 지리적으로 멀리 떨어진 리전 선택 (서울 + 오하이오)

주요 리전 코드:

  • ap-northeast-2 → 아시아 태평양(서울)
  • ap-northeast-1 → 아시아 태평양(도쿄)
  • us-east-1 → 미국 동부(버지니아)
  • us-west-2 → 미국 서부(오레곤)
  • eu-west-1 → 유럽(아일랜드)