โ† Data Protection & Disaster Recovery

ISMS-P 2.12.1 ์žฌํ•ดยท์žฌ๋‚œ ๋Œ€๋น„ ์•ˆ์ „์กฐ์น˜ High Risk

์žฌํ•ดยท์žฌ๋‚œ ๋Œ€๋น„ ์•ˆ์ „์กฐ์น˜๊ฐ€ ์ˆ˜๋ฆฝ๋˜์–ด ์žˆ๋Š”๊ฐ€?

ISMS-P 2.12.1์€ ์ž์—ฐ์žฌํ•ด, ํ†ต์‹ ยท์ „๋ ฅ ์žฅ์• , ํ•ดํ‚น ๋“ฑ IT ์žฌํ•ดยท์žฌ๋‚œ์— ๋Œ€๋น„ํ•œ ๋น„์ƒ๊ณ„ํš๊ณผ IT ์žฌํ•ด๋ณต๊ตฌ์ฒด๊ณ„๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” Multi-AZ ๊ณ ๊ฐ€์šฉ์„ฑ๊ณผ Multi-Region DR ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด RTO/RPO ๋ชฉํ‘œ๋ฅผ ์ถฉ์กฑํ•˜๋Š” ์—…๋ฌด์—ฐ์†์„ฑ ์ฒด๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‹

ISMS-P ์ธ์ฆ ๊ธฐ์ค€

ISMS-P 2.12.1 ์žฌํ•ดยท์žฌ๋‚œ ๋Œ€๋น„ ์•ˆ์ „์กฐ์น˜ ์š”๊ตฌ์‚ฌํ•ญ

2.12.1

์žฌํ•ดยท์žฌ๋‚œ ๋Œ€๋น„ ์•ˆ์ „์กฐ์น˜

์ธ์ฆ ๊ธฐ์ค€ ์ •์˜

"์ž์—ฐ์žฌํ•ด, ํ†ต์‹ ยท์ „๋ ฅ ์žฅ์• , ํ•ดํ‚น ๋“ฑ IT ์žฌํ•ดยท์žฌ๋‚œ ๋ฐœ์ƒ์— ๋Œ€๋น„ํ•˜์—ฌ ๋น„์ƒ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๊ณ , ๋น„์ƒ์‹œ ์—…๋ฌด์—ฐ์†์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก IT ์žฌํ•ด๋ณต๊ตฌ์ฒด๊ณ„๋ฅผ ๋งˆ๋ จํ•˜์—ฌ์•ผ ํ•œ๋‹ค."

๐Ÿ“Œ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ์ ์šฉ ํฌ์ธํŠธ

  • Multi-AZ ๊ณ ๊ฐ€์šฉ์„ฑ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„
  • Multi-Region DR(์žฌํ•ด๋ณต๊ตฌ) ์ฒด๊ณ„ ๊ตฌ์ถ•
  • RTO/RPO ๋ชฉํ‘œ์— ๋งž๋Š” DR ์ „๋žต ์„ ํƒ
  • AWS Elastic Disaster Recovery ํ™œ์šฉ
  • ์ •๊ธฐ์  DR ํ›ˆ๋ จ ๋ฐ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”

โš ๏ธ ๋ฏธ์ค€์ˆ˜ ์‹œ ์‹ฌ์‚ฌ ์˜ํ–ฅ

  • ๊ฒฐํ•จ: IT ์žฌํ•ด๋ณต๊ตฌ ๊ณ„ํš ๋ฏธ์ˆ˜๋ฆฝ ๋˜๋Š” ๋ฏธํก
  • ๊ฒฐํ•จ: RTO/RPO ๋ชฉํ‘œ ๋ฏธ์„ค์ •
  • ๊ฒฐํ•จ: DR ์ฒด๊ณ„ ๋ฏธ๊ตฌ์ถ• (๋‹จ์ผ AZ/๋ฆฌ์ „)
  • ๊ฒฐํ•จ: DR ํ›ˆ๋ จ/ํ…Œ์ŠคํŠธ ์žฅ๊ธฐ๊ฐ„ ๋ฏธ์‹ค์‹œ
๐Ÿ“„ KISA ISMS-P ์ธ์ฆ๊ธฐ์ค€ ์•ˆ๋‚ด์„œ โ†— โ˜๏ธ AWS DR ์ „๋žต ๊ฐ€์ด๋“œ โ†—
๐Ÿ“ฐ

์‹ค์ œ ๋ณด์•ˆ ์‚ฌ๊ณ  ์‚ฌ๋ก€

