Amazon Virtual Private Cloud
사용 설명서

Amazon S3에 대한 엔드포인트

VPC에서 Amazon S3 리소스로의 액세스를 이미 설정한 경우, 엔드포인트를 설정한 후에도 Amazon S3 DNS 이름을 사용하여 이러한 리소스에 액세스할 수 있습니다. 하지만 다음에 유의하십시오.

  • 엔드포인트에는 Amazon S3 리소스에 액세스하기 위한 엔드포인트 사용을 제어하는 정책이 있습니다. 기본 정책은 VPC가 연결된 계정을 제외하고 AWS 계정에 대한 Amazon S3 리소스를 포함하여 모든 AWS 계정부터 모든 Amazon S3 리소스까지 자격 증명을 사용하는 VPC 내 모든 사용자 또는 서비스의 액세스를 허용합니다. 자세한 내용은 VPC 엔드포인트으로 서비스 액세스 제어 단원을 참조하십시오.

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

  • IAM 정책 또는 버킷 정책을 사용하여 VPC IPv4 CIDR 범위(프라이빗 IPv4 주소 범위)로부터의 액세스를 허용할 수 없습니다. VPC CIDR 블록이 중첩되거나 동일할 수 있고 이로 인해 예기치 않은 결과가 발생할 수 있습니다. 따라서 VPC 종단점을 통해서 Amazon S3에 요청할 때는 IAM 정책에 aws:SourceIp 조건을 사용할 수 없습니다. 이는 사용자 및 역할의 IAM 정책과 모든 버킷 정책에 적용됩니다. 문에 aws:SourceIp 조건이 포함되어 있는 경우, 값이 제공된 IP 주소 또는 범위와 일치하지 않습니다. 대신에 다음 작업을 할 수 있습니다.

    • 라우팅 테이블을 사용하여 엔드포인트를 통해 Amazon S3의 리소스에 액세스할 수 있는 인스턴스를 제어할 수 있습니다.

    • 버킷 정책의 경우 특정 엔드포인트 또는 특정 VPC에 대한 액세스를 제한할 수 있습니다. 자세한 내용은 Amazon S3 버킷 정책 사용 단원을 참조하십시오.

  • 현재 엔드포인트는 교차 리전 요청—을 지원하지 않습니다. 버킷과 같은 리전에 엔드포인트를 생성하는지 확인하십시오. Amazon S3 콘솔 또는 get-bucket-location 명령을 사용하여 버킷의 위치를 확인할 수 있습니다. 리전별 Amazon S3 엔드포인트를 사용하여 버킷에 액세스하십시오(예: mybucket.s3-us-west-2.amazonaws.com). Amazon S3의 리전별 엔드포인트에 대한 자세한 내용은 Amazon Web Services 일반 참조Amazon Simple Storage Service(S3)를 참조하십시오. AWS CLI를 사용하여 Amazon S3에 요청할 경우, 기본 리전을 버킷과 동일한 리전으로 설정하거나, 요청에 --region 파라미터를 사용하십시오.

    참고

    Amazon S3의 미국 표준 리전이 us-east-1 리전에 매핑된 것으로 간주하십시오.

  • 엔드포인트는 현재 IPv4 트래픽에 대해서만 지원됩니다.

Amazon S3에서 엔드포인트를 사용하기 전에 다음의 일반 제한을 읽으십시오. 게이트웨이 엔드포인트 제한.

VPC에서 다른 AWS 서비스를 사용할 경우, 이러한 서비스에서 특정 작업에 대해 S3 버킷을 사용할 수 있습니다. 엔드포인트 정책이 Amazon S3에 대해 모든 액세스를 허용하도록 하거나(기본 정책), 이러한 서비스에서 사용하는 특정 버킷에 대해 액세스를 허용하도록 합니다. 또는 이러한 서비스 중 어느 서비스도 사용하지 않는 서브넷에 엔드포인트를 만들어서 서비스가 퍼블릭 IP 주소를 사용하여 S3 버킷에 계속 액세스하도록 허용합니다.

다음 표에는 엔드포인트의 영향을 받을 수 있는 AWS 서비스와 각 서비스에 대한 특정 정보가 나와 있습니다.

