โ† Real-time Security Inspection

ISMS-P 2.11.5 ์‚ฌ๊ณ  ๋Œ€์‘ ๋ฐ ๋ณต๊ตฌ High Risk

์‚ฌ๊ณ  ๋Œ€์‘ ๋ฐ ๋ณต๊ตฌ๊ฐ€ ์ ์ ˆํžˆ ์ˆ˜ํ–‰๋˜๋Š”๊ฐ€?

ISMS-P 2.11.5๋Š” ๋ณด์•ˆ์‚ฌ๊ณ  ๋ฐœ์ƒ ์‹œ ์‹ ์†ํ•œ ๋Œ€์‘๊ณผ ๋ณต๊ตฌ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” AWS Backup, Vault Lock, Step Functions๋ฅผ ํ†ตํ•ด ์ž๋™ ๊ฒฉ๋ฆฌ, ์ฆ๊ฑฐ๋ณด์กด, ๋ณต๊ตฌ ์ฒด๊ณ„๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‹

ISMS-P ์ธ์ฆ ๊ธฐ์ค€ ๋ฐฐ๊ฒฝ

ISMS-P 2.11.5 ์‚ฌ๊ณ  ๋Œ€์‘ ๋ฐ ๋ณต๊ตฌ ์š”๊ตฌ์‚ฌํ•ญ

๐Ÿ“Œ ์ธ์ฆ ๊ธฐ์ค€

"๋ณด์•ˆ์‚ฌ๊ณ  ๋ฐœ์ƒ ์‹œ ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๊ณ  ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Œ€์‘ ๋ฐ ๋ณต๊ตฌ ์ ˆ์ฐจ๋ฅผ ์ˆ˜๋ฆฝํ•˜์—ฌ ์ดํ–‰ํ•˜๋ฉฐ, ์‚ฌ๊ณ  ์กฐ์‚ฌ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์žฌ๋ฐœ๋ฐฉ์ง€ ๋Œ€์ฑ…์„ ๋งˆ๋ จํ•˜์—ฌ์•ผ ํ•œ๋‹ค."

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

  • AWS Backup + Cross-Region ๋ณต์ œ
  • Vault Lock์œผ๋กœ ๋ฐฑ์—… ์‚ญ์ œ ๋ฐฉ์ง€
  • Quarantine SG๋กœ ์นจํ•ด ์‹œ์Šคํ…œ ์ž๋™ ๊ฒฉ๋ฆฌ
  • S3 Object Lock์œผ๋กœ ์ฆ๊ฑฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์กด
  • Step Functions๋กœ ๋Œ€์‘ ์›Œํฌํ”Œ๋กœ์šฐ ์ž๋™ํ™”

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

  • ๋ฐฑ์—… ์‚ญ์ œ ๊ณต๊ฒฉ ์‹œ ์„œ๋น„์Šค ์˜๊ตฌ ์†์‹ค (๊ฒฐํ•จ)
  • ๋ณต๊ตฌ ํ…Œ์ŠคํŠธ ๋ฏธ์ˆ˜ํ–‰์œผ๋กœ ์‹ค์ œ ์žฅ์•  ์‹œ ๋ณต๊ตฌ ์‹คํŒจ
  • ์นจํ•ด ์‹œ์Šคํ…œ ๊ฒฉ๋ฆฌ ์ง€์—ฐ์œผ๋กœ ํ”ผํ•ด ํ™•์‚ฐ
  • ํฌ๋ Œ์‹ ์ฆ๊ฑฐ ๋ฏธํ™•๋ณด๋กœ ์‚ฌ๊ณ  ์›์ธ ๋ถ„์„ ๋ถˆ๊ฐ€
๐Ÿ“ฐ

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

๋ณต๊ตฌ ์ฒด๊ณ„ ๋ฏธํก ๊ด€๋ จ ๋ณด์•ˆ ์‚ฌ๊ณ 

2014.06 Code Spaces

๋ณต๊ตฌ ๋ถˆ๊ฐ€๋กœ ์„œ๋น„์Šค ํ์—…

