Amazon S3에 대한 게이트웨이 엔드포인트 - Amazon Virtual Private Cloud

Amazon S3에 대한 게이트웨이 엔드포인트

VPC에서 게이트웨이 VPC 엔드포인트를 사용하여 Amazon S3에 액세스할 수 있습니다. 게이트웨이 엔드포인트를 생성한 후 VPC에서 Amazon S3로 전송되는 트래픽에 대해 해당 엔드포인트를 라우팅 테이블의 대상으로 추가할 수 있습니다.

게이트웨이 엔드포인트 사용에 따르는 추가 요금은 없습니다.

Amazon S3는 게이트웨이 엔드포인트와 인터페이스 엔드포인트를 모두 지원합니다. 게이트웨이 엔드포인트를 사용하면 VPC 인터넷 게이트웨이 또는 NAT 디바이스를 사용하지 않고 추가 비용 없이 VPC에서 Amazon S3에 액세스할 수 있습니다. 하지만 게이트웨이 엔드포인트는 온프레미스 네트워크, 다른 AWS 리전의 피어링된 VPC 또는 전송 게이트웨이를 통한 액세스를 허용하지 않습니다. 이러한 시나리오에서는 추가 비용을 지불한 후 사용할 수 있는 인터페이스 엔드포인트를 사용해야 합니다. 자세한 내용은 Amazon S3 사용 설명서Amazon S3용 VPC 엔드포인트 유형을 참조하세요.

고려 사항

  • 게이트웨이 엔드포인트는 해당 엔드포인트를 생성한 리전에서만 사용할 수 있습니다. S3 버킷과 동일한 리전에서 게이트웨이 엔드포인트를 생성해야 합니다.

  • Amazon DNS 서버를 사용 중인 경우 VPC에 대해 DNS 호스트 이름 및 DNS 확인을 모두 활성화해야 합니다. 자체 DNS 서버를 사용하는 경우 Amazon S3에 대한 요청이 AWS에서 유지 관리하는 IP 주소로 올바르게 확인되어야 합니다.

  • 게이트웨이 엔드포인트를 통해 Amazon S3에 액세스하는 인스턴스의 보안 그룹에 대한 규칙은 Amazon S3에서 이동하는 트래픽을 허용해야 합니다. 보안 그룹 규칙에서 Amazon S3의 접두사 목록 ID를 참조할 수 있습니다.

  • 게이트웨이 엔드포인트를 통해 Amazon S3에 액세스하는 인스턴스의 서브넷에 대한 네트워크 ACL에서 Amazon S3로 이동하는 트래픽을 허용해야 합니다. 네트워크 ACL 규칙에서 접두사 목록을 참조할 수는 없지만 Amazon S3의 접두사 목록에서 Amazon S3의 IP 주소 범위를 가져올 수 있습니다.

  • S3 버킷에 액세스 권한이 필요한 AWS 서비스를 사용 중인지 확인합니다. 예를 들어, 서비스에서 로그 파일이 포함된 버킷에 액세스해야 하거나 EC2 인스턴스에 드라이버 또는 에이전트를 다운로드해야 할 수 있습니다. 이 경우, 엔드포인트 정책에 AWS 서비스 또는 리소스가 이러한 버킷에 액세스할 권한이 허용되어 있는지 s3:GetObject 작업을 사용하여 확인합니다.

  • VPC 엔드포인트를 통과하는 Amazon S3에 대한 요청에 대한 자격 증명 정책 또는 버킷 정책의 aws:SourceIp 조건은 사용할 수 없습니다. 대신 aws:VpcSourceIp 조건을 사용합니다. 또는 라우팅 테이블을 사용하여 VPC 엔드포인트를 통해 Amazon S3에 액세스할 수 있는 EC2 인스턴스를 제어할 수 있습니다.

  • 게이트웨이 엔드포인트는 IPv4 트래픽만 지원합니다.

  • Amazon S3가 수신한 해당 서브넷에 있는 인스턴스의 원본 IPv4 주소는 퍼블릭 IPv4 주소에서 VPC의 프라이빗 IPv4 주소로 변경됩니다. 엔드포인트는 네트워크 라우팅을 스위칭하고 열린 TCP 연결을 끊습니다. 퍼블릭 IPv4 주소를 사용한 이전 연결이 다시 시작되지 않습니다. 따라서 엔드포인트를 만들거나 수정할 때는 중요한 작업을 실행하지 않는 것이 좋으며 연결이 끊어진 후에는 소프트웨어가 자동으로 Amazon S3에 다시 연결할 수 있는지 테스트해야 합니다.

  • 엔드포인트 연결은 VPC 외부로 확장할 수 없습니다. VPN 연결, VPC 피어링 연결, 전송 게이트웨이 또는 VPC의 AWS Direct Connect 연결의 반대쪽에 있는 리소스는 게이트웨이 엔드포인트를 사용하여 Amazon S3와 통신할 수 없습니다.

  • 계정의 기본 할당량은 리전당 게이트웨이 엔드포인트 20개이며 조정 가능합니다. 또한 VPC당 게이트웨이 엔드포인트는 255개로 제한됩니다.

