โ† Cloud Security Service Integration

ISMS-P 2.5.3 ์‚ฌ์šฉ์ž ์ธ์ฆ High Risk

์‚ฌ์šฉ์ž ์ธ์ฆ์ด ๊ฐ•ํ™”๋˜์–ด ์žˆ๋Š”๊ฐ€?

ISMS-P 2.5.3์€ ์•ˆ์ „ํ•œ ์ธ์ฆ์ ˆ์ฐจ์™€ ๊ฐ•ํ™”๋œ ์ธ์ฆ๋ฐฉ์‹(MFA) ์ ์šฉ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” Root/IAM User MFA ํ•„์ˆ˜ + ์กฐ๊ฑด๋ถ€ ์ •์ฑ… + ์„ธ์…˜ ํƒ€์ž„์•„์›ƒ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‹

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

ISMS-P 2.5.3 ์‚ฌ์šฉ์ž ์ธ์ฆ ์š”๊ตฌ์‚ฌํ•ญ

2.5.3

์‚ฌ์šฉ์ž ์ธ์ฆ

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

"์ •๋ณด์‹œ์Šคํ…œ๊ณผ ๊ฐœ์ธ์ •๋ณด ๋ฐ ์ค‘์š”์ •๋ณด์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž์˜ ์ ‘๊ทผ์€ ์•ˆ์ „ํ•œ ์ธ์ฆ์ ˆ์ฐจ์™€ ํ•„์š”์— ๋”ฐ๋ผ ๊ฐ•ํ™”๋œ ์ธ์ฆ๋ฐฉ์‹์„ ์ ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๋กœ๊ทธ์ธ ํšŸ์ˆ˜ ์ œํ•œ, ๋ถˆ๋ฒ• ๋กœ๊ทธ์ธ ์‹œ๋„ ๊ฒฝ๊ณ  ๋“ฑ ๋น„์ธ๊ฐ€์ž ์ ‘๊ทผ ํ†ต์ œ๋ฐฉ์•ˆ์„ ์ˆ˜๋ฆฝยท์ดํ–‰ํ•˜์—ฌ์•ผ ํ•œ๋‹ค."

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

  • AWS Root ๊ณ„์ • MFA ํ•„์ˆ˜ (Hardware ๊ถŒ์žฅ)
  • IAM ์‚ฌ์šฉ์ž Console ์ ‘๊ทผ ์‹œ MFA ์ ์šฉ
  • ๋กœ๊ทธ์ธ ์‹คํŒจ ํšŸ์ˆ˜ ์ œํ•œ ๋ฐ ๊ณ„์ • ์ž ๊ธˆ
  • Session Timeout ์„ค์ • (์œ ํœด ์‹œ ์ž๋™ ๋กœ๊ทธ์•„์›ƒ)
  • ๊ณ ๊ถŒํ•œ ์ž‘์—…์— MFA ์กฐ๊ฑด๋ถ€ ์ •์ฑ… ์ ์šฉ

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

  • ๊ฒฐํ•จ: Root ๊ณ„์ •์— MFA ๋ฏธ์ ์šฉ
  • ๊ฒฐํ•จ: IAM User Console MFA ๋ฏธ์ ์šฉ
  • ๊ฒฐํ•จ: ์™ธ๋ถ€์—์„œ ID/PW๋งŒ์œผ๋กœ ์ ‘๊ทผ ํ—ˆ์šฉ
  • ๊ฒฐํ•จ: ๋กœ๊ทธ์ธ ์‹คํŒจ ํšŸ์ˆ˜ ์ œํ•œ ์—†์Œ
๐Ÿ“„ KISA ISMS-P ์ธ์ฆ๊ธฐ์ค€ ์•ˆ๋‚ด์„œ โ†— ๐Ÿ“– ISMS-P 2.5.3 ์ƒ์„ธ ์•ˆ๋‚ด โ†—
๐Ÿ“ฐ

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

MFA ๋ฏธ์ ์šฉ์œผ๋กœ ๋ฐœ์ƒํ•œ ํด๋ผ์šฐ๋“œ ์นจํ•ด ์‚ฌ๋ก€

2024

AWS ๊ณ„์ • ํƒˆ์ทจ๋กœ ๋น„ํŠธ์ฝ”์ธ ์ฑ„๊ตด

MFA ๋ฏธ์ ์šฉ ๊ณ„์ •์ด ํƒˆ์ทจ๋˜์–ด ํ•ด์ปค๊ฐ€ ๊ณ ์‚ฌ์–‘ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ๋Œ€๋Ÿ‰ ์ƒ์„ฑ, ๋น„ํŠธ์ฝ”์ธ ์ฑ„๊ตด์— ์•…์šฉ. ๋‹จ๊ธฐ๊ฐ„์— ์ˆ˜๋งŒ ๋‹ฌ๋Ÿฌ์˜ ๋น„์šฉ ๋ฐœ์ƒ. Root ๊ณ„์ • ํƒˆ์ทจ ์‹œ ์„œ๋น„์Šค ์ œ์–ด๊ถŒ ์™„์ „ ์ƒ์‹ค.