์žฌํ•ด๋ณต๊ตฌ ์ฒด๊ณ„ ๋ฏธํก์œผ๋กœ ๋ฐœ์ƒํ•œ ๋Œ€๊ทœ๋ชจ ์žฅ์• 

2025.09

๊ตญ๊ฐ€์ •๋ณด์ž์›๊ด€๋ฆฌ์› ํ™”์žฌ

๋Œ€์ „ ์ „์‚ฐ์‹ค ๋ฐฐํ„ฐ๋ฆฌ ํ™”์žฌ๋กœ 709๊ฐœ ์„œ๋น„์Šค ์˜ํ–ฅ. 858TB G๋“œ๋ผ์ด๋ธŒ ๋ฐ์ดํ„ฐ ์ „๋Ÿ‰ ์†Œ์‹ค. "3์‹œ๊ฐ„ ๋‚ด ๋ณต๊ตฌ" ์•ฝ์†ํ–ˆ์œผ๋‚˜ 4์ฃผ ์ด์ƒ ์†Œ์š”. ์•กํ‹ฐ๋ธŒ-์•กํ‹ฐ๋ธŒ ์ด์ค‘ํ™” ๋ฏธ๋„์ž…์ด ์›์ธ.

๐Ÿ’ก ๊ตํ›ˆ: ๋ฌผ๋ฆฌ์  ๋ถ„๋ฆฌ๋œ DR ์‚ฌ์ดํŠธ ํ•„์ˆ˜, Active-Active ๋˜๋Š” Warm Standby ์ฒด๊ณ„ ๊ตฌ์ถ•

์ถœ์ฒ˜: ๋‹ค์Œ ๋‰ด์Šค โ†—
2022.10

ํŒ๊ต ๋ฐ์ดํ„ฐ์„ผํ„ฐ ํ™”์žฌ (์นด์นด์˜ค)

SK C&C ํŒ๊ต ๋ฐ์ดํ„ฐ์„ผํ„ฐ ํ™”์žฌ๋กœ ์นด์นด์˜ค ์„œ๋น„์Šค ์ „๋ฉด ์ค‘๋‹จ. ์นด์นด์˜คํ†ก, ์นด์นด์˜ค๋งต ๋“ฑ 32๊ฐœ ์„œ๋น„์Šค 127์‹œ๊ฐ„ ์žฅ์• . ๋‹จ์ผ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ์˜์กด์œผ๋กœ 4์ฒœ๋งŒ ์‚ฌ์šฉ์ž ํ”ผํ•ด.

๐Ÿ’ก ๊ตํ›ˆ: ํ•ต์‹ฌ ์„œ๋น„์Šค๋Š” Multi-Site ๋˜๋Š” Multi-Region ์ด์ค‘ํ™” ํ•„์ˆ˜

์ถœ์ฒ˜: ITWorld โ†—
โšก

ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์œ„ํ—˜

AWS์—์„œ ์žฌํ•ด๋ณต๊ตฌ ์ฒด๊ณ„๊ฐ€ ๋ฏธํกํ•œ ์ƒํ™ฉ

AWS DR ์ „๋žต (RTO/RPO ๊ธฐ์ค€)

์ „๋žต RTO RPO ๋น„์šฉ ์„ค๋ช…
Backup & Restore ์ˆ˜ ์‹œ๊ฐ„ ์ˆ˜ ์‹œ๊ฐ„ $ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐฑ์—…, ํ•„์š”์‹œ ์ธํ”„๋ผ ์žฌ๊ตฌ์ถ•
Pilot Light ์ˆ˜์‹ญ ๋ถ„ ๋ถ„ ๋‹จ์œ„ $$ ์ตœ์†Œ ํ•ต์‹ฌ ์ธํ”„๋ผ ๋Œ€๊ธฐ, ๋ฐ์ดํ„ฐ ์‹ค์‹œ๊ฐ„ ๋ณต์ œ
Warm Standby ๋ถ„ ๋‹จ์œ„ ์ดˆ ๋‹จ์œ„ $$$ ์ถ•์†Œ๋œ ์ „์ฒด ํ™˜๊ฒฝ ์ƒ์‹œ ๊ฐ€๋™
Active-Active ์ดˆ ๋‹จ์œ„ 0 $$$$ ๋ชจ๋“  ๋ฆฌ์ „์—์„œ ๋™์‹œ ์„œ๋น„์Šค

๋‹จ์ผ AZ ์šด์˜ (์œ„ํ—˜)