프라이빗 DNS

Amazon S3용 게이트웨이 엔드포인트와 인터페이스 엔드포인트를 모두 생성할 때 비용을 최적화하도록 프라이빗 DNS를 구성할 수 있습니다.

Route 53 Resolver

Amazon은 Route 53 Resolver라고 하는 VPC용 DNS 서버를 제공합니다. Route 53 Resolver는 프라이빗 호스팅 영역의 로컬 VPC 도메인 이름 및 레코드를 자동으로 확인합니다. 하지만 VPC 외부에서는 Route 53 Resolver를 사용할 수 없습니다. Route 53은 사용자가 VPC 외부에서 Route 53 Resolver를 사용할 수 있도록 Resolver 엔드포인트와 Resolver 규칙을 제공합니다. 인바운드 Resolver 엔드포인트는 온프레미스 네트워크 상의 DNS 쿼리를 Route 53 Resolver로 전달합니다. 아웃바운드 Resolver 엔드포인트는 Route 53 Resolver의 DNS 쿼리를 온프레미스 네트워크로 전달합니다.

인바운드 Resolver 엔드포인트에 프라이빗 DNS만 사용하도록 Amazon S3용 인터페이스 엔드포인트를 구성하면 인바운드 Resolver 엔드포인트가 생성됩니다. 인바운드 Resolver 엔드포인트는 온프레미스에서 인터페이스 엔드포인트의 프라이빗 IP 주소로 전송되는 Amazon S3에 대한 DNS 쿼리를 해결합니다. 또한 VPC의 DNS 쿼리가 트래픽을 게이트웨이 엔드포인트로 라우팅하는 Amazon S3 퍼블릭 IP 주소로 확인되도록 Route 53 Resolver의 ALIAS 레코드를 Amazon S3 퍼블릭 호스팅 영역에 추가합니다.

프라이빗 DNS

Amazon S3용 인터페이스 엔드포인트에 프라이빗 DNS를 구성하지만 인바운드 Resolver 엔드포인트에 대해서만 프라이빗 DNS를 구성하지 않는 경우, 온프레미스 네트워크와 VPC 모두의 요청이 인터페이스 엔드포인트를 사용하여 Amazon S3에 액세스합니다. 따라서 추가 요금 없이 게이트웨이 엔드포인트를 사용하는 대신 VPC의 트래픽에 인터페이스 엔드포인트를 사용하려면 비용을 지불해야 합니다.

두 엔드포인트 유형이 모두 포함된 Amazon S3 요청 라우팅.
인바운드 Resolver 엔드포인트 전용 프라이빗 DNS

인바운드 Resolver 엔드포인트에 대해서만 프라이빗 DNS를 구성하는 경우, 온프레미스 네트워크의 요청은 인터페이스 엔드포인트를 사용하여 Amazon S3에 액세스하고, VPC의 요청은 게이트웨이 엔드포인트를 사용하여 Amazon S3에 액세스합니다. 따라서 게이트웨이 엔드포인트를 사용할 수 없는 트래픽에 대해서만 인터페이스 엔드포인트를 사용하기 위해 비용을 지불하므로 비용을 최적화할 수 있습니다.

프라이빗 DNS 및 인바운드 Resolver 엔드포인트를 사용한 Amazon S3 요청 라우팅.
프라이빗 DNS 설정

Amazon S3용 인터페이스 엔드포인트를 생성할 때 또는 생성한 후에 Amazon S3용 인터페이스 엔드포인트에 대한 프라이빗 DNS를 구성할 수 있습니다. 자세한 내용은 VPC 엔드포인트 생성(생성 중 구성) 또는 프라이빗 DNS 이름 활성화(생성 후 구성)을 참조하세요.

