โ† Real-time Security Inspection

ISMS-P 2.9.5 ๋กœ๊ทธ ๋ฐ ์ ‘์†๊ธฐ๋ก ์ ๊ฒ€ High Risk

๋กœ๊ทธ ๋ฐ ์ ‘์†๊ธฐ๋ก ์ ๊ฒ€์ด ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ๋Š”๊ฐ€?

ISMS-P 2.9.5๋Š” ๋กœ๊ทธ ๋ฐ ์ ‘์†๊ธฐ๋ก์— ๋Œ€ํ•ด ์ •๊ธฐ์ ์œผ๋กœ ์ ๊ฒ€ํ•˜์—ฌ ์ด์ƒํ–‰์œ„ ์—ฌ๋ถ€๋ฅผ ๋ถ„์„ํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” CloudTrail ์ „์ฒด ๋ฆฌ์ „ ์ˆ˜์ง‘๊ณผ ์ •๊ธฐ ์ ๊ฒ€ ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ์ด์ƒํ–‰์œ„๋ฅผ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‹

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

ISMS-P 2.9.5 ๋กœ๊ทธ ๋ฐ ์ ‘์†๊ธฐ๋ก ์ ๊ฒ€ ์š”๊ตฌ์‚ฌํ•ญ

2.9.5

๋กœ๊ทธ ๋ฐ ์ ‘์†๊ธฐ๋ก ์ ๊ฒ€

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

"์„œ๋ฒ„, ๋„คํŠธ์›Œํฌ์‹œ์Šคํ…œ, ๋ณด์•ˆ์‹œ์Šคํ…œ ๋“ฑ์—์„œ ์ƒ์„ฑ๋œ ๋กœ๊ทธ ๋ฐ ์ ‘์†๊ธฐ๋ก์€ ์ •๊ธฐ์ ์œผ๋กœ ์ ๊ฒ€ํ•˜๊ณ  ์ด์ƒํ–‰์œ„ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์—ฌ์•ผ ํ•˜๋ฉฐ, ๋กœ๊ทธ๊ธฐ๋ก์€ ๋ณ„๋„์˜ ์ €์žฅ์žฅ์น˜์— ๋ฐฑ์—…ยท๋ณด๊ด€ํ•˜์—ฌ์•ผ ํ•œ๋‹ค."

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

CloudTrail Athena Query S3 Object Lock CloudWatch Logs
  • CloudTrail ์ „์ฒด ๋ฆฌ์ „ + ์กฐ์ง ํ™œ์„ฑํ™”
  • Athena๋กœ ์ •๊ธฐ ๋กœ๊ทธ ์ ๊ฒ€ ์ž๋™ํ™”
  • S3 Object Lock์œผ๋กœ ๋กœ๊ทธ ๋ณ€์กฐ ๋ฐฉ์ง€
  • EventBridge๋กœ ์ด์ƒํ–‰์œ„ ํƒ์ง€ ์ž๋™ํ™”

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

  • ๊ฒฐํ•จ: CloudTrail ๋น„ํ™œ์„ฑํ™”
  • ๊ฒฐํ•จ: ์ผ๋ถ€ ๋ฆฌ์ „๋งŒ ๋กœ๊ทธ ์ˆ˜์ง‘
  • ๊ฒฐํ•จ: ์ •๊ธฐ ์ ๊ฒ€ ๋ฏธ์ˆ˜ํ–‰
  • ๊ฒฐํ•จ: ๋กœ๊ทธ ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ ๋ฏธ์„ค์ •
  • ๊ฒฐํ•จ: ๋ณด๊ด€ ๊ธฐ๊ฐ„ ๋ฏธ์ค€์ˆ˜ (1๋…„ ๋ฏธ๋งŒ)
๐Ÿ“„ KISA ISMS-P ์ธ์ฆ๊ธฐ์ค€ ์•ˆ๋‚ด์„œ โ†— โ˜๏ธ Athena CloudTrail ๋ถ„์„ โ†—
๐Ÿ“ฐ

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

๋กœ๊ทธ ์ ๊ฒ€ ๋ฏธํก์œผ๋กœ ๋ฐœ์ƒํ•œ ์‹ค์ œ ์‚ฌ๊ณ 

2019.03 Capital One

1์–ต ๋ช… ์ด์ƒ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ ์œ ์ถœ

