AWS PrivateLink for Amazon S3 - Amazon Simple Storage Service

AWS PrivateLink for Amazon S3

Com o AWS PrivateLink para o Amazon S3, você pode provisionar endpoints da VPC de interface (endpoints de interface) em sua Virtual Private Cloud (VPC). Esses endpoints são diretamente acessíveis a partir de aplicações que estão no local por meio de VPN e AWS Direct Connect, ou em uma Região da AWS diferente por emparelhamento de VPC.

Os endpoints de interface são representados por uma ou mais interfaces de rede elástica (ENIs) que recebem endereços IP privados de sub-redes em sua VPC. As solicitações para o Amazon S3 por meio de endpoints de interface permanecem na rede da Amazon. Você também pode acessar endpoints de interface em sua VPC via aplicações on-premises por meio do AWS Direct Connect ou da AWS Virtual Private Network (AWS VPN). Para obter mais informações sobre como conectar sua VPC à rede on-premises, consulte o AWS Direct ConnectGuia do usuário do e o AWS Site-to-Site VPNGuia do usuário do .

Para obter informações gerais sobre endpoints de interface, consulte Endpoints da VPC de interface (AWS PrivateLink) no Manual do AWS PrivateLink.

Tipos de VPC endpoints para o Amazon S3

Você pode usar dois tipos de endpoints da VPC para acessar o Amazon S3: endpoints de gateway e endpoints de interface (usando o AWS PrivateLink). Um endpoint de gateway é um gateway que você especifica em sua tabela de rotas para acessar o Amazon S3 da sua VPC pela rede da AWS. Os endpoints de interface estendem a funcionalidade dos endpoints de gateway usando endereços IP privados para rotear solicitações para o Amazon S3 de dentro da sua VPC on-premises ou de uma PVC em outra Região da AWS usando emparelhamento da VPC ou o AWS Transit Gateway. Para obter mais informações, consulte O que é emparelhamento da VPC? em Transit Gateway vs. emparelhamento da VPC.

Os endpoints de interface são compatíveis com os endpoints de gateway. Se você tiver um endpoint de gateway existente na VPC, poderá usar ambos os tipos de endpoints na mesma VPC.

Endpoints de gateway para o Amazon S3

Endpoints de interface para o Amazon S3

Em ambos os casos, o tráfego de rede permanece na rede AWS.

Usar endereços IP públicos do Amazon S3

Usar endereços IP privados da VPC para acessar o Amazon S3

Usar os mesmos nomes DNS do Amazon S3

Exigir nomes DNS do Amazon S3 específicos do endpoint

Não permita o acesso pelo ambiente on-premises

Permitir acesso desde on-premises

Não permita o acesso por outra Região da AWS

Permitir acesso de uma VPC em outra Região da AWS usando emparelhamento da VPC ou AWS Transit Gateway

Não faturado

Faturado

Para obter mais informações sobre endpoints de gateway, consulte Endpoints da VPC de gateway no Guia do usuário do AWS PrivateLink.

As limitações da VPC aplicam-se ao AWS PrivateLink do Amazon S3. Para obter mais informações, consulte Considerações sobre o endpoint de interface e Cotas do AWS PrivateLink no Guia do usuário do AWS PrivateLink. Além disso, aplicam-se as restrições a seguir.

O AWS PrivateLink do Amazon S3 não é compatível com:

Criar um endpoint da VPC

Para criar um endpoint da VPC de interface, consulte Create a VPC endpoint (Criar um endpoint da VPC) no Guia do AWS PrivateLink.

Acessar endpoints da interface do Amazon S3

Quando você cria um endpoint de interface, o Amazon S3 gera dois tipos de nome de DNS do S3 específicos do endpoint: regional e zonal.

  • Os nomes DNS regionais incluem um ID de endpoint da VPC exclusivo, um identificador de serviço, a Região da AWS e vpce.amazonaws.com em seu nome. Por exemplo, para o ID de VPC endpoint vpce-1a2b3c4d, o nome de DNS gerado pode ser semelhante a vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com.

  • Os nomes DNS zonais incluem a zona de disponibilidade. Por exemplo, vpce-1a2b3c4d-5e6f-us-east-1a.s3.us-east-1.vpce.amazonaws.com. Você pode usar essa opção se sua arquitetura isola zonas de disponibilidade. Por exemplo, você pode usar para contenção de falhas ou para reduzir os custos regionais de transferência de dados.

