MFA 정책으로 인한 S3 접근 오류 해결하기
S3 서비스 이용 시 AccessDenied 오류가 발생하는 주요 원인은 MFA(Multi-Factor Authentication) 정책 설정에 있습니다.
이 문제를 해결하기 위해서는 다음과 같은 단계를 따르면 됩니다:
- 문제 상황 파악
- CloudTrail 로그 확인
- MFA 정책 수정
- AWS CLI에서 임시 자격 증명 사용
1. 문제 상황 파악
과거 진행했던 S3 접근 오류에 다음과 같은 오류가 있었습니다:
- S3 접근 시: "An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied"
- S3 복사 시: "fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden"
2. CloudTrail 로그 확인
CloudTrail 로그를 확인한 결과, 사용자가 MFA 인증 없이 S3에 접근을 시도한 것으로 확인되었습니다. 액세스 키 ID가 'AKIA'로 시작하는 것은 장기 자격 증명을 사용했음을 나타냅니다.
3. MFA 정책 수정
기존 MFA 정책(MFA_Forced)의 조건문을 다음과 같이 수정합니다:
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:ChangePassword",
"iam:GetAccountPasswordPolicy",
"iam:ListUsers",
"iam:CreateLoginProfile",
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
주요 변경 사항: BoolIfExists
조건을 Bool
조건으로 변경
4. AWS CLI에서 임시 자격 증명 사용
사용자는 MFA 인증 후 임시 자격 증명을 얻어 AWS CLI에서 작업을 수행해야 합니다.
그림 설명
이 그림은 IAM 사용자가 MFA 인증을 통해 임시 자격 증명을 얻고, 이를 사용하여 S3와 같은 AWS 서비스에 안전하게 접근하는 과정을 보여줍니다.
이러한 변경 사항을 적용하면 콘솔 작업에 대해서만 MFA가 적용되며, AWS CLI를 통한 API 작업은 장기 자격 증명으로도 접근이 가능해집니다. 단, 보안을 위해 가능한 한 임시 자격 증명을 사용하는 것이 좋습니다[2][3][4].
출처
[1] Troubleshoot access denied (403 Forbidden) errors in Amazon S3 https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshoot-403-errors.html
[2] Amazon S3 adds additional context to HTTP 403 Access Denied ... https://aws.amazon.com/about-aws/whats-new/2024/08/amazon-s3-http-403-access-denied-error-messages/
[3] IAM: Allows IAM users to self-manage an MFA device https://docs.aws.amazon.com/ja_kr/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html
[4] IAM tutorial: Permit users to manage their credentials and MFA settings https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html
[5] AWS: Allows MFA-authenticated IAM users to manage their own ... https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage-mfa-only.html
[6] IAM 사용자가 MFA 디바이스를 스스로 관리하도록 허용 https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html