๐Ÿ’ก ๊ตํ›ˆ: Root ๊ณ„์ • ๋ฐ ๋ชจ๋“  IAM User์— MFA ํ•„์ˆ˜ ์ ์šฉ

์ถœ์ฒ˜: The Hacker News โ†—
2024

LLM Hijacking ์‹ ์ข… ๊ณต๊ฒฉ

ํด๋ผ์šฐ๋“œ์—์„œ ๋…ธ์ถœ๋œ Access Key๋ฅผ ํƒˆ์ทจํ•˜์—ฌ AWS Bedrock ๋“ฑ LLM ์„œ๋น„์Šค ์•…์šฉ. ์ž๊ฒฉ์ฆ๋ช… ํƒˆ์ทจ ํ›„ 21๋ถ„ ๋‚ด ์นจํˆฌ ๋ฐ ์ˆ˜ํ‰์ด๋™ ์™„๋ฃŒ. ํ”ผํ•ด์ž์˜ ๋น„์šฉ์œผ๋กœ ๋ถˆ๋ฒ• AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šด์˜.

๐Ÿ’ก ๊ตํ›ˆ: MFA + Identity Federation ํ•„์ˆ˜, Access Key ์žฅ๊ธฐ ์‚ฌ์šฉ ์ง€์–‘

์ถœ์ฒ˜: The Hacker News โ†—
โšก

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

MFA ๋ฏธ์ ์šฉ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ณด์•ˆ ์œ„ํ˜‘

MFA ๋ฏธ์ ์šฉ (์œ„ํ—˜)

ID/PW

๐Ÿ”“

โ†’

์ „์ฒด ์ ‘๊ทผ

๐Ÿ’ธ

โ†‘ ํƒˆ์ทจ ์ฆ‰์‹œ ์ „์ฒด ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ

ID/PW ํƒˆ์ทจ ์‹œ 21๋ถ„ ๋‚ด ์นจํˆฌ โ†’ ISMS-P 2.5.3 ๋ฏธ์ถฉ์กฑ

MFA ์ ์šฉ (๊ถŒ์žฅ)

ID/PW

๐Ÿ”‘

+

MFA

๐Ÿ“ฑ

โ†’

๋ณดํ˜ธ

๐Ÿ”’

โ†‘ 2๋‹จ๊ณ„ ์ธ์ฆ ํ•„์ˆ˜

ID/PW ํƒˆ์ทจํ•ด๋„ MFA ์—†์ด ์ ‘๊ทผ ๋ถˆ๊ฐ€ โ†’ ์ธ์ฆ ๊ธฐ์ค€ ์ถฉ์กฑ

๐Ÿšจ

๋ฐœ๊ฒฌ ์‚ฌ๋ก€: IAM ์‚ฌ์šฉ์ž Console ์ ‘๊ทผ ์‹œ MFA ๋ฏธ์ ์šฉ, Root ๊ณ„์ • MFA ๋ฏธ์„ค์ •

๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ€์ง„ IAM User๊ฐ€ MFA ์—†์ด Console์— ์ ‘๊ทผ ๊ฐ€๋Šฅ. Root ๊ณ„์ •์—๋„ MFA ๋ฏธ์„ค์ •์œผ๋กœ ํƒˆ์ทจ ์‹œ ์ „์ฒด ์„œ๋น„์Šค ์žฅ์•… ๊ฐ€๋Šฅ.

ํ˜„์žฌ ์ƒํƒœ - ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์„ค์ •
# IAM ์‚ฌ์šฉ์ž - MFA ์—†์ด Console ์ ‘๊ทผ ๊ฐ€๋Šฅ
resource "aws_iam_user" "admin" {
  name = "admin-user"
}

resource "aws_iam_user_login_profile" "admin" {
  user = aws_iam_user.admin.name
  # MFA ๊ฐ•์ œ ์ •์ฑ… ์—†์Œ
  # Console ๋กœ๊ทธ์ธ ์‹œ ID/PW๋งŒ ํ•„์š”
}

# AdministratorAccess - MFA ์กฐ๊ฑด ์—†์Œ (์œ„ํ—˜!)
resource "aws_iam_user_policy_attachment" "admin" {
  user       = aws_iam_user.admin.name
  policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess"
  # MFA ์ธ์ฆ ์—†์ด ๋ชจ๋“  AWS ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ๊ฐ€๋Šฅ
}

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

โ—