AWS ํ™˜๊ฒฝ์—์„œ SSRF ๊ณต๊ฒฉ์„ ํ†ตํ•ด IAM ์ž๊ฒฉ ์ฆ๋ช… ํƒˆ์ทจ. CloudTrail ๋กœ๊ทธ ์ •๊ธฐ ์ ๊ฒ€ ๋ฏธ์ˆ˜ํ–‰์œผ๋กœ ์ˆ˜๊ฐœ์›”๊ฐ„ ์ด์ƒ API ํ˜ธ์ถœ ํƒ์ง€ ๋ชปํ•จ.

๐Ÿ’ก ๊ตํ›ˆ: CloudTrail ๋กœ๊ทธ ์ž๋™ ๋ถ„์„, ์ด์ƒ API ํ˜ธ์ถœ ์‹ค์‹œ๊ฐ„ ํƒ์ง€ ํ•„์ˆ˜

์ถœ์ฒ˜: Bank Info Security โ†—
2020.12 SolarWinds

18,000๊ฐœ ์กฐ์ง ๊ณต๊ธ‰๋ง ์นจํ•ด

SolarWinds Orion์— ์•…์„ฑ์ฝ”๋“œ ์‚ฝ์ž…, 9๊ฐœ์›”๊ฐ„ ํƒ์ง€ ๋ชปํ•จ. ๋กœ๊ทธ ์ •๊ธฐ ์ ๊ฒ€ ๋ฏธ์ˆ˜ํ–‰, ์ด์ƒํ–‰์œ„ ๋ถ„์„ ์ฒด๊ณ„ ๋ถ€์žฌ๋กœ ๋ฏธ๊ตญ ์ •๋ถ€ ๊ธฐ๊ด€ ํฌํ•จ ๋Œ€๊ทœ๋ชจ ์นจํ•ด.

๐Ÿ’ก ๊ตํ›ˆ: ๋กœ๊ทธ ์ •๊ธฐ ์ ๊ฒ€ + ์ด์ƒํ–‰์œ„ ์ž๋™ ๋ถ„์„ ์ฒด๊ณ„ ๊ตฌ์ถ• ํ•„์ˆ˜

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

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

๋ถˆ์™„์ „ํ•œ ๋กœ๊ทธ ์„ค์ •์œผ๋กœ ์ธํ•œ ์œ„ํ—˜

โŒ AS-IS: ๋ถˆ์™„์ „ํ•œ ๋กœ๊ทธ ์„ค์ •

# CloudTrail (๋ฌธ์ œ)
resource "aws_cloudtrail" "main" {
  name           = "main-trail"
  s3_bucket_name = aws_s3_bucket.logs.id
  # is_multi_region_trail ๋ฏธ์„ค์ • โ†’ ๋‹จ์ผ ๋ฆฌ์ „๋งŒ
  # enable_log_file_validation ๋ฏธ์„ค์ • โ†’ ๋ณ€์กฐ ํƒ์ง€ ๋ถˆ๊ฐ€
}

# S3 (๋ฌธ์ œ)
resource "aws_s3_bucket" "logs" {
  bucket = "cloudtrail-logs"
  # object_lock ๋ฏธ์„ค์ • โ†’ ๋กœ๊ทธ ์‚ญ์ œ ๊ฐ€๋Šฅ
  # lifecycle ๋ฏธ์„ค์ • โ†’ ๋ณด๊ด€ ๊ธฐ๊ฐ„ ๊ด€๋ฆฌ ๋ถˆ๊ฐ€
}

๋‹จ์ผ ๋ฆฌ์ „๋งŒ ์ˆ˜์ง‘, ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ ์—†์Œ, Object Lock ์—†์–ด ๋กœ๊ทธ ๋ณ€์กฐ/์‚ญ์ œ ์œ„ํ—˜

โœ“ TO-BE: ์™„์ „ํ•œ ๋กœ๊ทธ ๊ด€๋ฆฌ

# CloudTrail (๊ถŒ์žฅ)
resource "aws_cloudtrail" "org" {
  is_multi_region_trail      = true   # ์ „์ฒด ๋ฆฌ์ „
  is_organization_trail      = true   # ์กฐ์ง ์ „์ฒด
  enable_log_file_validation = true   # ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ
}

# S3 (๊ถŒ์žฅ)
resource "aws_s3_bucket" "logs" {
  object_lock_enabled = true  # ๋ณ€์กฐ ๋ฐฉ์ง€
}
# + Lifecycle: 1๋…„ Glacier, 7๋…„ ์‚ญ์ œ