AZ-a

๐Ÿข

โœ•

AZ-b

-

โ†‘ AZ ์žฅ์•  = ์„œ๋น„์Šค ์ „์ฒด ์ค‘๋‹จ

๋‹จ์ผ ์žฅ์• ์  โ†’ RTO/RPO ๋ชฉํ‘œ ๋‹ฌ์„ฑ ๋ถˆ๊ฐ€

Multi-Region DR (๊ถŒ์žฅ)

Seoul

๐Ÿข

โŸท

Tokyo

๐Ÿข

โ†‘ ๋ฆฌ์ „ ์žฅ์•  ์‹œ ์ž๋™ ํŽ˜์ผ์˜ค๋ฒ„

๋ฆฌ์ „ ๊ฐ„ ๋ณต์ œ โ†’ RTO/RPO ๋ชฉํ‘œ ๋‹ฌ์„ฑ ๊ฐ€๋Šฅ

๐Ÿšจ

๋ฐœ๊ฒฌ ์‚ฌ๋ก€: ํ”„๋กœ๋•์…˜ ์ธํ”„๋ผ๊ฐ€ ๋‹จ์ผ AZ์—๋งŒ ๋ฐฐํฌ๋จ

RDS multi_az = false, EC2๊ฐ€ ๋‹จ์ผ AZ์—๋งŒ ๋ฐฐํฌ. Cross-Region DR ์ฒด๊ณ„ ์—†์ด ๋ฆฌ์ „ ์žฅ์•  ์‹œ ๋ณต๊ตฌ ๋ถˆ๊ฐ€ ์ƒํƒœ.

ํ˜„์žฌ ์ƒํƒœ - ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์„ค์ •
resource "aws_db_instance" "main" {
  identifier     = "production-db"
  engine         = "mysql"
  instance_class = "db.r5.large"

  multi_az       = false  # ๋‹จ์ผ AZ
  # Cross-Region ๋ณต์ œ ๋ฏธ์„ค์ •
  # DR ์ฒด๊ณ„ ์—†์Œ
}

ISMS-P 2.12.1 ์œ„๋ฐ˜ ์‚ฌํ•ญ

โ—

IT ์žฌํ•ด๋ณต๊ตฌ์ฒด๊ณ„ ๋ฏธ๊ตฌ์ถ• (๋‹จ์ผ AZ)

โ—

RTO/RPO ๋ชฉํ‘œ ๋ฏธ์„ค์ •

โ—

๋ฌผ๋ฆฌ์  ๋ถ„๋ฆฌ๋œ ๋ณต๊ตฌ ์‚ฌ์ดํŠธ ๋ถ€์žฌ

โ—

DR ํ›ˆ๋ จ/ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ ์—†์Œ

๐Ÿ”

์‚ฌ์ „ ํƒ์ง€ ๋ฐฉ์•ˆ

IaC ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ์ „ ์ ๊ฒ€

์žฌํ•ด๋ณต๊ตฌ ์•„ํ‚คํ…์ฒ˜ ํƒ์ง€ ๋กœ์ง

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
๐Ÿ—„๏ธ RDS Multi-AZ
multi_az = false High - ๊ฒฝ๊ณ 
multi_az = true โ†’ Cross-Region ๋ณต์ œ ๊ฒ€์‚ฌ
๐ŸŒ Cross-Region ๋ณต์ œ
๋ฏธ์„ค์ • DR ์‚ฌ์ดํŠธ ์—†์Œ Critical - ์ฐจ๋‹จ + ๊ฒฝ๊ณ 
์„ค์ •๋จ ๋‹ค๋ฅธ ๋ฆฌ์ „์œผ๋กœ ๋ณต์ œ โ†’ DR ๊ณ„ํš ๊ฒ€์‚ฌ
๐Ÿ“‹ DR ๊ณ„ํš
AWS Backup/DRS ๋ฏธ์—ฐ๊ฒฐ Medium - ๊ฒฝ๊ณ 
์—ฐ๊ฒฐ๋จ DR ๊ณ„ํš ์ ์šฉ โœ“ ํ†ต๊ณผ
๐Ÿ””

์‚ฌํ›„ ๋Œ€์‘ ๋ฐฉ์•ˆ

๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ด์ƒํ–‰์œ„ ํƒ์ง€

