Bloquear el acceso público a su almacenamiento de Amazon S3 - Amazon Simple Storage Service

Bloquear el acceso público a su almacenamiento de Amazon S3

La característica Block Public Access de Amazon S3 proporciona la configuración de los puntos de acceso, los buckets y las cuentas, con el fin de ayudarle a administrar el acceso público a los recursos de Amazon S3. De forma predeterminada, los buckets, puntos de acceso y objetos nuevos no permiten el acceso público. Sin embargo, los usuarios pueden modificar las políticas de bucket, las políticas de punto de acceso o los permisos de objeto para permitir el acceso público. La configuración de S3 Block Public Access anula estas políticas y permisos para poder limitar el acceso público a estos recursos.

Con Block Public Access de S3, los administradores de cuentas y los propietarios de buckets pueden configurar fácilmente controles centralizados para limitar el acceso público a sus recursos de Amazon S3, que se aplican independientemente de cómo se creen los recursos.

Cuando Amazon S3 recibe una solicitud para acceder a un bucket o a un objeto, determina si el bucket o la cuenta del propietario del bucket tiene aplicada una configuración de bloqueo de acceso público. Si la solicitud se realizó a través de un punto de acceso, Amazon S3 también comprueba la configuración de bloqueo de acceso público del punto de acceso. Si hay una configuración de bloqueo de acceso público que prohíbe el acceso solicitado, Amazon S3 rechaza la solicitud.

Block Public Access de Amazon S3 proporciona cuatro configuraciones. Estas configuraciones son independientes y se pueden usar en cualquier combinación. Cada configuración se puede aplicar a un punto de acceso, a un bucket o a una Cuenta de AWS completa. Si la configuración de bloqueo de acceso público para el punto de acceso, el bucket o la cuenta es diferente, Amazon S3 aplicará la combinación más restrictiva de la configuración del punto de acceso, el bucket y la cuenta.

Cuando Amazon S3 evalúa si una configuración de bloqueo de acceso público prohíbe una operación, rechaza cualquier solicitud que infrinja un punto de acceso, un bucket o una configuración de cuenta.

aviso

El acceso público se otorga a buckets y objetos a través de listas de control de acceso (ACL), políticas de punto de acceso, políticas de bucket o todas ellas. Para ayudar a garantizar que todos los puntos de acceso, buckets y objetos de Amazon S3 tienen su acceso público bloqueado, se recomienda activar los cuatro ajustes de bloqueo de acceso público de la cuenta. Estos ajustes bloquean el acceso público a todos los buckets y puntos de acceso actuales y futuros.

Antes de aplicar estos ajustes, verifique que sus aplicaciones funcionen correctamente sin acceso público. Si necesita algún nivel de acceso público a los buckets u objetos, como, por ejemplo, con el fin de alojar un sitio web estático, tal y como se describe en Alojamiento de un sitio web estático mediante Amazon S3, puede personalizar los ajustes individuales para que se adapten a sus casos de uso de almacenamiento.

nota
  • Puede habilitar la configuración de bloqueo de acceso público solo para los puntos de acceso, los buckets y las Cuentas de AWS . Amazon S3 no admite la configuración de bloqueo de acceso público por objeto.

  • Cuando aplica la configuración de bloqueo de acceso público a una cuenta, esta se aplica globalmente a todas las Regiones de AWS . La configuración podría no entrar en vigor en todas las regiones de manera inmediata o simultánea, pero acabará propagándose a todas las regiones.

Configurar Block Public Access

S3 Block Public Access proporciona cuatro configuraciones. Puede aplicar esta configuración en cualquier combinación en puntos de acceso o buckets individuales o en Cuentas de AWS completas. Si aplica una configuración a una cuenta, se aplica a todos los buckets y puntos de acceso propiedad de esa cuenta. Del mismo modo, si aplica una configuración a un bucket, se aplica a todos los puntos de acceso asociados a ese bucket.

La siguiente tabla contiene las configuraciones disponibles

Nombre Descripción
BlockPublicAcls

Si se establece esta opción en TRUE causa el siguiente comportamiento:

  • Las llamadas de la acl de PUT Object y la acl de PUT Object fallan si la lista de control de acceso (ACL) es pública.

  • Las llamadas de objetos de PUT fallan si la solicitud incluye una ACL pública.

  • Si se aplica esta configuración a una cuenta, las llamadas al PUT Bucket fallan si la solicitud incluye una ACL pública.

