Como verificar se um ponto final do AWS VPC (S3) funciona?

5

Eu adicionei um endpoint VPC ao meu VPC usando o CloudFormation e permiti o uso de s3. As rotas são visíveis no console da AWS, mas não nas tabelas de roteamento locais do Instâncias do EC2:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.29.4.129    0.0.0.0         UG    0      0        0 eth0
169.254.169.254 0.0.0.0         255.255.255.255 UH    0      0        0 eth0
172.29.4.128    0.0.0.0         255.255.255.128 U     0      0        0 eth0

Como posso verificar se as instâncias do EC2 no VPC realmente usam o ponto de extremidade VPC para o S3 e não a conexão de Internet disponível?

    
por M. Glatki 28.12.2016 / 10:52

5 respostas

3

Eu encontrei um método para verificar o uso do ponto de extremidade VPC.

  1. Faça login em uma instância do AWS EC2 no VPC
  2. Configurar o cliente cls aws
  3. execute aws ec2 describe-prefix-lists ; para Windows PowerShell , Get-EC2PrefixList

O resultado deve conter o ID da lista de prefixos de pontos de extremidade do VPC no atributo PrefixListId .

Para verificação adicional, você pode aplicar a seguinte política a um intervalo do S3:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::mybucket"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpc": [
            "vpc-121212"
          ]
        }
      }
    }
  ]
}

com seu ID vpc em vez de vpc-121212. Você só poderá acessar o bucket S3 a partir da VPC fornecida

    
por 29.12.2016 / 12:34
2

Você pode ativar o registro do S3 e verificar se os arquivos estão sendo acessados a partir do seu IP privado, em vez de públicos. Se o seu registro mostrar IPs privados estiver acessando os intervalos que você configurou corretamente. Boa sorte!

    
por 30.01.2018 / 10:26
2

Eu recomendaria o lançamento da instância ec2 (com a função do IAM com permissão para listar buckets s3) na sub-rede sem acesso à Internet.

Basicamente, apenas duas regras ativas na tabela de rotas (o seu intervalo de sub-rede VPC e o endpoint s3).

Conecte-se à instância e execute o comando:

aws s3 ls /**

Ele deve falhar com o tempo limite porque o boto, por padrão, criará uma solicitação para o URL s3 global (s3.amazonaws.com).

export AWS_DEFAULT_REGION=us-east-1** ## your region here
aws s3 ls /**

deve listar seus blocos na região us-east-1 (o roteador vpc roteará sua solicitação para s3.us-east-1.amazonaws.com).

    
por 26.09.2017 / 13:27
1

Sua instância encaminha pacotes destinados ao S3 para o gateway local e, a partir daí, o 'roteador' da VPC os encaminha para o terminal S3. Nenhuma configuração ou conhecimento do cliente é necessária.

Você poderia configurar o endpoint S3 com um conjunto muito restritivo de ACLs, de forma que ele negasse todas as solicitações e observasse seu cliente receber a falha também.

    
por 28.12.2016 / 16:41
0

Eu recomendaria lançar ec2instance (com a função iam para listar os depósitos s3) na sub-rede sem acesso à Internet. Basicamente, apenas 2 regras ativas na tabela de rotas (o seu intervalo de sub-rede vpc e o endpoint s3).

Conecte-se à instância e execute o comando:

$ aws s3 ls /
It should fail with timeout b/c boto by default will create request to global s3 url (s3.amazonaws.com)
$ export AWS_DEFAULT_REGION=us-east-1 ## your region here
$ aws s3 ls /
should list your buckets in us-east-1 region (vpc router will route your request to s3.us-east-1.amazonaws.com)

Isso está funcionando Obrigado, Por padrão, é o Global s3, conforme explicado, você tem que definir a região na qual você criou seu bucket.

    
por 06.09.2018 / 08:51