Os nomes de DNS do S3 específicos do endpoint podem ser resolvidos a partir do domínio DNS público do S3.

DNS privado

As opções de DNS privado para endpoints da VPC de interface simplificam o roteamento do tráfego do S3 pelos endpoints da VPC e ajudam você a aproveitar o caminho de rede de menor custo disponível para a aplicação. Você pode usar opções de DNS privadas para rotear o tráfego regional do S3 sem atualizar seus clientes do S3 para usar os nomes DNS específicos dos endpoints de interface ou gerenciar a infraestrutura de DNS. Com os nomes DNS privados ativados, as consultas ao DNS regionais do S3 são resolvidas para os endereços IP privados de AWS PrivateLink dos seguintes endpoints:

  • Endpoints regionais de bucket (por exemplo, s3.us-east-1.amazonaws.com)

  • Endpoints de controle (por exemplo, s3-control.us-east-1.amazonaws.com)

  • Endpoints de pontos de acesso (por exemplo, s3-accesspoint.us-east-1.amazonaws.com)

O AWS PrivateLink para Amazon S3 não permite usar endpoints de camada dupla do Amazon S3. Consulte Using Amazon S3 dual-stack endpoints. Se você usar um nome de DNS de pilha dupla do S3 como nome de DNS privado, o tráfego IPv6 será descartado ou, se a nuvem privada virtual (VPC) tiver um gateway da internet, o tráfego IPv6 será direcionado pelo gateway da internet na VPC.

Se você tiver um endpoint de gateway na VPC, poderá rotear automaticamente as solicitações na VPC pelo endpoint do gateway do S3 existente e as solicitações on-premises pelo endpoint da interface. Essa abordagem permite que você otimize os custos da rede usando endpoints de gateway, que não são cobrados, para o tráfego na VPC. As aplicações on-premises podem usar AWS PrivateLink com a ajuda do endpoint de resolvedor de entrada. A Amazon fornece um servidor de DNS à VPC, o Route 53 Resolver. Um endpoint do Resolver de entrada encaminha consultas de DNS da rede on-premises para o Route 53 Resolver.

Importante

Para aproveitar o caminho de rede de menor custo ao usar Habilitar DNS privado somente para endpoints de entrada, um endpoint de gateway deve estar presente na VPC. A presença de um endpoint de gateway ajuda a garantir que o tráfego na VPC sempre seja roteado pela rede privada da AWS quando a opção Habilitar DNS privado somente para endpoints de entrada é selecionada. Você deve manter esse endpoint de gateway enquanto estiver com a opção Habilitar DNS privado somente para endpoints de entrada selecionada. Se você quiser excluir o endpoint de gateway, primeiro desmarque Habilitar DNS privado somente para endpoints de entrada.

Se você quiser atualizar um endpoint de interface existente para Habilitar DNS privado somente para endpoints de entrada, primeiro confirme se a VPC tem um endpoint de gateway do S3. Para obter mais informações sobre endpoints de gateway e gerenciamento de nomes DNS privados, consulte Gateway de endpoints da VPC e Gerenciar nomes DNS, respectivamente, no Guia do AWS PrivateLink.

A opção Habilitar DNS privado somente para endpoints de entrada está disponível somente para serviços compatíveis com endpoints de gateway.

Para obter mais informações sobre a criação de um endpoint da VPC que usa Habilitar DNS privado somente para endpoints de entrada, consulte Criar um endpoint de interface no Guia do AWS PrivateLink.

Usar o console da VPC

No console, você tem duas opções: Habilitar nome DNS e Habilitar DNS privado somente para endpoints de entrada. Habilitar nome DNS é uma opção compatível com AWS PrivateLink. Ao usar a opção Habilitar nome de DNS, você pode usar a conectividade privada da Amazon com o Amazon S3, enquanto faz solicitações aos nomes DNS de endpoints públicos padrão. Quando essa opção é ativada, os clientes podem aproveitar o caminho de rede de menor custo disponível para a aplicação.