Cuando esta configuración se establece en TRUE, se produce un error en las operaciones especificadas (independientemente de si se hacen a través de la API de REST, la AWS CLI o los SDK de AWS). No obstante, las políticas existentes y las ACL para buckets y objetos no se modifican. Esta configuración permite protegerse frente al acceso público al tiempo que le permite auditar, ajustar o alterar de otro modo las políticas existentes y ACL de sus buckets y objetos.

nota

Los puntos de acceso no tienen ACL asociadas a ellos. Si aplica esta configuración a un punto de acceso, actúa como paso a través del bucket subyacente. Si un punto de acceso tiene esta configuración habilitada, las solicitudes realizadas a través del punto de acceso se comportan como si el bucket subyacente tuviera esta configuración habilitada, independientemente de si el bucket la tiene habilitada o no.

IgnorePublicAcls

Al configurar esta opción en TRUE, Amazon S3 ignora todas las ACL públicas en un bucket y cualquier objeto que contenga. Esta configuración le permite bloquear de manera segura el acceso público concedido por las ACL al tiempo que permite llamadas a PUT Object que incluyen una ACL pública (frente a la BlockPublicAcls que rechaza llamadas a PUT Object que incluyen una ACL pública). La habilitación de esta configuración no afecta a la persistencia de ninguna ACL existente y no evita el establecimiento de ACL públicas nuevas.

nota

Los puntos de acceso no tienen ACL asociadas a ellos. Si aplica esta configuración a un punto de acceso, actúa como paso a través del bucket subyacente. Si un punto de acceso tiene esta configuración habilitada, las solicitudes realizadas a través del punto de acceso se comportan como si el bucket subyacente tuviera esta configuración habilitada, independientemente de si el bucket la tiene habilitada o no.

BlockPublicPolicy

Si esta opción se establece en TRUE para un bucket, Amazon S3 rechazará las llamadas a la política de bucket PUT si la política de bucket especificada permite el acceso público y rechazará las llamadas a la política de punto de acceso PUT para todos los puntos de acceso del bucket si la política especificada permite el acceso público. Si se establece esta opción en TRUE para un punto de acceso, Amazon S3 rechazará las llamadas a la política de punto de acceso PUT y a la política de bucket PUT que se realicen a través del punto de acceso si la política especificada (ya sea para el punto de acceso o para el bucket subyacente) es pública.

Con esta configuración, puede permitir a los usuarios administrar políticas de punto de acceso y de bucket sin permitirles compartir públicamente el bucket ni los objetos que contiene. Habilitar esta configuración no afecta a las políticas de punto de acceso o bucket existentes.

importante

Para usar esta configuración de manera eficaz, debe aplicarla en el nivel de cuenta. Una política de bucket puede permitir a los usuarios alterar la configuración de Block Public Access de un bucket. Por tanto, los usuarios que tienen permiso para cambiar una política de bucket podrían insertar una política que les permita deshabilitar la configuración de Block Public Access del bucket. Si se habilita esta configuración para toda la cuenta en lugar de para un bucket específico, entonces Amazon S3 bloquea políticas públicas incluso si un usuario altera la política del bucket para deshabilitar esta configuración.

RestrictPublicBuckets

El establecimiento de esta opción en TRUE restringe el acceso a un punto de acceso o un bucket con una política pública a las entidades principales del servicio de AWS y a los usuarios autorizados dentro de la cuenta del propietario del bucket. Esta configuración bloquea todo el acceso entre cuentas al punto de acceso o al bucket (salvo a las entidades principales de servicios de AWS), pero todavía permite a los usuarios de la cuenta administrar el punto de acceso o el bucket.

La activación de este ajuste no afecta a las políticas de punto de acceso o bucket existentes, salvo que Amazon S3 bloquea el acceso público y entre cuentas derivado de cualquier política de punto de acceso o bucket pública, incluida la delegación no pública a cuentas específicas.

importante
  • Las llamadas a GET Bucket acl y GET Object acl siempre devuelve los permisos efectivos instaurados para el bucket u objeto especificados. Por ejemplo, imagine que un bucket tiene un ACL que concede acceso público, pero el bucket también tiene la configuración IgnorePublicAcls habilitada. En este caso, GET Bucket acl devuelve una ACL que refleja los permisos de acceso que Amazon S3 está implementando, en lugar de la ACL real asociada con el bucket.

  • La configuración de Block Public Access no altera las políticas ni las ACL existentes. Por tanto, la eliminación de una configuración de Block Public Access provoca que pueda accederse de nuevo públicamente a un bucket o un objeto con una política pública o ACL.