DDoS ๊ณต๊ฒฉ ํ›„ AWS ์ฝ˜์†” ์นจํˆฌ. ๊ณต๊ฒฉ์ž๊ฐ€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ฐ ๋ฐฑ์—…์„ ๋™์ผ ๊ณ„์ • ๋‚ด์—์„œ ์‚ญ์ œ. ๋ฐฑ์—…์ด ๊ฐ™์€ ๊ณ„์ •์— ์ €์žฅ๋˜์–ด ๋ณต๊ตฌ ์™„์ „ ๋ถˆ๊ฐ€. ์„œ๋น„์Šค ํ์—….

๊ตํ›ˆ: Cross-Account ๋ฐฑ์—… + Vault Lock์œผ๋กœ ์‚ญ์ œ ๋ฐฉ์ง€ ํ•„์ˆ˜

2017.02 GitLab

๋ฐฑ์—… ๋ณต๊ตฌ ์‹คํŒจ๋กœ 6์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์†์‹ค

์šด์˜์ž ์‹ค์ˆ˜๋กœ ์šด์˜ DB ์‚ญ์ œ. 5๊ฐœ ๋ฐฑ์—… ๋ฐฉ๋ฒ• ์ค‘ 4๊ฐœ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ. ๋ณต๊ตฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„ 6์‹œ๊ฐ„๋ถ„ ๋ฐ์ดํ„ฐ ์˜๊ตฌ ์†์‹ค.

๊ตํ›ˆ: ์ •๊ธฐ์ ์ธ ๋ฐฑ์—… ๊ฒ€์ฆ + ๋ณต๊ตฌ ํ›ˆ๋ จ ํ•„์ˆ˜

โšก

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

AS-IS ์ทจ์•ฝ ์„ค์ •๊ณผ TO-BE ๊ถŒ์žฅ ์„ค์ •

โœ—

AS-IS: ์ทจ์•ฝํ•œ ์ƒํƒœ

# ์ทจ์•ฝ: ๋ณต๊ตฌ ์ฒด๊ณ„ ๋ฏธ๊ตฌ์ถ•

# AWS Backup ๋ฏธ์กด์žฌ
# โ†’ ์‹œ์Šคํ…œ ์žฅ์•  ์‹œ ๋ณต๊ตฌ ๋ถˆ๊ฐ€

# Vault Lock ๋ฏธ์„ค์ •
# โ†’ ๊ณต๊ฒฉ์ž๊ฐ€ ๋ฐฑ์—… ์‚ญ์ œ ๊ฐ€๋Šฅ

# ๊ฒฉ๋ฆฌ์šฉ Security Group ์—†์Œ
# โ†’ ์นจํ•ด ์‹œ์Šคํ…œ ์ˆ˜๋™ ๋Œ€์‘

# ์ฆ๊ฑฐ๋ณด์กด ์ฒด๊ณ„ ์—†์Œ
# โ†’ ํฌ๋ Œ์‹ ์ฆ๊ฑฐ ํ™•๋ณด ๋ถˆ๊ฐ€
โœ“

TO-BE: ์•ˆ์ „ํ•œ ์ƒํƒœ

# ์•ˆ์ „: ์™„์ „ํ•œ ๋ณต๊ตฌ ์ฒด๊ณ„

# AWS Backup Plan ๊ตฌ์„ฑ
# โ†’ ์ž๋™ ๋ฐฑ์—… + Cross-Region ๋ณต์ œ

# Vault Lock ํ™œ์„ฑํ™”
# โ†’ ๋ฐฑ์—… ์‚ญ์ œ/๋ณ€๊ฒฝ ๋ถˆ๊ฐ€

# Quarantine SG ๊ตฌ์„ฑ
# โ†’ ์นจํ•ด ์‹œ์Šคํ…œ ์ž๋™ ๊ฒฉ๋ฆฌ

# S3 Object Lock ์ฆ๊ฑฐ๋ณด๊ด€
# โ†’ ํฌ๋ Œ์‹ ์ฆ๊ฑฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

โš ๏ธ ์ด๋Ÿฐ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

