โ† Real-time Security Inspection

ISMS-P 2.11.4 ์‚ฌ๊ณ  ๋Œ€์‘ ํ›ˆ๋ จยท๊ฐœ์„  High Risk

์‚ฌ๊ณ  ๋Œ€์‘ ํ›ˆ๋ จ ๋ฐ ๊ฐœ์„ ์ด ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ๋Š”๊ฐ€?

ISMS-P 2.11.4๋Š” ์ •๊ธฐ์ ์ธ ์‚ฌ๊ณ  ๋Œ€์‘ ํ›ˆ๋ จ๊ณผ ์ง€์†์ ์ธ ๊ฐœ์„ ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” AWS FIS, Backup Restore Test, GameDay๋ฅผ ํ†ตํ•ด ์‹ค์ œ ์žฅ์•  ์ƒํ™ฉ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ณ  ๋Œ€์‘ ์—ญ๋Ÿ‰์„ ๊ฐ•ํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‹

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

ISMS-P 2.11.4 ์‚ฌ๊ณ  ๋Œ€์‘ ํ›ˆ๋ จยท๊ฐœ์„  ์š”๊ตฌ์‚ฌํ•ญ

2.11.4

์‚ฌ๊ณ  ๋Œ€์‘ ํ›ˆ๋ จ ๋ฐ ๊ฐœ์„ 

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

"์นจํ•ด์‚ฌ๊ณ  ๋ฐ ๊ฐœ์ธ์ •๋ณด ์œ ์ถœ์‚ฌ๊ณ  ๋Œ€์‘ ํ›ˆ๋ จ ๊ณ„ํš์„ ์ˆ˜๋ฆฝยท์ดํ–‰ํ•˜๊ณ  ํ›ˆ๋ จ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ๋ณด์™„์กฐ์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ์•ผ ํ•œ๋‹ค."

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

  • FIS ์นด์˜ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง ํ›ˆ๋ จ
  • Backup Restore ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
  • EventBridge ์ •๊ธฐ ํ›ˆ๋ จ ์Šค์ผ€์ค„
  • ํ›ˆ๋ จ ๊ฒฐ๊ณผ Dashboard ์šด์˜

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

  • ๊ฒฐํ•จ: ๋Œ€์‘ ํ›ˆ๋ จ ๊ณ„ํš ๋ฏธ์ˆ˜๋ฆฝ
  • ๊ฒฐํ•จ: ์ •๊ธฐ ํ›ˆ๋ จ ๋ฏธ์ดํ–‰
  • ๊ถŒ๊ณ : ํ›ˆ๋ จ ๊ฒฐ๊ณผ ๊ฐœ์„  ์กฐ์น˜ ๋ฏธํก
๐Ÿ“„ KISA ISMS-P ์ธ์ฆ๊ธฐ์ค€ ์•ˆ๋‚ด์„œ โ†— โ˜๏ธ AWS FIS ๋ฌธ์„œ โ†—
๐Ÿ“ฐ

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

์‚ฌ๊ณ  ๋Œ€์‘ ํ›ˆ๋ จ ๋ฏธํก์œผ๋กœ ๋ฐœ์ƒํ•œ ์‹ค์ œ ์‚ฌ๊ณ 

2017.05

British Airways 72์‹œ๊ฐ„ ๋งˆ๋น„

๋ฐ์ดํ„ฐ์„ผํ„ฐ ์ „์› ์žฅ์•  ๋ฐœ์ƒ. ๋ณต๊ตฌ ํ›ˆ๋ จ ๋ฏธ์ˆ˜ํ–‰์œผ๋กœ ๋Œ€์‘ ์ง€์—ฐ, 72์‹œ๊ฐ„ ์‹œ์Šคํ…œ ๋งˆ๋น„. 75,000๋ช… ์Šน๊ฐ ์˜ํ–ฅ, 8,000๋งŒ ํŒŒ์šด๋“œ ์†์‹ค.

๐Ÿ’ก ๊ตํ›ˆ: ์ •๊ธฐ์ ์ธ ์žฅ์•  ๋ณต๊ตฌ ํ›ˆ๋ จ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•„์ˆ˜

2021.10

Facebook(Meta) 6์‹œ๊ฐ„ ์ค‘๋‹จ

BGP ์„ค์ • ์˜ค๋ฅ˜๋กœ ์ „ ์„ธ๊ณ„ ์„œ๋น„์Šค ์ค‘๋‹จ. ๋ฌผ๋ฆฌ์  ์ ‘๊ทผ ํ•„์š”ํ•œ ๋ณต๊ตฌ๋กœ ์ง€์—ฐ. ๋‹ค์–‘ํ•œ ์žฅ์•  ์‹œ๋‚˜๋ฆฌ์˜ค ํ›ˆ๋ จ ๋ฏธํก์œผ๋กœ ๋Œ€์‘ ์—ญ๋Ÿ‰ ๋ถ€์กฑ.