게이트웨이 엔드포인트 생성

다음 절차에 따라 Amazon S3에 연결하는 게이트웨이 엔드포인트를 생성합니다.

콘솔을 사용하여 게이트웨이 엔드포인트 생성하기
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 엔드포인트를 선택합니다.

  3. Create endpoint(엔드포인트 생성)을 선택합니다.

  4. 서비스 범주(Service category)에서 AWS 서비스를 선택합니다.

  5. 서비스에서 유형 = 게이트트웨이 필터를 추가하고 com.amazonaws.region.s3를 선택합니다.

  6. VPC에서 엔드포인트를 생성할 VPC를 선택합니다.

  7. 라우팅 테이블(Route tables)에서 엔드포인트에서 사용할 라우팅 테이블을 선택합니다. 서버로 전송되는 트래픽을 가리키는 라우팅이 엔드포인트 네트워크 인터페이스에 자동으로 추가됩니다.

  8. 정책(Policy)에서 모든 액세스(Full access)를 선택하여 VPC 엔드포인트를 통한 모든 리소스에 대한 모든 보안 주체의 모든 작업을 허용합니다. 또는 사용자 지정(Custom)을 선택하여 VPC 엔드포인트를 통해 리소스에 대한 작업을 수행하기 위해 보안 주체에 필요한 권한을 제어하는 VPC 엔드포인트 정책을 연결합니다.

  9. (선택 사항) 태그를 추가하려면 새 태그 추가를 선택하고 태그 키와 태그 값을 입력합니다.

  10. Create endpoint(엔드포인트 생성)을 선택합니다.

명령줄을 사용하여 게이트웨이 엔드포인트 생성하기

버킷 정책을 사용한 액세스 제어

버킷 정책을 사용하여 특정 엔드포인트, VPC, IP 주소 범위 및 AWS 계정의 버킷에 대한 액세스를 제어할 수 있습니다. 이러한 예에서는 해당 사용 사례에 필요한 액세스 권한을 허용하는 정책 명령문도 있다고 가정합니다.

예: 특정 엔드포인트에 대한 액세스 제한

aws:sourceVpce 조건 키를 사용하여 특정 엔드포인트에 대한 액세스를 제한하는 버킷 정책을 생성할 수 있습니다. 다음 정책은 지정된 게이트웨이 엔드포인트가 사용되지 않는 한 지정된 작업을 사용하여 지정된 버킷에 대한 액세스를 거부합니다. 이 정책은 AWS Management Console을 통해 지정된 작업을 사용하여 지정된 버킷에 대한 액세스를 차단한다는 점에 유의하세요.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPCE", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*"], "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" } } } ] }
예: 특정 VPC에 대한 액세스 제한

aws:sourceVpc 조건 키를 사용하여 특정 VPC에 대한 액세스를 제한하는 버킷 정책을 생성할 수 있습니다. 이 정적은 같은 VPC에 여러 엔드포인트가 구성되어 있는 경우 유용합니다. 다음 정책은 요청이 지정된 VPC에서 시작되지 않는 한 지정된 작업을 사용하여 지정된 버킷에 대한 액세스를 거부합니다. 이 정책은 AWS Management Console을 통해 지정된 작업을 사용하여 지정된 버킷에 대한 액세스를 차단한다는 점에 유의하세요.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPC", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::example_bucket", "arn:aws:s3:::example_bucket/*"], "Condition": { "StringNotEquals": { "aws:sourceVpc": "vpc-111bbb22" } } } ] }
예: 특정 IP 주소 범위에 대한 액세스 제한

aws:VpcSourceIp 조건 키를 사용하여 특정 IP 주소 범위에 대한 액세스를 제한하는 버킷 정책을 생성할 수 있습니다. 다음 정책은 지정된 IP 주소에서 시작되지 않는 한 지정된 작업을 사용하여 지정된 버킷에 대한 액세스를 거부합니다. 이 정책은 AWS Management Console을 통해 지정된 작업을 사용하여 지정된 버킷에 대한 액세스를 차단한다는 점에 유의하세요.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-VPC-CIDR", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": ["arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*"], "Condition": { "NotIpAddress": { "aws:VpcSourceIp": "172.31.0.0/16" } } } ] }
예: 특정 AWS 계정의 버킷에 대한 액세스 제한