Quando você habilita nomes DNS privados em um endpoint da VPC de interface existente ou novo para o Amazon S3, a opção Habilitar DNS privado somente para endpoints de entrada é selecionada por padrão. Se essa opção for selecionada, as aplicações usarão somente endpoints de interface para o tráfego on-premises. Esse tráfego na VPC usa automaticamente os endpoints de gateway de menor custo. Como alternativa, você pode desmarcar Habilitar DNS privado somente para endpoints de entrada para rotear todas as solicitações do S3 pelo endpoint de interface.

Usar o AWS CLI

Se você não especificar um valor para PrivateDnsOnlyForInboundResolverEndpoint, o padrão será true. No entanto, antes da VPC aplicar as configurações, ela realiza uma verificação para garantir que você tenha um endpoint de gateway presente na VPC. Se um endpoint de gateway estiver presente na VPC, a chamada será bem-sucedida. Caso contrário, você receberá a seguinte mensagem de erro:

Para definir PrivateDnsOnlyForInboundResolverEndpoint como verdadeiro, a VPC vpce_id deve ter um endpoint de gateway para o serviço.

Para um novo endpoint da VPC de interface

Use os atributos private-dns-enabled e dns-options para habilitar o DNS privado por meio da linha de comando. A opção PrivateDnsOnlyForInboundResolverEndpoint no atributo dns-options deve ser definida como true. Substitua os user input placeholders por suas próprias informações.

aws ec2 create-vpc-endpoint \ --region us-east-1 \ --service-name s3-service-name \ --vpc-id client-vpc-id \ --subnet-ids client-subnet-id \ --vpc-endpoint-type Interface \ --private-dns-enabled \ --ip-address-type ip-address-type \ --dns-options PrivateDnsOnlyForInboundResolverEndpoint=true \ --security-group-ids client-sg-id

Para um endpoint da VPC existente

Se você quiser usar o DNS privado para um endpoint da VPC existente, use o comando de exemplo a seguir e substitua user input placeholders por suas próprias informações.

aws ec2 modify-vpc-endpoint \ --region us-east-1 \ --vpc-endpoint-id client-vpc-id \ --private-dns-enabled \ --dns-options PrivateDnsOnlyForInboundResolverEndpoint=false

Se você quiser atualizar um endpoint da VPC existente para habilitar o DNS privado somente para o resolvedor de entrada, use o exemplo a seguir e substitua os valores de amostra pelos seus próprios valores.

aws ec2 modify-vpc-endpoint \ --region us-east-1 \ --vpc-endpoint-id client-vpc-id \ --private-dns-enabled \ --dns-options PrivateDnsOnlyForInboundResolverEndpoint=true

Acessar buckets, pontos de acesso e operações de API de controle do Amazon S3 de endpoints de interface do S3

Você pode usar a AWS CLI ou AWS SDKs para acessar buckets, pontos de acesso do S3 e operações de API de controle do Amazon S3 por meio de endpoints de interface do S3.

A imagem a seguir mostra a guia Detalhes do console da VPC, onde você pode encontrar o nome de DNS de um VPC endpoint. Neste exemplo, o ID do VPC endpoint (vpce-id) é vpce-0e25b8cdd720f900e e o nome de DNS é *.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com.

A guia Detalhes no console da VPC.

Ao usar o nome DNS para acessar um recurso, substitua * pelo valor apropriado. Os valores apropriados a serem usados no lugar de * são os seguintes:

  • bucket

  • accesspoint

  • control

Por exemplo, para acessar um bucket, use um nome DNS como este:

bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com

Para obter exemplos de como usar nomes DNS para acessar buckets, pontos de acesso e operações da API de controle do Amazon S3, consulte as seções a seguir de Exemplos do AWS CLI e Exemplos de AWS SDK.

Para obter mais informações sobre como visualizar os nomes de DNS específicos do endpoint, consulte Visualizar a configuração de nome de DNS privado do serviço de endpoint no Guia do usuário da VPC.

