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

1. 핵심 개념 정리 (Concepts & Theory)

#핵심 개념간결한 설명
1클라우드 컴퓨팅 (Cloud Computing)인터넷을 통해 IT 리소스를 온디맨드(On-Demand) 로 제공하고, 종량제(Pay-as-you-go) 방식으로 사용한 만큼만 비용을 지불하는 모델입니다. 물리적 서버 구매 및 데이터센터 운영 없이 컴퓨팅, 스토리지, 네트워킹 자원을 사용할 수 있습니다.
2AWS 글로벌 인프라AWS는 전 세계에 리전(Region)가용 영역(Availability Zone, AZ) 으로 구성된 인프라를 운영합니다. 리전은 지리적으로 분리된 데이터센터 그룹이며, AZ는 리전 내에서 물리적으로 독립된 데이터센터입니다. 현재 30개 이상의 리전과 90개 이상의 AZ를 운영 중입니다.
3탄력성 (Elasticity)수요에 따라 리소스를 자동으로 확장(Scale Out)하거나 축소(Scale In)할 수 있는 특성입니다. Auto Scaling 을 통해 트래픽 증가 시 자동으로 인스턴스를 추가하고, 감소 시 제거하여 비용을 최적화합니다.
4AWS 주요 서비스컴퓨팅: EC2(가상 서버), Lambda(서버리스). 스토리지: S3(객체 스토리지), EBS(블록 스토리지). 데이터베이스: RDS(관계형 DB), DynamoDB(NoSQL). 네트워킹: VPC(가상 네트워크), CloudFront(CDN). 보안: IAM(권한 관리), KMS(키 관리). 관리: CloudWatch(모니터링), CloudTrail(감사 로그).
5AWS 프리 티어 (Free Tier)신규 가입자에게 12개월 동안 제한적으로 무료 서비스를 제공합니다. EC2 t2.micro(750시간/월), S3 5GB, RDS 750시간/월, Lambda 100만 요청/월 등이 포함됩니다. 일부 서비스는 영구 무료 제공됩니다.
6IAM (Identity and Access Management)AWS 리소스에 대한 액세스 제어 를 담당하는 서비스입니다. 사용자(User), 그룹(Group), 역할(Role), 정책(Policy) 으로 구성되며, “누가, 무엇을, 어떻게” 사용할 수 있는지를 JSON 정책 문서로 정의합니다.
7IAM 사용자 & 그룹IAM 사용자 는 개별 사용자 또는 애플리케이션에 대한 자격 증명입니다. 프로그래밍 방식 액세스(Access Key ID/Secret Access Key) 또는 콘솔 액세스(비밀번호)를 설정합니다. IAM 그룹 은 유사한 권한이 필요한 사용자들을 묶어 관리하는 단위로, 그룹에 정책을 연결하면 소속 사용자 모두에게 적용됩니다.
8IAM 정책 (Policy)JSON 형식으로 작성된 권한 정의 문서 입니다. Effect (Allow/Deny), Action (수행 가능한 작업), Resource (대상 리소스), Condition (적용 조건)으로 구성됩니다. AWS 관리형 정책 (AWS 제공), 고객 관리형 정책 (사용자 생성), 인라인 정책 (특정 엔티티에 직접 삽입)으로 구분됩니다.
9IAM 역할 (Role)임시 자격 증명 을 제공하는 엔티티로, 장기 자격 증명(Access Key) 없이 권한을 위임받습니다. EC2 인스턴스, Lambda 함수, 다른 AWS 계정, 외부 사용자(SAML, OIDC)가 역할을 “assume"하여 권한을 획득합니다. STS(Security Token Service)가 임시 토큰을 발급합니다.
10AWS Organizations여러 AWS 계정을 중앙에서 관리 하는 서비스입니다. 조직 단위(OU, Organizational Unit)로 계정을 그룹화하고, 통합 결제SCP(Service Control Policy) 로 계정 수준 권한을 제한합니다.

