0Pricing
AWS Solutions Architect · 강의

보안 아키텍처 시나리오

IAM 최소 권한, 암호화, VPC 격리 및 WAF/Shield에 관한 시나리오 문제를 풀며 보안 영역 지식을 확실히 다집니다.

보안 아키텍처 시나리오은(는) CoddyKit의 무료 AWS Solutions Architect 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AWS Solutions Architect 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

시나리오 1: 최소 권한 EC2 S3 액세스

시나리오: EC2 인스턴스에서 특정 S3 버킷의 객체를 읽어야 하는 웹 애플리케이션이 실행되고 있습니다. 보안 팀은 인스턴스에 장기 자격 증명을 저장하지 않고 액세스에 최소 권한 원칙을 적용할 것을 요구합니다. 해결 방법: 특정 버킷 ARN에 대해서만 s3:GetObject을 허용하는 정책이 포함된 IAM 역할을 생성하십시오. 이 역할을 인스턴스 프로필로 EC2 인스턴스에 연결하십시오. 애플리케이션은 인스턴스 메타데이터 서비스(IMDS)를 사용하여 임시 자격 증명을 자동으로 가져오므로 저장된 키가 필요하지 않습니다.

# IAM policy for least-privilege EC2 -> S3 read
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Action': ['s3:GetObject'],
    'Resource': 'arn:aws:s3:::my-app-bucket/*'
  }]
}

# Attach role to EC2 instance
aws ec2 associate-iam-instance-profile \
  --instance-id i-1234567890abcdef0 \
  --iam-instance-profile Name=EC2S3ReadRole

시나리오 2: RDS 데이터베이스의 데이터 암호화

시나리오: 한 회사가 RDS PostgreSQL 데이터베이스에 고객 PII를 저장합니다. 규정 준수 팀은 키 사용을 감사할 수 있는 미사용 데이터 암호화를 요구합니다. 해결 방법: Customer Managed Key(CMK)를 사용하여 AWS KMS로 RDS 암호화를 활성화하십시오. CMK를 사용하면 보안 팀이 키 교체를 제어하고, CloudTrail에서 키 사용을 확인하며, 필요한 경우 액세스를 취소할 수 있습니다. 참고: RDS 인스턴스를 생성할 때 암호화를 활성화해야 합니다. 암호화되지 않은 기존 RDS 인스턴스를 현재 위치에서 암호화할 수는 없습니다. 기존 데이터베이스를 암호화하려면 스냅샷을 생성하고, 암호화를 활성화한 상태로 복사한 다음, 암호화된 스냅샷에서 복원하십시오.

# Create an encrypted RDS instance
aws rds create-db-instance \
  --db-instance-identifier prod-postgres \
  --db-instance-class db.t3.medium \
  --engine postgres \
  --master-username admin \
  --master-user-password SecurePass123! \
  --storage-encrypted \
  --kms-key-id arn:aws:kms:us-east-1:123456789012:key/mrk-abc123 \
  --allocated-storage 100

시나리오 3: S3 버킷 — 퍼블릭 액세스 차단

시나리오: 한 개발자가 실수로 S3 버킷을 퍼블릭으로 설정하여 고객 데이터가 노출되었습니다. 보안 팀은 개발자가 시도하더라도 계정의 어떤 S3 버킷도 퍼블릭으로 설정되지 않도록 하려고 합니다. 해결 방법: 계정 수준에서 S3 Block Public Access를 활성화하십시오. 이 설정은 개별 팀이 어떻게 구성하든 퍼블릭 액세스를 허용하는 버킷 수준 정책이나 ACL보다 우선합니다. 또한 AWS Config 규칙(s3-bucket-public-read-prohibited)을 사용하여 규정을 준수하지 않는 버킷을 지속적으로 탐지하고 알림을 생성하십시오.

# Block all public access at account level
aws s3control put-public-access-block \
  --account-id 123456789012 \
  --public-access-block-configuration \
    'BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true'

# Deploy Config rule to detect violations
aws configservice put-config-rule \
  --config-rule '{"ConfigRuleName": "s3-bucket-public-read-prohibited", "Source": {"Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"}}'

