Amazon S3 버킷에 특정 파일 유형만 업로드할 수 있도록 하려면 어떻게 해야 합니까?

2분 분량
0

Amazon Simple Storage Service(Amazon S3) 버킷에 특정 파일 유형만 저장하려고 합니다. 버킷에서 이러한 파일 유형만 수락하도록 업로드를 제한하려면 어떻게 해야 합니까?

해결 방법

버킷 정책에 다음을 수행하는 명령문을 추가합니다.

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

예를 들어, 다음 예제 버킷 정책은 exampleuser에 대한 s3:PutObject 작업을 파일 확장자가 .jpg, .png 또는 .gif인 객체에 대해서만 허용합니다.

경고: 이 예제 버킷 정책에는 명시적 거부 문이 포함됩니다. 사용자가 지정된 조건을 충족하지 않는 경우 버킷 정책을 입력한 사용자도 버킷에 대한 액세스가 거부될 수 있습니다. 따라서 저장하기 전에 버킷 정책을 신중하게 검토해야 합니다. 버킷을 실수로 잠근 경우 실수로 모든 사용자의 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"
      ]
    }
  ]
}

참고:

  • 첫 번째 Principal 값에는 업로드 권한을 부여하려는 사용자의 Amazon 리소스 이름(ARN)을 나열합니다.
  • ResourceNotResource 값에서는 DOC-EXAMPLE-BUCKET을 버킷 이름으로 대체해야 합니다.
  • 버킷 정책에서 리소스를 지정하는 경우 버킷 정책 평가는 대/소문자를 구분합니다. NotResource ‘arn:aws:s3:::DOC-EXAMPLE-BUCKET/*.jpg’에 대한 s3:PutObject 작업을 거부하는 버킷 정책을 사용하면 ‘my_image.jpg’를 업로드할 수 있습니다. 그러나 ‘my_image.JPG’를 업로드하려고 하면 Amazon S3가 액세스 거부 오류를 반환합니다.

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