Root ๊ณ„์ • MFA ๋ฏธ์ ์šฉ

โ—

IAM User Console MFA ๋ฏธ๊ฐ•์ œ

โ—

๊ณ ๊ถŒํ•œ ์ž‘์—…์— MFA ์กฐ๊ฑด ์—†์Œ

โ—

Session Timeout ๋ฏธ์„ค์ •

๐Ÿ”

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

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

MFA ์ •์ฑ… ํƒ์ง€ ๋กœ์ง

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
๐Ÿ–ฅ๏ธ IAM User Login Profile
MFA ๊ฐ•์ œ ์ •์ฑ… ์—†์Œ High - ๊ฒฝ๊ณ 
MFA ๊ฐ•์ œ ์ •์ฑ… ์ ์šฉ โœ“ ํ†ต๊ณผ
๐Ÿ“œ IAM Policy (๊ณ ๊ถŒํ•œ)
MFA ์กฐ๊ฑด ์—†์ด Admin ๊ถŒํ•œ Critical - ์ฐจ๋‹จ
MultiFactorAuthPresent ์กฐ๊ฑด โœ“ ํ†ต๊ณผ
๐Ÿ”„ AssumeRole ์ •์ฑ…
MFA ์กฐ๊ฑด ์—†์Œ High - ๊ฒฝ๊ณ 
MFA ์กฐ๊ฑด + ์„ธ์…˜ ์‹œ๊ฐ„ ์ œํ•œ โœ“ ํ†ต๊ณผ
๐Ÿ””

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

๋Ÿฐํƒ€์ž„ MFA ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง

MFA ์ƒํƒœ ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋กœ์ง

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
๐Ÿ‘‘ Root Account
MFA ๋ฏธํ™œ์„ฑํ™” Critical - ์ฆ‰์‹œ ์•Œ๋ฆผ
MFA ํ™œ์„ฑํ™” (Virtual) Medium - Hardware ๊ถŒ๊ณ 
MFA ํ™œ์„ฑํ™” (Hardware) โœ“ ํ†ต๊ณผ
๐Ÿ‘ค IAM User (Console)
MFA ๋ฏธ๋“ฑ๋ก High - Slack ์•Œ๋ฆผ
MFA ๋“ฑ๋ก ์™„๋ฃŒ โœ“ ํ†ต๊ณผ
๐Ÿšซ Console ๋กœ๊ทธ์ธ ์‹คํŒจ
5ํšŒ ์—ฐ์† ์‹คํŒจ High - ๊ณ„์ • ์ž ๊ธˆ ๊ถŒ๊ณ 

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

Account ID IAM User ARN MFA ํƒ€์ž… ๋งˆ์ง€๋ง‰ ๋กœ๊ทธ์ธ ์ผ์‹œ
โœ“

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

์ฆ‰์‹œ ์ ์šฉ ๊ฐ€๋Šฅํ•œ MFA ๊ฐ•์ œ ์ •์ฑ…

โŒ ๋ฌธ์ œ

Root/IAM User MFA ๋ฏธ์ ์šฉ, ๊ณ ๊ถŒํ•œ ์ •์ฑ…์— MFA ์กฐ๊ฑด ์—†์Œ

โœ“ ์ ์šฉ

ForceMFA ์ •์ฑ… + ์กฐ๊ฑด๋ถ€ ๊ถŒํ•œ + ์„ธ์…˜ ์ œํ•œ

๊ถŒ์žฅ ์„ค์ • (๋ณต์‚ฌํ•˜์—ฌ ์ ์šฉ)
iam-mfa.tf
# MFA ๊ฐ•์ œ ์ •์ฑ… - ๋ชจ๋“  IAM User์— ์ ์šฉ
resource "aws_iam_policy" "force_mfa" {
  name        = "ForceMFA"
  description = "MFA ๋ฏธ๋“ฑ๋ก ์‹œ ๊ถŒํ•œ ์ œํ•œ"

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Sid    = "AllowManageOwnMFA"
        Effect = "Allow"
        Action = [
          "iam:CreateVirtualMFADevice",
          "iam:EnableMFADevice",
          "iam:ListMFADevices"
        ]
        Resource = "arn:aws:iam::*:user/$${aws:username}"
      },
      {
        Sid    = "DenyAllExceptMFA"
        Effect = "Deny"
        NotAction = [
          "iam:CreateVirtualMFADevice",
          "iam:EnableMFADevice",
          "iam:ListMFADevices",
          "sts:GetSessionToken"
        ]
        Resource = "*"
        Condition = {
          BoolIfExists = {
            "aws:MultiFactorAuthPresent" = "false"
          }
        }
      }
    ]
  })
}

