특정 VPC 엔드포인트나 IP 주소를 사용하여 Amazon S3 버킷에 대한 액세스를 제한하려면 어떻게 해야 하나요?

3분 분량
0

특정 Amazon Virtual Private Cloud(VPC) 엔드포인트나 특정 IP 주소 외 모든 트래픽을 차단하고 싶습니다. 또는 정적 웹사이트를 호스팅하기 위해 Amazon Simple Storage Service(S3) 버킷을 사용하고 있습니다. 이 웹사이트는 특정 VPC 엔드포인트나 IP 주소에서 액세스할 수 있어야 합니다.

해결 방법

경고: 이 문서에 안내된 버킷 정책 예제는 허용된 VPC 엔드포인트나 IP 주소 외 모든 요청에 대한 액세스를 명시적으로 거부합니다. 버킷 정책을 저장하기 전에 주의 깊게 검토하세요.

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

참고: VPC 소스 IP 주소는 VPC 내부 프라이빗 IP 주소입니다. 프라이빗 주소는 인터넷을 통해 연결할 수 없으며 VPC의 인스턴스 간 통신에 사용할 수 있습니다. 예를 들어, 프라이빗 IP 주소는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 프라이빗 IP 주소가 될 수 있습니다.

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

다음 예제 버킷 정책에서는 지정된 VPC 엔드포인트(aws:sourceVpce)에서 온 요청이 아니면 버킷에 대한 트래픽을 차단합니다.

{
  "Id": "VPCe",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VPCe",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "vpce-1111111",
            "vpce-2222222"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

참고:

다음 버킷 정책 예제에서는 지정된 프라이빗 IP 주소(aws:VpcSourceIp)에서 오는 요청이 아니면 버킷에 대한 트래픽을 차단합니다.

{
  "Id": "VpcSourceIp",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VpcSourceIp",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:VpcSourceIp": [
            "10.1.1.1/32",
            "172.1.1.1/32"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

참고: aws:VpcSourceIP 조건과 함께 이 정책을 사용하려면 Amazon S3용 VPC 엔드포인트를 연결해야 합니다. VPC 엔드포인트는 EC2 인스턴스 서브넷의 라우팅 테이블에 연결되어야 하며 버킷과 동일한 AWS 리전에 있어야 합니다.

다음 버킷 정책 예제에서는 지정된 외부 IP 주소(aws:SourceIp)에서 오는 요청이 아니면 버킷에 대한 트래픽을 차단합니다.

{
  "Id": "SourceIP",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceIP",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "11.11.11.11/32",
            "22.22.22.22/32"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

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

특정 사용자(동일한 AWS 계정 내)에게만 버킷에 대한 액세스를 허용해야 하는 경우 Condition 블록에 다음 문을 포함하세요.

  • AROAEXAMPLEID는 허용하려는 IAM 역할의 역할 ID입니다.
  • AIDAEXAMPLEID는 허용할 IAM 사용자의 사용자 ID입니다.
  • 111111111111은 버킷의 AWS 계정 ID로, AWS 계정 루트 사용자의 보안 인증 정보를 나타냅니다.

예를 들면, 다음과 같습니다.

"Condition": {
            "StringNotLike": {
                "aws:userId": [
                    "AROAEXAMPLEID:*",
                    "AIDAEXAMPLEID",
                    "111111111111"
                ]
            }
        }

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

관련 정보

VPC 엔드포인트

AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음