# ๊ณต๊ฒฉ์ž๊ฐ€ AWS ์ฝ˜์†” ์ ‘๊ทผ ํ›„ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ๊ณต๊ฒฉ
# ๋ฐฑ์—…์ด ๊ฐ™์€ ๊ณ„์ •์— ์žˆ์–ด ๋ชจ๋“  ๋ณต๊ตฌ ์ˆ˜๋‹จ ํŒŒ๊ดด
# โ†’ Code Spaces ์‚ฌ๋ก€: ์™„์ „ ์„œ๋น„์Šค ํ์—…

# ์šด์˜ DB ์‚ญ์ œ ํ›„ ๋ฐฑ์—… ๋ณต๊ตฌ ์‹œ๋„
# 5๊ฐœ ์ค‘ 4๊ฐœ ๋ฐฑ์—… ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Œ
# โ†’ GitLab ์‚ฌ๋ก€: 6์‹œ๊ฐ„๋ถ„ ๋ฐ์ดํ„ฐ ์˜๊ตฌ ์†์‹ค
๐Ÿ”

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

IaC ์ •์  ๋ถ„์„ Decision Table

IaC ์ •์  ๋ถ„์„ ํƒ์ง€ ๊ทœ์น™

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
aws_backup_plan
๋ฐฑ์—… ๊ณ„ํš ์กด์žฌ ์—ฌ๋ถ€
๋ฏธ์กด์žฌ Critical
์กด์žฌํ•จ Pass
vault_lock_configuration
๋ฐฑ์—… ์‚ญ์ œ ๋ฐฉ์ง€ ์„ค์ •
๋ฏธ์„ค์ • High
ํ™œ์„ฑํ™” Pass
copy_action.destination
Cross-Account ๋ณต์ œ ์—ฌ๋ถ€
๋™์ผ ๊ณ„์ •๋งŒ High
Cross-Account ์„ค์ • Pass
security_group "quarantine"
๊ฒฉ๋ฆฌ์šฉ SG ์กด์žฌ ์—ฌ๋ถ€
๋ฏธ์กด์žฌ High
์กด์žฌํ•จ Pass
object_lock_enabled
์ฆ๊ฑฐ๋ณด๊ด€ WORM ์„ค์ •
๋ฏธ์„ค์ • High
ํ™œ์„ฑํ™” Pass
๐Ÿ””

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

Runtime ๋ชจ๋‹ˆํ„ฐ๋ง Decision Table

Runtime ๋ชจ๋‹ˆํ„ฐ๋ง ๋Œ€์‘ ๊ทœ์น™

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
GuardDuty Finding
์นจํ•ด ํƒ์ง€ ์‹ฌ๊ฐ๋„
Critical/High ์ž๋™ ๊ฒฉ๋ฆฌ + ์ฆ๊ฑฐ๋ณด์กด + SNS ์•Œ๋ฆผ
Medium/Low ์•Œ๋ฆผ + ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ•ํ™”
DeleteRecoveryPoint API
๋ฐฑ์—… ์‚ญ์ œ ์‹œ๋„
Vault Lock ์ฐจ๋‹จ CloudTrail ๊ธฐ๋ก + ์ฆ‰์‹œ ์•Œ๋ฆผ
์ •์ƒ ์‚ญ์ œ (๋ณด๊ด€๊ธฐ๊ฐ„ ๊ฒฝ๊ณผ) ์ •์ƒ ์ฒ˜๋ฆฌ
Restore Job Status
๋ณต๊ตฌ ์ž‘์—… ์ƒํƒœ
Failed ์ˆ˜๋™ ๊ฐœ์ž… ์š”์ฒญ + ๋Œ€์ฒด ๋ณต๊ตฌ ์•ˆ๋‚ด
Success ํ—ฌ์Šค์ฒดํฌ + ์‚ฌํ›„ ๋ถ„์„ ๋ฆฌํฌํŠธ
Step Functions Execution
๋Œ€์‘ ์›Œํฌํ”Œ๋กœ์šฐ ์ƒํƒœ
FAILED/TIMED_OUT ์ˆ˜๋™ ๊ฐœ์ž… + ์žฅ์•  ์›์ธ ๋ถ„์„
SUCCEEDED ์™„๋ฃŒ ๋ฆฌํฌํŠธ + ๊ฐœ์„  ๊ถŒ๊ณ 
โœ“

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

Terraform ๊ธฐ๋ฐ˜ ๋ณด์•ˆ ์„ค์ • ๊ฐ€์ด๋“œ