๐Ÿ’ก ๊ตํ›ˆ: ๋‹ค์–‘ํ•œ ์žฅ์•  ์‹œ๋‚˜๋ฆฌ์˜ค๋ณ„ ์นด์˜ค์Šค ํ›ˆ๋ จ ํ•„์ˆ˜

โšก

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

๋Œ€์‘ ํ›ˆ๋ จ ์ฒด๊ณ„ ๋ถ€์žฌ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ

์œ„ํ—˜ ์„ค์ • (AS-IS) - ํ›ˆ๋ จ ์ฒด๊ณ„ ๋ฏธ๊ตฌ์ถ•

# ๋Œ€์‘ ํ›ˆ๋ จ ์ฒด๊ณ„ ๋ฏธ์„ค์ •

# FIS Experiment ๋ฏธ์กด์žฌ
# resource "aws_fis_experiment_template" ์—†์Œ

# Backup Restore Test ๋ฏธ์Šค์ผ€์ค„
# EventBridge ์ •๊ธฐ ์Šค์ผ€์ค„ ์—†์Œ

# ํ›ˆ๋ จ ๊ฒฐ๊ณผ Dashboard ์—†์Œ

์žฅ์•  ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๋ณต๊ตฌ ๊ฒ€์ฆ, ๊ฒฐ๊ณผ ๋ถ„์„ ๋ชจ๋‘ ๋ถˆ๊ฐ€

๊ถŒ์žฅ ์„ค์ • (TO-BE) - ์ž๋™ํ™” ํ›ˆ๋ จ ์ฒด๊ณ„

# FIS ์นด์˜ค์Šค ํ›ˆ๋ จ ํ…œํ”Œ๋ฆฟ
resource "aws_fis_experiment_template" "failover" {}

# ๋ถ„๊ธฐ๋ณ„ ํ›ˆ๋ จ ์Šค์ผ€์ค„
resource "aws_cloudwatch_event_rule" "quarterly" {
  schedule_expression = "cron(0 9 1 1,4,7,10 ? *)"
}

# ์›”๋ณ„ ๋ณต๊ตฌ ํ…Œ์ŠคํŠธ
resource "aws_backup_restore_testing_plan" "monthly" {}

# ํ›ˆ๋ จ ๊ฒฐ๊ณผ Dashboard
resource "aws_cloudwatch_dashboard" "training" {}

FIS + EventBridge + Restore Test + Dashboard ํ†ตํ•ฉ ํ›ˆ๋ จ

๐Ÿšจ

๋ฐœ๊ฒฌ ์‚ฌ๋ก€: ๋Œ€์‘ ํ›ˆ๋ จ ์ฒด๊ณ„ ์ „๋ฉด ๋ฏธ๊ตฌ์ถ•

FIS ์นด์˜ค์Šค ํ›ˆ๋ จ, Backup Restore Test, ์ •๊ธฐ ํ›ˆ๋ จ ์Šค์ผ€์ค„์ด ๋ชจ๋‘ ๋ฏธ์„ค์ •๋˜์–ด ์žˆ์–ด ์‹ค์ œ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋Œ€์‘ ์—ญ๋Ÿ‰ ๊ฒ€์ฆ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

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

โ—

์นด์˜ค์Šค ํ›ˆ๋ จ ๋ถˆ๊ฐ€: FIS ๋ฏธ์„ค์ •

โ—

๋ณต๊ตฌ ๊ฒ€์ฆ ๋ถˆ๊ฐ€: Restore Test ๋ฏธ์ˆ˜ํ–‰

โ—

์ •๊ธฐ ํ›ˆ๋ จ ๋ฏธ์‹ค์‹œ: ์Šค์ผ€์ค„ ์—†์Œ

โ—

๊ฒฐ๊ณผ ๋ถ„์„ ๋ถˆ๊ฐ€: Dashboard ์—†์Œ

๐Ÿ”

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

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