# MFA ์กฐ๊ฑด๋ถ€ ๊ด€๋ฆฌ์ž Role
resource "aws_iam_role" "admin_with_mfa" {
  name = "AdminRoleWithMFA"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Effect = "Allow"
      Principal = { AWS = "arn:aws:iam::123456789012:root" }
      Action = "sts:AssumeRole"
      Condition = {
        Bool = { "aws:MultiFactorAuthPresent" = "true" }
        NumericLessThan = { "aws:MultiFactorAuthAge" = "3600" }
      }
    }]
  })
}

๐Ÿ’ก ํ•ต์‹ฌ: ๋ชจ๋“  IAM ์‚ฌ์šฉ์ž์—๊ฒŒ ForceMFA ์ •์ฑ…์„ ์ ์šฉํ•˜์—ฌ MFA ๋ฏธ๋“ฑ๋ก ์‹œ MFA ๊ด€๋ฆฌ ์™ธ ๋ชจ๋“  ์ž‘์—…์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ถŒํ•œ ์ž‘์—…์—๋Š” aws:MultiFactorAuthPresent ์กฐ๊ฑด์„ ํ•„์ˆ˜๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. Root ๊ณ„์ •์—๋Š” Hardware MFA๋ฅผ ์ ์šฉํ•˜๊ณ  ๋ณ„๋„ ์ „์šฉ ๋””๋ฐ”์ด์Šค๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ”’ AWS MFA ๋ชจ๋ฒ”์‚ฌ๋ก€ โ†— ๐Ÿ“ฑ AWS IAM MFA ์„ค์ • ๊ฐ€์ด๋“œ โ†— ๐Ÿ‘‘ Root MFA ํ™œ์„ฑํ™” ๊ฐ€์ด๋“œ โ†—
๐Ÿ“Š

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

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

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

  • Root ๊ณ„์ • MFA ํ™œ์„ฑํ™” ์—ฌ๋ถ€
  • Root MFA ํƒ€์ž… (Virtual/Hardware)
  • IAM User Console MFA ๋“ฑ๋ก ํ˜„ํ™ฉ
  • ๊ณ ๊ถŒํ•œ ์ •์ฑ… MFA ์กฐ๊ฑด ํฌํ•จ ์—ฌ๋ถ€
  • ๋กœ๊ทธ์ธ ์‹คํŒจ ํšŸ์ˆ˜ ๋ฐ ํŒจํ„ด

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

์‹ค์‹œ๊ฐ„

MFA ๋ฏธ๋“ฑ๋ก ๊ณ„์ • Console ์ ‘๊ทผ ์•Œ๋ฆผ

์ผ๊ฐ„

๋กœ๊ทธ์ธ ์‹คํŒจ ํ˜„ํ™ฉ ๋ฐ ์ด์ƒ ํŒจํ„ด

์›”๊ฐ„

ISMS-P ์ฆ์  (MFA ํ˜„ํ™ฉ ๋ฆฌํฌํŠธ)

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

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

Email Slack

์ €์žฅ์†Œ

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

BSG ์ฐจ๋ณ„์ 

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

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

MFA ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋งŒ ๋‹จ์ˆœ ์ฒดํฌ

  • mfa_active == false ๋น„๊ต
  • Virtual vs Hardware MFA ๊ตฌ๋ถ„ ์•ˆ๋จ
  • ์ •์ฑ… ์ˆ˜์ค€ MFA ์กฐ๊ฑด ๊ฒ€์ฆ ๋ถˆ๊ฐ€

ํ•œ๊ณ„: AssumeRole MFA ์š”๊ตฌ ์—ฌ๋ถ€ ๋ฏธํ™•์ธ, ์„ธ์…˜ ์‹œ๊ฐ„ ์ œํ•œ ๋ฏธ์ ๊ฒ€

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

IaC ์ •์ฑ… ๋ถ„์„ + ๋Ÿฐํƒ€์ž„ ๋ชจ๋‹ˆํ„ฐ๋ง

  • ๋ฐฐํฌ ์ „ MFA ์กฐ๊ฑด ์—†๋Š” ๊ณ ๊ถŒํ•œ ์ •์ฑ… ์ฐจ๋‹จ
  • Virtual vs Hardware MFA ํƒ€์ž… ๊ตฌ๋ถ„
  • AssumeRole MFA ์กฐ๊ฑด + ์„ธ์…˜ ์‹œ๊ฐ„ ๊ฒ€์ฆ

์ฐจ๋ณ„์ : ์ •์ฑ… ๊ธฐ๋ฐ˜ MFA ๊ฐ•์ œ + ์„ธ์…˜ ์‹œ๊ฐ„ ์ œํ•œ + MFA ํƒ€์ž… ์‹ฌ๊ฐ๋„ ๋ถ„๋ฅ˜

<- Cloud Security & Access Control๋กœ ๋Œ์•„๊ฐ€๊ธฐ