AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 822979
Accepted
M. Glatki
M. Glatki
Asked: 2016-12-29 01:52:15 +0800 CST2016-12-29 01:52:15 +0800 CST 2016-12-29 01:52:15 +0800 CST

Como verificar se um endpoint da AWS VPC (S3) funciona?

  • 772

Adicionei um VPC endpoint ao meu VPC usando o CloudFormation e permiti o uso do s3. As rotas são visíveis no console AWS, mas não nas tabelas de roteamento local das 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 verifico se as instâncias do EC2 no VPC realmente usam o VPC endpoint para S3, e não a conexão de internet disponível?

routing amazon-ec2 amazon-s3 amazon-web-services amazon-vpc
  • 7 7 respostas
  • 30015 Views

7 respostas

  • Voted
  1. Valer
    2019-10-29T07:59:30+08:002019-10-29T07:59:30+08:00

    Eu acho que a maneira direta é realmente investigar essas rotas.

    Você pode rastrear a rota para s3 e ver se o IP interno do Gateway NAT está em algum lugar na saída (por exemplo, o primeiro salto).

    Primeiro, verifique os IPs internos do Gateway NAT no console .

    Saída de exemplo com o endpoint definido - nenhum IP de gateway mostrado. Isto é o que você quer ver.

    $ traceroute -n -T -p 443 s3.amazonaws.com                                
    traceroute to s3.amazonaws.com (52.216.204.93), 30 hops max, 60 byte packets
     1  * * *
     2  * * *
     3  * * *
     4  * * *
     5  * * *
     6  * * *
     7  52.216.204.93  0.662 ms  0.668 ms  0.637 ms
    
    

    Exemplo de saída de um destino diferente, passando por NAT (veja o primeiro salto)

    $ traceroute -n -T -p 443 serverfault.com
    traceroute to serverfault.com (151.101.129.69), 30 hops max, 60 byte packets
     1  172.20.10.188  0.206 ms  0.147 ms  0.145 ms
     2  * * *
     3  * * *
     4  * * *
     5  * * *
     6  * * *
     7  100.65.13.49  0.956 ms 100.65.13.113  1.253 ms *
     8  52.93.28.209  1.083 ms 52.93.28.231  1.213 ms 52.93.28.235  1.151 ms
     9  100.100.4.38  1.770 ms 100.100.4.46  2.089 ms 100.100.4.36  1.723 ms
    10  103.244.50.242  1.136 ms 100.100.4.44  1.702 ms  2.738 ms
    11  151.101.129.69  1.013 ms 103.244.50.244  1.745 ms 151.101.129.69  1.142 ms
    
    • 17
  2. Best Answer
    M. Glatki
    2016-12-30T03:34:57+08:002016-12-30T03:34:57+08:00

    Encontrei um método para verificar o uso do VPC endpoint.

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

    O resultado deve conter o ID da lista de prefixos de VPC endpoints no atributo PrefixListId.

    Para verificação adicional, você pode aplicar a seguinte política a um bucket 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 vpc ID em vez de vpc-121212. Você só poderá acessar o bucket S3 da VPC fornecida

    • 13
  3. Michael
    2018-01-31T01:26:31+08:002018-01-31T01:26:31+08:00

    Você pode ativar o log do S3 e verificar se os arquivos estão sendo acessados ​​de seu IP privado em vez de público. Se o registro mostrar que IPs privados estão acessando os depósitos, você o configurou corretamente. Boa sorte!

    • 10
  4. VictorB
    2017-09-27T03:27:55+08:002017-09-27T03:27:55+08:00

    Eu recomendaria iniciar a instância ec2 (com a função IAM permitida para listar os baldes s3) na sub-rede sem acesso à Internet.

    Basicamente, apenas 2 regras ativas na tabela de rotas (seu intervalo de sub-rede VPC e 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 baldes na região us-east-1 (o roteador vpc encaminhará sua solicitação para s3.us-east-1.amazonaws.com).

    • 4
  5. Jason Martin
    2016-12-29T07:41:48+08:002016-12-29T07:41:48+08:00

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

    Você pode configurar o endpoint S3 com um conjunto muito restritivo de ACLs de forma que negue todas as solicitações e observe seu cliente receber a falha também.

    • 1
  6. dimisjim
    2020-02-22T07:38:30+08:002020-02-22T07:38:30+08:00

    A resposta de @m-glatki (que por algum motivo é a aceita) é factualmente incorreta.

    Em primeiro lugar, você deve habilitar explicitamente uma interface ec2 VPC para poder realizar a aws ec2 describe-prefix-listschamada, caso contrário, você obterá um tempo limite.

    Em segundo lugar, mesmo que você possa chamar essa API, ela não informará se você está roteando seu tráfego por meio desse endpoint. Ele apenas fornece detalhes sobre uma lista de prefixos (PL) específica na região atual.

    O que você precisa fazer é associar um S3 VPC endpoint à tabela de rotas da sub-rede e garantir que sua instância do EC2 ou grupo de segurança do serviço permita conectividade de saída por meio desse endpoint (você deve estar bem com a regra de saída padrão "permitir todos"). Isso roteará o tráfego S3 por meio do endpoint, mesmo se você tiver um gateway NAT conectado a ele.

    Você pode verificar se seu tráfego não é roteado por meio do NAT verificando seus logs cloudwatch associados (Consulte as métricas BytesOutToDestination , BytesOutToSource , BytesInFromDestination e BytesInFromSource )

    Verifique também os logs do bucket S3 como @michael apontou corretamente.

    • 1
  7. ozeebee
    2021-08-12T02:06:45+08:002021-08-12T02:06:45+08:00

    Elaborando a solução @m-glatki, adicione uma política no bucket que restrinja o acesso S3 a um determinado VPC Endpoint:

    {
        "Version": "2008-10-17",
        "Statement": [
            {
                "Effect": "Deny",
                "Principal": "*",
                "Action": "s3:ListBucket",
                "Resource": "arn:aws:s3:::mybucket",
                "Condition": {
                    "StringNotEquals": {
                        "aws:SourceVpce": "vpce-01ab2c3d4"
                    }
                }
            }
        ]
    }
    

    Você só poderá listar o conteúdo do bucket de um processo que usa o VPC endpoint. Caso contrário, você receberá uma mensagem:

    An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied

    Para obter o ID do VPC Endpoint, use este comando:aws ec2 describe-vpc-endpoints

    Veja este link

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve