¿Por qué mi sitio web estático en Amazon S3 sigue siendo accesible desde direcciones IP públicas a pesar de que he restringido el acceso a una Amazon VPC específica?

4 minutos de lectura
0

Utilizo Amazon Simple Storage Service (Amazon S3) para alojar mi sitio web estático. He asociado una política de bucket que limita el acceso a una Amazon Virtual Private Cloud (Amazon VPC) específica. Sin embargo, todavía puedo acceder al sitio web desde direcciones IP públicas.

Solución

Antes de solucionar el problema, asegúrese de completar los siguientes pasos:

  • Borre la memoria caché del navegador web o del proxy para ver la configuración más reciente.
  • Confirme que la instancia de Amazon Elastic Compute Cloud (Amazon EC2) desde la que accede al bucket está en la misma región de AWS que el bucket.
  • Asocie el punto de conexión de VPC a la tabla de enrutamiento de la instancia de EC2 que utilice. De esta forma, el tráfico se asocia al ID del VPC al que se hace referencia en la política de bucket.

Consultar la política de bucket

Confirme que la política de bucket permita el acceso al bucket desde la VPC. Para comprobarlo, revise las instrucciones de la política de bucket. Por ejemplo, la siguiente instrucción de política de bucket permite S3:GetObject con la condición de que la solicitud provenga 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"
      }
    }
  }\]
}

Nota: El alojamiento estático de sitios web permite solicitudes no autenticadas, es decir, anónimas. Sin embargo, si un usuario se autentica, se le puede conceder acceso según sus credenciales. Por ejemplo, supongamos que un usuario se autentica con un rol de AWS Identity and Access Management (IAM) que tiene acceso total a Amazon S3. Este usuario puede seguir descargando objetos fuera de la VPC a pesar de la política de bucket. Para obtener una política de bucket más restrictiva, consulte Restricción del acceso a una VPC específica. Al restringir el acceso a una VPC específica, se deniega el acceso hasta al administrador o a los usuarios raíz de la cuenta de AWS para las solicitudes que no provengan de la VPC.

Comprobar la lista de control de acceso (ACL) de objeto

Tras confirmar que la política de bucket es correcta, compruebe si alguna de las ACL de objeto permiten el acceso público. Si algunas ACL de objeto permiten el acceso público y quiere anularlas, realice una de las siguientes acciones:

  • Modifique la configuración de acceso público para el bucket individual o su cuenta de AWS.
  • Añada una instrucción de denegación explícita a la política de bucket.

Si quiere anular las ACL de objeto, utilice la consola de Amazon S2 para modificar la configuración de acceso público del bucket individual o la configuración de acceso público de su cuenta. Seleccione las siguientes opciones:

  • Bloquear el acceso público a buckets y objetos otorgado a través de listas de control de acceso (ACL)nuevas
  • Bloquear el acceso público a buckets y objetos otorgado a través de cualquier lista de control de acceso (ACL)

Nota: También puede usar la Interfaz de la línea de comandos de AWS (AWS CLI), un SDK de AWS o la API REST de Amazon S3 para modificar la configuración de acceso público del bucket. Para obtener más información, consulte Bloquear el acceso público a su almacenamiento de Amazon S3.

Si quiere usar una política de bucket para anular las ACL de objeto, añada una instrucción que deniegue explícitamente las acciones cuando la solicitud no provenga de la VPC. Por ejemplo, la siguiente política de bucket incluye una instrucción que deniega explícitamente s3:GetObject cuando la solicitud no proviene de vpc-id123456.

Advertencia: Como este ejemplo de política de bucket incluye una instrucción de denegación explícita, revise los parámetros de denegación explícita de acceso antes de guardar la política. Si le bloquean accidentalmente, consulte He denegado accidentalmente a todo el mundo el acceso a mi bucket de Amazon S3. ¿Cómo recupero el acceso?

{
  "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"
        }
      }
    }
  \]
}

Información relacionada

Generador de políticas de AWS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año