S3 Bucket 생성 후 bucket policy 수정 시 access denied 발생 할 때

코코딩딩·2023년 10월 2일
0

AWS

목록 보기
1/1

정적 호스팅을 하기 위해서 s3 bucket을 생성하고,
bucket의 정책을 수정하려고 다음과 같은 명령어를 작성하였다.

aws s3api put-bucket-policy --bucket BUCKET_NAME --policy POLICY

policy 정보는 다음과 같다

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::BUCKET_NAME/*"
    }
  ]
}

하지만 다음과 같은 에러가 발생하였다.

An error occurred (AccessDenied) when calling the PutBucketPolicy operation: Access Denied

해당 aws cli 명령어를 보낸 account는 이미 s3에 대한 모든 권한을 가지고 있다.
그런데도 access denied가 발생하는 것이 이해가 되지 않았다.

chat gpt에게 물어보았지만 별로 도움이 안되는 답변을 들을 뿐이었다.
(무료 버전이어서 그런 것인가? 아니면 영어로 질문을 재대로 하지 못해서 그런 것인가?)

다음 수단으로 보기 싫은 aws 공식 문서를 살펴보았다.
하지만 쉽게 해당 내용에 대한 것을 발견하기 쉽지 않았다.

이젠 우리의 친구 stack overflow를 살펴볼 때이다.

위와 같은 답변을 찾을 수 있었는데 결국 "Public Access"에 대한 설정이 필요하다는 이야기로 이해하였다.

바로 aws console에 접속하여 s3 bucket에서 public access를 수정하니 정상적으로 명령어가 실행되었다.

도대체 public access 설정이 무엇이기에 나를 이렇게 괴롭히는 건가?
해당 키워드를 얻었으니 이를 이용하여 aws 문서를 살펴보았다.
해당 내용은 s3문서에서 Security의 하위 주제이다.
중반부 이후에 등장하기에 공식문서를 일일히 보면서 찾긴 힘들었을 것이다.

대략 해당 내용을 이해하자면, s3 bucket 처음 생성하면 해당 bucket에 public하게 접근할 수 없도록 막아둔다는 내용이다.(aws cli로 bucket 생성을 할 때 세부 옵션을 자세히 보지 않은 내 탓이다.)

그리고 이후 public access를 수정하여 새로운 bucket이나 acccess points나 object로 부터 해당 버킷에 접근할 수 있게 정책을 설정할 수 있다는 것이다.

즉, 해당 설정이 없다면 root 권한을 가지더라도 aws cli로 bucket을 수정할 수 없다.

0개의 댓글