¿Cómo restrinjo el acceso a mi bucket de Amazon S3 mediante direcciones IP o puntos de conexión de VPC específicos?

5 minutos de lectura
0

Quiero bloquear el tráfico que no provenga de un punto de conexión específico de la nube virtual privada (VPC) de Amazon o de determinadas direcciones IP. O, en cambio, uso un bucket de Amazon Simple Storage Service (Amazon S3) para alojar un sitio web estático. Al sitio web se debe poder acceder desde puntos de conexión de VPC o direcciones IP específicos.

Solución

Advertencia: Las políticas de bucket de ejemplo del siguiente artículo deniegan expresamente el acceso a cualquier solicitud fuera de las direcciones IP o los puntos de conexión de VPC permitidos. Asegúrese de revisar detenidamente la política de bucket antes de guardarla.

Use una política de bucket para especificar qué puntos de conexión de VPC, direcciones IP de origen de VPC o direcciones IP externas pueden acceder al bucket de Amazon S3.

Nota: Una dirección IP de origen de VPC es una dirección IP privada dentro de una VPC. No se puede acceder a las direcciones privadas a través de internet; estas direcciones se pueden usar para la comunicación entre las instancias de su VPC. Por ejemplo, una dirección IP privada puede ser la dirección IP privada de una instancia de Amazon Elastic Compute Cloud (Amazon EC2).

Una dirección IP externa es una dirección IP pública que puede provenir de una VPC o de fuera de una VPC. Por ejemplo, una dirección IP externa puede ser la dirección IP elástica o pública de una instancia de Amazon Elastic Compute Cloud (Amazon EC2), o también la dirección IP de la puerta de enlace NAT o del servidor proxy de una VPC.

En el siguiente ejemplo, la política de bucket bloquea el tráfico al bucket, a menos que la solicitud provenga de puntos de conexión de VPC especificados (aws:sourceVpce):

{
  "Id": "VPCe",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VPCe",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpce": [
            "vpce-1111111",
            "vpce-2222222"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

Nota:

  • Para usar esta política con la condición aws:sourceVpce, debe asociar un punto de conexión de VPC para Amazon S3. El punto de conexión de VPC debe estar asociado a la ](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html)tabla de enrutamiento[ de la subred de la instancia de EC2 y se debe encontrar en la misma región de AWS que el bucket.
  • Para permitir que los usuarios lleven a cabo acciones de S3 en el bucket desde los puntos de conexión de VPC o las direcciones IP, debe permitir expresamente los permisos en el nivel de usuario. Puede hacerlo tanto en una política de AWS Identity and Access Management (IAM) como en otra instrucción de la política de bucket.

En el siguiente ejemplo, la política de bucket bloquea el tráfico al bucket, a menos que la solicitud provenga de direcciones IP privadas especificadas (aws:VpcSourceIp):

{
  "Id": "VpcSourceIp",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VpcSourceIp",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:VpcSourceIp": [
            "10.1.1.1/32",
            "172.1.1.1/32"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

Nota: Para usar esta política con la condición aws:VpcSourceIP, debe asociar un punto de conexión de VPC para Amazon S3. El punto de conexión de VPC debe estar asociado a la ](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html)tabla de enrutamiento[ de la subred de la instancia de EC2 y se debe encontrar en la misma región de AWS que el bucket.

En el siguiente ejemplo, la política de bucket bloquea el tráfico al bucket, a menos que la solicitud provenga de direcciones IP externas especificadas (aws:SourceIp):

{
  "Id": "SourceIP",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceIP",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": [
            "11.11.11.11/32",
            "22.22.22.22/32"
          ]
        }
      },
      "Principal": "*"
    }
  ]
}

Advertencia: Estas políticas de bucket de ejemplo deniegan expresamente el acceso a cualquier solicitud fuera de las direcciones IP o los puntos de conexión de VPC permitidos. Incluso se le puede denegar el acceso al bucket al usuario que introdujo la política de bucket si no cumple las condiciones. Por lo tanto, asegúrese de revisar detenidamente la política de bucket antes de guardarla. Si se le bloquea por accidente, consulte I accidentally denied everyone access to my Amazon S3 bucket. How do I regain access?

Si debe permitir que usuarios específicos (dentro de la misma cuenta de AWS) accedan al bucket, incluya la siguiente instrucción en el bloque Condition:

  • AROAEXAMPLEID es el ID del rol de IAM que desea permitir.
  • AIDAEXAMPLEID es el ID del usuario de IAM que desea permitir.
  • 111111111111 es el ID de la cuenta de AWS del bucket, que representa las credenciales del usuario raíz de la cuenta de AWS.

Por ejemplo:

"Condition": {
            "StringNotLike": {
                "aws:userId": [
                    "AROAEXAMPLEID:*",
                    "AIDAEXAMPLEID",
                    "111111111111"
                ]
            }
        }

Para obtener más información sobre cómo conceder acceso a roles de IAM específicos, consulte How to restrict Amazon S3 bucket access to a specific IAM role.

Información relacionada

VPC endpoints

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años