AWS 서비스 참고
Amazon AppStream 2.0 엔드포인트 정책이 사용자 콘텐츠를 저장할 수 있도록 AppStream 2.0이 사용하는 특정 버킷에 대한 액세스를 허용해야 합니다. 자세한 내용은 Amazon AppStream 2.0 개발자 안내서Home Folders and VPC Endpoints 단원을 참조하십시오.
AWS CloudFormation VPC에 대기 조건 또는 사용자 지정 리소스에 응답해야 하는 리소스가 있을 경우, 엔드포인트 정책은 최소한 이러한 리소스가 사용하는 특정 버킷에 대해 액세스를 허용해야 합니다. 자세한 내용은 AWS CloudFormation 및 VPC 엔드포인트를 참조하십시오.
AWS CodeDeploy 엔드포인트 정책이 Amazon S3에 대해 모든 액세스를 허용하거나, AWS CodeDeploy 배포를 위해 만든 S3 버킷에 대해 액세스를 허용해야 합니다.
Elastic Beanstalk 엔드포인트 정책이 최소한 Elastic Beanstalk 애플리케이션에 사용되는 S3 버킷에 대해 액세스를 허용해야 합니다. 자세한 내용은 AWS Elastic Beanstalk 개발자 안내서Amazon S3와 함께 Elastic Beanstalk 사용을 참조하십시오.
AWS OpsWorks 엔드포인트 정책이 최소한 AWS OpsWorks가 사용하는 특정 버킷에 대해 액세스를 허용해야 합니다. 자세한 내용은 AWS OpsWorks User GuideVPC에서 스택 실행을 참조하십시오.
AWS 시스템 관리자

AWS 리전의 패치 기준선 작업을 위해, 엔드포인트 정책이 패치 관리자가 사용하는 Amazon S3 버킷에 대한 액세스를 허용해야 합니다. 이 버킷에는 패치 기준선 서비스가 가져와 인스턴스에서 실행하는 코드가 포함되어 있습니다. 자세한 내용은 AWS 시스템 관리자 사용 설명서시스템 관리자에 대한 VPC 엔드포인트 설정 단원을 참조하십시오.

이 작업의 SSM 에이전트에 필요한 S3 버킷 권한 목록은 AWS 시스템 관리자 사용 설명서SSM 에이전트를 위한 최소 S3 버킷 권한 단원을 참조하십시오.

Amazon WorkDocs Amazon WorkSpaces의 Amazon WorkDocs 클라이언트나 EC2 인스턴스를 사용할 경우, 엔드포인트 정책은 Amazon S3에 대해 모든 액세스를 허용해야 합니다.
Amazon WorkSpaces Amazon WorkSpaces는 Amazon S3에 직접 의존하지 않습니다. 하지만 Amazon WorkSpaces 사용자에게 인터넷 액세스를 제공한 경우 다른 회사의 웹 사이트, HTML 이메일 및 인터넷 서비스는 Amazon S3에 의존할 수 있습니다. 이러한 서비스가 올바르게 작동할 수 있도록 하기 위해 엔드포인트 정책이 Amazon S3에 대해 모든 액세스를 허용하도록 하십시오.

VPC 및 S3 버킷 간 트래픽은 Amazon 네트워크를 벗어나지 않습니다.

Amazon S3용 엔드포인트 정책 사용

다음은 Amazon S3에 액세스하기 위한 엔드포인트 정책의 예입니다. 자세한 내용은 VPC 엔드포인트 정책 사용 단원을 참조하십시오.

중요

IAM 사용자 정책, 엔드포인트 정책, S3 버킷 정책 및 Amazon S3 ACL 정책(있는 경우)과 같은 모든 유형의 정책은 Amazon S3에 액세스하기 위해 필요한 권한을 부여해야 합니다.

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

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

{ "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::my_secure_bucket", "arn:aws:s3:::my_secure_bucket/*"] } ] }

예: Amazon Linux AMI 리포지토리 액세스 활성화

Amazon Linux AMI 리포지토리는 각 리전의 Amazon S3 버킷입니다. VPC의 인스턴스가 엔드포인트를 통해 리포지토리에 액세스하도록 하려면 이러한 버킷에 액세스하게 하는 엔드포인트 정책을 만들 수 있습니다.