๋Œ€์‘ ํ›ˆ๋ จ ์ฒด๊ณ„ ์ ๊ฒ€ ๋กœ์ง

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
๐Ÿ”ฅ FIS ํ›ˆ๋ จ ํ…œํ”Œ๋ฆฟ
aws_fis_experiment_template ์กด์žฌ โœ“ ํ†ต๊ณผ
๋ฆฌ์†Œ์Šค ๋ฏธ์กด์žฌ ์นด์˜ค์Šค ํ›ˆ๋ จ ๋ถˆ๊ฐ€ High - ์ฐจ๋‹จ + Slack ์•Œ๋ฆผ
๐Ÿ”„ Restore Test Plan
aws_backup_restore_testing_plan ์กด์žฌ โœ“ ํ†ต๊ณผ
๋ฆฌ์†Œ์Šค ๋ฏธ์กด์žฌ ๋ณต๊ตฌ ๊ฒ€์ฆ ๋ถˆ๊ฐ€ High - ์ฐจ๋‹จ + Slack ์•Œ๋ฆผ
๐Ÿ“… ํ›ˆ๋ จ ์Šค์ผ€์ค„
EventBridge ๋ถ„๊ธฐ๋ณ„ ์Šค์ผ€์ค„ ์กด์žฌ โœ“ ํ†ต๊ณผ
์ •๊ธฐ ์Šค์ผ€์ค„ ๋ฏธ์กด์žฌ Medium - Slack ์•Œ๋ฆผ
๐Ÿ””

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

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

ํ›ˆ๋ จ ์ดํ–‰ ๋Ÿฐํƒ€์ž„ ์ด๋ฒคํŠธ ๋Œ€์‘ ๋กœ์ง

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
โฐ ํ›ˆ๋ จ ์ดํ–‰ ์ฃผ๊ธฐ
๋งˆ์ง€๋ง‰ ํ›ˆ๋ จ โ‰ค 90์ผ ์ •์ƒ โœ“ ์ •์ƒ
๋งˆ์ง€๋ง‰ ํ›ˆ๋ จ > 90์ผ ํ›ˆ๋ จ ์ง€์—ฐ High - ๋‹ด๋‹น์ž ์ฆ‰์‹œ ํ†ต๋ณด
๐Ÿ”„ Restore Test ๊ฒฐ๊ณผ
ํ…Œ์ŠคํŠธ ์„ฑ๊ณต โœ“ ์ด๋ ฅ ์ €์žฅ
ํ…Œ์ŠคํŠธ ์‹คํŒจ ๋ณต๊ตฌ ์ฒด๊ณ„ ๋ฌธ์ œ Critical - ๋ฐฑ์—… ์ฒด๊ณ„ ์ฆ‰์‹œ ์ ๊ฒ€
๐Ÿ“ ๊ฐœ์„  ์ดํ–‰ ํ˜„ํ™ฉ
๋ฐœ๊ฒฌ ์ด์Šˆ ์กฐ์น˜ ์™„๋ฃŒ โœ“ ์ •์ƒ
30์ผ+ ๋ฏธ์กฐ์น˜ High - ์—์Šค์ปฌ๋ ˆ์ด์…˜

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

ํ›ˆ๋ จ ์œ ํ˜• ๋งˆ์ง€๋ง‰ ํ›ˆ๋ จ ์ผ์‹œ ๋ฏธ์กฐ์น˜ ์ด์Šˆ ๋ชฉ๋ก ๋‹ด๋‹น์ž ์ •๋ณด
โœ“

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

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

๊ถŒ์žฅ ์„ค์ • (๋ณต์‚ฌํ•˜์—ฌ ์ ์šฉ)
incident-training.tf
# 1. AWS FIS ์นด์˜ค์Šค ํ›ˆ๋ จ ํ…œํ”Œ๋ฆฟ
resource "aws_fis_experiment_template" "ec2_failure" {
  description = "EC2 instance failure simulation"
  role_arn    = aws_iam_role.fis.arn

  stop_condition {
    source = "aws:cloudwatch:alarm"
    value  = aws_cloudwatch_metric_alarm.high_cpu.arn
  }

  action {
    name      = "stop-instances"
    action_id = "aws:ec2:stop-instances"
    target    { key = "Instances"; value = "target-instances" }
  }

  target {
    name           = "target-instances"
    resource_type  = "aws:ec2:instance"
    selection_mode = "COUNT(1)"
    resource_tag   { key = "Environment"; value = "staging" }
  }

  tags = { ISMS-P = "2.11.4" }
}

# 2. ๋ถ„๊ธฐ๋ณ„ ํ›ˆ๋ จ ์Šค์ผ€์ค„
resource "aws_cloudwatch_event_rule" "quarterly_training" {
  name                = "quarterly-incident-training"
  schedule_expression = "cron(0 9 1 1,4,7,10 ? *)"  # ๋งค ๋ถ„๊ธฐ ์ฒซ์งธ ๋‚ 
}

# 3. ์›”๋ณ„ ๋ณต๊ตฌ ํ…Œ์ŠคํŠธ
resource "aws_backup_restore_testing_plan" "monthly" {
  name = "monthly-restore-testing"

  schedule_expression = "cron(0 3 15 * ? *)"  # ๋งค์›” 15์ผ

  recovery_point_selection {
    algorithm              = "LATEST_WITHIN_WINDOW"
    recovery_point_types   = ["CONTINUOUS"]
    include_vaults         = ["arn:aws:backup:*:*:backup-vault:*"]
  }
}