๊ณ ๊ฐ€์šฉ์„ฑ ์„ค์ • ๋Ÿฐํƒ€์ž„ ์ด๋ฒคํŠธ ๋Œ€์‘ ๋กœ์ง

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
๐Ÿ“ฆ ๋ณ€๊ฒฝ ์œ ํ˜•
IaC ๋ฐฐํฌ (Terraform) โœ“ ๋ณ€๊ฒฝ ์ด๋ ฅ๋งŒ ์ €์žฅ
Drift ๋ฐœ์ƒ ์ฝ˜์†” ์ง์ ‘ ๋ณ€๊ฒฝ โ†’ ์ƒ์„ธ ๋ถ„์„
โš ๏ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ

(Drift ๋ฐœ์ƒ ์‹œ)

Multi-AZ ๋น„ํ™œ์„ฑํ™” multi_az โ†’ false Critical - PagerDuty ํ˜ธ์ถœ
Cross-Region ๋ณต์ œ ์ค‘์ง€ Critical - PagerDuty ํ˜ธ์ถœ
Auto Scaling ์ถ•์†Œ min/max ๊ฐ์†Œ High - Slack ์ฆ‰์‹œ ์•Œ๋ฆผ

๋ชจ๋“  ์•Œ๋ฆผ์— ํฌํ•จ๋˜๋Š” ์ •๋ณด

๋ฆฌ์†Œ์Šค ARN ๋ณ€๊ฒฝ ์ „/ํ›„ ์„ค์ • ๋ณ€๊ฒฝ ์ฃผ์ฒด (IAM) Multi-Region DR ์„ค์ • ๊ฐ€์ด๋“œ
โœ“

์กฐ์น˜ ๊ฐ€์ด๋“œ

์ฆ‰์‹œ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ถŒ์žฅ ์„ค์ •

โŒ ๋ฌธ์ œ

๋‹จ์ผ AZ ์šด์˜ + Cross-Region DR ์ฒด๊ณ„ ์—†์Œ

โœ“ ์ ์šฉ

multi_az = true + Cross-Region ๋ณต์ œ + Route 53 ํŽ˜์ผ์˜ค๋ฒ„

๊ถŒ์žฅ ์„ค์ • (๋ณต์‚ฌํ•˜์—ฌ ์ ์šฉ)
dr-architecture.tf
# RDS - Multi-AZ ๊ณ ๊ฐ€์šฉ์„ฑ ํ™œ์„ฑํ™”
resource "aws_db_instance" "main" {
  identifier     = "production-db"
  engine         = "mysql"
  instance_class = "db.r5.large"

  multi_az               = true  # โœ“ Multi-AZ ๊ณ ๊ฐ€์šฉ์„ฑ
  backup_retention_period = 7

  tags = {
    Name   = "production-db"
    ISMS-P = "2.12.1"
  }
}

# Cross-Region ์ฝ๊ธฐ ๋ณต์ œ๋ณธ (DR์šฉ)
resource "aws_db_instance" "dr_replica" {
  provider = aws.dr_region

  identifier          = "production-db-dr"
  replicate_source_db = aws_db_instance.main.arn
  instance_class      = "db.r5.large"

  tags = {
    Role   = "DR-Standby"
    ISMS-P = "2.12.1"
  }
}

# Route 53 Health Check ๊ธฐ๋ฐ˜ ์ž๋™ ํŽ˜์ผ์˜ค๋ฒ„
resource "aws_route53_health_check" "primary" {
  fqdn              = "api.example.com"
  port              = 443
  type              = "HTTPS"
  resource_path     = "/health"
  failure_threshold = 3
  request_interval  = 30
}

resource "aws_route53_record" "api" {
  zone_id = aws_route53_zone.main.zone_id
  name    = "api.example.com"
  type    = "A"

  failover_routing_policy {
    type = "PRIMARY"
  }

  set_identifier  = "primary"
  health_check_id = aws_route53_health_check.primary.id

  alias {
    name                   = aws_lb.primary.dns_name
    zone_id                = aws_lb.primary.zone_id
    evaluate_target_health = true
  }
}

๐Ÿ’ก ํ•ต์‹ฌ: multi_az = true ์„ค์ •์œผ๋กœ AZ ์žฅ์• ์— ๋Œ€๋น„ํ•˜๊ณ , Cross-Region ๋ณต์ œ๋ณธ์œผ๋กœ ๋ฆฌ์ „ ์žฅ์• ์— ๋Œ€๋น„ํ•ฉ๋‹ˆ๋‹ค. Route 53 Health Check๋ฅผ ํ†ตํ•ด ์ž๋™ ํŽ˜์ผ์˜ค๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ RTO๋ฅผ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. AWS Elastic Disaster Recovery(DRS)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง€์†์ ์ธ ๋ฐ์ดํ„ฐ ๋ณต์ œ๋กœ RPO๋ฅผ ์ดˆ ๋‹จ์œ„๋กœ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