Para acessar os buckets do S3, os pontos de acesso do S3 ou as operações de API de controle do Amazon S3 por meio de endpoints de interface do S3 em comandos AWS CLI, use os parâmetros --region e --endpoint-url.

Exemplo: usar um URL de endpoint para listar objetos no bucket

No exemplo a seguir, substitua o nome do bucket my-bucket, a região us-east-1 e o nome de DNS do ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações.

aws s3 ls s3://my-bucket/ --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com

Exemplo: usar um URL de endpoint para listar objetos de um ponto de acesso

  • Método 1: usar o nome do recurso da Amazon (ARN) do ponto de acesso com o endpoint do ponto de acesso

    Substitua o ARN us-east-1:123456789012:accesspoint/accesspointexamplename, a região us-east-1 e o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações.

    aws s3api list-objects-v2 --bucket arn:aws:s3:us-east-1:123456789012:accesspoint/accesspointexamplename --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com

    Se você não conseguir executar o comando com êxito, atualize a AWS CLI para a versão mais recente e tente novamente. Para obter mais informações sobre as instruções de atualização, consulte Instalar ou atualizar a versão mais recente da AWS CLI no Guia do usuário do AWS Command Line Interface.

  • Método 2: usar o alias do ponto de acesso com o endpoint do bucket regional

    No exemplo a seguir, substitua o alias do ponto de acesso accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias, a região us-east-1 e o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações.

    aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  • Método 3: usar o alias do ponto de acesso com o endpoint do ponto de acesso

    Primeiro, para construir um endpoint S3 com o bucket incluído como parte do nome do host, defina o estilo de endereçamento como virtual para aws s3api para uso. Para obter mais informações sobre AWS configure, consulte Arquivos de configuração e credencial no Guia do usuário do AWS Command Line Interface.

    aws configure set default.s3.addressing_style virtual

    Depois, no exemplo a seguir, substitua o alias do ponto de acesso accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias, a região us-east-1 e o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações. Consulte mais informações sobre alias de ponto de acesso em Usar um alias em estilo de bucket para seu ponto de acesso de bucket do S3.

    aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
Exemplo: usar um URL de endpoint para listar trabalhos com uma operação de API de controle do S3

No exemplo a seguir, substitua a região us-east-1, o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e o ID da conta 12345678 por suas próprias informações.

aws s3control --region us-east-1 --endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com list-jobs --account-id 12345678

Para acessar buckets do S3, pontos de acesso do S3 ou operações da API de controle do Amazon S3 por meio de endpoints de interface do S3 ao usar os AWS SDKs, atualize os SDKs para a versão mais recente. Depois, configure seus clientes para usar um URL de endpoint para acessar um bucket, ponto de acesso ou operações de API de controle do Amazon S3 por meio de endpoints de interface do S3.

SDK for Python (Boto3)
Exemplo: use um URL de endpoint para acessar um bucket do S3

No exemplo a seguir, substitua a região us-east-1 e o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações.

s3_client = session.client( service_name='s3', region_name='us-east-1', endpoint_url='https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com' )
Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3

No exemplo a seguir, substitua a região us-east-1 e o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações.

ap_client = session.client( service_name='s3', region_name='us-east-1', endpoint_url='https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com' )
Exemplo: use um URL de endpoint para acessar a API de controle do Amazon S3

No exemplo a seguir, substitua a região us-east-1 e o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações.

control_client = session.client( service_name='s3control', region_name='us-east-1', endpoint_url='https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com' )
SDK for Java 1.x
Exemplo: use um URL de endpoint para acessar um bucket do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações.

// bucket client final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com", Regions.DEFAULT_REGION.getName() ) ).build(); List<Bucket> buckets = s3.listBuckets();
Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e o ARN us-east-1:123456789012:accesspoint/prod por suas próprias informações.

// accesspoint client final AmazonS3 s3accesspoint = AmazonS3ClientBuilder.standard().withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com", Regions.DEFAULT_REGION.getName() ) ).build(); ObjectListing objects = s3accesspoint.listObjects("arn:aws:s3:us-east-1:123456789012:accesspoint/prod");
Exemplo: usar um URL de endpoint para acessar uma operação de API de controle do Amazon S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com por suas próprias informações.

