사용자가 특정 파일 유형만 Amazon S3 버킷에 업로드하도록 허용하려면 어떻게 해야 합니까?

2분 분량
0

Amazon Simple Storage Service (Amazon S3) 버킷에 특정 파일 유형만 저장하고 싶습니다. 버킷에서 해당 파일 유형만 허용하도록 업로드를 제한하고 싶습니다.

해결 방법

다음 작업을 허용하거나 거부하는 문을 버킷 정책에 추가합니다.

  • 원하는 파일 유형의 확장자를 가진 객체에만 s3:PutObject 작업을 허용합니다.
  • 원하는 파일 유형의 확장자가 없는 객체에 대해서는 **s3:PutObject ** 작업을 명시적으로 거부합니다.
    **참고:**이 명시적 거부 문은 Amazon S3 리소스에 대한 전체 액세스 권한을 가진 사용자에게 파일 유형 요구 사항을 적용합니다.

예를 들어 이 버킷 정책을 사용하면 .jpg, .png, 또는 .gif 파일 확장자를 가진 개체에 대해서만 s3:PutObject 작업을 exampleuser에게 허용할 수 있습니다.

**경고:**이 예제 버킷 정책에는 명시적 거부 문이 포함되어 있습니다. 사용자가 지정된 조건을 충족하지 못할 경우 버킷 정책을 설정한 사용자라도 버킷에 대한 액세스가 거부될 수 있습니다. 따라서 저장하기 전에 버킷 정책을 주의 깊게 검토해야 합니다. 실수로 버킷을 잠근다면 뜻하지 않게 Amazon S3 버킷에 대한 모든 사용자의 접근을 거부한 것을 알게 됩니다. 액세스 권한을 다시 얻으려면 어떻게 해야 하나요?

{
  "Version": "2012-10-17",
  "Id": "Policy1464968545158",
  "Statement": [
    {
      "Sid": "Stmt1464968483619",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111111111111:user/exampleuser"
      },
      "Action": "s3:PutObject",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.png",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.gif"
      ]
    },
    {
      "Sid": "Stmt1464968483619",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "NotResource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.png",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.gif"
      ]
    }
  ]
}

참고:

  • 첫 번째 주체 값에는 업로드 권한을 부여하려는 사용자의 Amazon 리소스 이름(ARN)을 나열합니다.
  • 리소스 값과 NOTResource 값의 경우 DOC-EXAMPLE-BUCKET을 버킷 이름으로 바꿉니다.
  • 버킷 정책에서 리소스를 지정할 때 버킷 정책 평가는 대소문자를 구분합니다. NotResource arn:aws:s3::DOC-EXAMPLE-BUCKET/*.jpg에 대한 s3:PutObject 작업을 거부하는 버킷 정책을 사용하면 my_image.jpg를 업로드할 수 있습니다. 하지만 my_image.JPG를 업로드하려고 하면 Amazon S3에서 액세스 거부 오류를 반환합니다.
AWS 공식
AWS 공식업데이트됨 7달 전