Realización de operaciones de acceso público de bloque en un punto de acceso

Para realizar operaciones de Block Public Access en un punto de acceso, use el servicio de la AWS CLI s3control. Tenga en cuenta que actualmente no es posible cambiar la configuración de bloqueo de acceso público de un punto de acceso después de haberlo creado. Por lo tanto, la única forma de especificar la configuración de bloqueo de acceso público para un punto de acceso es incluirla al crear el punto de acceso.

Qué significa "pública"

Buckets

  • ACL

    • Amazon S3 considera que una ACL de objetos o buckets es pública si concede cualquier permiso a los miembros de los grupos AllUsers o AuthenticatedUsers definidos previamente. Para obtener más información acerca de los grupos predefinidos, consulte Grupos predefinidos de Amazon S3.

  • Políticas

    • Al evaluar una política de bucket, Amazon S3 comienza suponiendo que la política es pública. A continuación, evalúa la política para determinar si califica como no pública. Para que se considere no pública, una política de bucket debe conceder acceso solo a valores fijos (valores que no contienen un comodín) de uno o más de los siguientes:

      • Un conjunto de Classless Inter-Domain Routings (CIDR), mediante aws:SourceIp. Para obtener más información sobre CIDR, consulte RFC 4632 en la página web de RFC EditoR.

      • Una entidad principal de AWS, un usuario, un rol o una entidad principal de servicio (por ejemplo, aws:PrincipalOrgID)

      • aws:SourceArn

      • aws:SourceVpc

      • aws:SourceVpce

      • aws:SourceOwner

      • aws:SourceAccount

      • s3:x-amz-server-side-encryption-aws-kms-key-id

      • aws:userid, fuera del patrón "AROLEID:*"

      • s3:DataAccessPointArn

        nota

        Cuando se utiliza en una política de bucket, este valor puede contener un comodín para el nombre del punto de acceso sin mostrar la política pública, siempre y cuando el ID de cuenta sea fijo. Por ejemplo, permitir el acceso a arn:aws:s3:us-west-2:123456789012:accesspoint/* permitiría el acceso a cualquier punto de acceso asociado con la cuenta 123456789012 de la región us-west-2 sin hacer pública la política de bucket. Tenga en cuenta que este comportamiento es diferente para las políticas de punto de acceso. Para obtener más información, consulte Puntos de acceso.

      • s3:DataAccessPointAccount

    • En virtud de estas reglas, las siguientes políticas de ejemplo se consideran públicas:

      { "Principal": { "Federated": "graph.facebook.com" }, "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow" }
      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow" }
      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}} }

      Puede convertir estas políticas en no públicas incluyendo cualquiera de las claves de condición indicadas con anterioridad, utilizando un valor fijo. Por ejemplo, puede convertir la última política de arriba en no pública estableciendo aws:SourceVpc en un valor fijo, como el siguiente:

      { "Principal": "*", "Resource": "*", "Action": "s3:PutObject", "Effect": "Allow", "Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}} }
    • Para obtener más información acerca de las políticas de bucket, consulte Políticas de bucket y de usuario.

Example

Este ejemplo muestra cómo evalúa Amazon S3 una política de bucket que contiene concesiones de acceso público y no público.

Imagine que un bucket tiene una política que concede acceso a un conjunto de entidades principales fijas. Bajo las reglas descritas con anterioridad, esta política no es pública. Por tanto, si habilita la configuración RestrictPublicBuckets, la política permanece en efecto tal y como está redactada, porque RestrictPublicBuckets solo se aplica a buckets que tienen políticas públicas. Sin embargo, si añade una instrucción pública a la política, RestrictPublicBuckets surtirá efecto en el bucket. Solo permite a las entidades principales del servicio de AWS y a los usuarios autorizados de la cuenta del propietario del bucket tener acceso al bucket.

Suponga, por ejemplo, que un bucket propiedad de "Cuenta-1 tiene una política que contiene lo siguiente:

  1. Una instrucción que concede acceso a AWS CloudTrail (que es una entidad principal de servicio de AWS)

  2. Una instrucción que concede acceso a la cuenta "Cuenta-2"

  3. Una instrucción que concede acceso al público, especificando, por ejemplo, "Principal": "*" sin Condition limitante

Esta política califica como pública debido a la tercera instrucción. Con esta política en vigor y RestrictPublicBuckets activado, Amazon S3 solo permite obtener acceso a CloudTrail. Aunque la instrucción 2 no es pública, Amazon S3 deshabilita el acceso de la "Cuenta-2". Esto se debe a que la instrucción 3 convierte en pública a toda la política, por lo que se aplica RestrictPublicBuckets. Como consecuencia, Amazon S3 deshabilita el acceso entre cuentas, aunque la política delega el acceso a una cuenta específica, "Cuenta-2". Pero si elimina la instrucción 3 de la política, la política no califica como pública y RestrictPublicBuckets ya no es aplicable. Así, "Cuenta-2" recupera el acceso al bucket, aunque deje RestrictPublicBuckets habilitado.

Puntos de acceso

Amazon S3 evalúa la configuración del bloqueo de acceso público de un modo ligeramente diferente para los puntos de acceso en comparación con los buckets. Las reglas que Amazon S3 aplica para determinar cuándo una política de punto de acceso es pública suelen ser las mismas para los puntos de acceso que para los buckets, excepto en las situaciones siguientes:

  • Un punto de acceso que tiene un origen de red VPC siempre se considera no público, independientemente del contenido de su política de punto de acceso.

  • Una política de punto de acceso que concede acceso a un conjunto de puntos de acceso que utilizan s3:DataAccessPointArn se considera pública. Tenga en cuenta que este comportamiento es diferente al de las políticas de bucket. Por ejemplo, una política de bucket que concede acceso a los valores de s3:DataAccessPointArn que coinciden con arn:aws:s3:us-west-2:123456789012:accesspoint/* no se considera pública. Sin embargo, la misma instrucción en una política de punto de acceso haría público el punto de acceso.

Uso de Access Analyzer para S3 para revisar los buckets públicos

Puede utilizar Access Analyzer para S3 para revisar los buckets con ACL de bucket, políticas de bucket o políticas de punto de acceso que otorgan acceso público. Access Analyzer para S3 le avisa de los buckets que están configurados para permitir el acceso a cualquier usuario de Internet u otras Cuentas de AWS , incluidas aquellas Cuentas de AWS ajenas a su organización. Para cada bucket público o compartido, recibirá resultados que le informarán del origen y el nivel de acceso público o compartido.

Dotado del conocimiento que se presenta en los resultados, puede tomar medidas correctivas inmediatas y precisas. En Access Analyzer para S3, puede bloquear todo el acceso público a un bucket con un solo clic. También puede examinar a fondo las configuraciones de permisos de nivel de bucket para configurar niveles detallados de acceso. Para casos de uso específicos y verificados que requieren acceso público o compartido, puede reconocer y registrar su intención de que el bucket continúe siendo público o compartido archivando los resultados del bucket.

En casos excepcionales, Access Analyzer para S3 podría no tener ningún resultado para un bucket que una evaluación del bloqueo de acceso público de Amazon S3 registre como pública. Esto sucede porque el bloqueo de acceso público de Amazon S3 revisa las políticas de las acciones actuales y todas las acciones posibles que podrían añadirse en el futuro, lo que hace que un bucket se convierta en público. Por otro lado, Access Analyzer para S3 solo analiza las acciones actuales especificadas para el servicio de Amazon S3 en la evaluación del estado de acceso.

Para obtener más información acerca de Access Analyzer para S3, consulte Revisión del acceso al bucket mediante Access Analyzer para S3.

Permissions

Para usar características del bloqueo de acceso público de Amazon S3, debe contar con los siguientes permisos:

Operation Permisos necesarios
Estado de la política de bucket de GET s3:GetBucketPolicyStatus
Configuración de Block Public Access de GET bucket s3:GetBucketPublicAccessBlock
Configuración de Block Public Access de PUT bucket s3:PutBucketPublicAccessBlock
Configuración de Block Public Access de DELETE bucket s3:PutBucketPublicAccessBlock
Configuración de Block Public Access de GET account s3:GetAccountPublicAccessBlock
Configuración de Block Public Access de PUT account s3:PutAccountPublicAccessBlock
Configuración de Block Public Access de DELETE account s3:PutAccountPublicAccessBlock
Configuración de bloqueo de acceso público de punto de acceso PUT s3:PutAccessPointPublicAccessBlock
nota

Las operaciones DELETE necesitan los mismos permisos que las operaciones PUT. NO hay permisos separados para las operaciones DELETE.

Configuración de Block Public Access

Para obtener más información sobre cómo configurar el bloqueo de acceso público para su Cuenta de AWS y sus buckets de Amazon S3, consulte los siguientes temas.