Amazon S3에서 파일을 업로드하려고 할 때 ‘403 Forbidden’ 오류가 발생하는 이유는 무엇입니까?

최종 업데이트 날짜: 2022년 4월 27일

Amazon S3 콘솔을 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷에 파일을 업로드하려고 합니다. 그러나 ‘403 Forbidden’ 오류가 발생합니다.

간략한 설명

‘403 Forbidden’ 오류는 다음과 같은 이유로 발생할 수 있습니다.

  • s3:PutObject에서 객체를 추가하거나 s3:PutObjectAcl에서 객체의 ACL을 수정할 수 있는 권한이 누락되었습니다.
  • AWS Key Management Service(AWS KMS) 키를 사용할 수 있는 권한이 없습니다.
  • 버킷 정책에 명시적 거부 문이 있습니다.
  • Amazon S3 퍼블릭 액세스 차단이 활성화되었습니다.
  • 버킷 ACL(액세스 제어 목록)이 AWS 계정 루트 사용자의 객체 사용을 허용하지 않습니다.
  • AWS Organizations 서비스 제어 정책에서 Simple Storage Service(Amazon S3)에 대한 액세스를 허용하지 않습니다.

해결 방법

s3:PutObject 또는 s3:PutObjectAcl에 대한 권한 확인

다음 단계를 수행합니다.

  1. AWS Identity and Access Management(IAM) 콘솔을 엽니다.
  2. 버킷 정책에 액세스하는 데 사용되는 자격 증명(예: 사용자 또는 역할)을 선택합니다.
  3. 버킷 정책에 액세스하는 데 사용할 IAM 자격 증명 이름을 선택합니다.
  4. 권한 탭을 선택하고 각 정책을 확장하여 해당 JSON 정책 문서를 봅니다.
  5. JSON 정책 문서에서 Amazon S3 액세스와 관련된 정책을 검색합니다. 그런 다음, 버킷에 s3:PutObject 또는 s3:PutObjectAcl 작업에 대한 권한이 있는지 확인합니다.

AWS KMS 키를 사용할 수 있는 권한 요청

사용자 지정 AWS KMS 키로 기본 암호화를 사용하는 S3 버킷에 액세스하려면 키 관리자가 사용자에게 키 정책에 대한 권한을 부여해야 합니다.

암호화된 버킷에 객체를 업로드하려면 IAM 사용자 또는 역할에 최소한 kms:Encryptkms:GenerateDataKey에 대한 AWS KMS 권한이 있어야 합니다.

버킷 정책에서 명시적 거부 문 확인

다음 단계를 수행합니다.

  1. Amazon S3 콘솔을 엽니다.
  2. 버킷 목록에서 파일을 업로드하려는 버킷을 엽니다.
  3. 권한 탭을 선택합니다.
  4. 버킷 정책을 선택합니다.
  5. "Effect": "Deny"를 포함하는 문을 검색합니다.
  6. 버킷 정책에 특정 조건을 충족하는 s3:PutObject에 대한 올바른 URI 요청 파라미터가 포함되어 있는지 확인합니다.

중요:Effect”: “Deny”를 사용하여 버킷 정책을 저장하기 전에 S3 버킷에 대한 액세스를 거부하는 문이 있는지 확인합니다. 잠근 경우 실수로 모든 사용자의 Amazon S3 버킷 액세스를 거부했습니다. 액세스 권한을 다시 얻으려면 어떻게 해야 하나요?를 참조하세요.

다음 예시 문은 업로드 요청에 AWS KMS 키 arn:aws:kms:us-east-1:111122223333:key를 사용한 암호화가 포함되어 있지 않는 한 awsdoc-example-buckets3:PutObject에 대한 액세스를 명시적으로 거부합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::awsdoc-example-bucket/*",
      "Condition": {
        "StringNotLikeIfExists": {
          "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/*"
        }
      },
      "Principal": "*"
    }
  ]
}

S3 퍼블릭 액세스 차단 사용 중지

업로드 요청에서 퍼블릭 ACL을 전달하는 경우 S3 퍼블릭 액세스 차단 기능이 활성화되어 있으면 파일을 업로드하기 전에 이를 비활성합니다.

계정 수준에서 S3 퍼블릭 액세스 차단 설정을 구성하는 방법에 대한 자세한 내용은 계정에 퍼블릭 액세스 차단 설정 구성을 참조하세요. 버킷 수준에서 설정을 구성하는 방법은 S3 버킷에 대한 퍼블릭 액세스 차단 설정 구성을 참조하세요.

루트 사용자에게 객체 쓰기 권한 부여

버킷의 ACL 권한을 구성하여 루트 사용자에게 객체 쓰기에 대한 액세스 권한을 부여합니다.

AWS Organizations의 서비스 제어 정책 삭제

AWS Organizations를 사용하는 경우 S3 작업을 명시적으로 거부하는 서비스 제어 정책삭제합니다.