시나리오 4: 데이터베이스 계층의 VPC 격리

시나리오: 한 회사가 RDS 데이터베이스에 애플리케이션 서버에서만 액세스할 수 있고 인터넷에서는 액세스할 수 없도록 하려고 합니다. 해결 방법: 인터넷 게이트웨이 경로가 없는 프라이빗 서브넷에 RDS를 배치하십시오. RDS용 보안 그룹을 생성하여 포트 5432(PostgreSQL)의 인바운드 트래픽을 애플리케이션 서버 보안 그룹에서 오는 경우에만 허용하고, 어떤 IP 주소 범위에서도 허용하지 않도록 하십시오. 이렇게 하면 애플리케이션 서버가 침해되더라도 공격자가 VPC 외부에서 데이터베이스에 접근할 수 없으며, 보안 그룹 규칙으로 측면 이동도 제한됩니다.

# Create RDS security group allowing only the app tier SG as source
aws ec2 create-security-group \
  --group-name rds-sg \
  --description 'RDS security group' \
  --vpc-id vpc-abc123

aws ec2 authorize-security-group-ingress \
  --group-id sg-rds \
  --protocol tcp \
  --port 5432 \
  --source-group sg-app  # app tier security group ID only

시나리오 5: 데이터베이스 자격 증명 교체

시나리오: 현재 애플리케이션 코드의 구성 파일에 데이터베이스 자격 증명이 하드코딩되어 있습니다. 보안 감사에서 이를 심각한 위험으로 지적했습니다. 해결 방법: 자격 증명을 AWS Secrets Manager에 저장하고 자동 교체를 구성하십시오(Secrets Manager에는 RDS용 Lambda 교체 함수가 기본 제공됩니다). 애플리케이션을 업데이트하여 런타임에 SDK를 사용해 Secrets Manager에서 자격 증명을 가져오도록 하십시오. 교체할 때마다 배포하지 않아도 애플리케이션이 자동으로 새로운 자격 증명을 가져옵니다. 완전 관리형 무중단 자격 증명 교체를 위해 RDS 보안 암호 교체 템플릿을 활성화하십시오.

# Store RDS credentials in Secrets Manager
aws secretsmanager create-secret \
  --name prod/myapp/rds \
  --secret-string '{"username":"admin","password":"OldPass123!","host":"rds-endpoint.amazonaws.com","port":5432}'

# Enable automatic rotation every 30 days
aws secretsmanager rotate-secret \
  --secret-id prod/myapp/rds \
  --rotation-lambda-arn arn:aws:lambda:us-east-1:123:function:SecretsManagerRDSPostgreSQLRotationSingleUser \
  --rotation-rules AutomaticallyAfterDays=30

시나리오 6: 비정상적인 API 활동 탐지

시나리오: 한 회사가 AWS 계정 자격 증명이 침해되어 예상하지 못한 위치에서 사용되는지 탐지하려고 합니다. 해결 방법: 모든 Region에서 Amazon GuardDuty를 활성화하십시오. GuardDuty는 기계 학습을 사용하여 CloudTrail 이벤트, VPC Flow Logs 및 DNS 로그를 분석하고, 평소와 다른 지역에서 발생한 API 호출, EC2에서의 비트코인 채굴 패턴, Tor 출구 노드와의 통신, 자격 증명 유출 패턴 등의 이상 징후를 탐지합니다. GuardDuty는 보안 팀에 SNS를 통해 자동으로 알림을 보내거나 지원 티켓을 생성하도록 EventBridge 규칙을 트리거할 수 있는 결과를 생성합니다.

# Enable GuardDuty in a Region
aws guardduty create-detector \
  --enable \
  --finding-publishing-frequency FIFTEEN_MINUTES

# EventBridge rule to react to GuardDuty HIGH severity findings
aws events put-rule \
  --name guardduty-high-severity \
  --event-pattern '{
    "source": ["aws.guardduty"],
    "detail-type": ["GuardDuty Finding"],
    "detail": {"severity": [{"numeric": [">=", 7]}]}
  }'

시나리오 7: 악성 요청 차단을 위한 WAF

