모든 리소스가 동일한 AWS 계정에서 제공되는 Amazon S3 버킷의 403 액세스 거부 오류를 해결하려면 어떻게 해야 하나요?
Amazon Simple Storage Service(S3) 버킷에 액세스하려고 합니다. 모든 관련 리소스는 동일한 AWS 계정에서 제공됩니다. 그러나 ‘403 액세스 거부(Access Denied)’ 오류가 발생합니다.
간략한 설명
Simple Storage Service(Amazon S3) 버킷에 대해 금지된 요청을 수행하면 서비스에서 ‘403 액세스 거부(Access Denied)’ 오류를 반환합니다. 403 액세스 거부 오류를 수동으로 해결하려면 Simple Storage Service(Amazon S3)에서 403 액세스 거부 오류를 해결하려면 어떻게 해야 합니까?를 참조하세요.
또한 AWS Systems Manager의 AWSSupport-TroubleshootS3AccessSameAccount 런북을 사용하여 S3 버킷에서 액세스가 거부된 문제를 진단하는 데 도움을 받을 수 있습니다. 런북은 동일한 AWS 계정의 모든 관련 리소스에 대해 S3 리소스의 요청자에게 부여된 액세스 레벨을 평가합니다. 여기에는 입력 파라미터에 지정된 AWS Identity and Access Management(IAM) 사용자 또는 역할 및 S3 리소스와 연결된 액세스, 사용자 및 리소스 기반 정책이 포함됩니다.
참고: AWSSupport-TroubleshootS3AccessSameAccount는 교차 계정 리소스에 대한 권한을 평가하지 않습니다. 또한 요청자는 S3 버킷 또는 객체와 동일한 AWS 계정에 있어야 합니다.
해결 방법
필수 단계
다음 단계에 따라 Systems Manager 콘솔에서 AWSSupport-TroubleshootS3AccessSameAccount 런북을 실행합니다.
2. 탐색 창에서 [자동화(Automation)]를 선택합니다.
3. [자동화 실행(Execute automation)]을 선택합니다.
4. [문서 선택(Choose document)]에서 [Amazon 소유(Owned by Amazon)] 탭을 선택합니다.
5. 자동화 문서 검색 표시줄의 드롭다운 목록에서 문서 이름 접두사(Document name prefix) 필터를 선택합니다. 그런 다음 드롭다운 목록에서 **같음(Equals)**을 선택하고 AWSSupportTroubleshootS3AccessSameAccount를 입력합니다. 그런 다음, **엔터(Enter)**키를 누릅니다.
6. AWSSupport-TroubleshootS3AccessSameAccount를 선택합니다.
7. [다음]을 선택합니다.
8. **단순 실행(Simple execution)**을 선택합니다.
9. S3ResourceArn의 경우, 문제를 해결하려는 S3 버킷 또는 객체의 ARN을 입력합니다. 예를 들어 객체의 업로드 또는 다운로드를 테스트하려면 다음과 같이 실행하세요.
arn:aws:s3:::bucket_name/key_name
10. S3Action의 경우 런북에서 액세스 컨텍스트를 평가할 S3 작업을 선택합니다.
11. RequesterArn에 특정 S3 리소스에서 액세스 레벨을 찾으려는 IAM 사용자 또는 역할 ARN을 입력합니다. 예:
arn:aws:iam::123456789012:user/user_name or arn:aws:iam::123456789012:role/example-role
12. **실행(Execute)**을 선택합니다.
[실행 상태(Execution status)]를 사용하여 문서의 진행률을 추적할 수 있습니다. 상태가 **성공(Success)**으로 변경되면 출력(Outputs) 섹션에 나열된 결과를 검토합니다. 결과에는 평가된 각 객체에 대한 오류 코드가 포함됩니다.
참고: 평가에서 개별 단계의 결과를 검토하려면 [실행된 단계(Executed steps)]에서 관련 **단계 ID(Step ID)**를 선택합니다.
선택 단계
다음 단계는 선택 사항입니다.
AutomationAssumeRole의 경우 버킷에 요청을 보내도록 Systems Manager의 IAM 역할을 선택할 수 있습니다. 이 필드를 비워 두면 Systems Manager는 문서를 설정하는 데 사용 중인 IAM 자격 증명을 사용합니다. 자세한 내용은 AutomationAssumeRole에 필요한 IAM 권한 섹션을 참조하세요.
중요: 선택한 IAM 역할의 신뢰 정책은 Systems Manager Automation이 역할을 수임하도록 허용해야 합니다. 또한 IAM 역할에는 AWSSupport-TroubleshootS3AccessSameAccount 런북을 실행할 수 있는 권한이 있어야 합니다.
IAM ARN이 역할이고 특정 세션 이름을 제공하려는 경우 RequesterRoleSessionName에 세션 이름을 입력합니다.
객체에 여러 버전이 있는 경우 S3ObjectVersionId에 객체의 VersionId를 입력합니다. 이 파라미터를 사용하면 액세스 컨텍스트를 평가할 객체의 버전을 지정할 수 있습니다.
작업과 관련이 있는 경우 KmsKeyArn에 대한 KMS Key ARN을 입력합니다. 예를 들어 KMS 키로 암호화된 객체의 다운로드를 테스트하려면 다음과 같이 실행하세요.
VPCEndPointID의 경우 액세스 평가와 관련된 Amazon Virtual Private Cloud(Amazon VPC) 엔드포인트 ID를 입력할 수 있습니다. Simple Storage Service(Amazon S3) 버킷 정책은 특정 Amazon VPC 엔드포인트에서 버킷에 대한 액세스를 제어할 수 있습니다.
ContextKeyList의 경우 조건 컨텍스트 키 목록과 정책 평가와 관련된 값을 입력할 수 있습니다. 예를 들어 버킷 정책에서 PutObject에 대한 명시적 거부는 다음과 같습니다.
{"ContextKeyName":"s3:x-amz-server-side-encryption-aws-kms-key-id","ContextKeyValues”:["arn:aws:kms:us-east-1:123456789012:key/abc12345-b1e9-45a3-aa90-39ec93dd9b82”],"ContextKeyType":"string”}
런북에서 입력을 특정 AWS Organizations의 서비스 제어 정책(SCP)과 비교하려면 SCPPolicy에 SCP를 입력합니다. 값을 입력할 때 모든 새 줄, 탭 또는 공백을 제거합니다.
참고: Organization 관리 계정에서 런북을 실행하는 경우 이전 단계는 필요하지 않습니다.
태그의 경우 분류에 도움이 되도록 자동화에 태그를 지정할 수 있습니다.
AWS CLI 명령 및 공유 가능한 실행 링크의 경우 런북은 Linux, Unix 및 macOS X용 AWS Command Line Interface(AWS CLI) 명령 예제를 제공합니다. 런북은 공유 가능한 링크도 제공합니다.
AutomationAssumeRole에 필요한 IAM 권한
AutomationAssumeRole 파라미터를 사용하려면 런북을 사용하기 위해 특정 작업이 필요합니다.
다음 예제 정책에는 자동화 역할에 필요한 작업이 포함되어 있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:SimulateCustomPolicy",
"iam:GetUser",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:ListAttachedUserPolicies",
"iam:ListUserPolicies",
"iam:GetUserPolicy",
"iam:ListGroupsForUser",
"iam:ListGroupPolicies",
"iam:GetGroupPolicy",
"iam:ListAttachedGroupPolicies",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"s3:GetObjectAcl",
"s3:GetObjectVersionAcl",
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::bucket_name/destination-prefix",
"Effect": "Allow"
},
{
"Action": [
"s3:GetBucketPolicy",
"s3:GetBucketAcl",
"s3:ListBucket",
"s3:GetBucketAcl",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::bucket_name",
"Effect": "Allow"
},
{
"Action": [
"ec2:DescribeVpcEndpoints"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"kms:GetKeyPolicy"
],
"Resource": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"Effect": "Allow"
},
{
"Action": [
"organizations:ListPolicies",
"organizations:DescribePolicy"
],
"Resource": "arn:aws:organizations::aws:policy/service_control_policy/*",
"Effect": "Allow"
},
{
"Action": [
"ssm:GetAutomationExecution",
"ssm:DescribeAutomationExecutions"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ssm:StartAutomationExecution",
"Resource": "arn:aws:ssm:*:*:automation-definition/AWSSupport-TroubleshootS3AccessSameAccount:*",
"Effect": "Allow",
"Sid": "StartAutomationExecution"
},
{
"Action": "access-analyzer:ValidatePolicy",
"Resource": "*",
"Effect": "Allow"
}
]
}

관련 콘텐츠
- 질문됨 2달 전lg...
- 질문됨 3달 전lg...
- 질문됨 21일 전lg...
- AWS 공식업데이트됨 8달 전
- AWS 공식업데이트됨 일 년 전