Por que meu site estático no Amazon S3 ainda está acessível em endereços IP públicos, embora eu tenha restringido o acesso a uma Amazon VPC específica?

4 minuto de leitura
0

Uso o Amazon Simple Storage Service (Amazon S3) para hospedar meu site estático. Anexei uma política de bucket que limita o acesso somente a uma Amazon Virtual Private Cloud (Amazon VPC) específica. No entanto, ainda consigo acessar o site a partir de endereços IP públicos.

Resolução

Antes de solucionar o problema, certifique-se de concluir as seguintes etapas:

  • Limpe o cache do seu navegador ou proxy para ver a configuração mais recente.
  • Confirme se a instância do Amazon Elastic Compute Cloud (Amazon EC2) da qual você acessa o bucket está na mesma região da AWS que o bucket.
  • Associe o endpoint da VPC à tabela de rotas da instância do EC2 que você usa. Dessa forma, o tráfego se associa ao ID da VPC referenciado na política de bucket.

Verifique a política de bucket

Confirme se a política de bucket permite o acesso ao bucket a partir da VPC. Para verificar isso, revise as declarações na sua política de bucket. Por exemplo, a seguinte declaração de política de bucket permite s3:GetObject com a condição de que a solicitação seja proveniente de vpc-id123456.

{
  "Version": "2012-10-17",
  "Id": "Policy1",
  "Statement": \[{
    "Sid": "Access-to-Trusted-VPC-only",
    "Effect": "Allow",
    "Principal": "\*",
    "Action": "s3:GetObject\*",
    "Resource": "arn:aws:s3:::awsexamplebucket/\*",
    "Condition": {
      "StringEquals": {
        "aws:sourceVpc": "vpc-id123456"
      }
    }
  }\]
}

Observação: a hospedagem estática de sites permite solicitações não autenticadas (anônimas). No entanto, se um usuário se autenticar, você poderá conceder acesso a ele com base nas suas credenciais. Por exemplo, suponha que um usuário se autentique com um perfil do AWS Identity and Access Management (IAM) que tenha acesso total ao Amazon S3. Esse usuário ainda pode baixar objetos fora da VPC, apesar da seguinte política de bucket. Para uma política de bucket mais restritiva, consulte Restringir o acesso a uma VPC específica. Restringir o acesso a uma VPC específica nega o acesso até mesmo ao administrador ou aos usuários raiz da conta da AWS para solicitações que não sejam provenientes da VPC.

Verificar a lista de controle de acesso (ACL) de objetos

Depois de confirmar que a política de bucket está correta, verifique se alguma ACL de objetos permite acesso público. Se algumas ACLs de objetos permitirem acesso público e você quiser substituí-las, execute uma das seguintes ações:

  • Defina as configurações de acesso público para o bucket individual ou sua conta da AWS.
  • Adicione uma declaração de negação explícita à política de bucket.

Para substituir ACLs de objetos, use o console do Amazon S2 para definir as configurações de acesso público do bucket individual ou as configurações de acesso público da sua conta. Selecione as seguintes opções:

  • Bloquear acesso público a buckets e objetos concedidos por meio de novas listas de controle de acesso (ACLs)
  • Bloquear acesso público a buckets e objetos concedidos por meio de qualquer lista de controle de acesso (ACLs)

**Observação:**Você também pode usar a AWS Command Line Interface (AWS CLI), um SDK da AWS ou a API REST do Amazon S3 para definir as configurações de acesso público do bucket. Para obter mais informações, consulte Bloquear o acesso público ao seu armazenamento do Amazon S3.

Para usar uma política de bucket para substituir ACLs de objetos, adicione uma declaração que negue explicitamente ações quando a solicitação não é proveniente da VPC. Por exemplo, a política de bucket a seguir inclui uma declaração que nega explicitamente s3:GetObject quando a solicitação não é proveniente de vpc-id123456.

Aviso: Como esse exemplo de política de bucket inclui uma declaração de negação explícita, revise os parâmetros de negação explícita de acesso antes de salvar a política. Se você for bloqueado acidentalmente, consulte Neguei acidentalmente o acesso de todos ao meu bucket do Amazon S3. Como posso obter acesso novamente?

{
  "Version": "2012-10-17",
  "Id": "Policy1",
  "Statement": \[{
      "Sid": "Access-to-Trusted-VPC-only",
      "Effect": "Allow",
      "Principal": "\*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/\*",
      "Condition": {
        "StringEquals": {
          "aws:sourceVpc": "vpc-id123456"
        }
      }
    },
    {
      "Sid": "Deny-Access-Except-For-Trusted-VPC",
      "Effect": "Deny",
      "Principal": "\*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/\*",
      "Condition": {
        "StringNotEquals": {
          "aws:sourceVpc": "vpc-id123456"
        }
      }
    }
  \]
}

Informações relacionadas

AWS Policy Generator

AWS OFICIAL
AWS OFICIALAtualizada há um ano