다음 정책은 사용자가 Amazon Linux 리포지토리에 읽기 전용 액세스를 할 수 있도록 허용합니다.

{ "Statement": [ { "Sid": "AmazonLinuxAMIRepositoryAccess", "Principal": "*", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::packages.*.amazonaws.com/*", "arn:aws:s3:::repo.*.amazonaws.com/*" ] } ] }

다음 정책은 사용자가 Amazon Linux 2 리포지토리에 읽기 전용 액세스를 할 수 있도록 허용합니다.

{ "Statement": [ { "Sid": "AmazonLinux2AMIRepositoryAccess", "Principal": "*", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amazonlinux.*.amazonaws.com/*" ] } ] }

Amazon S3 버킷 정책 사용

버킷 정책을 사용하여 특정 엔드포인트 또는 특정 VPC의 버킷에 대한 액세스를 제어할 수 있습니다.

VPC 종단점을 통해서 Amazon S3에 요청할 때는 버킷 정책에 aws:SourceIp 조건을 사용할 수 없습니다. 조건이 지정된 IP 주소 또는 IP 주소 범위와 일치하지 않으므로 Amazon S3 버킷에 요청 시 원하지 않는 결과가 나타날 수 있습니다. 예:

  • 버킷 정책에 Deny 결과와 하나 또는 제한된 범위의 IP 주소에서의 액세스만 허용하는 NotIpAddress 조건이 있습니다. 엔드포인트를 통해 버킷에 요청하는 경우, NotIpAddress 조건이 항상 일치되므로 문의 결과가 적용됩니다(정책의 다른 제약이 일치한다고 가정). 버킷에 대한 액세스는 거부됩니다.

  • 버킷 정책에 Deny 결과와 하나 또는 제한된 범위의 IP 주소에 대해서만 액세스를 거부하는 IpAddress 조건이 포함되어 있습니다. 엔드포인트를 통해 버킷에 요청하는 경우, 조건이 일치되지 않으므로 문이 적용되지 않습니다. IpAddress 조건 없이 액세스를 허용하는 다른 문이 있다고 가정하면 버킷에 대한 액세스가 허용됩니다.

대신에 버킷 정책을 조정하여 특정 VPC 또는 특정 엔드포인트에 대한 액세스를 제한하십시오.

Amazon S3에 대한 버킷 정책 관련 자세한 내용은 Amazon Simple Storage Service 개발자 가이드버킷 정책 및 사용자 정책 사용을 참조하십시오.

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

다음은 엔드포인트 vpce-1a2b3c4d의 특정 버킷인 my_secure_bucket에 대해서만 액세스를 허용하는 S3 버킷 정책의 예입니다. 이 정책은 지정된 종단점이 사용되지 않으면 버킷에 대한 모든 액세스를 거부합니다. aws:sourceVpce 조건이 종단점을 지정하는 데 사용됩니다. aws:sourceVpce 조건은 VPC 엔드포인트 리소스에 대한 ARN을 요구하지 않고 엔드포인트 ID만 요구합니다.

{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::my_secure_bucket", "arn:aws:s3:::my_secure_bucket/*"], "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1a2b3c4d" } } } ] }

예: 특정 VPC에 대한 액세스 제한

aws:sourceVpc 조건을 사용하여 특정 VPC에 대한 액세스를 제한하는 버킷 정책을 만들 수 있습니다. 이는 같은 VPC에 여러 엔드포인트가 구성되어 있으며, 모든 엔드포인트의 S3 버킷에 대한 액세스를 관리하려는 경우에 유용합니다. 다음은 VPC vpc-111bbb22my_secure_bucket과 해당 객체에 액세스할 수 있도록 허용하는 정책의 예입니다. 이 정책은 지정된 VPC가 사용되지 않으면 버킷에 대한 모든 액세스를 거부합니다. aws:sourceVpc 조건은 VPC 리소스의 ARN을 요구하지 않고 VPC ID만 요구합니다.

{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPC-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::my_secure_bucket", "arn:aws:s3:::my_secure_bucket/*"], "Condition": { "StringNotEquals": { "aws:sourceVpc": "vpc-111bbb22" } } } ] }