์ „์ฒด ๋ฆฌ์ „ ์ˆ˜์ง‘, ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ, Object Lock์œผ๋กœ ๋กœ๊ทธ ์™„์ „ ๋ณดํ˜ธ

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

โ—

์ •๊ธฐ ์ ๊ฒ€ ๋ฏธ์ˆ˜ํ–‰ - ๋กœ๊ทธ ๋ถ„์„ ์ฒด๊ณ„ ์—†์Œ

โ—

์ผ๋ถ€ ๋ฆฌ์ „๋งŒ ์ˆ˜์ง‘ - ์ „์ฒด ๋ฆฌ์ „ ๋กœ๊ทธ ๋ˆ„๋ฝ

โ—

๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ ๋ฏธ์„ค์ • - ๋กœ๊ทธ ๋ณ€์กฐ ํƒ์ง€ ๋ถˆ๊ฐ€

โ—

๋ฐฑ์—… ๋ณด๊ด€ ๋ถ€์žฌ - Object Lock ๋ฏธ์„ค์ •

๐Ÿ”

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

Terraform Plan ๋‹จ๊ณ„์—์„œ OPA/Rego ์ •์ฑ…์œผ๋กœ ๋กœ๊ทธ ์ ๊ฒ€ ์„ค์ • ๊ฒ€์ฆ

๋กœ๊ทธ ์ˆ˜์ง‘/์ ๊ฒ€ ์„ค์ • ํƒ์ง€ ๋กœ์ง

ํƒ์ง€ ๋Œ€์ƒ ํŒ๋‹จ ์กฐ๊ฑด ํƒ์ง€ ๊ฒฐ๊ณผ
CloudTrail aws_cloudtrail ๋ฆฌ์†Œ์Šค ๋ฏธ์กด์žฌ Critical - ๋กœ๊ทธ ์ˆ˜์ง‘ ๋น„ํ™œ์„ฑํ™”
CloudTrail is_multi_region_trail = true โœ“ Pass - ์ „์ฒด ๋ฆฌ์ „ ์ˆ˜์ง‘
CloudTrail is_multi_region_trail = false High - ์ผ๋ถ€ ๋ฆฌ์ „ ๋กœ๊ทธ ๋ฏธ์ˆ˜์ง‘
CloudTrail enable_log_file_validation = false High - ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ ๋ฏธ์„ค์ •
S3 Bucket object_lock_enabled = false High - ๋กœ๊ทธ ๋ณ€์กฐ/์‚ญ์ œ ๊ฐ€๋Šฅ
S3 Bucket Lifecycle 1๋…„ ๋ฏธ๋งŒ Medium - ๋ณด๊ด€ ๊ธฐ๊ฐ„ ๋ฏธ์ค€์ˆ˜
๐Ÿ””

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

CloudTrail Insights, Athena Query๋กœ ์ด์ƒํ–‰์œ„ ํƒ์ง€ ๋ฐ ์ •๊ธฐ ์ ๊ฒ€ ์ž๋™ํ™”

CloudTrail Runtime ์ด๋ฒคํŠธ ๋Œ€์‘ ๋กœ์ง

ํƒ์ง€ ์‹œ๋‚˜๋ฆฌ์˜ค ํƒ์ง€ ์กฐ๊ฑด ๋Œ€์‘ ์กฐ์น˜
CloudTrail ์ค‘์ง€ ์‹œ๋„ StopLogging API ํ˜ธ์ถœ Critical - ์ฆ‰์‹œ ์•Œ๋ฆผ + ์ž๋™ ์žฌํ™œ์„ฑํ™” Auto
S3 ๋กœ๊ทธ ์‚ญ์ œ ์‹œ๋„ DeleteObject ๋กœ๊ทธ ๋ฒ„ํ‚ท Critical - ์ฆ‰์‹œ ์•Œ๋ฆผ + ์‚ญ์ œ ์ฐจ๋‹จ Auto
์•ผ๊ฐ„ Root ๋กœ๊ทธ์ธ ๋น„์—…๋ฌด ์‹œ๊ฐ„ Root ์ฝ˜์†” ์ ‘์† High - ๋ณด์•ˆํŒ€ ์•Œ๋ฆผ Auto
์ •๊ธฐ ์ ๊ฒ€ ์ž๋™ํ™” ๋งค์ฃผ Athena ์ฟผ๋ฆฌ ์‹คํ–‰ Schedule - ์ด์ƒํ–‰์œ„ ๋ถ„์„ ๋ฆฌํฌํŠธ Auto
์›”๊ฐ„ ์ ๊ฒ€ ๋ฆฌํฌํŠธ ๋งค์›” ์ดˆ ์ž๋™ ์ƒ์„ฑ Schedule - ISMS-P ์ฆ์  ์ž๋™ ์ƒ์„ฑ Auto
โœ“

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

