내 Amazon S3 버킷에 액세스할 수 있는 VPC 엔드포인트 또는 IP 주소를 지정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 3월 9일

특정 Amazon Virtual Private Cloud(VPC) 엔드포인트 또는 특정 외부 IP 주소로부터의 트래픽을 제외하고 Amazon Simple Storage Service(Amazon S3) 버킷으로의 모든 트래픽을 차단하고 싶습니다. 또는 버킷을 사용하여 정적 웹 사이트를 호스팅하고 있으며 특정 VPC 엔드포인트 또는 IP 주소에서만 웹 사이트에 액세스할 수 있도록 하고 싶습니다. 어떻게 해야 합니까?

해결 방법

버킷 정책을 사용하여 S3 버킷에 액세스할 수 있는 VPC 엔드포인트 또는 외부 IP 주소를 지정합니다.

참고: 외부 IP 주소는 VPC 내부 또는 외부에서 이루어질 수 있는 퍼블릭 IP 주소입니다. 예를 들어 외부 IP 주소는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 탄력적 IP 주소이거나 VPC의 NAT 게이트웨이 또는 프록시 서버의 IP 주소일 수 있습니다.

예를 들어 다음 버킷 정책은 지정된 VPC 엔드포인트(aws:sourceVpce) 또는 외부 IP 주소(aws:SourceIp)로부터의 요청이 아니면 버킷으로의 트래픽을 차단합니다. 다음을 수행하십시오.

경고: 이 예제 버킷 정책은 허용된 VPC 엔드포인트 또는 IP 주소를 벗어난 모든 요청에 대한 액세스를 명시적으로 거부합니다. 사용자가 조건을 충족하지 않으면 버킷 정책을 입력한 사용자도 버킷에 대한 액세스를 거부할 수 있습니다. 저장하기 전에 버킷 정책을 신중하게 검토해야 합니다. 실수로 잠긴 경우 실수로 모든 사용자의 Amazon S3 버킷 액세스를 거부했습니다. 액세스 권한을 다시 부여하려면 어떻게 해야 합니까?를 참조하십시오.

{
  "Version": "2012-10-17",
  "Id": "VPCe and SourceIP",
  "Statement": [{
    "Sid": "VPCe and SourceIP",
    "Effect": "Deny",
    "Principal": "*",
    "Action": "s3:*",
    "Resource": [
      "arn:aws:s3:::awsexamplebucket",
      "arn:aws:s3:::awsexamplebucket/*"
    ],
    "Condition": {
      "StringNotEquals": {
        "aws:sourceVpce": [
          "vpce-1111111",
          "vpce-2222222"
        ]
      },
      "NotIpAddress": {
        "aws:SourceIp": [
          "11.11.11.11/32",
          "22.22.22.22/32"
        ]
      }
    }
  }]
}

사용자가 허용된 VPC 엔드포인트 또는 IP 주소에서 요청을 전송하지 않더라도 특정 사용자(동일한 AWS 계정 내)가 버킷에 액세스하도록 허용해야 하는 경우 버킷 정책의 동일한 조건 블록 내에 다음 문을 포함할 수 있습니다.

  • AROAEXAMPLEID는 허용하고자 하는 IAM 역할의 역할 ID입니다.
  • AIDAEXAMPLEID는 허용하고자 하는 IAM 사용자의 사용자 ID입니다.
  • 111111111111은 버킷의 AWS 계정 ID로, 계정의 루트 자격 증명을 나타냅니다.
"StringNotLike": {
"aws:userId": [
"AROAEXAMPLEID:*",
"AIDAEXAMPLEID",
"111111111111"
]
}

특정 IAM 역할에 대한 액세스 권한을 부여하는 방법에 대한 자세한 내용은 특정 IAM 역할에 대한 Amazon S3 버킷 액세스를 제한하는 방법을 참조하십시오.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?