시나리오: ALB 뒤에서 실행되는 웹 애플리케이션이 SQL 인젝션 공격을 받고 있습니다. 애플리케이션은 즉시 수정할 수 없습니다. 해결 방법: AWS WAF를 ALB에 연결하십시오. 사전에 구축된 SQL 인젝션 탐지 기능이 포함된 일반적인 위협을 위한 AWS Managed Rules 규칙 그룹(Core Rule Set + SQL Database 규칙 그룹)을 배포하십시오. WAF는 HTTP 요청이 ALB에 도달하기 전에 검사하고 공격 패턴과 일치하는 요청을 차단하므로 애플리케이션 코드 변경이 필요하지 않습니다. 또한 보안 분석을 위해 Kinesis Firehose로 WAF logging을 활성화하십시오.

# Create WAF Web ACL with SQL injection protection
aws wafv2 create-web-acl \
  --name AppProtection \
  --scope REGIONAL \
  --default-action Allow={} \
  --rules '[{
    "Name": "AWSManagedRulesSQLiRuleSet",
    "Priority": 1,
    "Statement": {
      "ManagedRuleGroupStatement": {
        "VendorName": "AWS",
        "Name": "AWSManagedRulesSQLiRuleSet"
      }
    },
    "OverrideAction": {"None": {}},
    "VisibilityConfig": {"SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "SQLi"}
  }]' \
  --region us-east-1

시나리오 8: 계정 간 AssumeRole

시나리오: 중앙 보안 계정에서 AWS Organisation의 모든 워크로드 계정에 읽기 전용 액세스하여 보안 감사를 실행해야 합니다. 해결 방법: 각 워크로드 계정에서 보안 계정이 계정 ID를 통해 역할을 맡을 수 있도록 허용하는 신뢰 정책이 포함된 IAM 역할을 생성하십시오. 읽기 전용 정책(예: SecurityAudit AWS 관리형 정책)을 연결하십시오. 중앙 계정의 보안 팀은 STS AssumeRole을 사용하여 각 워크로드 계정의 역할을 일시적으로 맡습니다. 이 방법은 최소 권한 원칙을 따르며, 워크로드 계정에 영구 IAM 사용자를 생성하지 않습니다.

# Trust policy in workload account (allows security account to assume role)
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'AWS': 'arn:aws:iam::SECURITY_ACCOUNT_ID:root'
    },
    'Action': 'sts:AssumeRole'
  }]
}

# From security account: assume role in workload account
aws sts assume-role \
  --role-arn arn:aws:iam::WORKLOAD_ACCOUNT_ID:role/SecurityAuditRole \
  --role-session-name audit-2024-01

시나리오 9: SCP로 작업 제한

시나리오: 한 회사가 AWS Organizations를 사용하며 비프로덕션 OU의 어떤 계정에서도 비용이 많이 드는 GPU 인스턴스를 시작하지 못하도록 하려고 합니다. 해결 방법: GPU 인스턴스 패밀리(p3, p4, g4, g5)에 대해 ec2:RunInstances를 거부하는 서비스 제어 정책(SCP)을 생성하여 비프로덕션 OU에 연결하십시오. SCP는 멤버 계정의 루트 사용자와 관리자 수준 IAM 사용자에게도 적용되며, 계정의 어떤 자격 주체도 재정의할 수 없는 보호 장치로 작동합니다. 이를 통해 개발 및 테스트 계정에서 실수로 또는 악의적으로 큰 비용이 발생하는 일을 방지할 수 있습니다.

# SCP to deny GPU instance types in non-prod OU
{
  'Version': '2012-10-17',
  'Statement': [{
    'Sid': 'DenyGPUInstances',
    'Effect': 'Deny',
    'Action': 'ec2:RunInstances',
    'Resource': 'arn:aws:ec2:*:*:instance/*',
    'Condition': {
      'StringLike': {
        'ec2:InstanceType': ['p3.*', 'p4d.*', 'g4.*', 'g5.*']
      }
    }
  }]
}

시나리오 10: 규정 준수를 위한 감사 추적