2. 실습 코드 & 응용 (Practice & Code Walkthrough)

(A) AWS CLI 기본 사용법

AWS CLI 설치 및 구성:

# AWS CLI 버전 확인
aws --version

# AWS CLI 설정 (Access Key ID, Secret Access Key, 리전 입력)
aws configure
# AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
# AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# Default region name [None]: ap-northeast-2
# Default output format [None]: json

# 현재 자격 증명 확인
aws sts get-caller-identity
# Output:
# {
#     "UserId": "AIDACKCEVSQ6C2EXAMPLE",
#     "Account": "123456789012",
#     "Arn": "arn:aws:iam::123456789012:user/developer"
# }

# 설정 파일 위치
~/.aws/credentials   # Access Key 저장
~/.aws/config        # 리전 및 출력 형식 저장

S3 기본 명령어:

# S3 버킷 목록 조회
aws s3 ls

# S3 버킷 생성
aws s3 mb s3://my-unique-bucket-name-20241203 --region ap-northeast-2

# 버킷에 파일 업로드
aws s3 cp test.txt s3://my-unique-bucket-name-20241203/

# 버킷 내 파일 목록 조회
aws s3 ls s3://my-unique-bucket-name-20241203/

# 파일 다운로드
aws s3 cp s3://my-unique-bucket-name-20241203/test.txt ./downloaded.txt

# 버킷 동기화 (로컬 디렉토리 → S3)
aws s3 sync ./local-folder s3://my-unique-bucket-name-20241203/backup/

# 버킷 삭제 (비어있어야 함)
aws s3 rb s3://my-unique-bucket-name-20241203

# 버킷 강제 삭제 (파일 포함)
aws s3 rb s3://my-unique-bucket-name-20241203 --force

EC2 기본 명령어:

# 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 서비스로 이동
  2. 좌측 메뉴 “사용자(Users)” 클릭 → “사용자 추가(Add user)”
  3. 사용자 세부 정보:
    • 사용자 이름: developer-john
    • AWS 액세스 유형: ☑ 프로그래밍 방식 액세스 (Access Key) ☑ AWS Management Console 액세스 (비밀번호)
  4. 권한 설정:
    • 기존 정책 직접 연결: “AmazonS3ReadOnlyAccess”
  5. 태그 추가 (선택사항):
    • Key: Department, Value: Engineering
  6. 검토 및 생성
  7. Access Key ID와 Secret Access Key 저장 (다시 볼 수 없음)

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

  1. IAM → 그룹(Groups) → “그룹 생성(Create group)”
  2. 그룹 이름: Developers
  3. 정책 연결:
    • AmazonEC2FullAccess
    • AmazonS3FullAccess
    • AmazonRDSReadOnlyAccess
  4. 그룹 생성 완료
  5. 사용자 → 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 인스턴스 시작/중지 권한 (특정 리전만):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:DescribeInstances"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": "ap-northeast-2"
        }
      }
    }
  ]
}

시간 기반 액세스 제어:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "*",
      "Condition": {
        "DateGreaterThan": {"aws:CurrentTime": "2024-01-01T00:00:00Z"},
        "DateLessThan": {"aws:CurrentTime": "2024-12-31T23:59:59Z"}
      }
    }
  ]
}

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

  1. IAM → 역할(Roles) → “역할 만들기(Create role)”
  2. 신뢰할 수 있는 엔터티 유형: AWS 서비스
  3. 사용 사례: EC2
  4. 권한 정책 연결: AmazonS3FullAccess
  5. 역할 이름: EC2-S3-Access-Role
  6. 역할 생성 완료

EC2 인스턴스에 역할 연결

  1. EC2 콘솔 → 인스턴스 선택 → 작업 → 보안 → IAM 역할 수정
  2. EC2-S3-Access-Role 선택 → 업데이트

EC2 인스턴스 내부에서 테스트