// control client final AWSS3Control s3control = AWSS3ControlClient.builder().withEndpointConfiguration( new AwsClientBuilder.EndpointConfiguration( "https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com", Regions.DEFAULT_REGION.getName() ) ).build(); final ListJobsResult jobs = s3control.listJobs(new ListJobsRequest());
SDK for Java 2.x
Exemplo: use um URL de endpoint para acessar um bucket do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e a região Region.US_EAST_1 por suas próprias informações.

// bucket client Region region = Region.US_EAST_1; s3Client = S3Client.builder().region(region) .endpointOverride(URI.create("https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com")) .build()
Exemplo: use um URL de endpoint para acessar um ponto de acesso do S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e a região Region.US_EAST_1 por suas próprias informações.

// accesspoint client Region region = Region.US_EAST_1; s3Client = S3Client.builder().region(region) .endpointOverride(URI.create("https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com")) .build()
Exemplo: use um URL de endpoint para acessar a API de controle do Amazon S3

No exemplo a seguir, substitua o ID do endpoint da VPC vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com e a região Region.US_EAST_1 por suas próprias informações.

// control client Region region = Region.US_EAST_1; s3ControlClient = S3ControlClient.builder().region(region) .endpointOverride(URI.create("https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com")) .build()

Atualizar uma configuração de DNS on-premises

Ao usar nomes de DNS específicos do endpoint para acessar os endpoints de interface do Amazon S3, você não precisa atualizar seu resolvedor de DNS on-premises. Você pode resolver o nome de DNS específico do endpoint com o endereço IP privado do endpoint de interface do domínio DNS público do Amazon S3.

Usar endpoints de interface para acessar o Amazon S3 sem um endpoint de gateway ou um gateway da Internet na VPC

Os endpoints de interface na VPC podem rotear aplicativos na VPC e on-premises para o Amazon S3 pela rede da Amazon, conforme ilustrado no diagrama a seguir.

Diagrama de fluxo de dados que mostra o acesso ao Amazon S3 usando um endpoint de interface e o AWS PrivateLink.

O diagrama ilustra o seguinte:

  • Sua rede on-premises usa AWS Direct Connect ou AWS VPN para se conectar à VPC A.

  • Seus aplicativos on-premises e na VPC A usam nomes de DNS específicos do endpoint para acessar o Amazon S3 por meio do endpoint de interface do S3.

  • As aplicações on-premises enviam dados ao endpoint de interface na VPC via AWS Direct Connect (ou AWS VPN). O AWS PrivateLink move os dados do endpoint de interface para o Amazon S3 por meio da rede da AWS.

  • As aplicações na VPC também enviam o tráfego ao endpoint de interface. O AWS PrivateLink move os dados do endpoint de interface para o Amazon S3 por meio da rede da AWS.

Usar endpoints de gateway e de interface juntos na mesma VPC para acessar o Amazon S3

Você pode criar endpoints de interface e reter o endpoint de gateway existente na mesma VPC, como mostra o diagrama a seguir. Ao adotar essa abordagem, você permite que as aplicações na VPC continuem acessando o Amazon S3 por meio do endpoint de gateway, que não é cobrado. Depois, apenas as aplicações on-premises usariam endpoints de interface para acessar o Amazon S3. Para acessar o Amazon S3 dessa maneira, você deve atualizar as aplicações on-premises para usar nomes de DNS específicos do endpoint para Amazon S3.

Diagrama de fluxo de dados que mostra o acesso ao Amazon S3 usando endpoints de gateway e de interface.

O diagrama ilustra o seguinte:

  • As aplicações on-premises usam nomes de DNS específicos do endpoint para enviar dados ao endpoint de interface dentro da VPC via AWS Direct Connect (ou AWS VPN). O AWS PrivateLink move os dados do endpoint de interface para o Amazon S3 por meio da rede da AWS.

  • Usando nomes regionais padrão do Amazon S3, as aplicações na VPC enviam dados ao endpoint de gateway que se conecta ao Amazon S3 pela rede da AWS.

Para obter mais informações sobre endpoints de gateway, consulte Endpoints da VPC de gateway no Guia do usuário da VPC.

