"AWSSupport-TroubleshootS3AccessSameAccount" 자동화 런북을 사용하여 동일한 계정에 있는 Amazon S3 버킷에서 발생하는 403 Access denied 이슈를 해결하는 방법

5분 분량
콘텐츠 수준: 중급
0

본 기사는 AWS 지원 자동화 워크플로우(Support Automation Workflow) 의 "AWSSupport-TroubleshootS3AccessSameAccount" 런북을 사용하여 동일한 계정에 있는 Amazon S3 버킷에서 발생하는 403 Access denied 이슈를 진단하고 해결하는 방법에 대해 설명합니다.

개요

동일한 계정에 있는 Amazon S3 버킷에 접근할 때 403 Access denied 이슈가 발생될 수 있습니다.

 

example-403

 

이러한 경우 긴급히 이슈를 해결하기 위해 AWS Support로 지원 케이스를 생성하고 문제 해결을 시도할 수 있지만, AWS 지원 자동화 워크플로우(Support Automation Workflow) 런북을 이용하면 AWS Support의 도움 없이 직접 빠르게 이슈를 해결할 수도 있습니다.

 

AWS 지원 자동화 워크플로우는 AWS Systems Manager 셀프 서비스 자동화 런북 모음입니다. 이러한 런북은 AWS Support 엔지니어링팀에서 고객 문제를 해결하며 배운 모범 사례를 바탕으로 작성되었습니다. 이를 통해 AWS 고객은 AWS 리소스의 일반적인 문제를 진단, 수정, 해결하실 수 있습니다. 또한 네트워크 문제를 사전에 식별하고 로그 수집 및 분석의 다양한 작업을 수행할 수 있습니다. AWS 지원 자동화 워크플로우 런북은 AWS 모범 사례에 따라 수동 작업 및 관리 오버헤드, 인적 오류를 줄일 수 있습니다. [1]

AWS 지원 자동화 워크플로우에서 제공되는 "AWSSupport-TroubleshootS3AccessSameAccount" 런북을 이용하면 동일한 계정에 있는 Amazon S3 버킷에서 발생하는 403 Access denied 이슈를 직접 빠르게 진단하고 해결하실 수 있습니다. [2]

 

본 런북은 동일한 AWS 계정의 모든 관련 리소스에 대해 Amazon S3 리소스에서 요청자에게 부여된 액세스 수준을 평가합니다. 여기에는 Amazon S3 리소스 관련 액세스, 사용자, 리소스 기반 정책이 포함됩니다. 또한 AWS ID 및 액세스 관리 (IAM) 사용자 또는 입력 파라미터에 지정된 역할도 포함됩니다.

참고: AWSSupport-TroubleshootS3AccessSameAccount는 교차 계정 리소스에 대한 사용 권한을 평가하지 않습니다. 또한 요청자는 Amazon S3 버킷 또는 개체와 동일한 AWS 계정에 있어야 합니다.

 

문제 해결

 

필수 단계

1. AWSSupport-TroubleshootS3AccessSameAccount를 통해 시스템 관리자 콘솔의 AWSSupport-TroubleshootS3AccessSameAccount 런북을 엽니다.

2. Execute automation runbook의 Simple execution을 선택합니다.

example-input

3. S3ResourceArn에 문제를 해결하려는 S3 버킷이나 개체의 ARN을 입력합니다. 예를 들어, 개체의 업로드나 다운로드를 테스트할 수 있습니다.

arn:aws:s3:::bucket_name/key_name

4. S3Action의 경우, 런북에서 평가할 S3 작업을 선택합니다.

5. RequesterARN에는 S3 리소스에 접근하는 IAM 사용자 또는 역할 ARN을 입력합니다.

arn:aws:iam::123456789012:user/user_name or arn:aws:iam::123456789012:role/example-rol

6. 하단의 Execute 버튼을 눌러 실행합니다.

7. 런북이 실행되는 동안 위에서 설명한 작업이 자동으로 진행됩니다.

8. 런북이 성공적으로 실행완료되며, 그 결과(Output)을 통해 진단 내용 및 수정 사항을 확인하실 수 있습니다.

 

example-result

 

선택 단계

- AutomationAssumeRole: 시스템 관리자가 버킷에 요청을 보내기 위해 Assume할 IAM 역할을 선택할 수 있습니다. 이 필드를 비워두면 AWS System Manager가 현재 콘솔에서 사용 중인 IAM 주체를 사용합니다. 권한 관련 자세한 내용은 하단의 AutomationAssumeRole에 필요한 IAM 권한 섹션을 참고하세요.

중요: 선택한 IAM 역할의 신뢰 정책에서 AWS System Manager Automation가 역할을 맡을 수 있도록 허용해야 합니다. 또한, IAM 역할에 AWSSupport-TroubleshootS3AccessSameAccount 런북을 실행할 수 있는 권한이 있어야 합니다.

- RequesterRoleSessionName: IAM ARN이 역할이고 특정 세션 이름을 제공하려는 경우 본 필드에 세션 이름을 입력합니다.

- S3ObjectVersionId: 객체에 여러 버전이 있는 경우 본 필드에 개체의 Version ID를 입력합니다. 이 매개 변수를 사용하면 권한을 평가할 객체의 버전을 지정할 수 있습니다.

- KmsKeyArn: KMS Key가 작업과 관련이 있는 경우 본 필드에 KMS Key ARN을 입력합니다. 예를 들어 KMS 키로 암호화된 객체를 다운로드 할 때 해당됩니다.

- VpcEndpointId: 본 필드에 S3로 접근하는 Amazon Virtual Private Cloud (VPC) 엔드포인트 ID를 입력할 수 있습니다. 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'}

- SCPPolicy: AWS Organizations 서비스 제어 정책 (SCP)을 포함해서 실행 한다면 본 필드에 SCP를 입력합니다. 값을 입력할 때는 새 줄, 탭 또는 공백을 모두 제거해야합니다. Organization의 관리 계정이라면 이 단계가 필요하지 않습니다.

- Tags: 분류를 돕기 위해 런북 Automation에 태그를 지정할 수 있습니다.

- AWS CLI command and shareable execution link: 콘솔에서 실행 가능한 공유 링크를 확인할 수 있으며, 리눅스, 유닉스, macOS용 AWS Command Line Interface(AWS CLI) 명령 예제를 제공합니다.

 

AutomationAssumeRole에 필요한 IAM 권한

AutomationAssumeRole 매개 변수를 통해 런북을 사용할 때 실행되는 특정 Action이 있으며 다음 예제 정책은 필요한 권한을 포함합니다.

{  
  "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"
    }
  ]
}

 

만약, 위와 같이 AWS 지원 자동화 워크플로우 (Support Automation Workflow) 런북을 진행하였음에도 불구 이슈가 해결되지 않거나 이슈 해결에 보다 전문적인 도움이 필요한 경우 위와 같이 실행한 런북 실행 ID 및 실행 결과 등의 정보와 함께 AWS Premium Support에 도움을 요청해 주시길 바랍니다.

 

참고:

[1] AWS 지원 자동화 워크플로우(AWS Support Automation Workflow - AWS SAW)

https://aws.amazon.com/ko/premiumsupport/technology/saw/

[2] AWSSupport-TroubleshootS3AccessSameAccount

https://ap-northeast-2.console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootS3AccessSameAccount?region=ap-northeast-2

댓글 없음

관련 콘텐츠