# 4. ํ›ˆ๋ จ ๊ฒฐ๊ณผ Dashboard
resource "aws_cloudwatch_dashboard" "training" {
  dashboard_name = "incident-response-training"
  dashboard_body = jsonencode({
    widgets = [
      { type = "metric", properties = { title = "FIS ํ›ˆ๋ จ ์‹คํ–‰", metrics = [["AWS/FIS", "ExperimentStarted"]] } },
      { type = "metric", properties = { title = "๋ณต๊ตฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ", metrics = [["Custom/Backup", "RestoreTestSuccess"]] } }
    ]
  })
}

๐Ÿ’ก ํ•ต์‹ฌ: FIS๋กœ ์žฅ์•  ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ , Restore Testing์œผ๋กœ ๋ณต๊ตฌ๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , EventBridge๋กœ ์ •๊ธฐ ํ›ˆ๋ จ์„ ์Šค์ผ€์ค„๋งํ•˜๊ณ , Dashboard๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ”ฅ AWS FIS ๊ณต์‹ ๋ฌธ์„œ โ†— ๐Ÿ”„ Backup Restore Testing ๋ฌธ์„œ โ†— ๐ŸŽฎ AWS GameDay โ†—
๐Ÿ“Š

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

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

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

  • FIS ํ›ˆ๋ จ ํ…œํ”Œ๋ฆฟ ์„ค์ • ์ƒํƒœ
  • Restore Test Plan ์„ค์ • ์ƒํƒœ
  • ์ •๊ธฐ ํ›ˆ๋ จ ์Šค์ผ€์ค„ ํ˜„ํ™ฉ
  • ํ›ˆ๋ จ ๊ฒฐ๊ณผ Dashboard ์šด์˜
  • ๋ฐœ๊ฒฌ ์ด์Šˆ ๊ฐœ์„  ์กฐ์น˜ ํ˜„ํ™ฉ

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

์›”๊ฐ„

Restore Test ๊ฒฐ๊ณผ ์š”์•ฝ

๋ถ„๊ธฐ

FIS ํ›ˆ๋ จ ์‹คํ–‰ ๋ฐ ๊ฒฐ๊ณผ

์—ฐ๊ฐ„

ISMS-P ์ฆ์  ์ข…ํ•ฉ ๋ฆฌํฌํŠธ

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

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

Email Slack

์ €์žฅ์†Œ

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

BSG ์ฐจ๋ณ„์ 

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

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

ํ›ˆ๋ จ ์ฒด๊ณ„ ๊ฒ€์‚ฌ ๋ฏธํฌํ•จ

  • FIS ์„ค์ • ๋ฏธํ™•์ธ
  • Restore Test Plan ๋ฏธ๊ฒ€์‚ฌ
  • ์ •๊ธฐ ํ›ˆ๋ จ ์Šค์ผ€์ค„ ๋ฏธํ™•์ธ
  • ํ›ˆ๋ จ ๊ฒฐ๊ณผ Dashboard ๋ฏธ๊ฒ€์‚ฌ

ํ•œ๊ณ„: ์ธํ”„๋ผ ์„ค์ •๋งŒ ๊ฒ€์‚ฌํ•˜๊ณ  ๋Œ€์‘ ํ›ˆ๋ จ ์ฒด๊ณ„ ๊ฒ€์ฆ ๋ถˆ๊ฐ€

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

ISMS-P ๊ด€์  ํ†ตํ•ฉ ์ ๊ฒ€

  • ํ›ˆ๋ จ: FIS ์นด์˜ค์Šค ์—”์ง€๋‹ˆ์–ด๋ง ๊ฒ€์ฆ
  • ๋ณต๊ตฌ: Backup Restore ํ…Œ์ŠคํŠธ ํ™•์ธ
  • ์Šค์ผ€์ค„: ์ •๊ธฐ ํ›ˆ๋ จ EventBridge ๊ฒ€์ฆ
  • ์ฆ์ : ํ›ˆ๋ จ ์ด๋ ฅ + ๊ฐœ์„  ์กฐ์น˜ ์ž๋™ํ™”

์ฐจ๋ณ„์ : ์ธ์ฆ ๊ธฐ์ค€ ๊ด€์ ์—์„œ ํ›ˆ๋ จ โ†’ ๊ฒ€์ฆ โ†’ ๊ฐœ์„  โ†’ ์ฆ์  ์ „ ๊ณผ์ • ์ž๋™ํ™”

โ† ISMS-P ์ธ์ฆ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ๋Œ์•„๊ฐ€๊ธฐ