시나리오: 금융 서비스 회사가 모든 AWS API 호출이 기록되고, 변조가 방지되며, 7년 동안 보존된다는 사실을 감사 담당자에게 입증해야 합니다. 해결 방법: 로그를 logging 계정의 전용 S3 버킷으로 전달하는 다중 리전 AWS CloudTrail 추적을 생성하십시오. 로그 파일 무결성 검증(로그 변조를 탐지하는 암호화 다이제스트 파일)을 활성화하십시오. logging 버킷에 7년의 보존 기간을 적용하는 Compliance 모드의 S3 Object Lock 정책을 설정하십시오. 이렇게 하면 필요한 보존 기간 동안 루트 사용자조차 로그를 삭제하거나 수정할 수 없습니다.

# Create multi-region trail with integrity validation
aws cloudtrail create-trail \
  --name compliance-trail \
  --s3-bucket-name central-audit-logs-123 \
  --is-multi-region-trail \
  --enable-log-file-validation \
  --include-global-service-events

aws cloudtrail start-logging --name compliance-trail

시나리오 11: 프라이빗 S3 액세스를 위한 VPC Endpoint

시나리오: 프라이빗 VPC의 EC2 인스턴스가 트래픽을 퍼블릭 인터넷으로 전송하지 않고 S3에 액세스해야 합니다. 현재 NAT Gateway를 사용하고 있으며, NAT Gateway 데이터 처리 요금으로 인해 비용이 높습니다. 해결 방법: S3 Gateway VPC Endpoint를 생성하십시오. 프라이빗 서브넷의 라우팅 테이블에 S3 접두사 목록을 엔드포인트로 가리키는 경로 항목을 추가하십시오. 이제 S3로 향하는 트래픽은 AWS 네트워크 백본 내부에만 머무르므로 NAT Gateway와 인터넷 게이트웨이가 필요하지 않습니다. S3 Gateway Endpoint는 무료입니다(시간당, AZ별 요금이 부과되는 Interface Endpoint와 다릅니다). 또한 퍼블릭 인터넷 경로에서 S3 액세스를 제거하여 보안도 향상됩니다.

# Create S3 Gateway VPC Endpoint
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-abc123 \
  --service-name com.amazonaws.us-east-1.s3 \
  --route-table-ids rtb-private-1a rtb-private-1b

# Result: route table automatically gets a route:
# Destination: pl-63a5400a (S3 prefix list)
# Target: vpce-xyz456 (the Gateway Endpoint)
# EC2 instances now reach S3 privately at no endpoint cost

빠른 확인

이 단원에서 배운 AWS Solutions Architect (SAA-C03) 개념을 이해했는지 확인해 보세요.

단원 요약

이 단원에서는 자격 증명 없이 EC2에 액세스하기 위한 IAM 역할 및 인스턴스 프로필, 데이터베이스 자격 증명을 자동으로 교체하기 위한 Secrets Manager, 코드를 변경하지 않고 삽입 공격을 차단하기 위한 AWS WAF, 변조를 방지하는 규정 준수 로그를 위한 CloudTrail과 S3 Object Lock에 관한 시나리오를 살펴보았습니다. 다음으로는 복원력이 높고 가용성이 뛰어난 아키텍처 시나리오를 다룹니다.

자주 묻는 질문

“보안 아키텍처 시나리오” 강의는 무료인가요?

네 — “보안 아키텍처 시나리오” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AWS Solutions Architect 강의 전체를 잠금 해제할 수 있습니다. AWS Solutions Architect 강의에는 총 4개의 강의가 포함되어 있습니다.

“보안 아키텍처 시나리오”에서 뭘 배우나요?

IAM 최소 권한, 암호화, VPC 격리 및 WAF/Shield에 관한 시나리오 문제를 풀며 보안 영역 지식을 확실히 다집니다. 브라우저에서 직접 실행하는 실습 코드로 AWS Solutions Architect을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AWS Solutions Architect을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AWS Solutions Architect은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“보안 아키텍처 시나리오” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AWS Solutions Architect 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AWS Solutions Architect 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 보안 아키텍처 시나리오
  2. 복원력 있고 고가용성인 아키텍처 시나리오
  3. 고성능 및 비용 최적화 시나리오
  4. 혼합 영역 종합 미니 시험
← AWS Solutions Architect(으)로 돌아가기