Terraform

์™„์ „ํ•œ ๋ณต๊ตฌ ์ฒด๊ณ„ ๊ตฌ์„ฑ

# 1. AWS Backup Plan + Cross-Region ๋ณต์ œ
resource "aws_backup_plan" "critical" {
  name = "critical-systems-backup"

  rule {
    rule_name         = "daily-backup"
    target_vault_name = aws_backup_vault.main.name
    schedule          = "cron(0 5 ? * * *)"  # ๋งค์ผ 05:00 UTC

    lifecycle {
      delete_after = 90  # 90์ผ ๋ณด๊ด€
    }

    # Cross-Region ๋ณต์ œ (DR)
    copy_action {
      destination_vault_arn = aws_backup_vault.dr.arn
      lifecycle {
        delete_after = 90
      }
    }
  }
}

# 2. Vault Lock - ๋ฐฑ์—… ์‚ญ์ œ ๋ฐฉ์ง€
resource "aws_backup_vault_lock_configuration" "main" {
  backup_vault_name   = aws_backup_vault.main.name
  min_retention_days  = 7    # ์ตœ์†Œ 7์ผ ๋ณด๊ด€ ํ•„์ˆ˜
  max_retention_days  = 365  # ์ตœ๋Œ€ 365์ผ
  changeable_for_days = 3    # 3์ผ ํ›„ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
}

# 3. Quarantine Security Group - ์ž๋™ ๊ฒฉ๋ฆฌ์šฉ
resource "aws_security_group" "quarantine" {
  name        = "quarantine-sg"
  description = "Isolation SG - No inbound/outbound traffic"
  vpc_id      = var.vpc_id

  # Ingress/Egress ๊ทœ์น™ ์—†์Œ = ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ์ฐจ๋‹จ
  tags = {
    Name    = "quarantine-sg"
    Purpose = "incident-isolation"
  }
}

# 4. S3 ์ฆ๊ฑฐ๋ณด๊ด€ ๋ฒ„ํ‚ท - Object Lock (WORM)
resource "aws_s3_bucket" "forensic" {
  bucket              = "forensic-evidence-${data.aws_caller_identity.current.account_id}"
  object_lock_enabled = true
}

resource "aws_s3_bucket_object_lock_configuration" "forensic" {
  bucket = aws_s3_bucket.forensic.id

  rule {
    default_retention {
      mode  = "COMPLIANCE"  # ์‚ญ์ œ/๋ณ€๊ฒฝ ์™„์ „ ์ฐจ๋‹จ
      years = 7             # 7๋…„ ๋ณด๊ด€ (๋ฒ•์  ์š”๊ฑด)
    }
  }
}

# 5. Step Functions ์‚ฌ๊ณ ๋Œ€์‘ ์›Œํฌํ”Œ๋กœ์šฐ
resource "aws_sfn_state_machine" "incident_response" {
  name     = "incident-response-and-recovery"
  role_arn = aws_iam_role.step_functions.arn

  definition = jsonencode({
    StartAt = "IsolateResource"
    States = {
      IsolateResource = {
        Type     = "Task"
        Resource = aws_lambda_function.isolate.arn
        Next     = "CollectEvidence"
      }
      CollectEvidence = {
        Type     = "Task"
        Resource = aws_lambda_function.collect_evidence.arn
        Next     = "NotifyTeam"
      }
      NotifyTeam = {
        Type     = "Task"
        Resource = "arn:aws:states:::sns:publish"
        Parameters = {
          TopicArn = aws_sns_topic.incident.arn
          Message  = "Incident detected - awaiting approval"
        }
        Next = "WaitForApproval"
      }
      WaitForApproval = {
        Type           = "Task"
        Resource       = "arn:aws:states:::lambda:invoke.waitForTaskToken"
        TimeoutSeconds = 3600
        Next           = "RecoverResource"
      }
      RecoverResource = {
        Type     = "Task"
        Resource = aws_lambda_function.recover.arn
        Next     = "ValidateRecovery"
      }
      ValidateRecovery = {
        Type     = "Task"
        Resource = aws_lambda_function.validate.arn
        End      = true
      }
    }
  })
}