Criar uma política de VPC endpoint para o Amazon S3

É possível anexar uma política de endpoint ao VPC endpoint que controla o acesso ao Amazon S3. Essa política especifica as seguintes informações:

  • A entidade principal do AWS Identity and Access Management (IAM) que pode executar ações

  • As ações que podem ser executadas

  • Os recursos nos quais as ações podem ser executadas

Você também pode usar políticas de bucket do Amazon S3 para restringir o acesso a buckets específicos de um endpoint da VPC específico usando a condição aws:sourceVpce na política de bucket. Os exemplos a seguir mostram políticas que restringem o acesso a um bucket ou a um endpoint.

Você pode criar uma política de endpoint que restringe o acesso apenas a buckets específicos do Amazon S3. Esse tipo de política será útil se houver outros Serviços da AWS em sua VPC que usem buckets. A política de bucket a seguir restringe o acesso somente a amzn-s3-demo-bucket1. Para usar essa política de endpoint, substitua amzn-s3-demo-bucket1 pelo nome do bucket.

{ "Version": "2012-10-17", "Id": "Policy1415115909151", "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*"] } ] }

Você pode criar uma política de endpoint que restrinja o acesso apenas aos buckets do S3 em uma Conta da AWS específica. Para impedir que os clientes dentro da VPC acessem buckets que você não possui, use a declaração a seguir na política de endpoint. O exemplo a seguir cria uma política que restringe o acesso a recursos pertencentes a um único ID de Conta da AWS, 111122223333.

{ "Statement": [ { "Sid": "Access-to-bucket-in-specific-account-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::*", "Condition": { "StringNotEquals": { "aws:ResourceAccount": "111122223333" } } } ] }
nota

Para especificar o ID da Conta da AWS do recurso que está sendo acessado, você pode usar a chave aws:ResourceAccount ou s3:ResourceAccount na política do IAM. No entanto, saiba que alguns Serviços da AWS dependem do acesso a buckets gerenciados pela AWS. Portanto, usar a chave aws:ResourceAccount ou s3:ResourceAccount em sua política do IAM também pode afetar o acesso a esses recursos.

Exemplo: restringir o acesso a um endpoint da VPC específico na política de bucket do S3

A política de bucket do Amazon S3 a seguir permite o acesso a um bucket específico, amzn-s3-demo-bucket2, apenas pelo endpoint da VPC vpce-1a2b3c4d. Essa política negará todo acesso ao bucket se o endpoint especificado não estiver sendo usado. A condição aws:sourceVpce especifica o endpoint e não requer um nome do recurso da Amazon (ARN) para o recurso de endpoint da VPC, apenas o ID do endpoint. Para usar essa política de bucket, substitua amzn-s3-demo-bucket2 e vpce-1a2b3c4d pelo nome e endpoint do bucket.

Importante
  • Ao aplicar as políticas de bucket do Amazon S3 a seguir para restringir o acesso somente a certos endpoints da VPC, você pode bloquear o acesso ao bucket inadvertidamente. As políticas de bucket destinadas especificamente a limitar o acesso do bucket às conexões originadas do endpoint da VPC podem bloquear todas as conexões ao bucket. Para obter informações sobre como corrigir esse problema, consulte Minha política de bucket tem o ID da VPC ou do endpoint da VPC incorreto. Como corrigir a política para que eu possa acessar o bucket? na Central de conhecimento do AWS Support.

  • Antes de usar a política de exemplo a seguir, substitua o ID do VPC endpoint por um valor apropriado para o caso de uso. Caso contrário, não será possível acessar o bucket.

  • Essa política desabilita o acesso do console ao bucket especificado, pois as solicitações do console não se originam do VPC endpoint especificado.

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

Para obter mais exemplos de políticas, consulte Endpoints para o Amazon S3 no Guia do usuário da VPC.

Para obter mais informações sobre conectividade de VPC, consulte Network-to-VPC connectivity options (Opções de conectividade entre rede e VPC) no whitepaper da AWS Amazon Virtual Private Cloud Connectivity Options (Opções de conectividade do Amazon Virtual Private Cloud).