๐ŸŒ AWS DR ์ „๋žต ๊ฐ€์ด๋“œ โ†— ๐Ÿ’พ AWS Elastic Disaster Recovery โ†— ๐Ÿ”’ AWS Multi-Region ์•„ํ‚คํ…์ฒ˜ โ†—
๐Ÿ“Š

๋ฆฌํฌํŠธ ๋ฐฉ์•ˆ

ISMS-P ์‹ฌ์‚ฌ ์ฆ์  ๋ฐ ์ •๊ธฐ ๋ณด๊ณ 

๐Ÿ“‹ ์ง„๋‹จ ํ•ญ๋ชฉ

  • Multi-AZ ํ™œ์„ฑํ™”๋œ RDS ์ธ์Šคํ„ด์Šค ์ˆ˜
  • Cross-Region ๋ณต์ œ ์„ค์ • ํ˜„ํ™ฉ
  • Auto Scaling ๊ตฌ์„ฑ ์ƒํƒœ
  • DR ํ›ˆ๋ จ ์ˆ˜ํ–‰ ์ด๋ ฅ (๋ฐ˜๊ธฐ๋ณ„)
  • RTO/RPO ๋ชฉํ‘œ ๋‹ฌ์„ฑ๋ฅ 

๐Ÿ“… ๋ฆฌํฌํŠธ ์ฃผ๊ธฐ

์ผ๊ฐ„

๊ฐ€์šฉ์„ฑ ์„ค์ • ๋ณ€๊ฒฝ ์•Œ๋ฆผ

์ฃผ๊ฐ„

DR ์•„ํ‚คํ…์ฒ˜ ํ˜„ํ™ฉ ์š”์•ฝ

๋ฐ˜๊ธฐ

DR ํ›ˆ๋ จ ๊ฒฐ๊ณผ + ISMS-P ์ฆ์ 

๐Ÿ“ค ๋ฐœ์†ก ๋ฐ ์ €์žฅ

๋ฐœ์†ก ์ฑ„๋„

Email Slack

์ €์žฅ์†Œ

S3 (5๋…„ ๋ณด๊ด€)
โšก

BSG ์ฐจ๋ณ„์ 

๊ธฐ์กด ๋„๊ตฌ๊ฐ€ ๋†“์น˜๋Š” ์ ๊ฒ€ ์˜์—ญ

๊ธฐ์กด ๋„๊ตฌ ๋ฐฉ์‹

๋‹จ์ˆœ Multi-AZ ๊ฒ€์‚ฌ

  • multi_az = true ์—ฌ๋ถ€๋งŒ ์ฒดํฌ
  • rds_instance_multi_az_enabled ๋‹จ์ˆœ ๋น„๊ต
  • ์ •์  ๋ถ„์„ ๊ฒฐ๊ณผ๋งŒ ์ถœ๋ ฅ

ํ•œ๊ณ„: Cross-Region DR ๊ฒ€์‚ฌ ์—†์Œ, RTO/RPO ๋ชฉํ‘œ ๋ฏธ์ ๊ฒ€

BSG ์ ‘๊ทผ ๋ฐฉ์‹

Multi-AZ + Cross-Region + DR ๊ณ„ํš ํ†ตํ•ฉ ์ ๊ฒ€

  • IaC ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฐ˜ DR ์•„ํ‚คํ…์ฒ˜ ๊ฒ€์ฆ
  • ๋Ÿฐํƒ€์ž„ ๊ฐ€์šฉ์„ฑ ์„ค์ • ๋ณ€๊ฒฝ ๋ชจ๋‹ˆํ„ฐ๋ง + Drift ํƒ์ง€
  • ISMS-P 2.9.3(๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ๊ด€๋ฆฌ)๊ณผ ํ†ตํ•ฉ DR ์ฒด๊ณ„ ๊ฒ€์ฆ

์ฐจ๋ณ„์ : ์ธ์ฆ ๊ธฐ์ค€ ๊ด€์ ์—์„œ ํƒ์ง€ โ†’ ์กฐ์น˜ โ†’ ์ฆ์  ์ „ ๊ณผ์ • ์ž๋™ํ™”

โ† Data Protection & Disaster Recovery๋กœ ๋Œ์•„๊ฐ€๊ธฐ