ํ•ต์‹ฌ ํฌ์ธํŠธ

๐Ÿ” Vault Lock ์‚ญ์ œ ๋ฐฉ์ง€ ๐ŸŒ Cross-Region ๋ณต์ œ ๐Ÿ”’ Quarantine SG ๊ฒฉ๋ฆฌ ๐Ÿ“ Object Lock ์ฆ๊ฑฐ๋ณด์กด โšก Step Functions ์ž๋™ํ™”
๐Ÿ“Š

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

ISMS-P ์‹ฌ์‚ฌ ์ฆ์  ์ž๋ฃŒ

์ง„๋‹จ ํ•ญ๋ชฉ

  • โœ“ AWS Backup Plan ์„ค์ •
  • โœ“ Vault Lock ํ™œ์„ฑํ™”
  • โœ“ Cross-Account ๋ณต์ œ ์„ค์ •
  • โœ“ Quarantine SG ๊ตฌ์„ฑ
  • โœ“ S3 Object Lock ์„ค์ •
  • โœ“ Step Functions ์›Œํฌํ”Œ๋กœ์šฐ

๋ฆฌํฌํŠธ ์ฃผ๊ธฐ

์ผ๊ฐ„

๋ฐฑ์—… ์ž‘์—… ์„ฑ๊ณต/์‹คํŒจ ํ˜„ํ™ฉ

์ฃผ๊ฐ„

๋ณต๊ตฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ฆฌํฌํŠธ

์›”๊ฐ„

์‚ฌ๊ณ  ๋Œ€์‘ ํ›ˆ๋ จ ๊ฒฐ๊ณผ ๋ถ„์„

๋ฐœ์†ก ๋ฐ ์ €์žฅ

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

Slack Email Jira PagerDuty

์ €์žฅ์†Œ

S3 (์ฆ์  ๋ณด๊ด€) CloudWatch Logs Athena (๋ถ„์„)
โšก

BSG ์ฐจ๋ณ„์ 

๊ธฐ์กด ๋„๊ตฌ ๋Œ€๋น„ BSG ๊ฐ•์ 

โš ๏ธ ๊ธฐ์กด ๋ณด์•ˆ ๋„๊ตฌ์˜ ํ•œ๊ณ„

  • AWS Backup ์กด์žฌ ์—ฌ๋ถ€๋งŒ ๊ฒ€์‚ฌ
  • Vault Lock ์„ค์ • ์ƒํƒœ ๋ฏธํ™•์ธ
  • Cross-Region/Cross-Account ๋ฐฑ์—… ๋ฏธ๊ฒ€์‚ฌ
  • ๊ฒฉ๋ฆฌ์šฉ Security Group ๋ฏธํ™•์ธ
  • S3 Object Lock ์ฆ๊ฑฐ๋ณด๊ด€ ๋ฏธ๊ฒ€์‚ฌ
  • ์‚ฌ๊ณ ๋Œ€์‘ ์›Œํฌํ”Œ๋กœ์šฐ ๋ฏธํ™•์ธ

โœ“ BSG IaC ๋ถ„์„ ์ ‘๊ทผ๋ฒ•

  • ๊ฒฉ๋ฆฌ ์ฒด๊ณ„: Quarantine SG ์ž๋™ ์ ์šฉ ๊ฒ€์ฆ
  • ์ฆ๊ฑฐ๋ณด์กด: Snapshot + Object Lock WORM ๊ฒ€์ฆ
  • ๋ฐฑ์—… ๋ณดํ˜ธ: Vault Lock + Cross-Region ๊ฒ€์ฆ
  • ์ž๋™ ๋ณต๊ตฌ: Step Functions ์›Œํฌํ”Œ๋กœ์šฐ ๊ฒ€์ฆ
  • DR ์ฒด๊ณ„: Cross-Account ๋ณต์ œ ๊ฒ€์ฆ
  • ์ฆ์  ์ž๋™ํ™”: ๋Œ€์‘/๋ณต๊ตฌ ์ด๋ ฅ ์ˆ˜์ง‘ ์ž๋™ํ™”
โ† ISMS-P ์ธ์ฆ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ๋Œ์•„๊ฐ€๊ธฐ