퍼블릭 클라우드

AWS IAM 사용자에게 MFA 강제 적용하고 정책과 MFA 디바이스를 스스로 관리 설정하는 정책

변군이글루 2025. 4. 29. 16:40
반응형

AWS IAM 사용자에게 MFA 강제 적용하고 정책과 MFA 디바이스를 스스로 관리 설정하는 정책

AWS IAM 사용자에게 MFA(Multi-Factor Authentication)를 강제 적용하고 각 사용자가 자신의 정책과 MFA 디바이스를 스스로 관리하도록 허용하는 IAM 정책입니다.

1. MFA 미사용 시 모든 액세스를 차단하는 정책(MFA 강제 정책)

MFA 인증 여부를 확인하고 MFA 인증된 경우에만 AWS 리소스에 대한 접근을 허용하는 정책을 정의합니다.

정책 이름 : EnforceMFAAccessPolicy

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllActionsWithoutMFA",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "BoolIfExists": {
          "aws:MultiFactorAuthPresent": "false"
        }
      }
    },
    {
      "Sid": "AllowMinimalMFASetup",
      "Effect": "Allow",
      "Action": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ListMFADevices",
        "iam:ResyncMFADevice",
        "iam:DeactivateMFADevice",
        "iam:DeleteVirtualMFADevice",
        "iam:GetUser",
        "iam:ListVirtualMFADevices",
        "sts:GetSessionToken"
      ],
      "Resource": [
        "arn:aws:iam::*:user/${aws:username}",
        "arn:aws:iam::*:mfa/${aws:username}"
      ]
    },
    {
      "Sid": "AllowChangeOwnPassword",
      "Effect": "Allow",
      "Action": [
        "iam:ChangePassword",
        "iam:GetLoginProfile",
        "iam:UpdateLoginProfile"
      ],
      "Resource": "arn:aws:iam::*:user/${aws:username}"
    }
  ]
}

2. IAM 사용자가 자신의 비밀번호 및 MFA 디바이스를 스스로 등록/관리하는 정책(자체 관리 정책)

사용자가 자신의 정책 및 MFA 디바이스를 관리할 수 있는 권한을 부여하는 정책을 정의합니다.

정책 이름 : SelfManageMFAAndPolicyPolicy

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowManageOwnInlinePolicies",
      "Effect": "Allow",
      "Action": [
        "iam:GetUserPolicy",
        "iam:ListUserPolicies",
        "iam:PutUserPolicy",
        "iam:DeleteUserPolicy"
      ],
      "Resource": "arn:aws:iam::*:user/${aws:username}"
    },
    {
      "Sid": "AllowFullSelfMFADeviceManagement",
      "Effect": "Allow",
      "Action": [
        "iam:CreateVirtualMFADevice",
        "iam:DeleteVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:DeactivateMFADevice",
        "iam:ListVirtualMFADevices",
        "iam:ListMFADevices",
        "iam:ResyncMFADevice",
        "iam:GetUser"
      ],
      "Resource": [
        "arn:aws:iam::*:user/${aws:username}",
        "arn:aws:iam::*:mfa/${aws:username}"
      ]
    },
    {
      "Sid": "AllowManageOwnPassword",
      "Effect": "Allow",
      "Action": [
        "iam:GetLoginProfile",
        "iam:UpdateLoginProfile",
        "iam:ChangePassword"
      ],
      "Resource": "arn:aws:iam::*:user/${aws:username}"
    }
  ]
}

 

728x90
반응형