CloudTrail + S3 Object Lock + ์ •๊ธฐ ์ ๊ฒ€ ์ž๋™ํ™”

๊ถŒ์žฅ ์„ค์ • - CloudTrail + S3 Object Lock + ์ •๊ธฐ ์ ๊ฒ€
log-management.tf
# 1. CloudTrail - ์ „์ฒด ๋ฆฌ์ „ + ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ
resource "aws_cloudtrail" "organization" {
  name                          = "organization-trail"
  s3_bucket_name                = aws_s3_bucket.log_archive.id
  is_multi_region_trail         = true       # ์ „์ฒด ๋ฆฌ์ „
  is_organization_trail         = true       # ์กฐ์ง ์ „์ฒด
  enable_log_file_validation    = true       # ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ
  include_global_service_events = true
}

# 2. S3 - Object Lock (๋กœ๊ทธ ๋ณ€์กฐ ๋ฐฉ์ง€)
resource "aws_s3_bucket" "log_archive" {
  bucket              = "log-archive-${var.account_id}"
  object_lock_enabled = true
}

resource "aws_s3_bucket_object_lock_configuration" "logs" {
  bucket = aws_s3_bucket.log_archive.id
  rule {
    default_retention {
      mode  = "GOVERNANCE"
      years = 1  # 1๋…„ ๋ณด๊ด€
    }
  }
}

# 3. S3 Lifecycle - ๋น„์šฉ ์ตœ์ ํ™” + ์žฅ๊ธฐ ๋ณด๊ด€
resource "aws_s3_bucket_lifecycle_configuration" "logs" {
  bucket = aws_s3_bucket.log_archive.id
  rule {
    id     = "log-retention"
    status = "Enabled"
    transition {
      days          = 90
      storage_class = "STANDARD_IA"
    }
    transition {
      days          = 365
      storage_class = "GLACIER"
    }
    expiration { days = 2555 }  # 7๋…„ ํ›„ ์‚ญ์ œ
  }
}

# 4. ์ •๊ธฐ ์ ๊ฒ€ ์Šค์ผ€์ค„ (์ฃผ๊ฐ„)
resource "aws_cloudwatch_event_rule" "weekly_review" {
  name                = "weekly-log-review"
  schedule_expression = "cron(0 9 ? * MON *)"  # ๋งค์ฃผ ์›”์š”์ผ 9์‹œ
}

# 5. CloudTrail ๋ณ€๊ฒฝ ๊ฐ์ง€ (StopLogging ๋ฐฉ์ง€)
resource "aws_cloudwatch_event_rule" "cloudtrail_change" {
  name = "detect-cloudtrail-change"
  event_pattern = jsonencode({
    source = ["aws.cloudtrail"]
    detail = { eventName = ["StopLogging", "DeleteTrail"] }
  })
}

๐Ÿ’ก ํ•ต์‹ฌ ํฌ์ธํŠธ

  • ์ „์ฒด ๋ฆฌ์ „ + ์กฐ์ง CloudTrail ํ™œ์„ฑํ™”
  • ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ์œผ๋กœ ๋กœ๊ทธ ๋ณ€์กฐ ํƒ์ง€
  • S3 Object Lock์œผ๋กœ ๋กœ๊ทธ ์‚ญ์ œ ๋ฐฉ์ง€
  • ์ฃผ๊ฐ„ Athena ์ฟผ๋ฆฌ๋กœ ์ •๊ธฐ ์ ๊ฒ€ ์ž๋™ํ™”
  • StopLogging ํƒ์ง€๋กœ ๋กœ๊ทธ ๋น„ํ™œ์„ฑํ™” ๋ฐฉ์ง€
  • Lifecycle ์ •์ฑ…์œผ๋กœ ๋ฒ•์  ๋ณด๊ด€๊ธฐ๊ฐ„ ์ค€์ˆ˜

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