ssh ec2-user@ aws s3 ls # Access Key 없이 S3 접근 가능

(C) AWS Management Console 실습

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

  1. AWS Console → S3 서비스로 이동
  2. “버킷 만들기(Create bucket)” 클릭
  3. 버킷 설정:
    • 버킷 이름: my-first-bucket-20241203 (전역적으로 고유한 이름 필요)
    • AWS 리전: 아시아 태평양(서울) ap-northeast-2
    • 퍼블릭 액세스 차단: ☑ 모든 퍼블릭 액세스 차단 (기본값)
    • 버킷 버전 관리: 비활성화 (선택사항)
    • 태그: Key=Environment, Value=Learning
  4. 버킷 만들기 완료

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-first-bucket-20241203/*"
    }
  ]
}

(D) AWS Budgets 설정

예산 알림 설정 (과금 방지):

  1. AWS Console → Billing and Cost Management
  2. Budgets → “Create budget”
  3. 예산 유형: Cost budget
  4. 예산 설정:
    • 예산 이름: Monthly-Budget-10USD
    • 기간: Monthly
    • 예산 금액: $10.00
  5. 알림 설정:
  6. 예산 생성 완료

결과:

  • 월 사용 비용이 $8 (80%) 초과 시 이메일 알림 발송

CloudWatch Billing Alarm (대체 방법):

  1. CloudWatch 서비스로 이동 (us-east-1 리전 필수)
  2. Alarms → “Create alarm”
  3. 지표 선택: Billing → Total Estimated Charge
  4. 조건: Greater/Equal than $10
  5. 알림: SNS 주제 생성 → 이메일 추가
  6. 알람 생성 완료

3. 실무/보안 관점 분석 (Insight & Scenario Mapping)

분야적용 시나리오
클라우드 아키텍처 설계다층 아키텍처 구성: EC2(웹 서버) + RDS(데이터베이스) + S3(정적 파일) + CloudFront(CDN) + ELB(로드 밸런서)로 확장 가능한 3-Tier 아키텍처 구축. 고가용성 설계: 최소 2개 이상의 AZ에 리소스를 분산 배치하여 단일 장애점(SPOF) 제거. Auto Scaling Group으로 트래픽에 따라 자동 확장/축소. 재해 복구(DR): 다중 리전 배포로 리전 장애 대비. S3 Cross-Region Replication으로 데이터 백업. 비용 최적화: Reserved Instances(1년/3년 약정)로 최대 75% 비용 절감, Spot Instances로 단기 워크로드 처리.
보안 & 컴플라이언스IAM 보안 강화: 루트 계정 MFA 필수 활성화, 루트 계정 Access Key 삭제, IAM 사용자별 개별 자격 증명 부여, 비밀번호 정책 강화(최소 14자, 대소문자/숫자/특수문자 혼합, 90일 만료). 최소 권한 원칙: IAM Policy Simulator로 권한 테스트 후 적용, 불필요한 *:* 권한 제거. Access Key 관리: 90일마다 교체, CloudTrail로 사용 이력 추적, 코드에 하드코딩 금지(환경 변수 또는 Secrets Manager 사용), 미사용 키 삭제.
DevOps & 자동화Infrastructure as Code (IaC): AWS CloudFormation 또는 Terraform으로 인프라를 코드화하여 버전 관리 및 재현 가능한 배포. CI/CD 파이프라인: CodeCommit(Git 저장소) → CodeBuild(빌드) → CodeDeploy(배포) → CodePipeline(오케스트레이션)으로 자동화. Blue/Green 배포 또는 Canary 배포로 무중단 배포. 모니터링 & 알림: CloudWatch로 CPU, 메모리, 디스크 사용률 모니터링, 임계값 초과 시 SNS로 알림.
비용 관리 & FinOps태그 기반 비용 추적: 모든 리소스에 태그 부여(Environment=Production, Department=Engineering), Cost Allocation Tags로 부서별/프로젝트별 비용 분석. 예산 알림: AWS Budgets로 월 예산 설정 및 80% 도달 시 알림, Cost Anomaly Detection으로 비정상 비용 증가 자동 탐지. 리소스 최적화: Trusted Advisor로 활용도 낮은 EC2 인스턴스 식별 및 다운사이징, EBS 볼륨 미사용 스냅샷 삭제.
멀티 계정 전략AWS Organizations 구조: 루트 계정 아래 OU(Organizational Unit)로 계층 구성. 예: (1) Security OU(로그 수집, 보안 도구), (2) Production OU(운영 환경), (3) Development OU(개발/테스트). SCP로 계정 제한: Production OU에는 특정 리전만 사용 허용, Development OU에는 고비용 인스턴스 사용 금지. 통합 결제: 모든 계정의 사용량을 합산하여 볼륨 할인 적용.

4. 개인 인사이트 및 다음 단계 (Reflection & Next Steps)

  • 배운 점/느낀 점:

    • 클라우드의 패러다임 전환: 물리적 서버를 직접 구매하고 관리하던 On-Premise 환경과 달리, 클라우드는 “필요한 만큼, 필요한 때에” 리소스를 사용하는 완전히 다른 접근 방식임을 체감했습니다.
    • IAM의 중요성: AWS 보안의 핵심은 IAM임을 명확히 깨달았습니다. 루트 계정 노출, 과도한 권한 부여, Access Key 하드코딩 등 IAM 설정 실수가 대형 데이터 유출 사고로 이어지는 사례가 많습니다.
    • 정책 작성의 어려움: IAM 정책 JSON 문법이 처음에는 복잡하게 느껴졌지만, Effect-Action-Resource-Condition 구조를 이해하니 명확해졌습니다.
    • 역할(Role)의 강점: Access Key를 코드나 인스턴스에 하드코딩하지 않고, IAM 역할로 임시 자격 증명을 부여하는 방식이 훨씬 안전하다는 것을 실습으로 확인했습니다.
    • 비용 관리의 필요성: 프리 티어가 있지만, 한도를 초과하면 즉시 과금되므로 CloudWatch Billing Alarm과 AWS Budgets 설정이 필수입니다.
  • 심화 방향:

    • EC2 인스턴스 배포: 실제 웹 서버를 EC2에 배포하고, Security Group 설정, Elastic IP 할당, SSH 접속 실습. Auto Scaling과 Load Balancer 연동으로 확장 가능한 아키텍처 구성.
    • VPC 네트워킹: VPC, Subnet, Internet Gateway, NAT Gateway, Route Table, Security Group, NACL 구성. Public Subnet과 Private Subnet 분리, Bastion Host를 통한 안전한 SSH 접속.
    • CloudFormation/Terraform: 인프라를 코드로 관리하는 IaC 실습. VPC부터 EC2, RDS까지 전체 스택을 템플릿으로 정의하고 자동 배포.
    • 보안 강화: GuardDuty(위협 탐지), AWS Config(규정 준수 점검), Security Hub(통합 보안 대시보드), Secrets Manager(비밀번호 암호화 저장) 실습.
    • Well-Architected Framework 학습: AWS의 5가지 기둥(Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization) 기반으로 아키텍처 설계 원칙 습득.

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

AWS 주요 서비스 & 포트 번호

서비스 카테고리서비스명설명포트/프로토콜보안 고려사항
컴퓨팅EC2가상 서버22(SSH), 80(HTTP), 443(HTTPS)Security Group 최소 권한, Key Pair 안전 보관, IMDSv2 사용
Lambda서버리스 함수N/A실행 역할 최소 권한, 환경 변수 암호화, VPC 연결 시 NAT Gateway
스토리지S3객체 스토리지443(HTTPS)퍼블릭 액세스 차단, 버킷 정책 최소 권한, Versioning 활성화, 암호화(SSE-S3/SSE-KMS)
EBS블록 스토리지 (EC2 연결)N/A볼륨 암호화, 스냅샷 정기 백업, 미사용 볼륨 삭제
데이터베이스RDS관계형 DB (MySQL, PostgreSQL 등)3306(MySQL), 5432(PostgreSQL)Private Subnet 배치, Security Group 최소 허용, SSL/TLS 연결, 자동 백업
DynamoDBNoSQL DB443(HTTPS API)IAM 정책으로 테이블 접근 제어, Point-in-Time Recovery
네트워킹VPC가상 사설 네트워크N/APublic/Private Subnet 분리, NACL + Security Group 다층 방어, VPC Flow Logs
CloudFrontCDN80, 443Origin Access Control(OAC), HTTPS 강제, WAF 연동, Geo Restriction
보안IAM액세스 관리N/A루트 계정 MFA, 최소 권한, Access Key 교체, CloudTrail 로깅
KMS키 관리 서비스443(HTTPS API)키 자동 교체, Key Policy 최소 권한, CloudTrail로 사용 추적
모니터링CloudWatch모니터링 & 로그N/AMetric Filter로 이상 탐지, 알람 설정, Logs Insights로 분석
CloudTrailAPI 감사 로그N/A모든 리전 활성화, S3 버킷 암호화, Log File Validation
GuardDuty위협 탐지N/A자동 활성화 권장, SNS 알림 연동

IAM 정책 JSON 키워드 정리

요소설명예시
Version정책 언어 버전 (항상 “2012-10-17”)"Version": "2012-10-17"
Statement권한 정의 배열"Statement": [...]
EffectAllow(허용) 또는 Deny(거부)"Effect": "Allow"
Action수행 가능한 작업"Action": "s3:GetObject" 또는 "Action": ["s3:GetObject", "s3:PutObject"]
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"}}

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)

1. Operational Excellence (운영 우수성)

  • Infrastructure as Code (CloudFormation, Terraform)
  • 모니터링 및 로깅 (CloudWatch, X-Ray)
  • 장애 대응 프로세스 문서화
  • 정기적인 게임 데이 연습

2. Security (보안)

  • IAM 최소 권한 원칙
  • 데이터 암호화 (저장 시, 전송 중)
  • 다층 방어 (Security Group, NACL, WAF)
  • 보안 이벤트 탐지 (GuardDuty, Security Hub)

3. Reliability (안정성)

  • 다중 AZ 배포
  • Auto Scaling으로 자동 복구
  • 정기 백업 및 DR 계획
  • 장애 테스트 (Chaos Engineering)

4. Performance Efficiency (성능 효율성)

  • 적절한 인스턴스 타입 선택
  • 캐싱 (CloudFront, ElastiCache)
  • 모니터링 및 지속적 최적화
  • Serverless 아키텍처 활용

5. Cost Optimization (비용 최적화)

  • Reserved Instances / Savings Plans
  • Auto Scaling으로 유휴 리소스 제거
  • S3 Lifecycle Policy
  • Cost Explorer로 비용 분석

리전 선택 기준표

고려 사항세부 내역
지연시간(Latency)사용자와 가까운 리전 선택. 예: 한국 사용자 → 서울(ap-northeast-2), 미국 사용자 → 버지니아(us-east-1)
비용(Pricing)리전마다 요금 차이 존재. 일반적으로 us-east-1이 가장 저렴하고, 아시아/유럽 리전이 비쌈
컴플라이언스(Compliance)데이터 주권 법규. 예: EU GDPR 준수 시 EU 리전(eu-west-1) 필수, 한국 개인정보보호법 고려 시 서울 리전
서비스 가용성모든 리전에서 모든 서비스 제공 안 됨. 신규 서비스는 주로 us-east-1부터 출시
재해 복구(DR)다중 리전 배포 시 지리적으로 멀리 떨어진 리전 선택 (예: 서울 + 오하이오)