Amazon S3에 파일을 업로드하려고 할 때 “403 Forbidden” 오류가 발생하는 이유는 무엇인가요?

3분 분량
0

Amazon S3 콘솔을 사용하여 Amazon Simple Storage Service(S3) 버킷에 파일을 업로드하려고 합니다. 하지만 “403 Forbidden” 오류가 발생합니다.

간략한 설명

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

  • s3:PutObject에 대해 객체를 추가할 권한 또는 s3:PutObjectAcl에 대해 객체의 ACL을 수정할 권한이 없습니다.
  • AWS Key Management Service(AWS KMS) 키를 사용할 권한이 없습니다.
  • 버킷 정책에는 명시적인 거부 명령문이 있습니다.
  • Amazon S3 퍼블릭 액세스 차단이 켜져 있습니다.
  • AWS 조직 서비스 제어 정책은 Amazon S3에 대한 액세스를 허용하지 않습니다.

해결 방법


s3:PutObject 또는 s3:PutObjectACL에 대한 권한을 확인하세요.

다음 단계를 따르세요.

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

AWS KMS 키 사용 권한 요청

AWS KMS로 암호화된 객체를 업로드하려면 AWS KMS 작업을 수행할 권한이 있어야 합니다. 최소한 KMS:암호 kms:Decrypt 및 kms:GenerateDataKey 작업을 수행할 수 있어야 합니다.

중요: 다른 계정의 버킷에 객체를 업로드하는 경우 AWS 관리 키 aws/S3을 기본 암호화 키로 사용할 수 없습니다. 이는 AWS 관리형 키 정책을 수정할 수 없기 때문입니다.

버킷 정책에 명시적 거부 명령문이 있는지 확인하세요.

다음 단계를 따르세요.

  1. Amazon S3 콘솔을 엽니다.
  2. 버킷 목록에서 파일을 업로드하려는 버킷을 엽니다.
  3. 권한 탭을 선택합니다.
  4. 버킷 정책을 선택합니다.
  5. **“Effect” "Deny"**가 포함된 문을 검색합니다.
  6. 이러한 설명을 검토하여 버킷으로의 업로드를 방해하지 않는지 확인하세요.

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

다음 예제 명령문은 업로드 요청에서 arn:aws:kms:us-east-1:111122223333:key와 일치하는 AWS KMS 키로 객체를 암호화하지 않는 한 example-bucket에서 s3:PutObject에 대한 액세스를 명시적으로 거부합니다.

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

요청에서 퍼블릭 ACL을 제거하거나 S3 퍼블릭 액세스 차단을 비활성화합니다.

PUT 요청에서 public-read 또는 authenticated-read와 같은 퍼블릭 ACL을 전달하면 S3 객체가 퍼블릭으로 설정됩니다. 이 계정 또는 버킷에 대해 S3 퍼블릭 액세스 차단 기능이 켜져 있는 경우 업로드 요청이 거부됩니다.

참고: 사용 사례에서 요구하지 않는 한 객체를 공개하는 것은 좋은 방법이 아닙니다.

객체를 공개적으로 사용 가능한 객체로 성공적으로 업로드하려면 필요에 따라 S3 액세스 차단 기능을 수정하세요. 사용 사례에서 객체를 공개적으로 사용할 수 있도록 설정하지 않아도 되는 경우에는 PUT 요청에서 언급된 퍼블릭 ACL을 삭제하세요.

계정 수준에서 S3 퍼블릭 액세스 차단 설정을 구성하려면 계정에 대한 퍼블릭 액세스 차단 설정 구성을 참조하세요. 버킷 수준에서 설정을 구성하려면 S3 버킷에 대한 퍼블릭 액세스 차단 설정 구성을 참조하세요. 또한 “퍼블릭”의 의미도 참조하세요.

AWS 조직에 대한 서비스 제어 정책 검토

AWS Organizations를 사용하는 경우 서비스 제어 정책이 S3 작업을 명시적으로 거부하는지 확인하세요. 그럴 경우 정책을 원하는 대로 수정하세요.

관련 정보

Amazon S3의 403 액세스 거부 오류를 해결하려면 어떻게 해야 하나요?

Amazon S3에서 버킷 정책을 수정하려고 할 때 “버킷 정책을 편집할 권한이 없습니다.”라는 오류를 해결하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전