s3:ResourceAccount 조건을 사용하여 특정 AWS 계정의 S3 버킷에 대한 액세스를 제한하는 정책을 생성할 수 있습니다. 다음 정책은 지정된 AWS 계정에서 소유하지 않는 한 지정된 작업을 사용한 S3 버킷에 대한 액세스를 거부합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-bucket-in-specific-account", "Effect": "Deny", "Principal": "*", "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"], "Resource": "arn:aws:s3:::*", "Condition": { "StringNotEquals": { "s3:ResourceAccount": "111122223333" } } } ] }

라우팅 테이블 연결

게이트웨이 엔드포인트와 연결된 라우팅 테이블을 변경할 수 있습니다. 라우팅 테이블을 연결하면 서비스로 전송되는 트래픽을 가리키는 라우팅이 엔드포인트 네트워크 인터페이스에 자동으로 추가됩니다. 라우팅 테이블의 연결을 해제하면 라우팅 테이블에서 엔드포인트 라우팅이 자동으로 제거됩니다.

콘솔을 사용하여 라우팅 테이블 연결하기
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 엔드포인트를 선택합니다.

  3. 게이트웨이 엔드포인트를 선택합니다.

  4. 작업(Actions), 라우팅 테이블 관리(Manage route tables)를 차례로 선택합니다.

  5. 필요에 따라 라우팅 테이블을 선택하거나 선택 취소합니다.

  6. 라우팅 테이블 수정(Modify route tables)을 선택합니다.

명령줄을 사용하여 라우팅 테이블 연결하기

VPC 엔드포인트 정책 편집

게이트웨이 엔드포인트에 대한 엔드포인트 정책을 편집하여 VPC에서 엔드포인트를 통해 Amazon S3에 대한 액세스를 제어할 수 있습니다. 기본 정책에서는 모든 액세스를 허용합니다. 자세한 내용은 엔드포인트 정책 단원을 참조하십시오.

콘솔을 사용하여 엔드포인트 정책 변경
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 엔드포인트를 선택합니다.

  3. 게이트웨이 엔드포인트를 선택합니다.

  4. 작업(Actions), 정책 관리(Manage policy)를 선택합니다.

  5. 모든 액세스(Full Access)를 선택하여 서비스에 대한 전체 액세스를 허용하거나 사용자 지정(Custom)을 선택하고 사용자 지정 정책을 연결합니다.

  6. 저장(Save)을 선택합니다.

다음은 Amazon S3에 액세스하기 위한 엔드포인트 정책의 예입니다.

예: 특정 버킷에 대한 액세스 제한

특정 S3 버킷에 대해서만 액세스를 제한하는 정책을 생성할 수 있습니다. 이 정책은 VPC에 S3 버킷을 사용하는 다른 AWS 서비스가 있을 경우 유용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-bucket", "Effect": "Allow", "Principal": "*", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket_name", "arn:aws:s3:::bucket_name/*" ] } ] }
예: 특정 IAM 역할에 대한 액세스 제한

특정 IAM 역할에 대한 액세스를 제한하는 정책을 생성할 수 있습니다. aws:PrincipalArn을 사용하여 보안 주체에 액세스 권한을 부여해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-access-to-specific-IAM-role", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "ArnEquals": { "aws:PrincipalArn": "arn:aws:iam::111122223333:role/role_name" } } } ] }
예: 특정 계정의 사용자에 대한 액세스 제한

특정 계정에 대한 액세스를 제한하는 정책을 생성할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow-callers-from-specific-account", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

게이트웨이 엔드포인트 삭제

게이트웨이 엔드포인트 사용을 마치면 엔드포인트를 삭제할 수 있습니다. 게이트웨이 엔드포인트를 삭제하면 서브넷 라우팅 테이블에서 엔드포인트 라우팅이 제거됩니다.

프라이빗 DNS가 활성화되어 있으면 게이트웨이 엔드포인트를 삭제할 수 없습니다.

콘솔을 사용하여 게이트웨이 엔드포인트 삭제
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 엔드포인트를 선택합니다.

  3. 게이트웨이 엔드포인트를 선택합니다.

  4. 작업(Actions), VPC 엔드포인트 삭제(Delete VPC endpoints)를 차례로 선택합니다.

  5. 확인 메시지가 표시되면 delete를 입력합니다.

  6. Delete(삭제)를 선택합니다.

명령줄을 사용하여 게이트웨이 엔드포인트 삭제하기