โ˜๏ธ Athena CloudTrail ๋ถ„์„ โ†— ๐Ÿ“˜ S3 Object Lock ๊ฐ€์ด๋“œ โ†— ๐Ÿ”ง CloudTrail ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ โ†—
๐Ÿ“Š

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

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

๐Ÿ“‹ ์ ๊ฒ€ ํ•ญ๋ชฉ๋ณ„ ์ฆ์ 

์ ๊ฒ€ ํ•ญ๋ชฉ ์ฆ์  ์ž๋ฃŒ
๋กœ๊ทธ ์ˆ˜์ง‘ ํ˜„ํ™ฉ CloudTrail ํ™œ์„ฑํ™” ๋ฆฌ์ „, ์ˆ˜์ง‘ ๋Œ€์ƒ ์„œ๋น„์Šค ๋ชฉ๋ก
์ •๊ธฐ ์ ๊ฒ€ ์ด๋ ฅ ์ฃผ๊ฐ„/์›”๊ฐ„ Athena ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ, ์ ๊ฒ€ ๋ฆฌํฌํŠธ
์ด์ƒํ–‰์œ„ ํƒ์ง€ EventBridge ์•Œ๋ฆผ ๋‚ด์—ญ, ๋Œ€์‘ ์กฐ์น˜ ๊ธฐ๋ก
๋ฐฑ์—… ๋ฐ ๋ณด๊ด€ S3 Object Lock ์„ค์ •, Lifecycle ์ •์ฑ…
๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ Log File Validation ์„ค์ •, ๊ฒ€์ฆ ๋กœ๊ทธ

๐Ÿ”ง ์ž๋™ํ™” ์ฆ์  ์ˆ˜์ง‘

# CloudTrail ์ „์ฒด ๋ฆฌ์ „ ํ™œ์„ฑํ™” ํ™•์ธ
aws cloudtrail describe-trails \
  --query 'trailList[*].[Name,IsMultiRegionTrail,\
IsOrganizationTrail]'

# ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ ์ƒํƒœ ํ™•์ธ
aws cloudtrail describe-trails \
  --query 'trailList[*].[Name,LogFileValidationEnabled]'

# S3 Object Lock ์„ค์ • ํ™•์ธ
aws s3api get-object-lock-configuration \
  --bucket log-archive-bucket
โšก

BSG ์ฐจ๋ณ„์ 

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

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

  • ํƒ์ง€ ๋ฐฉ์‹: CloudTrail ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋งŒ ๊ฒ€์‚ฌ
  • ํƒ์ง€ ๋กœ์ง: ์ „์ฒด ๋ฆฌ์ „ ํ™œ์„ฑํ™” ๋ฏธํ™•์ธ
  • ํ•œ๊ณ„: ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ ์„ค์ • ๋ฏธ๊ฒ€์‚ฌ
  • ํ•œ๊ณ„: S3 Object Lock ๋ฏธํ™•์ธ
  • ํ•œ๊ณ„: ์ •๊ธฐ ์ ๊ฒ€ ์ฒด๊ณ„ ๋ฏธ๊ฒ€์ฆ

ํ•œ๊ณ„: CloudTrail ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋งŒ ํ™•์ธ, ์‹ค์งˆ์  ๋กœ๊ทธ ์ ๊ฒ€ ์ฒด๊ณ„ ๋ฏธ๊ฒ€์ฆ

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

  • ํƒ์ง€ ๋ฐฉ์‹: CloudTrail + S3 + ์ •๊ธฐ์ ๊ฒ€ ํ†ตํ•ฉ ๊ฒ€์ฆ
  • ์‚ฌ์ „ ํƒ์ง€: ์ „์ฒด ๋ฆฌ์ „ + ์กฐ์ง ํ™œ์„ฑํ™” ํ™•์ธ
  • ๋ณด์•ˆ ์„ค์ •: ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์ฆ + Object Lock ์„ค์ • ํ™•์ธ
  • ์ž๋™ํ™”: ์ •๊ธฐ ์ ๊ฒ€ ์ž๋™ํ™” ์ฒด๊ณ„ ๊ฒ€์ฆ
  • ์ฐจ๋ณ„์ : ์ˆ˜์ง‘ โ†’ ์ ๊ฒ€ โ†’ ๋ฐฑ์—… โ†’ ์ฆ์  ์ž๋™ํ™”

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

โ† ISMS-P ๋งคํ•‘ ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