AWS를 이용 할 때는 루트 계정을 사용 하게 되면 모든 리소스의 권한을 가지고 있고
루트 계정의 활동을 추적하는게 어렵기 때문에 IAM유저를 생성해서 사용하는것이 좋다.
IAM유저에는 보안상 MFA를 적용하면 콘솔 또는 CLI, API 접근시 OTP를 이용하여 인증을 거친뒤
리소스에 접근할 수 있게되기 때문에 보안적으로 안전하며 AWS의 모범적인 IAM 보안 방법이다.
또한 IAM 유저의 비밀번호도 주기적으로 변경 하는것이 좋다.
정책 Json 참고 : https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage.html
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowChangePassword", "Effect": "Allow", "Action": [ "iam:ChangePassword" ], "Resource": [ "arn:aws:iam::*:user/${aws:username}" ] }, { "Sid": "AllowGetAccountPasswordPolicy", "Effect": "Allow", "Action": [ "iam:GetAccountPasswordPolicy" ], "Resource": "*" }, { "Sid": "AllowViewAccountInfo", "Effect": "Allow", "Action": [ "iam:GetAccountPasswordPolicy", "iam:GetAccountSummary", "iam:ListVirtualMFADevices" ], "Resource": "*" }, { "Sid": "AllowManageOwnPasswords", "Effect": "Allow", "Action": [ "iam:ChangePassword", "iam:GetUser" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnAccessKeys", "Effect": "Allow", "Action": [ "iam:CreateAccessKey", "iam:DeleteAccessKey", "iam:ListAccessKeys", "iam:UpdateAccessKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnSigningCertificates", "Effect": "Allow", "Action": [ "iam:DeleteSigningCertificate", "iam:ListSigningCertificates", "iam:UpdateSigningCertificate", "iam:UploadSigningCertificate" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnSSHPublicKeys", "Effect": "Allow", "Action": [ "iam:DeleteSSHPublicKey", "iam:GetSSHPublicKey", "iam:ListSSHPublicKeys", "iam:UpdateSSHPublicKey", "iam:UploadSSHPublicKey" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnGitCredentials", "Effect": "Allow", "Action": [ "iam:CreateServiceSpecificCredential", "iam:DeleteServiceSpecificCredential", "iam:ListServiceSpecificCredentials", "iam:ResetServiceSpecificCredential", "iam:UpdateServiceSpecificCredential" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "AllowManageOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice", "iam:DeleteVirtualMFADevice" ], "Resource": "arn:aws:iam::*:mfa/${aws:username}" }, { "Sid": "AllowManageOwnUserMFA", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice", "iam:EnableMFADevice", "iam:ListMFADevices", "iam:ResyncMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "iam:ChangePassword", "iam:GetAccountPasswordPolicy", "sts:GetSessionToken" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } ] }코드를 입력하세요








여기 까지는 IAM 유저 생성과 강제 MFA정책 적용
여기에 비밀번호 정책도 설정하여 주기적으로 비밀번호를 변경한다면 보안적으로 더 안전해지게 된다.
IAM 대시보드 > 계정설정 > 암호정책 편집

MFA를 적용하면 보안적으로 좋긴 하지만
AWS CLI 사용시 MFA인증을 통하여 임시자격을 발급받아 AWS리소스에 접근가능
좋은 글 감사합니다.