

# Seguridad en Amazon S3
<a name="security"></a>

**importante**  
A partir de abril de 2026, AWS desactivará el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) para todos los buckets nuevos. Además, el cifrado SSE-C se desactivará para todos los buckets existentes en Cuentas de AWS que no contengan datos cifrados con SSE-C. Con estos cambios, las pocas aplicaciones que necesitan el cifrado SSE-C deberán habilitar deliberadamente el uso de SSE-C a través de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) después de crear el bucket. En estos casos, es posible que deba actualizar los scripts de automatización, las plantillas de CloudFormation u otras herramientas de configuración de infraestructura para configurar estos ajustes. Para obtener más información, consulte la [publicación del Blog de almacenamiento de AWS](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

La seguridad en la nube de AWS es la mayor prioridad. Como cliente de AWS, se beneficiará de una arquitectura de red y un centro de datos que están diseñados para satisfacer los requisitos de seguridad de las organizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y usted. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad *de* la nube y seguridad *en* la nube:

**Seguridad de la nube**  
AWS es responsable de proteger la infraestructura que ejecuta servicios de AWS en la Nube de AWS. AWS también le proporciona servicios que puede utilizar de forma segura. Auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad en el marco de los [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/). Para obtener información acerca de los programas de conformidad que se aplican a Amazon S3, consulte [Servicios de AWS en el ámbito del programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/).

**Seguridad en la nube**  
Su responsabilidad la determina el servicio de AWS que utilice. Usted también es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentos aplicables. Para Amazon S3, las siguientes áreas son su responsabilidad:
+ Gestión de los datos, incluida la [propiedad del objeto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) y el [cifrado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html).
+ Clasificación de sus activos
+ [Administración del acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html) a los datos con [roles de IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html#roles) y otras configuraciones de servicio para aplicar los permisos adecuados.
+ Habilitación de controles detectives, como [AWS CloudTrail](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudtrail-logging.html) o [Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/s3_detection.html) para Amazon S.

Esta documentación le ayudará a comprender cómo aplicar el modelo de responsabilidad compartida cuando se utiliza Amazon S3. En los siguientes temas, se le mostrará cómo configurar Amazon S3 para satisfacer sus objetivos de seguridad y conformidad. También aprenderá a utilizar otros servicios de AWS que lo pueden ayudar a monitorear y proteger sus recursos de Amazon S3. 

**nota**  
Para obtener más información sobre el uso de la clase de almacenamiento Amazon S3 Express One Zone con buckets de directorio, consulte [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone) y [Trabajar con buckets de de directorio](directory-buckets-overview.md).

**Topics**
+ [Prácticas recomendadas de seguridad para Amazon S3](security-best-practices.md)
+ [Protección de los datos en Amazon S3](DataDurability.md)
+ [Protección de los datos mediante el cifrado](UsingEncryption.md)
+ [Privacidad del tráfico entre redes](inter-network-traffic-privacy.md)
+ [Validación de la conformidad para Amazon S3](s3-compliance.md)
+ [Resiliencia en Amazon S3](disaster-recovery-resiliency.md)
+ [Seguridad de la infraestructura en Amazon S3](network-isolation.md)
+ [Configuración y análisis de vulnerabilidades en CM de Amazon S3](vulnerability-analysis-and-management.md)
+ [Administración de accesos](security-access-management.md)
+ [Inventario de datos de Amazon Simple Storage Service](s3-data-inventory.md)

# Prácticas recomendadas de seguridad para Amazon S3
<a name="security-best-practices"></a>

**importante**  
A partir de abril de 2026, AWS desactivará el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) para todos los buckets nuevos. Además, el cifrado SSE-C se desactivará para todos los buckets existentes en Cuentas de AWS que no contengan datos cifrados con SSE-C. Con estos cambios, las pocas aplicaciones que necesitan el cifrado SSE-C deberán habilitar deliberadamente el uso de SSE-C a través de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) después de crear el bucket. En estos casos, es posible que deba actualizar los scripts de automatización, las plantillas de CloudFormation u otras herramientas de configuración de infraestructura para configurar estos ajustes. Para obtener más información, consulte la [publicación del Blog de almacenamiento de AWS](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

Amazon S3 proporciona una serie de características de seguridad que debe tener en cuenta a la hora de desarrollar e implementar sus propias políticas de seguridad. Las siguientes prácticas recomendadas son directrices generales y no suponen una solución de seguridad completa. Puesto que es posible que estas prácticas recomendadas no sean adecuadas o suficientes para su entorno, considérelas como recomendaciones útiles en lugar de como normas. 

**Topics**
+ [Prácticas recomendadas de seguridad para Amazon S3](#security-best-practices-prevent)
+ [Prácticas recomendadas de monitorización y auditoría de Amazon S3](#security-best-practices-detect)
+ [Monitorización de la seguridad de los datos con servicios de seguridad de AWS administrados](#monitoring-data-security)

## Prácticas recomendadas de seguridad para Amazon S3
<a name="security-best-practices-prevent"></a>

Las siguientes prácticas recomendadas para Amazon S3 pueden serle de utilidad para evitar incidentes de seguridad.

**Desactivar Listas de control de acceso (ACL)**  
S3 Object Ownership es una configuración de nivel de bucket de Amazon S3 que puede usar para controlar la propiedad de los objetos que se cargan en el bucket y para activar o desactivar las ACL. De forma predeterminada, la propiedad del objeto se establece en la configuración impuesta por el propietario del bucket y todas las ACL están desactivadas. Cuando las ACL están deshabilitadas, el propietario del bucket posee todos los objetos del bucket y administra el acceso a los datos de forma exclusiva mediante políticas de administración de acceso.   
La mayoría de los casos de uso modernos de Amazon S3 ya no requieren utilizar [listas de control de acceso (ACL)](acl-overview.md). Le recomendamos desactivar las ACL, excepto en circunstancias en las que necesite controlar el acceso a cada objeto de manera individual. Para desactivar las ACL y tomar posesión de cada objeto del bucket, aplique la configuración de propietario del bucket obligatorio para la S3 Object Ownership. Al desactivar las ACL, puede mantener fácilmente un bucket con objetos cargados por diferentes Cuentas de AWS.   
Cuando las ACL están desactivadas, el control de acceso de los datos se basa en políticas, como las siguientes:   
+ Políticas de usuario de AWS Identity and Access Management (IAM)
+ Políticas de buckets de S3
+ Políticas de punto de conexión de nube privada virtual (VPC)
+ Políticas de control de servicios (SCP) de AWS Organizations
+ Políticas de control de recursos (RCP) de AWS Organizations
  
La desactivación de las ACL simplifica la administración de permisos y la auditoría. Las ACL están deshabilitadas de forma predeterminada para los buckets nuevos. También existe la posibilidad de desactivar las ACL para los buckets existentes. Si dispone de un bucket que ya tiene objetos, después de desactivar las ACL, las ACL de objeto y bucket ya no formarán parte del proceso de evaluación de acceso. En cambio, el acceso se concede o deniega sobre la base de políticas.   
Antes de desactivar las ACL, asegúrese de hacer lo siguiente:   
+ Revise la política de bucket para asegurarse de que cubra todas las formas en que pretende conceder acceso al bucket fuera de la cuenta.
+ Restablezca la ACL del bucket a la opción predeterminada (control total para el propietario del bucket).
  
Tras deshabilitar las ACL, se producen los siguientes comportamientos:   
+ Su bucket solo acepta solicitudes `PUT` que no especifiquen una ACL o solicitudes `PUT` con las ACL de control total del propietario del bucket. Estas ACL incluyen la ACL `bucket-owner-full-control` preconfigurada o formas equivalentes de esta ACL que se expresan en XML.
+ Las aplicaciones existentes que admiten ACL de control total del propietario del bucket no se ven afectadas. 
+ Las solicitudes `PUT` que contienen otras ACL (por ejemplo, concesiones personalizadas a determinadas Cuentas de AWS) fallan y devuelven un error `400 (Bad Request)` con el código de error `AccessControlListNotSupported`.
   
Para obtener más información, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md).

**Asegúrese que sus buckets de Amazon S3 empleen las políticas correctas y que no sean accesibles públicamente.**  
A menos que necesite de forma explícita que alguien en Internet pueda leer o escribir en su bucket de S3, debe asegurarse de que no sea público. Estos son algunos de los pasos que puede realizar para bloquear el acceso público:  
+ Use S3 Block Public Access. S3 Block Public Access le permite configurar fácilmente controles centralizados para limitar el acceso público a sus recursos de Amazon S3. Estos controles centralizados se aplican independientemente de cómo se creen los recursos. En el caso de las organizaciones que administran varias cuentas de AWS, ahora puede utilizar la aplicación por organización a través de AWS Organizations para administrar de forma centralizada la configuración del bloqueo de acceso público de S3 en toda la organización con una única configuración de política.

  Para obtener más información, consulte [Bloquear el acceso público a su almacenamiento de Amazon S3](access-control-block-public-access.md).
+ Identifique las políticas de bucket de Amazon S3 que permiten una identidad comodín, como `"Principal": "*"` (que en realidad significa «cualquiera»). Busque también políticas que permitan una acción comodín `"*"` (que, efectivamente, permita al usuario llevar a cabo cualquier acción en el bucket de Amazon S3).
+ Del mismo modo, busque listas de control de acceso (ACL) del bucket de Amazon S3 que permitan leer, escribir o concedan acceso completo a “Todos” o “Cualquier usuario de AWS autenticado”. 
+ Utilice la operación de la API `ListBuckets` para escanear todos los buckets de Amazon S3. A continuación, utilice `GetBucketAcl`, `GetBucketWebsite` y `GetBucketPolicy` para determinar si cada bucket cuenta con configuración y controles de acceso compatibles.
+ Utilice [AWS Trusted Advisor](https://docs.aws.amazon.com/awssupport/latest/user/getting-started.html#trusted-advisor) para inspeccionar la implementación de Amazon S3.
+ Considere implementar controles de detección continuos mediante el uso de las Reglas de AWS Config administradas [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-public-read-prohibited.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-public-read-prohibited.html) y [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-public-write-prohibited.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-public-write-prohibited.html).
**Para las organizaciones con varias cuentas de AWS, considere la posibilidad de usar la administración de bloqueo de acceso público por organización:**  
+ Administración de políticas centralizada: utilice AWS Organizations para crear una única política de bloqueo de acceso público de S3 que se aplique automáticamente a todas las cuentas de miembros o a las unidades organizativas (UO) seleccionadas.
+ Herencia automática: al adjuntar la política por raíz o unidad organizativa, las cuentas de miembros nuevas heredan automáticamente la configuración de bloqueo de acceso público sin necesidad de configurar una cuenta individual.
+ Cumplimiento simplificado: las políticas por organización eliminan la necesidad de mantener políticas de control de servicios (SCP) complejas para la aplicación del bloqueo de acceso público y reducen la sobrecarga operativa que implica la administración de las configuraciones de cuentas individuales.
+ Capacidades de auditoría: use AWS CloudTrail para supervisar la aplicación y el cumplimiento de las políticas en las cuentas de miembros a fin de realizar un seguimiento del cumplimiento.
Para obtener más información, consulte [Administración de identidades y accesos para Amazon S3](security-iam.md). 

**Desactivación del cifrado del servidor con claves proporcionadas por el cliente (SSE-C) en los buckets**  
En la mayoría de casos de uso modernos de Amazon S3 ya no se utiliza SSE-C porque no tiene la flexibilidad del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) o el cifrado del servidor con claves de AWS KMS (SSE-KMS). El requisito de SSE-C de proporcionar la clave de cifrado cada vez que interactúa con los datos cifrados de SSE-C hace que no sea práctico compartir la clave de SSE-C con otros usuarios, roles o servicios de AWS que leen datos de los buckets de S3 para poder operar en los datos.  
Para limitar los tipos de cifrado del servidor que puede utilizar en los buckets de uso general, tiene la opción de elegir bloquear las solicitudes de escritura de SSE-C actualizando la configuración de cifrado predeterminada de los buckets. Esta configuración por bucket bloquea las solicitudes de carga de objetos que especifican SSE-C. Cuando se bloquea SSE-C para un bucket, cualquier solicitud `PutObject`, `CopyObject`, `PostObject` o de replicación o carga multiparte que especifique el cifrado SSE-C se rechazará con un error `HTTP 403 AccessDenied`.   
Para obtener más información acerca de bloquear SSE-C, consulte [Bloqueo o desbloqueo de SSE-C para un bucket de uso general](blocking-unblocking-s3-c-encryption-gpb.md).

**Creación de buckets en el espacio de nombres regional de su cuenta**  
De forma predeterminada, los buckets globales de uso general se crean en el espacio de nombres global compartido. Una vez creado un bucket de uso general en el espacio de nombres global compartido, ese nombre de bucket ya no estará disponible para que nadie más lo cree dentro de la partición. Cuando se elimina un bucket global de uso general, el nombre del bucket vuelve a estar disponible en el espacio de nombres global para que cualquier persona pueda volver a crearlo.  
Aunque los buckets de uso general de Amazon S3 se encuentran en un espacio de nombres global compartido, puede, si lo desea, crear buckets en el espacio de nombres regional de su cuenta. El espacio de nombres regional de la cuenta es una subdivisión reservada del espacio de nombres global de los buckets, en la que solo su cuenta puede crear buckets de uso general. Le recomendamos que cree buckets en el espacio de nombres regional de su cuenta, ya que estos buckets son exclusivos de su cuenta y nunca podrán ser recreados por otra cuenta. Para obtener más información, consulte [Espacios de nombres para buckets de uso general](gpbucketnamespaces.md).  
Le recomendamos que no elimine sus buckets globales de uso general en el espacio de nombres global compartido. Todas las cuentas de AWS tienen ahora una cuota de buckets predeterminada de 10 000 buckets, lo que reduce la necesidad de eliminar buckets vacíos de la cuenta. Si elimina un bucket en el espacio de nombres global compartido, tenga en cuenta que otra cuenta de AWS en la misma partición puede utilizar el mismo nombre de bucket para un nuevo bucket y, por lo tanto, puede recibir potencialmente solicitudes que están destinadas al bucket eliminado. Si desea evitar esto o seguir utilizando el mismo nombre de bucket, no elimine el bucket. Le recomendamos que vacíe el bucket y lo conserve. En lugar de eliminar el bucket, bloquee las solicitudes de bucket según sea necesario. En el caso de los buckets que ya no se utilicen activamente, recomendamos vaciar el bucket de todos los objetos para minimizar costos y retener el propio bucket. Para obtener más información, consulte [Eliminación de un bucket de uso general](delete-bucket.md).

**Implementación del acceso a los privilegios mínimos**  
Cuando concede permisos, debe decidir a quién concede cada permiso y para qué recurso de Amazon S3 se lo concede. Habilite las acciones específicas que desea permitir en dichos recursos. Por lo tanto, recomendamos que conceda únicamente los permisos obligatorios para realizar una tarea. La implementación del acceso con privilegios mínimos es esencial a la hora de reducir los riesgos de seguridad y el impacto que podrían causar los errores o los intentos malintencionados.   
Las siguientes herramientas están disponibles para implementar el acceso a los privilegios mínimos:  
+ [Acciones de políticas para Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) y [Límites de permisos para las entidades de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)
+ [Cómo funciona Amazon S3 con IAM](security_iam_service-with-iam.md)
+ [Información general de las Listas de control de acceso (ACL)](acl-overview.md)
Para recibir asesoramiento sobre qué tener en cuenta al elegir uno o más de los mecanismos anteriores, consulte [Administración de identidades y accesos para Amazon S3](security-iam.md).

**Uso de roles de IAM para aplicaciones y Servicios de AWS que requieren acceso a Amazon S3**  
Para que las aplicaciones que se ejecutan en Amazon EC2 u otros Servicios de AWS accedan a recursos de Amazon S3, deben incluir credenciales de AWS válidas en sus solicitudes a la API de AWS. Recomendamos no almacenar las credenciales de AWS de forma directa en la aplicación ni en una instancia de Amazon EC2. Estas son las credenciales a largo plazo que no rotan automáticamente y que podrían tener un impacto empresarial significativo si se comprometen.  
En su lugar, utilice un rol de IAM para administrar temporalmente las credenciales para las aplicaciones o los servicios que necesiten acceder a Amazon S3. Cuando utiliza un rol, no tiene que distribuir credenciales a largo plazo (como un nombre de usuario y una contraseña o claves de acceso) a una instancia de Amazon EC2 o un servicio de Servicio de AWS como AWS Lambda. El rol proporciona permisos temporales que las aplicaciones pueden utilizar cuando hacen llamadas a otros recursos de AWS.  
Para obtener más información, consulte los siguientes temas de la *guía del usuario de IAM*:  
+ [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)
+ [Situaciones habituales con los roles: usuarios, aplicaciones y servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios.html)

  

**Consideración del cifrado de datos en reposo**  
Dispone de las siguientes opciones para proteger datos en reposo en Amazon S3.  
+ **Cifrado del lado del servidor**: todos los buckets de Amazon S3 tienen el cifrado configurado de forma predeterminada y todos los objetos nuevos cargados en un bucket de S3 se cifran automáticamente en reposo. El cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) es la configuración de cifrado predeterminada para cada bucket de Amazon S3. Para usar otro tipo de cifrado, puede especificar el tipo de cifrado del servidor que se utilizará en las solicitudes `PUT` de S3 o puede establecer la configuración de cifrado predeterminada en el bucket de destino. 

  Amazon S3 también proporciona estas opciones de cifrado del lado del servidor:
  + Cifrado del lado del servidor con claves AWS Key Management Service (AWS KMS) (SSE-KMS) 
  + Cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS)
  + Cifrado en el servidor con claves proporcionadas por el cliente (SSE-C)

  Para obtener más información, consulte [Protección de los datos con el cifrado del servidor](serv-side-encryption.md).
+ **Cifrado del cliente**: cifre datos del cliente y cargue los datos cifrados en Amazon S3. En este caso, administra el proceso de cifrado, las claves de cifrado y las herramientas relacionadas. Al igual que con el cifrado en el servidor, el cifrado en el cliente le puede ser de utilidad para minimizar el riesgo al cifrar los datos con una clave almacenada en un mecanismo distinto de que almacena los datos por sí mismo. 

  Amazon S3 ofrece distintas opciones de cifrado en el cliente. Para obtener más información, consulte [Protección de los datos con el cifrado del cliente](UsingClientSideEncryption.md).

**Aplicación del cifrado de los datos en tránsito**  
Puede utilizar HTTPS (TLS) para ayudarle a evitar posibles ataques de acceso no autorizado o de manipulación del tráfico de red con ataques de «persona en medio» o similares. Le recomendamos permitir solo conexiones cifradas mediante HTTPS (TLS) utilizando la condición [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Boolean) en las políticas del bucket de Amazon S3. Para obtener más información, consulte el ejemplo de política de bucket de S3 [Administración del acceso basado en solicitudes HTTP o HTTPS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-HTTP-HTTPS). Además de denegar las solicitudes HTTP, le recomendamos que establezca alarmas de Amazon CloudWatch en `tlsDetails.tlsVersion NOT EXISTS` que lo avisen si se realizan intentos de acceso HTTP al contenido. Para obtener más información sobre cómo configurar las alarmas de Amazon CloudWatch, consulte [Creación de alarmas de CloudWatch para eventos de CloudTrail: ejemplos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html) y [Contenido de los registros de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html) en la *Guía del usuario de AWS CloudTrail*.  
Le recomendamos que la aplicación no fije los certificados TLS de Amazon S3, ya que AWS no admite la fijación de certificados de confianza pública. S3 renueva automáticamente los certificados y la renovación puede realizarse en cualquier momento antes de que venza el certificado. La renovación de un certificado genera un nuevo par de claves pública y privada. Si ha fijado un certificado de S3 que se ha renovado recientemente con una nueva clave pública, no podrá conectarse a S3 hasta que la aplicación utilice el nuevo certificado. 
Considere también implementar controles de detección continuos mediante el uso de la regla AWS Config administrada [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-ssl-requests-only.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-ssl-requests-only.html). 

**Consideración del uso del bloqueo de objetos de S3**  
El bloqueo de objetos de S3 permite almacenar objetos con un modelo de escritura única y lectura múltiple (WORM). El bloqueo de objetos de S3 le puede ser de utilidad para evitar la eliminación accidental o inadecuada de datos. Por ejemplo, puede utilizar el bloqueo de objetos de S3 para proteger los registros de AWS CloudTrail.  
Para obtener más información, consulte [Bloqueo de objetos mediante Bloqueo de objetos](object-lock.md).

**Activación del control de versiones de S3**  
El control de versiones de S3 es una forma de conservar diversas variantes de un objeto en el mismo bucket. Puede utilizar el control de versiones para conservar, recuperar y restaurar todas las versiones de los objetos almacenados en su bucket de . Con el control de versiones, puede recuperarse fácilmente de acciones no deseadas del usuario y de errores de la aplicación.   
Considere también implementar controles de detección continuos mediante el uso de la regla AWS Config administrada [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-versioning-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-versioning-enabled.html).  
Para obtener más información, consulte [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md). 

**Consideración del uso de la replicación entre regiones de S3**  
Aunque Amazon S3 almacena sus datos en diversas zonas de disponibilidad alejadas geográficamente, de forma predeterminada los requisitos de conformidad pueden exigir que almacene los datos incluso en ubicaciones aún más alejadas. La replicación entre regiones (CRR) de S3 le permite replicar los datos entre Regiones de AWS alejadas para cumplir con estos requisitos. La CRR habilita la copia asincrónica y automática de los objetos entre buckets de diferentes Regiones de AWS. Para obtener más información, consulte [Replicación de objetos dentro de regiones y entre regiones](replication.md).  
CRR precisa que tanto los buckets de S3 de origen como los de destino tengan habilitado el control de versiones.
Considere también implementar controles de detección continuos mediante el uso de la regla AWS Config administrada [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-replication-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-replication-enabled.html).

**Consideración de la posibilidad de utilizar puntos de conexión de VPC para acceder a Amazon S3**  
Un punto de conexión de la nube privada virtual (Virtual Private Cloud, VPC) de Amazon S3 es una entidad lógica dentro de una VPC que permite la conectividad solo a Amazon S3. Los puntos de conexión de VPC pueden ayudar a evitar que el tráfico pase por el Internet abierto.  
Los puntos de enlace de VPC para Amazon S3 tienen dos formas de controlar el acceso a los datos de Amazon S3:  
+ Con las políticas de bucket de S3 puede controlar qué solicitudes, usuarios o grupos pueden acceder a través de un punto de conexión de VPC específico.
+ Puede controlar que VPC o puntos de enlace de la VPC tienen acceso a sus buckets de S3 a través de las políticas de bucket de S3.
+ Puede ser de utilidad para evitar la sustracción de datos mediante el uso de una VPC que no tiene una gateway de Internet.
Para obtener más información, consulte [Control del acceso desde puntos de enlace de la VPC con políticas de bucket](example-bucket-policies-vpc-endpoint.md). 

** Uso de los servicios de seguridad AWS administrados para supervisar la seguridad de los datos**  
Varios servicios de seguridad AWS administrados pueden ayudarlo a identificar, evaluar y supervisar los riesgos de seguridad y cumplimiento de sus datos de Amazon S3. Estos servicios también pueden ayudarlo a proteger sus datos de esos riesgos. Estos servicios incluyen capacidades automatizadas de detección, monitorización y protección diseñadas para escalar desde los recursos de Amazon S3 para una sola Cuenta de AWS hasta los recursos para organizaciones que abarcan miles de cuentas.  
Para obtener más información, consulte [Monitorización de la seguridad de los datos con servicios de seguridad de AWS administrados](#monitoring-data-security).

## Prácticas recomendadas de monitorización y auditoría de Amazon S3
<a name="security-best-practices-detect"></a>

Las siguientes prácticas recomendadas para Amazon S3 le pueden ser de utilidad para detectar los incidentes y los posibles puntos débiles de la seguridad.

**Identificación y auditoría de todos los buckets de Amazon S3**  
La identificación de sus activos de TI es un aspecto fundamental de seguridad y control. Tiene que tener una visión de todos sus recursos de Amazon S3 para evaluar sus medidas de seguridad y tomar así las acciones pertinentes respecto a las posibles áreas débiles. Para auditar sus recursos, le recomendamos que haga lo siguiente:  
+ Utilice el editor de etiquetas para identificar los recursos que precisan más seguridad o una auditoría y utilice dichas etiquetas cuando tenga que buscarlos. Para obtener más información, consulte [Buscar recursos para etiquetar](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html) en la *Guía del usuario de etiquetado de recursos de AWS*. 
+ Utilice el inventario de S3 para auditar e informar sobre el estado de replicación y cifrado de los objetos para sus necesidades empresariales, de conformidad y legales. Para obtener más información, consulte [Catálogo y análisis de sus datos con Inventario de S3](storage-inventory.md).
+ Cree grupos de recursos para sus recursos de Amazon S3. Para obtener más información, consulte [¿Qué son los grupos de recursos?](https://docs.aws.amazon.com/ARG/latest/userguide/welcome.html) en la *Guía del usuario de Grupos de recursos de AWS*.

**Implementación de la monitorización mediante las herramientas de supervisión de AWS**  
La monitorización es una parte importante del mantenimiento de la fiabilidad, la seguridad, la disponibilidad y el rendimiento de Amazon S3 y las soluciones de AWS. AWS brinda herramientas y servicios para ayudarlo a monitorizar Amazon S3 y los otros servicios de Servicios de AWS. Por ejemplo, puede monitorizar métricas de Amazon CloudWatch para Amazon S3, concretamente las métricas `PutRequests`, `GetRequests`, `4xxErrors` y `DeleteRequests`. Para obtener más información, consulte [Monitorización de métricas con Amazon CloudWatch](cloudwatch-monitoring.md) y [Registro y monitoreo en Amazon S3](monitoring-overview.md).  
Si desea ver un segundo ejemplo, consulte [Ejemplo: Actividad del bucket de Amazon S3](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html#cloudwatch-alarms-for-cloudtrail-s3-bucket-activity). Este ejemplo describe cómo crear una alarma de CloudWatch que se desencadena cuando se produce una llamada a la API de Amazon S3 para `PUT` o `DELETE` para una política de bucket, un ciclo de vida de bucket o una configuración de replicación de bucket, o para `PUT` una ACL de bucket.

**Habilitación del registro de acceso al servidor de Amazon S3.**  
El registro de acceso al servidor brinda registros detallados de las solicitudes realizadas a un bucket. Los registros de acceso al servidor pueden ayudarle con la seguridad y la auditoría de accesos; le pueden ayudar a saber más sobre su base de clientes y a comprender su factura de Amazon S3. Para obtener información acerca de cómo activar el registro de acceso al servidor, consulte [Registro de solicitudes con registro de acceso al servidor](ServerLogs.md).  
Considere también implementar controles de detección continuos mediante el uso de la regla AWS Config administrada [https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-logging-enabled.html](https://docs.aws.amazon.com/config/latest/developerguide/s3-bucket-logging-enabled.html). 

**Uso de AWS CloudTrail**  
AWS CloudTrail proporciona un registro de las medidas adoptadas por un usuario, un rol o un Servicio de AWS en Amazon S3. Puede utilizar la información recopilada por CloudTrail para determinar lo siguiente:   
+ La solicitud que se realizó a Amazon S3
+ La dirección IP desde la que se realizó la solicitud
+ Quién realizó la solicitud
+ La hora a la que se realizó la solicitud
+ Detalles adicionales sobre la solicitud
  
Por ejemplo, puede identificar entradas de CloudTrail para acciones que afecten al acceso a los datos, concretamente `PUT`, `PutBucketAcl`, `PutObjectAcl`, `PutBucketPolicy` y `PutBucketWebsite`.   
Cuando se configura una Cuenta de AWS, CloudTrail se habilita de forma predeterminada. Puede ver los eventos recientes en la consola de CloudTrail. Para crear un registro continuo de actividad y eventos para los buckets de Amazon S3 puede crear un seguimiento en la consola de CloudTrail. Para obtener más información, consulte [Registro de eventos de datos](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html) en la *Guía del usuario de AWS CloudTrail*.  
Al crear un seguimiento, puede configurar CloudTrail para que registre los eventos de datos. Los eventos de datos son registros de operaciones de recursos realizadas en o dentro de un recurso. En Amazon S3, los eventos de datos registran la actividad de API en el nivel de objeto para buckets individuales. CloudTrail admite un subconjunto de operaciones de API en el nivel de objetos de Amazon S3, como `GetObject`, `DeleteObject` y `PutObject`. Para obtener más información acerca de cómo funciona CloudTrail con Amazon S3, consulte [Registro de llamadas a la API de Amazon S3 mediante AWS CloudTrail](cloudtrail-logging.md). En la consola de Amazon S3, también puede configurar los buckets de S3 en [Habilitación del registro de eventos de CloudTrail para buckets y objetos de S3](enable-cloudtrail-logging-for-s3.md).  
AWS Config proporciona una regla administrada (`cloudtrail-s3-dataevents-enabled`) que puede utilizar para confirmar que al menos un seguimiento de CloudTrail está registrando eventos de datos para los buckets de S3. Para obtener más información, consulte [https://docs.aws.amazon.com//config/latest/developerguide/cloudtrail-s3-dataevents-enabled.html](https://docs.aws.amazon.com//config/latest/developerguide/cloudtrail-s3-dataevents-enabled.html) en la *Guía para desarrolladores de AWS Config*.

**Habilitar AWS Config**  
Varias de las prácticas recomendadas que se enumeran en este tema sugieren la creación de reglas de AWS Config. AWS Config le permite examinar, auditar y evaluar las configuraciones de los recursos de AWS. AWS Config monitorea las configuraciones de los recursos para que pueda evaluar las configuraciones registradas frente a las configuraciones de seguridad deseadas. En AWS Config, tiene las siguientes opciones:   
+ Revisar los cambios en las configuraciones y las relaciones entre los recursos de AWS.
+ Investigar los historiales detallados de la configuración de recursos.
+ Determinar el cumplimiento general de las configuraciones especificadas en sus directrices internas.
  
Al usar AWS Config puede simplificar las auditorías de conformidad, los análisis de seguridad, la administración de cambios y la resolución de problemas operativos. Para obtener más información, consulte [Configuración de AWS Config mediante la consola](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html) en la *Guía para desarrolladores de AWS Config*. Al especificar los tipos de recursos para registrar, asegúrese de incluir los recursos de Amazon S3.  
Las reglas administradas de AWS Config solo admiten buckets de uso general al evaluar los recursos de Amazon S3. AWS Config no registra los cambios de configuración de los buckets de directorio. Para obtener más información, consulte [Reglas administradas de AWS Config](https://docs.aws.amazon.com//config/latest/developerguide/evaluate-config_use-managed-rules.html) y [Lista de reglas administradas de AWS Config](https://docs.aws.amazon.com//config/latest/developerguide/managed-rules-by-aws-config.html) en la *Guía para desarrolladores de AWS Config*.
Para ver un ejemplo de cómo utilizar AWS Config, consulte la entrada sobre [Cómo usar AWS Config para monitorizar y responder a los buckets de Amazon S3 al permitir el acceso público](https://aws.amazon.com/blogs/security/how-to-use-aws-config-to-monitor-for-and-respond-to-amazon-s3-buckets-allowing-public-access/) en el *Blog de seguridad de AWS*. 

**Uso de la lente de almacenamiento de S3**  
Lente de almacenamiento de S3 es una función de análisis de almacenamiento en la nube que puede utilizar para obtener visibilidad en toda la organización sobre el uso y la actividad del almacenamiento de objetos. S3 Storage Lens analiza también las métricas para ofrecer recomendaciones contextuales que puede usar para optimizar los costos de almacenamiento y aplicar las prácticas recomendadas para proteger los datos.   
Lente de almacenamiento de S3 permite usar métricas para generar información resumida, como averiguar cuánto almacenamiento tiene en toda la organización o cuáles son los buckets y los prefijos de crecimiento más rápido. También puede utilizar las métricas de Lente de almacenamiento de S3 para identificar oportunidades de optimización de costos, implementar las prácticas recomendadas de protección de datos y administración de acceso y mejorar el rendimiento de las cargas de trabajo de las aplicaciones.   
Por ejemplo, puede identificar los buckets que no tienen reglas del ciclo de vida de S3 para que aborten las cargas multipartes incompletas que tengan más de 7 días de antigüedad. También puede identificar los buckets que no siguen las prácticas recomendadas de protección de datos, como el uso de la Replicación de S3 o el control de versiones de S3. Para obtener más información, consulte [ Comprensión de Amazon S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_basics_metrics_recommendations.html).

**Supervisión de los avisos de seguridad de AWS**  
Le recomendamos que compruebe con regularidad los avisos sobre seguridad publicados en Trusted Advisor para su Cuenta de AWS. Tenga en cuenta sobre todo los avisos sobre los buckets de Amazon S3 con permisos de acceso abierto. Puede hacerlo mediante programación o a través de la [https://docs.aws.amazon.com/cli/latest/reference/support/describe-trusted-advisor-checks.html](https://docs.aws.amazon.com/cli/latest/reference/support/describe-trusted-advisor-checks.html).  
Además, monitorice de forma activa la dirección principal de correo electrónico registrada en cada una de sus Cuentas de AWS. AWS contactará con usted, a través de esta dirección de correo electrónico, para informarle sobre los problemas de seguridad que surjan y que pudieran afectarle.  
Los problemas operativos de AWS con gran alcance se publican en [Panel de AWS Health Service Health](https://status.aws.amazon.com/). Los problemas operativos también se publican en las cuentas individuales a través de Panel de AWS Health. Para obtener más información, consulte la [Documentación de AWS Health](https://docs.aws.amazon.com/health/).

## Monitorización de la seguridad de los datos con servicios de seguridad de AWS administrados
<a name="monitoring-data-security"></a>

Varios servicios de seguridad AWS administrados pueden ayudarlo a identificar, evaluar y supervisar los riesgos de seguridad y cumplimiento de sus datos de Amazon S3. También pueden ayudarlo a proteger sus datos de esos riesgos. Estos servicios incluyen capacidades automatizadas de detección, monitorización y protección diseñadas para escalar desde los recursos de Amazon S3 para una sola Cuenta de AWS hasta los recursos para organizaciones que abarcan miles de Cuentas de AWS.

Los servicios de detección y respuesta de AWS pueden ayudarlo a identificar posibles errores de configuración de seguridad, amenazas o comportamientos inesperados, de modo que pueda responder rápidamente a actividades potencialmente no autorizadas o malintencionadas en su entorno. Los servicios de protección de datos de AWS pueden ayudarlo a monitorizar y proteger sus datos, cuentas y cargas de trabajo del acceso no autorizado. También pueden ayudarlo a descubrir información confidencial, como información de identificación personal (PII), en su conjunto de datos de Amazon S3.

Para ayudarlo a identificar y evaluar los riesgos de seguridad y cumplimiento de los datos, los servicios de seguridad de AWS administrados generan resultados para notificarle los posibles eventos o problemas de seguridad con sus datos de Amazon S3. Los resultados proporcionan detalles relevantes que puede utilizar para investigar, evaluar y actuar ante estos riesgos de acuerdo con sus flujos de trabajo y políticas de respuesta a incidentes. Puede acceder a los datos de los resultados directamente desde cada servicio. También puede enviar los datos a otras aplicaciones, servicios y sistemas, como el sistema de gestión de incidentes y eventos de seguridad (SIEM).

Para monitorizar la seguridad de sus datos de Amazon S3, considere la posibilidad de utilizar estos servicios de seguridad de AWS administrados.

**Amazon GuardDuty**  
Amazon GuardDuty es un servicio de detección de amenazas que monitoriza de forma continua sus cargas de trabajo y Cuentas de AWS para detectar actividades maliciosas y ofrece resultados detallados sobre la seguridad para mejorar la visibilidad y la corrección.  
Con la función de protección de S3 de GuardDuty, puede configurar GuardDuty para que analice los eventos de administración y datos de AWS CloudTrail de sus recursos de Amazon S3. GuardDuty luego monitoriza esos eventos para detectar actividades maliciosas y sospechosas. Para fundamentar el análisis e identificar los posibles riesgos de seguridad, GuardDuty utiliza fuentes de información sobre amenazas y el machine learning.  
GuardDuty puede monitorizar diferentes tipos de actividad para sus recursos de Amazon S3. Por ejemplo, los eventos de administración de CloudTrail para Amazon S3 incluyen operaciones en el nivel de bucket como `ListBuckets`, `DeleteBucket` y `PutBucketReplication`. Los eventos de datos de CloudTrail para Amazon S3 incluyen operaciones en el nivel de objeto como `GetObject`, `ListObjects` y `PutObject`. Si GuardDuty detecta una actividad anómala o potencialmente maliciosa, genera un resultado para notificárselo.  
Para obtener más información, consulte [Protección de Amazon S3 en Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/s3-protection.html) en la *guía del usuario de Amazon GuardDuty*.

**Amazon Detective**  
Amazon Detective simplifica el proceso de investigación y lo ayuda a realizar investigaciones sobre la seguridad de forma más rápida y eficaz. Detective proporciona agregaciones de datos, resúmenes y contextos prediseñados que pueden ayudarlo a analizar y evaluar la naturaleza y el alcance de los posibles problemas de seguridad.  
Detective extrae automáticamente los eventos temporales, como las llamadas a la API desde AWS CloudTrail y los registros de flujo de Amazon VPC para sus recursos de AWS. También recopila los resultados generados por Amazon GuardDuty. A continuación, Detective utiliza el machine learning, el análisis estadístico y la teoría de grafos para generar visualizaciones que lo ayuden a realizar investigaciones sobre la seguridad eficaces con mayor rapidez.  
Estas visualizaciones proporcionan una vista unificada e interactiva del comportamiento de los recursos y de las interacciones entre ellos a lo largo del tiempo. Puede explorar este gráfico de comportamiento para examinar las acciones potencialmente malintencionadas, como los intentos fallidos de inicio de sesión o las llamadas sospechosas a la API. También puede ver cómo afectan estas acciones a los recursos, así como a los buckets y los objetos de S3.  
Para obtener más información, consulte la [Guía de administración de Amazon Detective](https://docs.aws.amazon.com/detective/latest/adminguide/what-is-detective.html).

**Analizador de acceso de IAM**  
AWS Identity and Access Management Access Analyzer (Analizador de acceso de IAM) permite identificar los recursos que se comparten con una entidad externa. También puede usar Analizador de acceso de IAM para validar las políticas de IAM comparándolas con la gramática de las políticas y las prácticas recomendadas, y generar políticas de IAM basadas en la actividad de acceso de sus registros de AWS CloudTrail.  
Analizador de acceso de IAM utiliza un razonamiento basado en la lógica para analizar las políticas de recursos de su entorno de AWS, como las políticas de bucket. Con Analizador de acceso de IAM para Amazon S3, se le avisa cuando un bucket de S3 se configura para permitir el acceso a cualquiera en Internet u otras Cuentas de AWS, incluidas las cuentas fuera de la organización. Por ejemplo, Analizador de acceso de IAM para S3 puede notificar que un bucket tiene acceso de lectura o escritura a través de una lista de control de acceso (ACL) de bucket, una política de bucket, una política de punto de acceso multirregional o una política de punto de acceso. Para cada bucket público o compartido, recibe resultados que le informan del origen y el nivel de acceso público o compartido. Con estos resultados, puede adoptar medidas correctivas inmediatas y precisas para restaurar el acceso al bucket según lo previsto.  
Para obtener más información, consulte [Revisión del acceso al bucket mediante Analizador de acceso de IAM para S3](access-analyzer.md).

**Amazon Macie**  
Amazon Macie es un servicio de seguridad que descubre información confidencial mediante el machine learning y la coincidencia de patrones. Macie proporciona visibilidad sobre los riesgos de seguridad de los datos y permite automatizar la protección contra esos riesgos. Con Macie, puede automatizar la detección y la notificación de información confidencial en su conjunto de datos de Amazon S3 para comprender mejor los datos que almacena su organización en S3.  
Para detectar información confidencial con Macie, puede utilizar criterios y técnicas integradas diseñados para detectar una lista grande y que no para de crecer de tipos de datos confidenciales para muchos países y regiones. Estos tipos de datos confidenciales incluyen varios tipos de información de identificación personal (PII), datos financieros y datos de credenciales. También existe la posibilidad de utilizar criterios personalizados definidos por usted: expresiones regulares que definen patrones de texto para que coincidan y, opcionalmente, secuencias de caracteres y reglas de proximidad para refinar los resultados.  
Si Macie detecta datos confidenciales en un objeto de S3, Macie genera un resultado de seguridad para notificárselo. Este resultado proporciona información sobre el objeto afectado, los tipos y el número de ocurrencias de los datos confidenciales que ha encontrado Macie y detalles adicionales que le ayudan a investigar el bucket y el objeto de S3 afectados. Para obtener más información, consulte la [Guía del usuario de Amazon Macie](https://docs.aws.amazon.com/macie/latest/user/what-is-macie.html).

**AWS Security Hub CSPM**  
AWS Security Hub CSPM es un servicio de administración de la postura de seguridad que comprueba las prácticas recomendadas de seguridad, agrega alertas y resultados de múltiples fuentes en un solo formato y permite la corrección automática.  
CSPM de Security Hub recopila y proporciona datos de resultados de seguridad de las soluciones de seguridad de AWS Partner Network integradas y los Servicios de AWS, incluidas Amazon Detective, Amazon GuardDuty, IAM Access Analyzer y Amazon Macie. También genera sus propios resultados mediante la ejecución continua de controles de seguridad automatizados y continuos basados en las prácticas recomendadas de AWS y en los estándares del sector compatibles.  
A continuación, CSPM de Security Hub correlaciona y consolida los resultados entre los proveedores para que pueda priorizar y procesar los resultados más importantes. También proporciona soporte para acciones personalizadas, que puede utilizar para invocar respuestas o acciones de corrección para clases específicas de resultados.  
Con CSPM de Security Hub, puede evaluar el estado de seguridad y cumplimiento de los recursos de Amazon S3, y puede hacerlo como parte de un análisis más amplio de la postura de seguridad de la organización en Regiones de AWS individuales y en varias regiones. Esto incluye analizar las tendencias de seguridad e identificar los problemas de seguridad de mayor prioridad. También puede agregar resultados de varias Regiones de AWS y monitorizar y procesar los datos de los resultados agregados de una sola región.  
Para obtener más información, consulte [Controles de Amazon Simple Storage Service](https://docs.aws.amazon.com/securityhub/latest/userguide/s3-controls.html) en la *Guía del usuario de AWS Security Hub CSPM*.

# Protección de los datos en Amazon S3
<a name="DataDurability"></a>

Amazon S3 proporciona una infraestructura de almacenamiento de alta durabilidad diseñada para el almacenamiento de datos principales y críticos. S3 Standard, S3 Intelligent-Tiering, S3 Standard-IA, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval y S3 Glacier Deep Archive almacenan objetos de forma redundante en varios dispositivos en un mínimo de tres zonas de disponibilidad en una Región de AWS. Una zona de disponibilidad consiste en uno o varios centros de datos discretos con alimentación, redes y conectividad redundantes en una Región de AWS. Las zonas de disponibilidad están separadas físicamente por una distancia significativa, muchos kilómetros, de cualquier otra zona de disponibilidad, aunque todas están a menos de 100 km (60 millas) entre sí. La clase de almacenamiento S3 One Zone-IA almacena datos de forma redundante en varios dispositivos dentro de una única zona de disponibilidad. Estos servicios están diseñados para gestionar los errores simultáneos de los dispositivos mediante la detección y la reparación rápidas de cualquier pérdida de redundancia, y también verifican de forma periódica la integridad de los datos mediante sumas de comprobación.

El almacenamiento estándar de Amazon S3 ofrece las siguientes características: 
+ Respaldado por el [Acuerdo de nivel de servicio de Amazon S3](https://aws.amazon.com/s3/sla/).
+ Diseñado para ofrecer una durabilidad del 99,999999999 % y una disponibilidad de los objetos del 99,99 % durante un año concreto.
+ S3 Standard, S3 Intelligent-Tiering, S3 Standard-IA, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval y S3 Glacier Deep Archive están diseñados para preservar datos en caso de pérdida de una zona de disponibilidad completa de Amazon S3.

Amazon S3 protege sus datos adicionalmente con el control de versiones. Puede utilizar el control de versiones para conservar, recuperar y restaurar todas las versiones de los objetos almacenados en su bucket de Amazon S3. Con el control de versiones, puede recuperarse fácilmente de acciones no deseadas del usuario y de errores de la aplicación. De forma predeterminada, las solicitudes recuperan la versión escrita más recientemente. Puede recuperar versiones más antiguas de un objeto especificando una versión del objeto en la solicitud. 

Además del control de versiones de S3, también puede utilizar Amazon S3 Object Lock y la Replicación de S3 para proteger los datos. Para obtener más información, consulte [Protección de los datos en Amazon S3](data-protection.md).

Para fines de protección de datos, le recomendamos proteger las credenciales de la Cuenta de AWS y configurar cuentas de usuario individuales con AWS Identity and Access Management, de modo que a cada usuario se le concedan únicamente los permisos necesarios para llevar a cabo su trabajo.

Si necesita módulos criptográficos validados FIPS 140-2 al acceder a AWS a través de una interfaz de línea de comandos o una API, utilice un punto de conexión de FIPS. Para obtener más información acerca de los puntos de enlace de FIPS disponibles, consulte [Estándar de procesamiento de la información federal (FIPS) 140-2](https://aws.amazon.com/compliance/fips/).

Las siguientes prácticas recomendadas sobre seguridad también evalúan la protección de datos en Amazon S3:
+ [Implement server-side encryption](security-best-practices.md#server-side)
+ [Enforce encryption of data in transit](security-best-practices.md#transit)
+ [Consider using Macie with Amazon S3](security-best-practices.md#macie)
+ [Identify and audit all your Amazon S3 buckets](security-best-practices.md#audit)
+ [Monitor Amazon Web Services security advisories](security-best-practices.md#advisories)

# Protección de los datos mediante el cifrado
<a name="UsingEncryption"></a>

**importante**  
Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. El estado de cifrado automático para la configuración de cifrado predeterminada del bucket de S3 y para cargas de objetos nuevos está disponible en registros de CloudTrail, inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en la AWS CLI y los AWS SDK. Para obtener más información, consulte [Preguntas frecuentes del cifrado predeterminado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

La protección de datos se refiere a salvaguardarlos mientras están en tránsito (al desplazarlos desde y hacia Amazon S3) y en reposo (almacenados en discos en centros de datos Amazon S3). Puede proteger los datos en tránsito con capa de sockets seguros/seguridad de la capa de transporte (SSL/TLS) incluido el intercambio de claves poscuánticas híbrido o cifrado del cliente. Para proteger los datos en reposo en Amazon S3, dispone de las siguientes opciones:
+ **Cifrado del lado del servidor**: Amazon S3 cifra sus objetos antes de guardarlos en discos en centros de datos de AWS y, a continuación, los descifra cuando se descargan.

  Todos los buckets de Amazon S3 tienen el cifrado configurado de forma predeterminada y todos los objetos nuevos cargados en un bucket de S3 se cifran automáticamente en reposo. El cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) es la configuración de cifrado predeterminada para cada bucket de Amazon S3. Para usar otro tipo de cifrado, puede especificar el tipo de cifrado del servidor que se utilizará en las solicitudes `PUT` de S3 o puede actualizar la configuración de cifrado predeterminada en el bucket de destino. 

  Si desea especificar un tipo de cifrado diferente en sus solicitudes `PUT`, puede utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) o el cifrado del servidor con claves proporcionadas por el cliente (SSE-C). Si desea establecer una configuración de cifrado predeterminada diferente en el bucket de destino, puede usar SSE-KMS o DSSE-KMS.

  Para obtener más información sobre cómo cambiar la configuración de cifrado predeterminada de los buckets de uso general, consulte [Configuración del cifrado predeterminado](default-bucket-encryption.md). 

  Al cambiar la configuración de cifrado predeterminada del bucket a SSE-KMS, no se modifica el tipo de cifrado de los objetos de Amazon S3 existentes en el bucket. Para cambiar el tipo de cifrado de los objetos preexistentes tras actualizar la configuración de cifrado predeterminada a SSE-KMS, puede utilizar Operaciones por lotes de Amazon S3. A Operaciones por lotes de S3 se proporciona una lista de objetos y Operaciones por lotes llama a la operación de la API correspondiente. Puede utilizar la acción [Copia de objetos](batch-ops-copy-object.md) para copiar objetos existentes, que los vuelve a escribir en el mismo bucket que los objetos cifrados con SSE-KMS. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md) y la publicación [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) de *AWS Storage Blog*. 

  Para obtener más información acerca de cada opción para el cifrado del servidor, consulte [Protección de los datos con el cifrado del servidor](serv-side-encryption.md).

  Para configurar el cifrado del servidor, consulte:
  + [Especificación del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](specifying-s3-encryption.md)
  + [Especificación del cifrado del lado del servidor con AWS KMS (SSE-KMS)](specifying-kms-encryption.md)
  + [Especificación del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)](specifying-dsse-encryption.md)
  + [Especificación del cifrado del lado del servidor con claves proporcionadas por el cliente (SSE-C)](specifying-s3-c-encryption.md)

  
+ **Cifrado del cliente**: puede cifrar datos del lado del cliente y cargar los datos cifrados en Amazon S3. En este caso, administra el proceso de cifrado, las claves de cifrado y las herramientas relacionadas.

  Para configurar el cifrado del lado del cliente, consulte [Protección de los datos con el cifrado del cliente](UsingClientSideEncryption.md).

Para ver qué porcentaje de los bytes de almacenamiento están cifrados, puede utilizar las métricas de Lente de almacenamiento de Amazon S3. Lente de almacenamiento de S3 es una función de análisis de almacenamiento en la nube que puede utilizar para obtener visibilidad en toda la organización sobre el uso y la actividad del almacenamiento de objetos. Para obtener más información, consulte [Evaluación de la actividad y el uso de almacenamiento con S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens?icmpid=docs_s3_user_guide_UsingEncryption.html). Para obtener una lista completa de las métricas, consulte el [Glosario de métricas de Lente de almacenamiento de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_UsingEncryption).

Para obtener más información sobre el cifrado del servidor, el cifrado del cliente y el cifrado en tránsito, revise los temas siguientes.

**Topics**
+ [Protección de los datos con el cifrado del servidor](serv-side-encryption.md)
+ [Protección de los datos con el cifrado del cliente](UsingClientSideEncryption.md)
+ [Protección de los datos en tránsito con cifrado](UsingEncryptionInTransit.md)

# Protección de los datos con el cifrado del servidor
<a name="serv-side-encryption"></a>

**importante**  
A partir de abril de 2026, AWS desactivará el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) para todos los buckets nuevos. Además, el cifrado SSE-C se desactivará para todos los buckets existentes en Cuentas de AWS que no contengan datos cifrados con SSE-C. Con estos cambios, las pocas aplicaciones que necesitan el cifrado SSE-C deberán habilitar deliberadamente el uso de SSE-C a través de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) después de crear el bucket. En estos casos, es posible que deba actualizar los scripts de automatización, las plantillas de CloudFormation u otras herramientas de configuración de infraestructura para configurar estos ajustes. Para obtener más información, consulte la [publicación del Blog de almacenamiento de AWS](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

**importante**  
Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. El estado de cifrado automático para la configuración de cifrado predeterminada del bucket de S3 y para cargas de objetos nuevos está disponible en registros de CloudTrail, inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en la AWS CLI y los AWS SDK. Para obtener más información, consulte [Preguntas frecuentes del cifrado predeterminado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

El cifrado del lado del servidor es el cifrado de datos en su destino por la aplicación o servicio que los recibe. Amazon S3 cifra sus datos en el nivel de objeto; los escribe en los discos de sus centros de datos de AWS y los descifra cuando accede a él. Siempre que autentique su solicitud y tenga permiso de acceso, no existe diferencia alguna en la forma de obtener acceso a objetos cifrados o sin cifrar. Por ejemplo, si comparte objetos con una URL prefirmada, esa URL funcionará igual para objetos cifrados y sin cifrar. Además, al enumerar los objetos en su bucket, las operaciones de la API de listado devuelven una lista de todos los objetos, independientemente de si están cifrados.

Todos los buckets de Amazon S3 tienen el cifrado configurado de forma predeterminada y todos los objetos nuevos cargados en un bucket de S3 se cifran automáticamente en reposo. El cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) es la configuración de cifrado predeterminada para cada bucket de Amazon S3. Para usar otro tipo de cifrado, puede especificar el tipo de cifrado del servidor que se utilizará en las solicitudes `PUT` de S3 o puede actualizar la configuración de cifrado predeterminada en el bucket de destino. 

Si desea especificar un tipo de cifrado diferente en sus solicitudes `PUT`, puede utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) o el cifrado del servidor con claves proporcionadas por el cliente (SSE-C). Si desea establecer una configuración de cifrado predeterminada diferente en el bucket de destino, puede usar SSE-KMS o DSSE-KMS.

Para obtener más información sobre cómo cambiar la configuración de cifrado predeterminada de los buckets de uso general, consulte [Configuración del cifrado predeterminado](default-bucket-encryption.md). 

Al cambiar la configuración de cifrado predeterminada del bucket a SSE-KMS, no se modifica el tipo de cifrado de los objetos de Amazon S3 existentes en el bucket. Para cambiar el tipo de cifrado de los objetos preexistentes tras actualizar la configuración de cifrado predeterminada a SSE-KMS, puede utilizar Operaciones por lotes de Amazon S3. A Operaciones por lotes de S3 se proporciona una lista de objetos y Operaciones por lotes llama a la operación de la API correspondiente. Puede utilizar la acción [Copia de objetos](batch-ops-copy-object.md) para copiar objetos existentes, que los vuelve a escribir en el mismo bucket que los objetos cifrados con SSE-KMS. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md) y la publicación [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) de *AWS Storage Blog*. 

**nota**  
No es posible aplicar tipos diferentes de cifrado en el servidor al mismo objeto simultáneamente.

Si necesita cifrar los objetos existentes, utilice Operaciones por lotes de S3 e Inventario de S3. Para obtener más información, consulte [Cifrado de objetos con Operaciones por lotes de Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) y [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md).

Cuando se almacenan datos en Amazon S3, tiene cuatro opciones mutuamente excluyentes de cifrado del servidor en función de cómo elija administrar las claves de cifrado y el número de capas de cifrado que quiera aplicar.

**Cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)**  
Todos los buckets de Amazon S3 tienen el cifrado configurado de forma predeterminada. La opción predeterminada para el cifrado del lado del servidor son las claves administradas de Amazon S3 (SSE-S3) Cada objeto se cifra con una clave única. Como medida de seguridad adicional, SSE-S3 cifra la propia clave con una clave raíz que cambia periódicamente. SSE-S3 utiliza uno de los cifrados de bloques más seguros disponibles, Advanced Encryption Standard de 256 bits (AES-256), para cifrar sus datos. Para obtener más información, consulte [Uso del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

**Cifrado del lado del servidor con claves AWS Key Management Service (AWS KMS) (SSE-KMS)**  
El cifrado del lado del servidor con AWS KMS keys (SSE-KMS) se proporciona mediante una integración del servicio de AWS KMS con Amazon S3. Con AWS KMS, tiene más control sobre sus claves. Por ejemplo, puede ver claves distintas, editar las políticas de control y seguir las claves en AWS CloudTrail. Además, puede crear y gestionar claves administradas por el cliente o utilizar Claves administradas por AWS que sean únicas para usted, su servicio y su región. Para obtener más información, consulte [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

**Cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS)**  
El cifrado del servidor de doble capa con AWS KMS keys (DSSE-KMS) es similar al de SSE-KMS, pero el DSSE-KMS aplica dos capas independientes de cifrado AES-256 en lugar de una: primero usa una clave de cifrado de datos de AWS KMS y, a continuación, una clave de cifrado administrada por Amazon S3 independiente. Como ambas capas de cifrado se aplican a un objeto del servidor, puede utilizar una amplia gama de Servicios de AWS y herramientas para analizar los datos en S3 y, al mismo tiempo, utilizar un método de cifrado que pueda satisfacer los requisitos de conformidad del cifrado multicapa. Para obtener más información, consulte [Uso del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)](UsingDSSEncryption.md).

**Cifrado en el servidor con claves proporcionadas por el cliente (SSE-C)**  
Con el cifrado del servidor con claves proporcionadas por el cliente (SSE-C), usted administra las claves de cifrado y Amazon S3 administra tanto el cifrado, al escribir en los discos, como el descifrado, cuando usted accede a los objetos. Para obtener más información, consulte [Uso de cifrado en el lado del servidor con claves proporcionadas por el cliente (SSE-C)](ServerSideEncryptionCustomerKeys.md).

**nota**  
Cuando utiliza puntos de acceso para los sistemas de archivos de Amazon FSx mediante puntos de acceso de S3, tiene una opción para el cifrado del servidor.  
Todos los sistemas de archivos de Amazon FSx tienen el cifrado configurado de forma predeterminada y se cifran en reposo con claves administradas mediante AWS Key Management Service. Los datos se cifran y descifran automáticamente en el sistema de archivos a medida que se escriben y se leen desde el sistema de archivos. Estos procesos los gestiona Amazon FSx de forma transparente.

# Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3
<a name="bucket-encryption"></a>

**importante**  
Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. El estado de cifrado automático para la configuración de cifrado predeterminada del bucket de S3 y para cargas de objetos nuevos está disponible en registros de CloudTrail, inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en la AWS CLI y los AWS SDK. Para obtener más información, consulte [Preguntas frecuentes del cifrado predeterminado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Todos los bucket de Amazon S3 tienen el cifrado configurado de forma predeterminada y los objetos se cifran de forma automática con el cifrado del servidor mediante claves administradas de Amazon S3 (SSE-S3). Esta configuración de cifrado se aplica a todos los objetos de sus buckets de Amazon S3.

Si necesita más control sobre sus claves, por ejemplo, administrar la rotación de claves y las concesiones de las políticas de acceso, puede optar por utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) o con el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS). Para obtener más información sobre las claves de KMS, consulte [Edición de claves](https://docs.aws.amazon.com/kms/latest/developerguide/editing-keys.html) en la *Guía para desarrolladores de AWS Key Management Service*. 

**nota**  
Hemos cambiado los buckets para cifrar automáticamente las cargas de objetos nuevos. Si anteriormente creó un bucket sin cifrado predeterminado, Amazon S3 habilitará el cifrado de forma predeterminada para el bucket mediante SSE-S3. No se modificará la configuración de cifrado predeterminada para un bucket existente que ya tenga configurado SSE-S3 o SSE-KMS. Si desea cifrar sus objetos con SSE-KMS, debe cambiar el tipo de cifrado en la configuración del bucket. Para obtener más información, consulte [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](UsingKMSEncryption.md). 

Cuando configura el bucket para que utilice el cifrado predeterminado con SSE-KMS, también puede habilitar las claves de bucket de S3 para reducir el tráfico de Amazon S3 a AWS KMS y el costo del cifrado. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md).

Para identificar los buckets que tienen el SSE-KMS habilitado para el cifrado predeterminado, puede utilizar las métricas de la Lente de almacenamiento de Amazon S3. Lente de almacenamiento de S3 es una función de análisis de almacenamiento en la nube que puede utilizar para obtener visibilidad en toda la organización sobre el uso y la actividad del almacenamiento de objetos. Para obtener más información, consulte [Uso de Lente de almacenamiento de S3 para proteger los datos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-data-protection.html?icmpid=docs_s3_user_guide_bucket-encryption.html).

Si usa el cifrado del servidor, Amazon S3 cifra un objeto antes de guardarlo en el disco y lo descifra al descargar el objeto. Para obtener más información sobre cómo proteger los datos mediante el cifrado del servidor y la administración de claves de cifrado, consulte [Protección de los datos con el cifrado del servidor](serv-side-encryption.md).

Para obtener más información acerca de los permisos necesarios para el cifrado predeterminado, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) en la *Referencia de API de Amazon Simple Storage Service*.

Puede configurar el cifrado predeterminado de Amazon S3 para un bucket de S3 a través de la consola de Amazon S3, los SDK de AWS, la API de REST de Amazon S3 y la AWSCommand Line Interface (AWS CLI CLI).

**Cifrado de objetos existentes**  
Para cifrar los objetos de Amazon S3 no cifrados existentes, puede utilizar las operaciones por lotes de Amazon S3. A las operaciones por lotes de S3 se les proporciona una lista de objetos en los que deben actuar. Las operaciones por lotes llaman a la API correspondiente para llevar a cabo la operación especificada. Puede utilizar la [operación de copia de la herramienta de operaciones por lotes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) para copiar objetos existentes sin cifrar y escribirlos como objetos cifrados en el mismo bucket. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md) y la publicación [Encrypting objects with Amazon S3 Batch Operations](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) del *Blog de almacenamiento de AWS*.

También puede cifrar los objetos existentes mediante la operación de la API `CopyObject` o el comando `copy-object` AWS CLI. Para obtener más información, consulte la publicación [Encrypting existing Amazon S3 objects with the AWS CLI](https://aws.amazon.com/blogs/storage/encrypting-existing-amazon-s3-objects-with-the-aws-cli/) del *Blog de almacenamiento de AWS*.

**nota**  
Los buckets de Amazon S3 con cifrado de bucket predeterminado con SSE-KMS no se pueden utilizar como buckets de destino para [Registro de solicitudes con registro de acceso al servidor](ServerLogs.md). Solo se admite el cifrado predeterminado SSE-S3 para los buckets de destino del registro de acceso al servidor.

## Uso del cifrado SSE-KMS para operaciones entre cuentas
<a name="bucket-encryption-update-bucket-policy"></a>

Tenga en cuenta lo siguiente cuando utilice el cifrado para operaciones entre cuentas:
+ Si no se proporciona un nombre de recurso de Amazon (ARN) o un alias de AWS KMS key en el momento de la solicitud, ni a través de la configuración de cifrado predeterminado del bucket, se usa la Clave administrada de AWS (`aws/s3`).
+ Si está cargando o accediendo a objetos de S3 usando las entidades principales de AWS Identity and Access Management (IAM) que están en la misma Cuenta de AWS que la clave de KMS, puede usar la Clave administrada de AWS (`aws/s3`). 
+ Use una clave administrada por el cliente si desea conceder acceso entre cuentas a sus objetos de S3. Puede configurar la política de una clave administrada por el cliente para permitir el acceso desde otra cuenta.
+ Si especifica una clave de KMS administrada por el cliente, le recomendamos que use un ARN totalmente cualificado de la clave de KMS. Si, en su lugar, utiliza un alias de clave de KMS, AWS KMS resolverá la clave dentro de la cuenta del solicitante. Esto puede dar como resultado datos cifrados con una clave de KMS que pertenece al solicitante y no al propietario del bucket.
+ Debe especificar una clave para la que el solicitante le haya concedido permiso `Encrypt`. Para obtener más información, consulte [Permitir a los usuarios de claves utilizar una clave de KMS para las operaciones criptográficas](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) en la *Guía para desarrolladores de AWS Key Management Service*.

Para obtener más información acerca de cuándo utilizar claves administradas por el cliente y las claves de KMS administradas por AWS, consulte [¿Debo usar una clave administrada por Clave administrada de AWS o una clave administrada por el cliente para cifrar mis objetos en Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)

## Uso del cifrado predeterminado con la replicación
<a name="bucket-encryption-replication"></a>

Cuando habilita el cifrado predeterminado para un bucket de destino de replicación, se aplica el siguiente comportamiento de cifrado:
+ Si los objetos del bucket de origen no están cifrados, los objetos de réplica del bucket de destino se cifran mediante la configuración de cifrado predeterminado del bucket de destino. Como resultado, las etiquetas de entidad (ETags) de los objetos de origen difieren de las ETags de los objetos de réplica. Si tiene aplicaciones que utilizan ETags, deberá actualizarlas para tener en cuenta esta diferencia.
+ Si los objetos del bucket de origen se cifran mediante el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3), el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) o con cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS), los objetos de réplica del bucket de destino utilizarán el mismo tipo de cifrado que los objetos de origen. La configuración de cifrado predeterminado del bucket de destino no se utiliza.

Para obtener más información acerca del uso del cifrado predeterminado con SSE-KMS, consulte [Replicar objetos cifrados](replication-config-for-kms-objects.md).

## Uso de claves de bucket de Amazon S3 con cifrado predeterminado
<a name="bucket-key-default-encryption"></a>

Si configura el bucket para que utilice el cifrado predeterminado para SSE-KMS en los objetos nuevos, también puede configurar las claves de bucket de S3. Las claves de bucket de S3 reducen el número de transacciones de Amazon S3 a AWS KMS para rebajar el costo de SSE-KMS. 

Cuando configura el bucket a fin de que utilice claves de bucket de S3 para SSE-KMS en objetos nuevos, AWS KMS genera una clave de bucket que se utiliza con el fin de crear una [clave de datos](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) única para los objetos del bucket. Esta clave de bucket de S3 se utiliza durante un periodo limitado dentro de Amazon S3, lo que reduce la necesidad de que Amazon S3 realice solicitudes a AWS KMS para completar las operaciones de cifrado. 

Para obtener más información sobre el uso de claves de bucket de S3, consulte [Uso de claves de bucket de Amazon S3](bucket-key.md).

# Configuración del cifrado predeterminado
<a name="default-bucket-encryption"></a>

**importante**  
Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. El estado de cifrado automático para la configuración de cifrado predeterminada del bucket de S3 y para cargas de objetos nuevos está disponible en registros de CloudTrail, inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en la AWS CLI y los AWS SDK. Para obtener más información, consulte [Preguntas frecuentes del cifrado predeterminado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Los bucket de Amazon S3 tienen el cifrado de buckets activado de forma predeterminada y los objetos nuevos se cifran automáticamente mediante el cifrado del servidor con claves administradas de Amazon S3 (SSE-S3). Este cifrado se aplica a todos los objetos nuevos de sus buckets de Amazon S3 y no tiene ningún costo para usted.

Si necesita más control sobre las claves de cifrado, por ejemplo, administrar la rotación de claves y las concesiones de las políticas de acceso, puede optar por utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) o el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS). Para obtener más información sobre SSE-KMS, consulte [Especificación del cifrado del lado del servidor con AWS KMS (SSE-KMS)](specifying-kms-encryption.md). Para obtener más información sobre DSSE-KMS, consulte [Uso del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)](UsingDSSEncryption.md). 

Si desea utilizar una clave de KMS propiedad de una cuenta diferente, primero debe tener permiso para utilizar la clave. Para obtener más información sobre los permisos entre cuentas para las claves de KMS, consulte [Crear claves de KMS que otras cuentas puedan utilizar](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) en la *Guía para desarrolladores de AWS Key Management Service*. 

Al establecer el cifrado del bucket predeterminado en SSE-KMS, también puede configurar una clave de bucket de S3 para reducir los costos de las solicitudes de AWS KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md).

**nota**  
Si utiliza [PutBucketEncryption](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketEncryption.html) para establecer a SSE-KMS el cifrado predeterminado de su bucket, deberá verificar que el ID de su clave de KMS es correcto. Amazon S3 no valida el ID de clave de KMS proporcionado en las solicitudes de PutBucketEncryption.

No se aplican cargos adicionales por usar el cifrado predeterminado de buckets de S3. Las solicitudes para configurar el comportamiento de cifrado predeterminado generan cargos por solicitudes de Amazon S3 estándar. Para obtener información acerca de los precios, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/). Para SSE-KMS y DSSE-KMS, se aplican los cargos de AWS KMS que se muestran en [Precios de AWS KMS](https://aws.amazon.com/kms/pricing/). 

No se admite el cifrado predeterminado del servidor con claves proporcionadas por el cliente (SSE-C).

Puede configurar el cifrado predeterminado de Amazon S3 para un bucket de S3 a través de la consola de Amazon S3, los SDK de AWS, la API de REST de Amazon S3 y la AWS Command Line Interface (AWS CLI).

**Cambios para tener en cuenta antes de habilitar el cifrado predeterminado**  
Después de habilitar el cifrado predeterminado para un bucket, se aplica el siguiente comportamiento de cifrado:
+ No hay ninguna variación en el cifrado de los objetos que existían en el bucket antes de que se habilitara el cifrado predeterminado. 
+ Cuando carga objetos después de habilitar el cifrado predeterminado:
  + Si los encabezados de las solicitudes `PUT` no incluyen información de cifrado, Amazon S3 utiliza la configuración de cifrado predeterminada del bucket para cifrar los objetos. 
  + Si los encabezados de las solicitudes `PUT` incluyen información de cifrado, Amazon S3 utiliza la información de cifrado de la solicitud `PUT` para cifrar los objetos antes de guardarlos en Amazon S3.
+ Si utiliza la opción de SSE-KMS o DSSE-KMS para la configuración de cifrado predeterminado, se le aplicarán las cuotas de solicitudes por segundo (RPS) de AWS KMS. Para obtener más información acerca de las cuotas de AWS KMS y cómo solicitar un aumento de cuota, consulte [Cuotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) en la *Guía para desarrolladores de AWS Key Management Service*. 

**nota**  
Los objetos cargados antes de que se habilitara el cifrado predeterminado no se cifrarán. Para obtener más información sobre el cifrado de objetos existentes, consulte [Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3](bucket-encryption.md).

## Uso de la consola de S3
<a name="bucket-encryption-how-to-set-up-console"></a>

**Para configurar el cifrado predeterminado en un bucket de Amazon S3**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets**, elija el nombre del bucket en cuestión. 

1. Elija la pestaña **Propiedades**.

1. En **Cifrado predeterminado**, elija **Editar**.

1. Para configurar el cifrado, elija una de las siguientes opciones en **Tipo de cifrado**: 
   + **Cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)**
   + **Cifrado del servidor con claves de AWS Key Management Service (SSE-KMS)**
   + **Cifrado del servidor de doble capa con claves de AWS Key Management Service (DSSE-KMS)**
**importante**  
Si utiliza las opciones SSE-KMS o DSSE-KMS para la configuración del cifrado predeterminado, se le aplicarán las cuotas de solicitudes por segundo (RPS) de AWS KMS. Para obtener más información acerca de las cuotas de AWS KMS y cómo solicitar un aumento de cuota, consulte [Cuotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) en la *Guía para desarrolladores de AWS Key Management Service*. 

   Los buckets y los objetos nuevos se cifran de forma predeterminada con SSE-S3, a menos que especifique otro tipo de cifrado predeterminado para sus buckets. Para obtener más información acerca del cifrado predeterminado, consulte [Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3](bucket-encryption.md).

   Para obtener más información sobre el uso del cifrado del lado del servidor de Amazon S3 para cifrar los datos, consulte [Uso del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

1. Si elige el **Cifrado del servidor con claves de AWS Key Management Service (SSE-KMS)** o el **Cifrado del servidor de doble capa con claves de AWS Key Management Service (DSSE-KMS)**, haga lo siguiente: 

   1. En **Clave de AWS KMS**, especifique su clave de KMS de una de las siguientes maneras:
      + Para seleccionar de una lista de claves de KMS disponibles, marque **Elija entre sus claves de AWS KMS keys** y seleccione su **clave de KMS** de la lista de claves disponibles.

        En esta lista aparecen tanto la Clave administrada de AWS (`aws/s3`) como las claves administradas por el cliente. Para obtener más información acerca de las claves administradas por el cliente, consulte [Claves de cliente y claves de AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) en la *Guía para desarrolladores de AWS Key Management Service*.
      + Para introducir el ARN de la clave de KMS, elija **Introducir el ARN de la AWS KMS key** e introduzca el ARN de la clave de KMS en el campo que aparece. 
      + Para crear una nueva clave administrada por el cliente en la consola de AWS KMS, elija **Crear una clave de KMS**.

        Para obtener más información acerca de cómo crear una AWS KMS key, consulte [Creación de claves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) en la *AWS Key Management Service Guía para desarrolladores*.
**importante**  
Solo puede utilizar las claves de KMS que estén habilitadas en la misma Región de AWS que el bucket. Cuando elige **Choose from your KMS master keys (Elegir entre las claves raíz de KMS)**, la consola de S3 solo muestra 100 claves de KMS por región. Si tiene más de 100 claves de KMS en la misma región, solo puede ver las primeras 100 claves de KMS en la consola S3. Para utilizar una clave de KMS que no aparezca en la consola, elija **Introducir el ARN de AWS KMS key** y escriba el ARN de la clave de KMS.  
Cuando utilice una AWS KMS key para el cifrado en el lado del servidor en Amazon S3, debe elegir una clave de cifrado de KMS simétrica. Amazon S3 solo admite claves de KMS de cifrado simétricas. Para obtener más información sobre estas claves, consulte [Symmetric encryption KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) (Claves de KMS de cifrado simétricas) en la *Guía para desarrolladores de AWS Key Management Service*.

      Para obtener más información sobre el uso de SSE-KMS con Amazon S3, consulte [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](UsingKMSEncryption.md). Para obtener más información sobre el uso de DSSE-KMS, consulte [Uso del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)](UsingDSSEncryption.md).

   1. Si configura el bucket para que use el cifrado predeterminado con SSE-KMS, también puede habilitar una clave de bucket de S3. Las claves de bucket de S3 reducen el costo del cifrado al reducir el tráfico de solicitudes de Amazon S3 a AWS KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md).

      Para utilizar las claves de bucket de S3, en **Clave de bucket**, seleccione **Habilitar**.
**nota**  
Las claves de bucket de S3 no son compatibles con DSSE-KMS.

1. Elija **Save changes (Guardar cambios)**.

## Mediante AWS CLI
<a name="default-bucket-encryption-cli"></a>

En estos ejemplos se muestra cómo configurar el cifrado predeterminado con SSE-S3 o SSE-KMS con una clave de bucket de S3.

Para obtener más información acerca del cifrado predeterminado, consulte [Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3](bucket-encryption.md). Para obtener más información acerca del uso de la AWS CLI para configurar el cifrado predeterminado, consulte [put-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-bucket-encryption.html).

**Example — Cifrado predeterminado con SSE-S3**  
En este ejemplo se configura el cifrado de bucket predeterminado con las claves administradas de Amazon S3.  

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
        {
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            }
        }
    ]
}'
```

**Example — Cifrado predeterminado con SSE-KMS usando una clave de bucket de S3**  
En este ejemplo se configura el cifrado de bucket predeterminado con SSE-KMS mediante una clave de bucket de S3.   

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
    "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Uso de la API de REST
<a name="bucket-encryption-how-to-set-up-api"></a>

Utilice la operación de la API de REST `PutBucketEncryption` para habilitar el cifrado predeterminado y establecer el tipo de cifrado del servidor para usar SSE-S3, SSE-KMS o DSSE-KMS. 

Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html) en la *Referencia de la API de Amazon Simple Storage Service*.

# Monitoreo del cifrado predeterminado con AWS CloudTrail y Amazon EventBridge
<a name="bucket-encryption-tracking"></a>

**importante**  
Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. El estado de cifrado automático para la configuración de cifrado predeterminada del bucket de S3 y para cargas de objetos nuevos está disponible en registros de CloudTrail, inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en la AWS CLI y los AWS SDK. Para obtener más información, consulte [Preguntas frecuentes del cifrado predeterminado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Puede realizar un seguimiento de las solicitudes de configuración de cifrado predeterminado para los buckets de Amazon S3 mediante eventos de AWS CloudTrail. Los siguientes nombres de eventos de API se utilizan en los registros de CloudTrail:
+ `PutBucketEncryption`
+ `GetBucketEncryption`
+ `DeleteBucketEncryption`

También puede crear reglas de EventBridge para que coincidan con los eventos de CloudTrail para estas llamadas a la API. Para obtener más información acerca de los eventos de CloudTrail, consulte [Habilitar el registro de objetos en un bucket mediante la consola](enable-cloudtrail-logging-for-s3.md#enable-cloudtrail-events). Para obtener más información acerca de los eventos de EventBridge, consulte [Eventos de Servicios de AWS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html).

Puede utilizar registros de CloudTrail para acciones de Amazon S3 de objeto y así realizar un seguimiento de las solicitudes `PUT` y `POST` a Amazon S3. Puede utilizar estas acciones para verificar si se usa el cifrado predeterminado para cifrar los objetos cuando las solicitudes `PUT` entrantes no tienen encabezados de cifrado.

Cuando Amazon S3 cifra un objeto utilizando la configuración de cifrado predeterminada, el registro incluye los siguientes campos como el par de nombre-valor: `"SSEApplied":"Default_SSE_S3"`, `"SSEApplied":"Default_SSE_KMS"` o `"SSEApplied":"Default_DSSE_KMS"`.

Cuando Amazon S3 cifra un objeto utilizando los encabezados de cifrado `PUT`, el registro incluye uno de los siguientes campos como el par de nombre-valor: `"SSEApplied":"SSE_S3"`, `"SSEApplied":"SSE_KMS"`, `"SSEApplied":"DSSE_KMS"` o `"SSEApplied":"SSE_C"`. 

Para las cargas multiparte, esta información se incluye en las solicitudes de la operación de la API `InitiateMultipartUpload`. Para obtener más información sobre el uso de CloudTrail y CloudWatch, consulte [Registro y monitoreo en Amazon S3](monitoring-overview.md).

# Preguntas frecuentes de cifrado predeterminado
<a name="default-encryption-faq"></a>

Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. SSE-S3, que utiliza el estándar de cifrado avanzado de 256 bits (AES-256), se aplica automáticamente a todos los buckets nuevos y a cualquier bucket de S3 existente que aún no tenga configurado el cifrado predeterminado. El estado de cifrado automático para la configuración de cifrado predeterminada en el bucket de S3 y para cargas de objetos nuevos está disponible en registros de AWS CloudTrail, Inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en AWS Command Line Interface (AWS CLI) y los SDK de AWS.

Las siguientes secciones responden a las preguntas sobre esta actualización. 

**¿Cambiará Amazon S3 la configuración de cifrado predeterminada de los buckets que ya tienen el cifrado predeterminado configurado?**  
No. No se modificará la configuración de cifrado predeterminada para un bucket existente que ya tenga configurado el SSE-S3 o el cifrado del lado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS). Para obtener más información sobre cómo definir el comportamiento de cifrado predeterminado para los bucket, consulte [Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3](bucket-encryption.md). Para obtener más información sobre la configuración de cifrado SSE-S3 y SSE-KMS, consulte [Protección de los datos con el cifrado del servidor](serv-side-encryption.md).

**¿Se habilitará el cifrado predeterminado en los buckets que no tengan configurado el cifrado predeterminado?**  
Sí. Amazon S3 ahora configura el cifrado predeterminado en todos los bucket no cifrados existentes para aplicar cifrado del lado del servidor con claves administradas de S3 (SSE-S3) como nivel base de cifrado para los objetos nuevos cargados en estos buckets. Los objetos que ya estén en un bucket sin cifrar existente no se cifrarán automáticamente.

**¿Cómo puedo ver el estado de cifrado predeterminado de las cargas de objetos nuevos?**  
Actualmente, puede ver el estado de cifrado predeterminado para cargas de objetos nuevos en registros de AWS CloudTrail, Inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en AWS Command Line Interface (AWS CLI) y los SDK de AWS.
+ Para ver los eventos de CloudTrail, consulte [Visualizar eventos de CloudTrail Insights en la consola de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html) en la *Guía del usuario de AWS CloudTrail*. Los registros de CloudTrail proporcionan un seguimiento de la API para solicitudes `PUT` y `POST` a Amazon S3. Cuando se utilice el cifrado predeterminado para cifrar los objetos de los buckets, los registros de CloudTrail para las solicitudes de la API `PUT` y `POST` incluirán el siguiente campo como par de nombre-valor: `"SSEApplied":"Default_SSE_S3"`. 
+ Para consultar el estado de cifrado automático de las cargas de objetos nuevos en el inventario de S3, configure un informe de inventario de S3 para incluir el campo de metadatos de **Encryption** (Cifrado) y, a continuación, consulte el estado de cifrado de cada objeto nuevo del informe. Para obtener más información, consulte [Configuración de inventario de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/configure-inventory.html#storage-inventory-setting-up).
+ Para consultar el estado del cifrado automático de las cargas de objetos nuevos en S3 Storage Lens, configure un panel de S3 Storage Lens y consulte las métricas de **Encrypted bytes** (Bytes cifrados) y **Encrypted object count** (Recuento de objetos cifrados) en la categoría **Data protection** (Protección de datos) del panel. Para obtener más información, consulte [Uso de la consola de S3](storage_lens_creating_dashboard.md#storage_lens_console_creating) y [Visualización de las métricas de S3 Storage Lens en los paneles](storage_lens_view_metrics_dashboard.md).
+ Para ver el estado del cifrado automático en el nivel de bucket en la consola de Amazon S3, compruebe el **cifrado predeterminado** de los buckets de Amazon S3 en la consola de Amazon S3. Para obtener más información, consulte [Configuración del cifrado predeterminado](default-bucket-encryption.md).
+ Para ver el estado del cifrado automático como encabezado de respuesta de la API de Amazon S3 adicional en la AWS Command Line Interface (AWS CLI) y los SDK de AWS, compruebe el encabezado de respuesta `x-amz-server-side-encryption` cuando utilice las API de acción de objetos, como [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) y [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html). 

**¿Qué tengo que hacer para aprovechar este cambio?**  
No es necesario que realice ningún cambio en las aplicaciones existentes. Como el cifrado predeterminado está habilitado para todos los buckets, todos los objetos nuevos cargados en Amazon S3 se cifran automáticamente.

**¿Puedo desactivar el cifrado de los nuevos objetos que se escriben en mi bucket?**  
No. SSE-S3 es el nuevo nivel base de cifrado que se aplica a todos los objetos nuevos que se cargan en el bucket. Ya no puede desactivar el cifrado para las cargas de objetos nuevas.

**¿Se verán afectados mis cargos?**  
No. El cifrado predeterminado con SSE-S3 está disponible sin costo adicional. Se le facturará el almacenamiento, las solicitudes y otras características de Amazon S3 como se haría normalmente. Para información sobre precios, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

**¿Amazon S3 cifrará mis objetos existentes que no estén cifrados?**  
No. A partir del 5 de enero de 2023, Amazon S3 solo cifra automáticamente las cargas de objetos nuevos. Para cifrar objetos existentes, puede utilizar Operaciones por lotes de S3 para crear copias cifradas de los objetos. Estas copias cifradas retendrán los datos y el nombre del objeto existente y se cifrarán mediante las claves de cifrado que especifique. Para obtener más información, consulte [Cifrado de objetos con operaciones por lotes de Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/) en el *blog de almacenamiento de AWS*.

**No habilité el cifrado de mis buckets antes de esta versión. ¿Debo cambiar la forma de acceder a los objetos?**  
No. El cifrado predeterminado con SSE-S3 cifra automáticamente los datos según se escriben en Amazon S3 y los descifra para usted cuando acceda a ellos. No hay ningún cambio en la forma de acceder a los objetos que se cifran automáticamente.

**¿Debo cambiar la forma de acceder a los objetos de cifrado del cliente?**  
No. Todos los objetos cifrados del cliente que se cifran antes de cargarse en Amazon S3 llegan como objetos de texto cifrado a Amazon S3. Estos objetos tendrán ahora una capa adicional de cifrado de SSE-S3. Las cargas de trabajo que utilizan objetos cifrados del cliente no requerirán ningún cambio en los servicios de cliente ni en la configuración de autorización.

**nota**  
Los usuarios de HashiCorp Terraform que no utilicen una versión actualizada del proveedor de AWS, es posible que vean una desviación inesperada después de crear nuevos buckets de S3 sin una configuración de cifrado definida por el cliente. Para evitar esta desviación, actualice la versión del proveedor de AWS de Terraform a una de las siguientes versiones: cualquier versión de 4.x, 3.76.1 o 2.70.4.

# Actualización de cifrado del servidor para los datos existentes
<a name="update-sse-encryption"></a>

Todos los bucket de Amazon S3 tienen el cifrado configurado de forma predeterminada y los objetos se cifran de forma automática con el cifrado del servidor mediante claves administradas de Amazon S3 (SSE-S3). Esta configuración de cifrado predeterminada se aplica a todos los objetos nuevos en los buckets de Amazon S3.

Con la operación de la API `UpdateObjectEncryption`, puede actualizar automáticamente el tipo de cifrado del servidor de un objeto cifrado existente en un bucket de uso general del cifrado del servidor con el cifrado administrado por Amazon S3 (SSE-S3) al cifrado del servidor con claves de cifrado de AWS Key Management Service (AWS KMS) (SSE-KMS). La operación de la API `UpdateObjectEncryption` utiliza el [cifrado de sobre](https://docs.aws.amazon.com/kms/latest/developerguide/kms-cryptography.html#enveloping) para volver a cifrar la clave de datos utilizada para cifrar y descifrar el objeto con el tipo de cifrado del servidor recién especificado. 

Amazon S3 realiza esta actualización del tipo de cifrado sin ningún movimiento de datos. En otras palabras, cuando usa la operación `UpdateObjectEncryption`, los datos no se copian, los objetos archivados en S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive no se restauran, y los objetos en la clase de almacenamiento de S3 Intelligent-Tiering no se mueven entre niveles. Además, la operación `UpdateObjectEncryption` conserva todas las propiedades de los metadatos de los objetos, incluida la clase de almacenamiento, la fecha de creación, la fecha de última modificación, ETag y las propiedades de suma de comprobación.

La operación `UpdateObjectEncryption` es compatible con todas las clases de almacenamiento de S3 compatibles con los buckets de uso general. Puede utilizar la operación `UpdateObjectEncryption` para hacer lo siguiente: 
+ Cambie los objetos cifrados del cifrado del servidor con cifrado administrado por Amazon S3 (SSE-S3) a cifrado del servidor con claves de cifrado de AWS Key Management Service (AWS KMS) (SSE-KMS).
+ Actualice los objetos cifrados de SSE-KMS por objeto para usar claves de bucket de S3, que disminuye el tráfico de solicitud de AWS KMS de Amazon S3 a AWS KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md).
+ Cambie la clave de KMS administrada por el cliente que se usa para cifrar los datos, de modo que pueda cumplir con los estándares personalizados de rotación de claves.

**nota**  
Los objetos de origen que no estén cifrados o que estén cifrados con cifrado del servidor de doble capa con AWS KMS keys (DSSE-KMS) o claves de cifrado proporcionadas por el cliente (SSE-C) no son compatibles con esta operación.

La operación `UpdateObjectEncryption` se suele completar en milisegundos independientemente del tamaño del objeto o la clase de almacenamiento, incluido S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive. Esta operación no cuenta como acceso para S3 Intelligent-Tiering, por lo que los objetos de la capa de acceso poco frecuente o de la capa de Archive Instant Access no volverán automáticamente a la capa de acceso frecuente si cambia el tipo de cifrado del servidor del objeto. 

`UpdateObjectEncryption` es una operación de API por objeto (plano de datos) que se registra en los registros de acceso del servidor de Amazon S3 y eventos de datos de AWS CloudTrail. Para obtener más información, consulte [Opciones de registro para Amazon S3](logging-with-S3.md). 

 La operación `UpdateObjectEncryption` tiene el mismo precio que las solicitudes `PUT`, `COPY`, `POST` y `LIST` (por 1000 solicitudes) y siempre se cobra como una solicitud de clase de almacenamiento estándar de S3, independientemente de la clase de almacenamiento del objeto subyacente. Para obtener más información, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

## Restricciones y consideraciones
<a name="update-sse-encryption-restrictions"></a>

Al utilizar la operación `UpdateObjectEncryption`, se aplican las siguientes restricciones y consideraciones:
+ La operación `UpdateObjectEncryption` no admite objetos que no estén cifrados u objetos que estén cifrados con cifrado del servidor de doble capa con AWS KMS keys (DSSE-KMS) o claves de cifrado proporcionadas por el cliente (SSE-C). Además, no puede especificar SSE-S3 como la solicitud de `UpdateObjectEncryption` del tipo de cifrado nuevo solicitado.
+ Puede usar la operación `UpdateObjectEncryption` para actualizar objetos en buckets que tienen habilitado el control de versiones de S3. Para actualizar el tipo de cifrado de una versión concreta, debe especificar un ID de versión en la solicitud de `UpdateObjectEncryption`. Si no especifica el ID de versión, la solicitud de `UpdateObjectEncryption` actúa en la versión actual del objeto. Para obtener más información sobre el control de versiones de S3, consulte [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md).
+ La operación `UpdateObjectEncryption` produce un error en cualquier objeto al que se le aplique un modo de retención de Bloqueo de objetos de S3 o una retención legal. Si un objeto tiene un periodo de retención en modo de gobernanza o una retención legal, primero debe eliminar el estado de Bloqueo de objetos del objeto antes de emitir la solicitud de `UpdateObjectEncryption`. No puede usar la operación `UpdateObjectEncryption` con objetos a los que se les haya aplicado un periodo de retención del modo de cumplimiento de Bloqueo de objetos. Para obtener más información acerca de S3 Object Lock, consulte [Bloqueo de objetos mediante Bloqueo de objetos](object-lock.md).
+ Las solicitudes de `UpdateObjectEncryption` en los buckets de origen con la replicación en directo habilitada no iniciarán los eventos de réplica en el bucket de destino. Si desea cambiar el tipo de cifrado de los objetos en los buckets de origen y destino, debe iniciar solicitudes de `UpdateObjectEncryption` independientes en los objetos de los buckets de origen y destino.
+ De forma predeterminada, todas las solicitudes de `UpdateObjectEncryption` que especifican una clave de KMS administrada por el cliente están restringidas a las claves de KMS que son propiedad de la Cuenta de AWS del propietario del bucket. Si utiliza AWS Organizations, puede solicitar la posibilidad de utilizar AWS KMS keys si son propiedad de otras cuentas de miembros de la organización contactando con AWS Support.
+ Si usa la replicación por lotes de S3 para replicar conjuntos de datos entre regiones y los objetos anteriormente actualizaron el tipo de cifrado del servidor de SSE-S3 a SSE-KMS, es posible que necesite permisos adicionales. En el bucket de la región de origen, debe tener permisos `kms:decrypt`. A continuación, necesitará los permisos `kms:decrypt` y `kms:encrypt` para el bucket en la región de destino. 
+ Debe proporcionar un ARN de clave de KMS completo en la solicitud de `UpdateObjectEncryption`. No puede usar un nombre de alias o ARN de alias. Puede determinar el ARN de clave de KMS completo en la consola de AWS KMS o mediante la API de AWS KMS `DescribeKey`.

## Permisos necesarios
<a name="update-sse-encryption-permissions"></a>

Para realizar la operación `UpdateObjectEncryption`, debe tener los siguientes permisos: 
+ `s3:PutObject`
+ `s3:UpdateObjectEncryption`
+ `kms:Encrypt`
+ `kms:Decrypt`
+ `kms:GenerateDataKey`
+ `kms:ReEncrypt*`

Si utiliza AWS Organizations, para usar esta operación con claves de KMS administradas por el cliente de otras Cuentas de AWS dentro de la organización, debe tener el permiso `organizations:DescribeAccount`. Debe solicitar también la capacidad de usar AWS KMS keys si son propiedad de otras cuentas de miembros de la organización contactando con AWS Support.

Para realizar la operación `UpdateObjectEncryption`, agregue la siguiente política de AWS Identity and Access Management (IAM) al rol de IAM. Para utilizar esta política, sustituya `amzn-s3-demo-bucket` por el nombre del bucket de uso general y sustituya `user input placeholders` por su propia información.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
            "Sid": "AllowUpdateObjectEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:UpdateObjectEncryption",
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:ReEncrypt*",
                "organizations:DescribeAccount"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

## Actualización del cifrado en bloque
<a name="update-sse-encryption-bulk"></a>

Para actualizar el tipo de cifrado del servidor de más de un objeto de Amazon S3 con una sola solicitud, puede usar operaciones por lotes de S3. Puede proporcionar operaciones por lotes de S3 con una lista de objetos en los que operar o puede indicar a operaciones por lotes que genere una lista de objetos basada en los metadatos del objeto, incluidos el prefijo, la clase de almacenamiento, la fecha de creación, el tipo de cifrado, el ARN de la clave de KMS o el estado de la clave de bucket de S3. Operaciones por lotes de S3 llama a la operación de la API respectiva para realizar la operación especificada. Un solo trabajo de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos dentro de un bucket que contiene petabytes de datos. Para obtener más información sobre las Operaciones por lotes, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md). 

Operaciones por lotes de S3 realiza un seguimiento del avance, envía notificaciones y guarda un informe de finalización de todas las acciones, por lo que proporciona una experiencia sin servidor, auditable, completamente administrada. Puede utilizar operaciones por lotes de S3 a través de la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3. Para obtener más información, consulte [Actualización de cifrado de objetos](batch-ops-update-encryption.md).

## Actualización de cifrado para objetos
<a name="update-sse-encryption-single-object"></a>

Puede actualizar el tipo de cifrado del servidor de un objeto mediante la AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3. 

### Actualización de cifrado de un objeto
<a name="update-sse-encryption-single-object-procedure"></a>

#### Uso de AWS CLI
<a name="update-sse-encryption-single-object-cli"></a>

Para ejecutar los siguientes comandos, debe tener instalado y configurado la AWS CLI. Si aún no ha instalado la AWS CLI, consulte [Instalación o actualización de la última versión de la AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) en la *Guía del usuario de la AWS Command Line Interface*.

De forma alternativa, puede ejecutar comandos de la AWS CLI desde la consola mediante AWS CloudShell. AWS CloudShell es un intérprete de comandos previamente autenticado y basado en el navegador que se puede lanzar directamente desde la Consola de administración de AWS. Para obtener más información, consulte [¿Qué es CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) e [Introducción a AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) en la *Guía el usuario de AWS CloudShell*.

**Actualización del cifrado de un objeto mediante la AWS CLI**

Para utilizar el comando de ejemplo siguiente, sustituya `user input placeholders` con su información. 

1. Utilice el comando siguiente para actualizar el cifrado de un solo objeto (`index.html`) en el bucket de uso general (por ejemplo, `amzn-s3-demo-bucket`) para usar SSE-KMS con una clave de bucket de S3:

   ```
   aws s3api update-object-encryption \
   --bucket amzn-s3-demo-bucket \
   --key index.html \
   --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'
   ```
**nota**  
Debe especificar el Nombre de recurso de Amazon (ARN) de AWS KMS key completo. No se admiten el ID de clave de KMS ni el alias de clave de KMS.

1. Ejecute el comando `head-object` para ver el tipo de cifrado actualizado del objeto:

   ```
   aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html
   ```

#### Uso de la API de REST
<a name="update-sse-encryption-single-object-rest-api"></a>

Puede enviar solicitudes REST para actualizar el cifrado de un objeto. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html).

#### Uso de los AWS SDK
<a name="update-sse-encryption-single-object-sdk"></a>

Puede utilizar los AWS SDK para actualizar el cifrado de un objeto. Para obtener más información, consulte la [lista de SDK admitidos](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UpdateObjectEncryption.html#API_UpdateObjectEncryption_SeeAlso).

------
#### [ Java ]

**Example**  
En el ejemplo de AWS SDK for Java 2.x siguiente, se actualiza el tipo de cifrado a SSE-KMS para un objeto de un bucket de uso general.  

```
    public void updateObjectEncryption(String bucketName,
                                       String objectKey,
                                       String versionId,
                                       String kmsKeyArn,
                                       boolean bucketKeyEnabled) {
        // Create the target object encryption type.
        ObjectEncryption objectEncryption = ObjectEncryption.builder()
                .ssekms(SSEKMSEncryption.builder()
                        .kmsKeyArn(kmsKeyArn)
                        .bucketKeyEnabled(bucketKeyEnabled)
                        .build())
                .build();

        // Create the UpdateObjectEncryption request.
        UpdateObjectEncryptionRequest request = UpdateObjectEncryptionRequest.builder()
                .bucket(bucketName)
                .key(objectKey)
                .versionId(versionId)
                .objectEncryption(objectEncryption)
                .build();

        // Update the object encryption.
        try {
            getS3Client().updateObjectEncryption(request);
            logger.info("Object encryption updated to SSE-KMS for {} in bucket {}", objectKey, bucketName);
        } catch (S3Exception e) {
            logger.error("Failed to update to object encryption: {} - Error code: {}", e.awsErrorDetails().errorMessage(),
                    e.awsErrorDetails().errorCode());
            throw e;
        }
    }
```

------
#### [ Python ]

**Example**  
En el ejemplo de AWS SDK para Python (Boto3) siguiente, se muestra cómo actualizar el tipo de cifrado a SSE-KMS para un objeto de un bucket de uso general.   

```
response = client.update_object_encryption(
    Bucket='string',
    Key='string',
    VersionId='string',
    ObjectEncryption={
        'SSEKMS': {
                'KMSKeyArn': 'string',
                'BucketKeyEnabled': True|False
        }
    }
)
```

------

# Uso del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)
<a name="UsingServerSideEncryption"></a>

**importante**  
Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. El estado de cifrado automático para la configuración de cifrado predeterminada del bucket de S3 y para cargas de objetos nuevos está disponible en registros de CloudTrail, inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en la AWS CLI y los AWS SDK. Para obtener más información, consulte [Preguntas frecuentes del cifrado predeterminado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

Todas las cargas de objetos nuevos en los buckets de Amazon S3 se cifran de forma predeterminada con cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3).

El cifrado de lado de servidor protege los datos en reposo. Amazon S3 cifra cada objeto con una clave única. Como medida de seguridad adicional, cifra la propia clave con una clave que rota regularmente. El cifrado del servidor de Amazon S3 utiliza el modo Galois/Counter Mode (AES-GCM) estándar de cifrado avanzado de 256 bits para cifrar todos los objetos cargados.

No se aplican cargos adicionales por usar el cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3). Sin embargo, las solicitudes para configurar la característica de cifrado predeterminadas generan cargos por solicitudes de Amazon S3 estándar. Para obtener información acerca de los precios, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

Si necesita que las cargas de datos se cifren únicamente con claves administradas de Amazon S3, puede utilizar la siguiente política de buckets. Por ejemplo, en la siguiente política de bucket se deniega el permiso para cargar un objeto a menos que la solicitud incluya el encabezado `x-amz-server-side-encryption` para solicitar el cifrado del lado del servidor:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "PutObjectPolicy",
  "Statement": [
    {
      "Sid": "DenyObjectsThatAreNotSSES3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }
   ]
}
```

------

**nota**  
El cifrado en el servidor solo cifra los datos de objetos, no los metadatos de objetos. 

## Compatibilidad con API para el cifrado del lado del servidor
<a name="APISupportforServer-SideEncryption"></a>

Todos los buckets de Amazon S3 tienen el cifrado configurado de forma predeterminada y todos los objetos nuevos cargados en un bucket de S3 se cifran automáticamente en reposo. El cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) es la configuración de cifrado predeterminada para cada bucket de Amazon S3. Para usar otro tipo de cifrado, puede especificar el tipo de cifrado del servidor que se utilizará en las solicitudes `PUT` de S3 o puede actualizar la configuración de cifrado predeterminada en el bucket de destino. 

Si desea especificar un tipo de cifrado diferente en sus solicitudes `PUT`, puede utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) o el cifrado del servidor con claves proporcionadas por el cliente (SSE-C). Si desea establecer una configuración de cifrado predeterminada diferente en el bucket de destino, puede usar SSE-KMS o DSSE-KMS.

Para obtener más información sobre cómo cambiar la configuración de cifrado predeterminada de los buckets de uso general, consulte [Configuración del cifrado predeterminado](default-bucket-encryption.md). 

Al cambiar la configuración de cifrado predeterminada del bucket a SSE-KMS, no se modifica el tipo de cifrado de los objetos de Amazon S3 existentes en el bucket. Para cambiar el tipo de cifrado de los objetos preexistentes tras actualizar la configuración de cifrado predeterminada a SSE-KMS, puede utilizar Operaciones por lotes de Amazon S3. A Operaciones por lotes de S3 se proporciona una lista de objetos y Operaciones por lotes llama a la operación de la API correspondiente. Puede utilizar la acción [Copia de objetos](batch-ops-copy-object.md) para copiar objetos existentes, que los vuelve a escribir en el mismo bucket que los objetos cifrados con SSE-KMS. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md) y la publicación [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) de *AWS Storage Blog*. 

Para configurar el cifrado del lado del servidor con las API de REST de creación de objetos, debe proporcionar el encabezado de solicitud `x-amz-server-side-encryption`. Para obtener más información acerca de las API de REST, consulte [Uso de la API de REST](specifying-s3-encryption.md#SSEUsingRESTAPI).

Las siguientes API de Amazon S3 admiten este encabezado:
+ **Operaciones PUT**: especifique el encabezado de solicitud al cargar datos con la API `PUT`. Para obtener más información, consulte [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).
+ **Iniciar carga multiparte**: especifique el encabezado en la solicitud de inicio cuando cargue objetos grandes mediante la API de carga multiparte. Para obtener más información, consulte la sección sobre [Cómo iniciar la carga multiparte](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html).
+ **Operaciones COPY**: cuando copia un objeto, tiene un objeto de origen y otro de destino. Para obtener más información, consulte [Objeto PUT - Copia](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html).

**nota**  
Cuando utilice una operación `POST` para cargar un objeto, en vez de proporcionar el encabezado de solicitud, debe proporcionar la misma información en los campos del formulario. Para obtener más información, consulte [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html). 

Los SDK de AWS también proporcionan API de encapsulamiento que puede utilizar para solicitar el cifrado del lado del servidor. También puede usar la Consola de administración de AWS para cargar objetos y solicitar el cifrado del lado del servidor.

Para obtener más información, consulte [Conceptos de AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) en la *Guía para desarrolladores de AWS Key Management Service*.

**Topics**
+ [Compatibilidad con API para el cifrado del lado del servidor](#APISupportforServer-SideEncryption)
+ [Especificación del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](specifying-s3-encryption.md)

# Especificación del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)
<a name="specifying-s3-encryption"></a>

Todos los buckets de Amazon S3 tienen el cifrado configurado de forma predeterminada y todos los objetos nuevos cargados en un bucket de S3 se cifran automáticamente en reposo. El cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) es la configuración de cifrado predeterminada para cada bucket de Amazon S3. Para usar otro tipo de cifrado, puede especificar el tipo de cifrado del servidor que se utilizará en las solicitudes `PUT` de S3 o puede actualizar la configuración de cifrado predeterminada en el bucket de destino. 

Si desea especificar un tipo de cifrado diferente en sus solicitudes `PUT`, puede utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) o el cifrado del servidor con claves proporcionadas por el cliente (SSE-C). Si desea establecer una configuración de cifrado predeterminada diferente en el bucket de destino, puede usar SSE-KMS o DSSE-KMS.

Para obtener más información sobre cómo cambiar la configuración de cifrado predeterminada de los buckets de uso general, consulte [Configuración del cifrado predeterminado](default-bucket-encryption.md). 

Al cambiar la configuración de cifrado predeterminada del bucket a SSE-KMS, no se modifica el tipo de cifrado de los objetos de Amazon S3 existentes en el bucket. Para cambiar el tipo de cifrado de los objetos preexistentes tras actualizar la configuración de cifrado predeterminada a SSE-KMS, puede utilizar Operaciones por lotes de Amazon S3. A Operaciones por lotes de S3 se proporciona una lista de objetos y Operaciones por lotes llama a la operación de la API correspondiente. Puede utilizar la acción [Copia de objetos](batch-ops-copy-object.md) para copiar objetos existentes, que los vuelve a escribir en el mismo bucket que los objetos cifrados con SSE-KMS. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md) y la publicación [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) de *AWS Storage Blog*. 

Puede especificar SSE-S3 mediante la consola de S3, las API de REST, los SDK de AWS y la AWS Command Line Interface (AWS CLI). Para obtener más información, consulte [Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3](bucket-encryption.md).

## Uso de la consola de S3
<a name="add-object-encryption-s3"></a>

En este tema se describe cómo configurar o cambiar el tipo de cifrado que utiliza un objeto mediante la Consola de administración de AWS. Cuando copia un objeto con la consola, Amazon S3 copia el objeto tal cual. Esto significa que si el objeto de origen está cifrado, el objeto de destino también lo está. También puede usar la consola para agregar o cambiar el cifrado de un objeto. 

**nota**  
Puede cambiar el cifrado de un objeto si el objeto es menor de 5 GB. Si el objeto es mayor de 5 GB, debe usar la [AWS CLI](mpu-upload-object.md#UsingCLImpUpload) o los [AWS SDK](CopyingObjectsMPUapi.md) para cambiar el cifrado de un objeto.
Para obtener una lista de los permisos adicionales necesarios para cambiar el cifrado de un objeto, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md). Para ver políticas de ejemplo que conceden estos permisos, consulte [Ejemplos de políticas basadas en identidad para Amazon S3](example-policies-s3.md).
Si cambia el cifrado de un objeto, se crea un nuevo objeto para reemplazar el antiguo. Si el control de versiones de S3 está activado, se crea una nueva versión del objeto y el objeto existente se convierte en una versión anterior. El rol que cambia la propiedad también se convierte en el propietario del nuevo objeto o (versión del objeto). 

**Para cambiar el cifrado de un objeto**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación, elija **Buckets** y, a continuación, la pestaña **Buckets de uso general**. Desplácese hasta el bucket o la carpeta de Amazon S3 que contiene los objetos que desea cambiar.

1. Seleccione la casilla de verificación de los objetos que desea cambiar.

1. En el menú **Acciones**, elija **Editar cifrado del servidor** en la lista de opciones que aparece.

1. Desplácese hasta la sección **Cifrado del servidor**.

1. En **Configuración del cifrado**, elija **Usar la configuración del bucket para el cifrado predeterminado** o **Anular la configuración del bucket para el cifrado predeterminado**.

1. Si elige **Anular la configuración del bucket para el cifrado predeterminado**, debe configurar los siguientes ajustes de cifrado.

   1. En **Tipo de cifrado**, elija **Cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)**. SSE-S3 utiliza uno de los cifrados de bloques más seguros, Advanced Encryption Standard de 256 bits (AES-256), para cifrar cada objeto. Para obtener más información, consulte [Uso del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).

1. En **Configuración de copia adicional**, elija si desea **Copiar la configuración de origen**, **No especificar la configuración** o **Especificar la configuración**. **Copiar la configuración de origen** es la opción predeterminada. Si solo desea copiar el objeto sin los atributos de configuración de origen, elija **No especificar la configuración**. Elija **Especificar la configuración** para especificar la configuración de la clase de almacenamiento, las ACL, las etiquetas de objetos, los metadatos, el cifrado del servidor y las sumas de comprobación adicionales.

1. Elija **Save changes**.

**nota**  
En esta acción se aplica el cifrado a todos los objetos especificados. Al cifrar carpetas, espere a que finalice la operación de guardado para agregar nuevos objetos a la carpeta.

## Uso de la API de REST
<a name="SSEUsingRESTAPI"></a>

Al crear un objeto, es decir, cuando carga un objeto nuevo o hace una copia de un objeto existente, puede especificar si desea que Amazon S3 cifre los datos con claves administradas de Amazon S3 (SSE-S3) al agregar el encabezado `x-amz-server-side-encryption` en la solicitud. Configure el valor del encabezado para el algoritmo de cifrado `AES256` que admite Amazon S3. Amazon S3 confirma que su objeto se ha almacenado con SSE-S3 al devolver el encabezado de respuesta `x-amz-server-side-encryption`. 

Las siguientes operaciones de la API de carga de REST aceptan el encabezado de solicitud `x-amz-server-side-encryption`.
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Initiate Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)

Cuando cargue objetos grandes con la operación de la API de carga multiparte, puede especificar el cifrado del lado del servidor añadiendo el encabezado `x-amz-server-side-encryption` a la solicitud Iniciar carga multiparte. Cuando copie un objeto existente, independientemente de si el objeto de origen está cifrado o no, el objeto de destino no estará cifrado, a no ser que solicite explícitamente el cifrado del lado del servidor.

Los encabezados de respuesta de las siguientes operaciones de la API de REST devuelven el encabezado `x-amz-server-side-encryption` cuando un objeto se almacena con SSE-S3. 
+ [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
+ [PUT Object - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [Initiate Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)
+ [Upload Part](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html)
+ [Upload Part - Copy](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)
+ [Complete Multipart Upload](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadComplete.html)
+ [Get Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)
+ [Head Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)

**nota**  
No envíe encabezados de solicitud de cifrado para las solicitudes `GET` y `HEAD` si el objeto utiliza SSE-S3, porque recibirá un error de código de error HTTP 400 (Solicitud errónea).

## Uso de los AWS SDK
<a name="s3-using-sdks"></a>

Si utiliza los SDK de AWS, puede solicitar a Amazon S3 que utilice el cifrado del lado del servidor con claves de cifrado administradas por Amazon S3 (SSE-S3). En esta sección, se proporcionan ejemplos de uso de los SDK de AWS en diferentes lenguajes. Para obtener información acerca de otros SDK, consulte [Código de muestra y bibliotecas](https://aws.amazon.com/code). 

------
#### [ Java ]

Cuando use el AWS SDK para Java para cargar un objeto, puede usar SSE-S3 para cifrarlo. Para solicitar cifrado del lado del servidor utilice la propiedad `ObjectMetadata` de la `PutObjectRequest` para establecer el encabezado de solicitud `x-amz-server-side-encryption`. Cuando llama al método `putObject()` del `AmazonS3Client`, Amazon S3 cifra y guarda los datos.

También puede solicitar el cifrado SSE-S3 cuando cargue objetos con la operación de la API de carga multiparte: 
+ Al usar la operación de la API de carga multiparte de nivel alto, utiliza los métodos `TransferManager` para aplicar cifrado del lado del servidor a los objetos a medida que los carga. Puede utilizar cualquier método de carga que tome `ObjectMetadata` como parámetro. Para obtener más información, consulte [Carga de un objeto con la carga multiparte](mpu-upload-object.md).
+ Cuando utiliza la operación de la API de carga multiparte de nivel bajo, especifica el cifrado del lado del servidor al iniciar la carga multiparte. Añade la propiedad `ObjectMetadata` al llamar al método `InitiateMultipartUploadRequest.setObjectMetadata()`. Para obtener más información, consulte [Uso de los SDK de AWS (API de bajo nivel)](mpu-upload-object.md#mpu-upload-low-level).

No puede cambiar directamente el estado de cifrado de un objeto (cifrado de un objeto no cifrado o descifrado de un objeto cifrado). Para cambiar el estado de cifrado de un objeto, realice una copia del objeto, especifique el estado de cifrado deseado para la copia y elimine el objeto original. Amazon S3 cifra el objeto copiado solo si solicita explícitamente el cifrado del lado del servidor. Para solicitar el cifrado del objeto copiado por medio de la API de Java, use la propiedad `ObjectMetadata` para especificar el cifrado del lado del servidor en la `CopyObjectRequest`.

**Example Ejemplo**  
En el siguiente ejemplo se muestra cómo establecer el cifrado del lado del servidor con el AWS SDK para Java. Se muestra cómo realizar las siguientes tareas:  
+ Cargue un objeto nuevo mediante SSE-S3.
+ Cambiar el estado de cifrado de un objeto (en este ejemplo, cifrar un objeto que no estaba cifrado anteriormente) copiando el objeto.
+ Comprobar el estado de cifrado del objeto.
Para obtener más información acerca del cifrado del lado del servidor, consulte [Uso de la API de REST](#SSEUsingRESTAPI). Para obtener instrucciones sobre cómo crear y probar una muestra funcional, consulte [Introducción](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) en la Guía para desarrolladores de AWS SDK para Java.  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.internal.SSEResultBase;
import com.amazonaws.services.s3.model.*;

import java.io.ByteArrayInputStream;

public class SpecifyServerSideEncryption {

    public static void main(String[] args) {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyNameToEncrypt = "*** Key name for an object to upload and encrypt ***";
        String keyNameToCopyAndEncrypt = "*** Key name for an unencrypted object to be encrypted by copying ***";
        String copiedObjectKeyName = "*** Key name for the encrypted copy of the unencrypted object ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();

            // Upload an object and encrypt it with SSE.
            uploadObjectWithSSEEncryption(s3Client, bucketName, keyNameToEncrypt);

            // Upload a new unencrypted object, then change its encryption state
            // to encrypted by making a copy.
            changeSSEEncryptionStatusByCopying(s3Client,
                    bucketName,
                    keyNameToCopyAndEncrypt,
                    copiedObjectKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObjectWithSSEEncryption(AmazonS3 s3Client, String bucketName, String keyName) {
        String objectContent = "Test object encrypted with SSE";
        byte[] objectBytes = objectContent.getBytes();

        // Specify server-side encryption.
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setContentLength(objectBytes.length);
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        PutObjectRequest putRequest = new PutObjectRequest(bucketName,
                keyName,
                new ByteArrayInputStream(objectBytes),
                objectMetadata);

        // Upload the object and check its encryption status.
        PutObjectResult putResult = s3Client.putObject(putRequest);
        System.out.println("Object \"" + keyName + "\" uploaded with SSE.");
        printEncryptionStatus(putResult);
    }

    private static void changeSSEEncryptionStatusByCopying(AmazonS3 s3Client,
            String bucketName,
            String sourceKey,
            String destKey) {
        // Upload a new, unencrypted object.
        PutObjectResult putResult = s3Client.putObject(bucketName, sourceKey, "Object example to encrypt by copying");
        System.out.println("Unencrypted object \"" + sourceKey + "\" uploaded.");
        printEncryptionStatus(putResult);

        // Make a copy of the object and use server-side encryption when storing the
        // copy.
        CopyObjectRequest request = new CopyObjectRequest(bucketName,
                sourceKey,
                bucketName,
                destKey);
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
        request.setNewObjectMetadata(objectMetadata);

        // Perform the copy operation and display the copy's encryption status.
        CopyObjectResult response = s3Client.copyObject(request);
        System.out.println("Object \"" + destKey + "\" uploaded with SSE.");
        printEncryptionStatus(response);

        // Delete the original, unencrypted object, leaving only the encrypted copy in
        // Amazon S3.
        s3Client.deleteObject(bucketName, sourceKey);
        System.out.println("Unencrypted object \"" + sourceKey + "\" deleted.");
    }

    private static void printEncryptionStatus(SSEResultBase response) {
        String encryptionStatus = response.getSSEAlgorithm();
        if (encryptionStatus == null) {
            encryptionStatus = "Not encrypted with SSE";
        }
        System.out.println("Object encryption status is: " + encryptionStatus);
    }
}
```

------
#### [ .NET ]

Cuando carga un objeto, puede indicar a Amazon S3 que lo cifre. Para cambiar el estado de cifrado de un objeto existente, realice una copia del objeto y elimine el objeto de origen. De forma predeterminada la operación de copia cifra el destino solo si usted solicita explícitamente cifrado del lado del servidor del objeto de destino. Para especificar SSE-S3 en el `CopyObjectRequest`, añada lo siguiente:

```
 ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
```

Para obtener una muestra funcional que indica cómo copiar un objeto, consulte [Uso de los AWS SDK](copy-object.md#CopyingObjectsUsingSDKs). 

En el siguiente ejemplo se carga un objeto. En la solicitud, el ejemplo indica a Amazon S3 que cifre el objeto. A continuación el ejemplo recupera los metadatos de los objetos y comprueba el método de cifrado que se utilizó. Para obtener información acerca de cómo configurar y ejecutar ejemplos de código, consulte [Introducción al SDK de AWS para .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) en la *Guía para desarrolladores del SDK de AWS para .NET*. 

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SpecifyServerSideEncryptionTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string keyName = "*** key name for object created ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            WritingAnObjectAsync().Wait();
        }

        static async Task WritingAnObjectAsync()
        {
            try
            {
                var putRequest = new PutObjectRequest
                {
                    BucketName = bucketName,
                    Key = keyName,
                    ContentBody = "sample text",
                    ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
                };

                var putResponse = await client.PutObjectAsync(putRequest);

                // Determine the encryption state of an object.
                GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest
                {
                    BucketName = bucketName,
                    Key = keyName
                };
                GetObjectMetadataResponse response = await client.GetObjectMetadataAsync(metadataRequest);
                ServerSideEncryptionMethod objectEncryption = response.ServerSideEncryptionMethod;

                Console.WriteLine("Encryption method used: {0}", objectEncryption.ToString());
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}
```

------
#### [ PHP ]

En este tema se explica cómo usar las clases de la versión 3 de AWS SDK para PHP para agregar SSE-S3 a objetos que cargue a Amazon S3. Para obtener más información acerca de la API del SDK de AWS para Ruby, consulte [SDK de AWS para Ruby, versión 2](https://docs.aws.amazon.com/sdkforruby/api/index.html).

Para cargar un objeto en Amazon S3, use el método [Aws\$1S3\$1S3Client::putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject). Para añadir el encabezado de solicitud `x-amz-server-side-encryption` a su solicitud de carga, especifique el parámetro `ServerSideEncryption` con el valor `AES256`, como se muestra en el siguiente ejemplo de código. Para obtener información acerca de solicitudes de cifrado del lado del servidor, consulte [Uso de la API de REST](#SSEUsingRESTAPI).

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

// $filepath should be an absolute path to a file on disk.
$filepath = '*** Your File Path ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Upload a file with server-side encryption.
$result = $s3->putObject([
    'Bucket'               => $bucket,
    'Key'                  => $keyname,
    'SourceFile'           => $filepath,
    'ServerSideEncryption' => 'AES256',
]);
```

Como respuesta, Amazon S3 devuelve el encabezado `x-amz-server-side-encryption` con el valor del algoritmo de cifrado que se utilizó para cifrar los datos del objeto. 

Cuando carga objetos grandes con la operación de la API de carga multiparte, puede especificar SSE-S3 para los objetos que está cargando, como sigue: 
+ Cuando utilice la operación de la API de carga multiparte de bajo nivel, especifique el cifrado del lado del servidor al llamar al método [Aws\$1S3\$1S3Client::createMultipartUpload()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload). Para agregar el encabezado de solicitud `x-amz-server-side-encryption` a su solicitud, especifique la clave del parámetro de la `array` `ServerSideEncryption` con el valor `AES256`. Para obtener más información sobre la operación de la API de carga multiparte de bajo nivel, consulte [Uso de los SDK de AWS (API de bajo nivel)](mpu-upload-object.md#mpu-upload-low-level).
+ Cuando utilice la operación de la API de carga multiparte de alto nivel, especifique el cifrado del lado del servidor mediante el parámetro `ServerSideEncryption` de la operación de la API [CreateMultipartUpload](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload). Para ver un ejemplo sobre cómo usar el método `setOption()` con la operación de la API de carga multiparte de alto nivel, consulte [Carga de un objeto con la carga multiparte](mpu-upload-object.md).

Para determinar el estado de cifrado de un objeto existente, recupere los metadatos del objeto llamando al método [Aws\$1S3\$1S3Client::headObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#headobject) como se muestra en el siguiente ejemplo de código PHP.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$bucket = '*** Your Bucket Name ***';
$keyname = '*** Your Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Check which server-side encryption algorithm is used.
$result = $s3->headObject([
    'Bucket' => $bucket,
    'Key'    => $keyname,
]);
echo $result['ServerSideEncryption'];
```

Para cambiar el estado de cifrado de un objeto existente, realice una copia del objeto con el método [Aws\$1S3\$1S3Client::copyObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#copyobject) y elimine el objeto de origen. De forma predeterminada, `copyObject()` no cifra el objeto de destino, a menos que solicite de forma explícita el cifrado del lado del servidor con el parámetro `ServerSideEncryption` con el valor `AES256`. El siguiente ejemplo de código PHP realiza una copia de un objeto y agrega cifrado en el servidor al objeto copiado.

```
 require 'vendor/autoload.php';

use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';
$sourceKeyname = '*** Your Source Object Key ***';

$targetBucket = '*** Your Target Bucket Name ***';
$targetKeyname = '*** Your Target Object Key ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region'  => 'us-east-1'
]);

// Copy an object and add server-side encryption.
$s3->copyObject([
    'Bucket'               => $targetBucket,
    'Key'                  => $targetKeyname,
    'CopySource'           => "$sourceBucket/$sourceKeyname",
    'ServerSideEncryption' => 'AES256',
]);
```

Para obtener más información, consulte los temas siguientes:
+ [AWS SDK para PHP para la clase Aws\$1S3\$1S3Client de Amazon S](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html) 
+ [AWS SDK para PHP documentación](https://aws.amazon.com/documentation/sdk-for-php/)

------
#### [ Ruby ]

Si utiliza AWS SDK para Ruby para cargar un objeto, puede especificar que el objeto se almacene cifrado en reposo con SSE-S3. Cuando vuelve a leer el objeto, este se descifra automáticamente.

En el siguiente ejemplo de AWS SDK para Ruby versión 3 se muestra cómo especificar que un archivo cargado en Amazon S3 quede cifrado en reposo.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectPutSseWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  def put_object_encrypted(object_content, encryption)
    @object.put(body: object_content, server_side_encryption: encryption)
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't put your content to #{object.key}. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-encrypted-content"
  object_content = "This is my super-secret content."
  encryption = "AES256"

  wrapper = ObjectPutSseWrapper.new(Aws::S3::Object.new(bucket_name, object_content))
  return unless wrapper.put_object_encrypted(object_content, encryption)

  puts "Put your content into #{bucket_name}:#{object_key} and encrypted it with #{encryption}."
end

run_demo if $PROGRAM_NAME == __FILE__
```

El siguiente ejemplo de código muestra cómo determinar el estado de cifrado de un objeto existente.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectGetEncryptionWrapper
  attr_reader :object

  # @param object [Aws::S3::Object] An existing Amazon S3 object.
  def initialize(object)
    @object = object
  end

  # Gets the object into memory.
  #
  # @return [Aws::S3::Types::GetObjectOutput, nil] The retrieved object data if successful; otherwise nil.
  def object
    @object.get
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't get object #{@object.key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  bucket_name = "amzn-s3-demo-bucket"
  object_key = "my-object.txt"

  wrapper = ObjectGetEncryptionWrapper.new(Aws::S3::Object.new(bucket_name, object_key))
  obj_data = wrapper.get_object
  return unless obj_data

  encryption = obj_data.server_side_encryption.nil? ? 'no' : obj_data.server_side_encryption
  puts "Object #{object_key} uses #{encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

Si no se utiliza el cifrado del lado del servidor para el objeto almacenado en Amazon S3, el método devolverá `null`.

Para cambiar el estado de cifrado de un objeto existente, realice una copia del objeto y elimine el objeto de origen. De forma predeterminada, los métodos de copia no cifran el objeto de destino, a menos que solicite de forma explícita el cifrado del lado del servidor. Puede solicitar el cifrado del objeto de destino al especificar el valor `server_side_encryption` en el argumento hash de la opción, tal como se muestra en el siguiente código de ejemplo de Ruby. El ejemplo de código muestra cómo copiar un objeto y cifrar la copia con SSE-S3. 

```
require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectCopyEncryptWrapper
  attr_reader :source_object

  # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for
  #                                        copy actions.
  def initialize(source_object)
    @source_object = source_object
  end

  # Copy the source object to the specified target bucket, rename it with the target key, and encrypt it.
  #
  # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied.
  # @param target_object_key [String] The key to give the copy of the object.
  # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil.
  def copy_object(target_bucket, target_object_key, encryption)
    @source_object.copy_to(bucket: target_bucket.name, key: target_object_key, server_side_encryption: encryption)
    target_bucket.object(target_object_key)
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  source_bucket_name = "amzn-s3-demo-bucket1"
  source_key = "my-source-file.txt"
  target_bucket_name = "amzn-s3-demo-bucket2"
  target_key = "my-target-file.txt"
  target_encryption = "AES256"

  source_bucket = Aws::S3::Bucket.new(source_bucket_name)
  wrapper = ObjectCopyEncryptWrapper.new(source_bucket.object(source_key))
  target_bucket = Aws::S3::Bucket.new(target_bucket_name)
  target_object = wrapper.copy_object(target_bucket, target_key, target_encryption)
  return unless target_object

  puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key} and "\
       "encrypted the target with #{target_object.server_side_encryption} encryption."
end

run_demo if $PROGRAM_NAME == __FILE__
```

------

## Uso de AWS CLI
<a name="sse-s3-aws-cli"></a>

Para especificar SSE-S3 al cargar un objeto mediante la AWS CLI, utilice el siguiente ejemplo.

```
aws s3api put-object --bucket amzn-s3-demo-bucket1 --key object-key-name --server-side-encryption AES256  --body file path
```

Para obtener más información, consulte [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) en la *Referencia de la AWS CLI*. Para especificar SSE-S3 al copiar un objeto mediante la AWS CLI, consulte [copy-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/copy-object.html).

## Uso de CloudFormation
<a name="ss3-s3-cfn"></a>

Para obtener ejemplos de configuración de cifrado mediante CloudFormation, consulte [Crear un bucket con cifrado predeterminado](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_with_default_encryption) y [Crear un bucket mediante el cifrado del lado del servidor AWS KMS con una clave de bucket de S3](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html#aws-properties-s3-bucket-serversideencryptionrule--examples--Create_a_bucket_using_AWS_KMS_server-side_encryption_with_an_S3_Bucket_Key) en el tema `AWS::S3::Bucket ServerSideEncryptionRule` de la *Guía del usuario de AWS CloudFormation*. 

# Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)
<a name="UsingKMSEncryption"></a>

**importante**  
Amazon S3 aplica ahora el cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) como el nivel básico de cifrado para cada bucket de Amazon S3. Desde el 5 de enero de 2023, todas las cargas de objetos nuevos a Amazon S3 se cifran automáticamente sin costo adicional y sin afectar al rendimiento. El estado de cifrado automático para la configuración de cifrado predeterminada del bucket de S3 y para cargas de objetos nuevos está disponible en registros de CloudTrail, inventario de S3, Lente de almacenamiento de S3, la consola de Amazon S3 y como encabezado de respuesta a la API de Amazon S3 adicional en la AWS CLI y los AWS SDK. Para obtener más información, consulte [Preguntas frecuentes del cifrado predeterminado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html).

El cifrado del lado del servidor es el cifrado de datos en su destino por la aplicación o servicio que los recibe.

Amazon S3 habilita automáticamente el cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) para cargar objetos nuevos.

A menos que especifique lo contrario, los buckets utilizan SSE-S3 de forma predeterminada para cifrar objetos. Sin embargo, puede elegir configurar buckets para utilizar el cifrado del lado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS). Para obtener más información, consulte [Especificación del cifrado del lado del servidor con AWS KMS (SSE-KMS)](specifying-kms-encryption.md).

AWS KMS es un servicio que combina hardware y software seguros y de alta disponibilidad para ofrecer un sistema de administración de claves adaptado a la nube. Amazon S3 utiliza el cifrado del lado del servidor con AWS KMS (SSE-KMS) para cifrar los datos de objetos de S3. Además, cuando se solicita SSE-KMS para el objeto, la suma de comprobación de S3 (como parte de los metadatos del objeto) se almacena de forma cifrada. Para obtener más información acerca de la suma de comprobación, consulte [Comprobación de la integridad de objetos en Amazon S3](checking-object-integrity.md).

Si utiliza claves de KMS, puede utilizar AWS KMS a través de la [Consola de administración de AWS](https://console.aws.amazon.com/kms) o la [API de AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/) para hacer lo siguiente: 
+ Cree, vea, edite, monitoree, habilite o desactive, rote y programe la eliminación de claves de KMS de forma centralizada.
+ Defina las políticas que controlan cómo y quién puede utilizar las claves de KMS.
+ Audite el uso correcto de las claves de KMS. La [API de AWS KMS](https://docs.aws.amazon.com/kms/latest/APIReference/) admite la auditoría, per no la [consola de AWS KMS](https://console.aws.amazon.com/kms).



Los controles de seguridad de AWS KMS pueden ayudarle a cumplir los requisitos de conformidad relacionados con el cifrado. Puede usar estas claves de KMS para proteger sus datos en buckets de Amazon S3. Al utilizar el cifrado SSE-KMS con un bucket de S3, AWS KMS keys debe estar en la misma región que ese bucket.

La utilización de conlleva cargos adicionales AWS KMS keys. Para obtener más información, consulte [AWS KMS key los conceptos](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) en la *AWS Key Management Service Guía para desarrolladores* y [AWS KMS los precios](https://aws.amazon.com/kms/pricing).

Para obtener instrucciones sobre cómo permitir que los usuarios de IAM accedan a buckets cifrados de KMS, consulte [Mi bucket de Amazon S3 tiene un cifrado predeterminado mediante una clave de AWS KMS personalizada. ¿Cómo puedo permitir que los usuarios realicen operaciones de carga y descarga en el bucket?](https://repost.aws/knowledge-center/s3-bucket-access-default-encryption) en el Centro de conocimiento de AWS re:Post.

**Permisos**  
Para realizar correctamente una solicitud `PutObject` para cifrar un objeto con una clave de AWS KMS en Amazon S3, necesita permisos `kms:GenerateDataKey` en la clave. Para descargar un objeto cifrado con una AWS KMS key, es necesario contar con los permisos `kms:Decrypt` para la clave. Para [realizar una carga multiparte](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions) para cifrar un objeto con una AWS KMS key, debe tener los permisos `kms:GenerateDataKey` y `kms:Decrypt` para la clave.

**importante**  
Revise detenidamente los permisos que se otorgan en sus políticas de claves de KMS. Limite siempre los permisos de la política de claves de KMS administradas por el cliente únicamente a las entidades principales de IAM y los servicios de AWS que deben acceder a la acción clave de AWS KMS correspondiente. Para más información, consulte [Políticas de claves en AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html).

**Topics**
+ [AWS KMS keys](#aws-managed-customer-managed-keys)
+ [Claves de bucket de Amazon S3](#sse-kms-bucket-keys)
+ [Requisito de cifrado del lado del servidor](#require-sse-kms)
+ [Contexto de cifrado](#encryption-context)
+ [Envío de solicitudes para objetos cifrados de AWS KMS](#aws-signature-version-4-sse-kms)
+ [Especificación del cifrado del lado del servidor con AWS KMS (SSE-KMS)](specifying-kms-encryption.md)
+ [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md)

## AWS KMS keys
<a name="aws-managed-customer-managed-keys"></a>

Cuando utiliza el cifrado del lado del servidor con AWS KMS (SSE-KMS), puede utilizar la [clave administrada por AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) predeterminada o especificar una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) que ya haya creado. AWS KMS admite el *cifrado de sobres*. S3 utiliza las funciones de AWS KMS para *cifrado de sobres* para proteger aún más los datos. El cifrado de sobres es la práctica de cifrar los datos que son texto no cifrado con una clave de datos y, a continuación, cifrar la propia clave de datos con una clave de KMS. Para obtener más información acerca del cifrado de sobre, consulte [Cifrado de sobre](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#enveloping) en la *Guía para desarrolladores de AWS Key Management Service*.

Si no especifica una clave administrada por el cliente, Amazon S3 creará de manera automática una Clave administrada de AWS en su Cuenta de AWS la primera vez que agregue un objeto cifrado con SSE-KMS a un bucket. De forma predeterminada, Amazon S3 utiliza esta clave de KMS para SSE-KMS. 

**nota**  
Los objetos cifrados mediante SSE-KMS con [Claves administradas por AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) no se pueden compartir entre cuentas. Si necesita compartir datos de SSE-KMS entre cuentas, debe utilizar una [clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) de AWS KMS. 

Si desea utilizar una clave administrada por el cliente para SSE-KMS, cree una clave administrada por el cliente de cifrado simétrico antes de configurar SSE-KMS. Luego cuando configure SSE-KMS para el bucket, especifique la clave administrada por el cliente existente. Para obtener más información sobre la clave de cifrado simétrica, consulte [Symmetric encryption KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) (Claves de KMS de cifrado simétricas) en la *Guía para desarrolladores de AWS Key Management Service*.

Crear una clave administrada por el cliente le da más flexibilidad y control. Por ejemplo, puede crear, rotar y deshabilitar las claves administradas por el cliente. También puede definir controles de acceso y auditar las claves administradas por el cliente que utiliza para proteger sus datos. Para obtener más información acerca de las claves administradas por el cliente y AWS, consulte [Claves de cliente y claves de AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) en la *Guía para desarrolladores de AWS Key Management Service*.

**nota**  
Cuando utiliza el cifrado del lado del servidor con una clave administrada por el cliente que se almacena en un almacén de claves externo, a diferencia de las claves de KMS estándar, es responsable de garantizar la disponibilidad y la durabilidad del material de la clave. Para obtener más información sobre los almacenes de claves externos y cómo cambian el modelo de responsabilidad compartida, consulte [Almacenes de claves externos](https://docs.aws.amazon.com//kms/latest/developerguide/keystore-external.html) en la *Guía para desarrolladores de AWS Key Management Service*.

### Uso del cifrado SSE-KMS para operaciones entre cuentas
<a name="sse-kms-cross-account-operations"></a>

Tenga en cuenta lo siguiente cuando utilice el cifrado para operaciones entre cuentas:
+ Si no se proporciona un nombre de recurso de Amazon (ARN) o un alias de AWS KMS key en el momento de la solicitud, ni a través de la configuración de cifrado predeterminada del bucket, se usa la Clave administrada de AWS (`aws/s3`) de la cuenta de carga para el cifrado y es obligatoria para el descifrado.
+ Clave administrada de AWS (`aws/s3`) se puede usar como clave de KMS para operaciones entre cuentas cuando las entidades principales de carga y acceso de AWS Identity and Access Management (IAM) provienen de la misma Cuenta de AWS.
+ Use una clave administrada por el cliente si desea conceder acceso entre cuentas a sus objetos de S3. Puede configurar la política de una clave administrada por el cliente para permitir el acceso desde otra cuenta.
+ Si especifica una clave de KMS administrada por el cliente, le recomendamos que use un ARN totalmente cualificado de la clave de KMS. Si, en su lugar, utiliza un alias de clave de KMS, AWS KMS resolverá la clave dentro de la cuenta del solicitante. Esto puede dar como resultado datos cifrados con una clave de KMS que pertenece al solicitante y no al propietario del bucket.
+ Debe especificar una clave para la que el solicitante le haya concedido permiso `Encrypt`. Para obtener más información, consulte [Permitir a los usuarios de claves utilizar una clave de KMS para las operaciones criptográficas](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-users-crypto) en la *Guía para desarrolladores de AWS Key Management Service*.

Para obtener más información acerca de cuándo utilizar claves administradas por el cliente y las claves de KMS administradas por AWS, consulte [¿Debo usar una clave administrada por Clave administrada de AWS o una clave administrada por el cliente para cifrar mis objetos en Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-object-encryption-keys/)

### Flujo de trabajo de cifrado SSE-KMS
<a name="sse-kms-encryption-workflow"></a>

Si elige cifrar los datos mediante una Clave administrada de AWS o una clave administrada por el cliente, AWS KMS y Amazon S3 llevan a cabo las siguientes acciones de cifrado de sobre:

1. Amazon S3 solicita una [clave de datos](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#data-keys) en texto no cifrado y una copia de la clave cifrada con la clave de KMS especificada.

1. AWS KMS crea una clave de datos, la cifra con la clave de KMS y envía la clave de datos en texto no cifrado y la clave de datos cifrada a Amazon S3.

1. Amazon S3 cifra los datos con la clave de datos y elimina la clave en texto no cifrado de la memoria tan pronto como sea posible después de utilizarla.

1. Amazon S3 almacena la clave de datos cifrada como metadatos con el archivo de datos.

Cuando se solicita que se descifren los datos, Amazon S3 y AWS KMS realizan las siguientes acciones:

1. Amazon S3 envía la clave de datos cifrada a AWS KMS en una solicitud de `Decrypt`.

1. AWS KMS descifra la clave de datos mediante la misma clave de KMS y devuelve la clave de datos en texto no cifrado a Amazon S3.

1. Amazon S3 descifra los datos cifrados, mediante la clave de datos de texto no cifrado y elimina la clave de datos de texto no cifrado de la memoria tan pronto como sea posible.

**importante**  
Cuando utilice una AWS KMS key para el cifrado en el lado del servidor en Amazon S3, debe elegir una clave de cifrado de KMS simétrica. Amazon S3 solo admite claves de KMS de cifrado simétricas. Para obtener más información sobre estas claves, consulte [Symmetric encryption KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) (Claves de KMS de cifrado simétricas) en la *Guía para desarrolladores de AWS Key Management Service*.

### Auditoría del cifrado SSE-KMS
<a name="sse-kms-encryption-audit"></a>

Para identificar las solicitudes que especifican SSE-KMS, puede utilizar las métricas de **Todas las solicitudes de SSE-KMS** y **Porcentaje de todas las solicitudes de SSE-KMS** de SSE-KMS en las métricas de Lente de almacenamiento de Amazon S3. Lente de almacenamiento de S3 es una función de análisis de almacenamiento en la nube que puede utilizar para obtener visibilidad en toda la organización sobre el uso y la actividad del almacenamiento de objetos. También puede utilizar el recuento de buckets con SSE-KMS habilitado y el porcentaje de buckets con SSE-KMS habilitado para comprender el recuento de los buckets (SSE-KMS) para el [cifrado de buckets predeterminado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html). Para obtener más información, consulte [Evaluación de la actividad y el uso de almacenamiento con S3 Storage Lens](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html). Para obtener una lista completa de las métricas, consulte el [Glosario de métricas de Lente de almacenamiento de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_UsingKMSEncryption.html).

Para auditar el uso de las claves de AWS KMS para los datos cifrados con SSE-KMS, puede utilizar los registros de AWS CloudTrail. Puede obtener información sobre las [operaciones de cifrado](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations), como, por ejemplo, [https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-generatedatakey.html) y [https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html](https://docs.aws.amazon.com/kms/latest/developerguide/ct-decrypt.html). CloudTrail admite numerosos [valores de atributos](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_LookupEvents.html) para filtrar la búsqueda, incluidos el nombre del evento, el nombre de usuario y la fuente del evento. 

## Claves de bucket de Amazon S3
<a name="sse-kms-bucket-keys"></a>

Cuando configure el cifrado del lado del servidor mediante AWS KMS (SSE-KMS), puede configurar los buckets para que utilicen las claves de bucket de S3 para SSE-KMS. Usar una clave de nivel de bucket para SSE-KMS puede reducir los costos de solicitud de AWS KMS hasta en un 99 %, ya que disminuye el tráfico de solicitudes de Amazon S3 a AWS KMS. 

Cuando configura un bucket para utilizar claves de bucket de S3 para SSE-KMS en objetos nuevos, AWS KMS genera una clave de bucket que se utiliza en la creación de [claves de datos](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) únicas para los objetos en el bucket. Esta clave de bucket de S3 se utiliza durante un periodo limitado dentro de Amazon S3, lo que reduce aún más la necesidad de que Amazon S3 realice solicitudes a AWS KMS para completar las operaciones de cifrado. Para obtener más información sobre el uso de claves de bucket de S3, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md).

## Requisito de cifrado del lado del servidor
<a name="require-sse-kms"></a>

Para requerir el cifrado del lado del servidor para todos los objetos en un bucket de Amazon S3 particular, puede usar una política de bucket. Por ejemplo, la siguiente política de bucket deniega el permiso de carga de objeto (`s3:PutObject`) para todos, si la solicitud no incluye el encabezado `x-amz-server-side-encryption-aws-kms-key-id`, que solicita el cifrado del lado del servidor con SSE-KMS.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id":"PutObjectPolicy",
   "Statement":[{
         "Sid":"DenyObjectsThatAreNotSSEKMS",
         "Effect":"Deny",
         "Principal":"*",
         "Action":"s3:PutObject",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/*",
         "Condition":{
            "Null":{
               "s3:x-amz-server-side-encryption-aws-kms-key-id":"true"
            }
         }
      }
   ]
}
```

------

Para requerir que una AWS KMS key particular se utilice para cifrar los objetos en un bucket, puede utilizar la clave de condición `s3:x-amz-server-side-encryption-aws-kms-key-id`. Para especificar la clave de KMS, debe utilizar un nombre de recurso de Amazon (ARN) que tenga el formato `arn:aws:kms:region:acct-id:key/key-id`. AWS Identity and Access Management no valida si existe la cadena para `s3:x-amz-server-side-encryption-aws-kms-key-id`. 

**nota**  
Al cargar un objeto, puede especificar la clave de KMS con el encabezado `x-amz-server-side-encryption-aws-kms-key-id` o confiar en la [configuración de cifrado de bucket predeterminada](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html). Si su solicitud PutObject especifica `aws:kms` en el encabezado `x-amz-server-side-encryption`, pero no especifica el encabezado `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 asumirá que quiere usar la Clave administrada de AWS. En cualquier caso, el ID de la clave de AWS KMS que utiliza Amazon S3 para el cifrado de objetos debe coincidir con el ID de la clave de AWS KMS en la política; de lo contrario, Amazon S3 denegará la solicitud.

Para obtener una lista completa de las claves de condición específicas de Amazon S3, consulte [Condition keys for Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) en la *Referencia de autorizaciones de servicio*.

## Contexto de cifrado
<a name="encryption-context"></a>

Un *contexto de cifrado* es un conjunto definido de pares clave-valor que contienen información contextual adicional sobre los datos. El contexto de cifrado no está cifrado. Cuando se especifica un contexto de cifrado para una operación de cifrado, Amazon S3 debe especificar el mismo contexto de cifrado que para la operación de descifrado. De lo contrario, se produce un error en el descifrado. AWS KMS utiliza el contexto de cifrado como [datos autenticados adicionales](https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/concepts.html#digital-sigs) (AAD) para admitir el [cifrado autenticado](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#cryptographic-operations#digital-sigs). Para obtener más información sobre el contexto de cifrado, consulte [Contexto de cifrado](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) en la *Guía para desarrolladores de AWS Key Management Service*. 

De forma predeterminada, Amazon S3 utiliza el nombre de recurso de Amazon (ARN) del objeto o bucket como par del contexto de cifrado: 
+ **Si utiliza SSE-KMS sin activar una clave de bucket de S3**, se utiliza el ARN del objeto como contexto de cifrado.

  ```
  arn:aws:s3:::object_ARN
  ```
+ **Si utiliza SSE-KMS y activa una clave de bucket de S3**, se utiliza el ARN del bucket como contexto de cifrado. Para obtener más información sobre las claves de bucket de S3, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md).

  ```
  arn:aws:s3:::bucket_ARN
  ```

Si lo desea, puede proporcionar un par de contexto de cifrado adicional mediante el encabezado `x-amz-server-side-encryption-context` en una solicitud [s3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#API_PutObject_RequestSyntax). No obstante, dado que el contexto de cifrado no está cifrado, asegúrese de no incluir información confidencial. Amazon S3 almacena este par de claves adicional junto con el contexto de cifrado predeterminado. Cuando procesa la solicitud `PUT`, Amazon S3 agrega el contexto de cifrado predeterminado de `aws:s3:arn` al que se proporcione. 

Puede utilizar el contexto de cifrado para identificar y clasificar las operaciones criptográficas. También puede utilizar el valor ARN del contexto de cifrado predeterminado para realizar un seguimiento de las solicitudes relevantes en AWS CloudTrail consultando qué ARN de Amazon S3 se usó con qué clave de cifrado.

En el campo `requestParameters` de un archivo de registro de CloudTrail, el contexto de cifrado es similar al siguiente: 

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1/file_name"
}
```

Cuando utiliza SSE-KMS con la característica opcional de claves de Bucket de S3, el valor del contexto de cifrado es el ARN del bucket.

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
}
```

## Envío de solicitudes para objetos cifrados de AWS KMS
<a name="aws-signature-version-4-sse-kms"></a>

**importante**  
Todas las solicitudes `GET` y `PUT` para los objetos cifrados de AWS KMS deben crearse mediante capa de conexión segura (SSL) o seguridad de la capa de transporte (TLS). Las solicitudes también deben firmarse con credenciales válidas, como AWS Signature Version 4 (o AWS Signature Version 2).

AWS Signature Version 4 es el proceso de agregar información de autenticación a las solicitudes de AWS enviadas por HTTP. Por seguridad, la mayoría de las solicitudes de AWS se firman con una clave de acceso, que se compone de un ID de clave de acceso y una clave de acceso secreta. Estas dos claves comúnmente se denominan credenciales de seguridad. Para obtener más información, consulte [Autenticación de solicitudes (AWS Signature Version 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) y [Proceso de firma de Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html).

**importante**  
Si el objeto utiliza SSE-KMS, no envíe encabezados de solicitud de cifrado para solicitudes `GET` y `HEAD` . De lo contrario, aparecerá un error HTTP 400 Bad Request (Solicitud errónea).

**Topics**
+ [AWS KMS keys](#aws-managed-customer-managed-keys)
+ [Claves de bucket de Amazon S3](#sse-kms-bucket-keys)
+ [Requisito de cifrado del lado del servidor](#require-sse-kms)
+ [Contexto de cifrado](#encryption-context)
+ [Envío de solicitudes para objetos cifrados de AWS KMS](#aws-signature-version-4-sse-kms)
+ [Especificación del cifrado del lado del servidor con AWS KMS (SSE-KMS)](specifying-kms-encryption.md)
+ [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md)

# Especificación del cifrado del lado del servidor con AWS KMS (SSE-KMS)
<a name="specifying-kms-encryption"></a>

Todos los buckets de Amazon S3 tienen el cifrado configurado de forma predeterminada y todos los objetos nuevos cargados en un bucket de S3 se cifran automáticamente en reposo. El cifrado del lado del servidor con claves administradas de Amazon S3 (SSE-S3) es la configuración de cifrado predeterminada para cada bucket de Amazon S3. Para usar otro tipo de cifrado, puede especificar el tipo de cifrado del servidor que se utilizará en las solicitudes `PUT` de S3 o puede actualizar la configuración de cifrado predeterminada en el bucket de destino. 

Si desea especificar un tipo de cifrado diferente en sus solicitudes `PUT`, puede utilizar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) o el cifrado del servidor con claves proporcionadas por el cliente (SSE-C). Si desea establecer una configuración de cifrado predeterminada diferente en el bucket de destino, puede usar SSE-KMS o DSSE-KMS.

Para obtener más información sobre cómo cambiar la configuración de cifrado predeterminada de los buckets de uso general, consulte [Configuración del cifrado predeterminado](default-bucket-encryption.md). 

Al cambiar la configuración de cifrado predeterminada del bucket a SSE-KMS, no se modifica el tipo de cifrado de los objetos de Amazon S3 existentes en el bucket. Para cambiar el tipo de cifrado de los objetos preexistentes tras actualizar la configuración de cifrado predeterminada a SSE-KMS, puede utilizar Operaciones por lotes de Amazon S3. A Operaciones por lotes de S3 se proporciona una lista de objetos y Operaciones por lotes llama a la operación de la API correspondiente. Puede utilizar la acción [Copia de objetos](batch-ops-copy-object.md) para copiar objetos existentes, que los vuelve a escribir en el mismo bucket que los objetos cifrados con SSE-KMS. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md) y la publicación [How to retroactively encrypt existing objects in Amazon S3 using S3 Inventory, Amazon Athena, and S3 Batch Operations](https://aws.amazon.com/blogs/security/how-to-retroactively-encrypt-existing-objects-in-amazon-s3-using-s3-inventory-amazon-athena-and-s3-batch-operations/) de *AWS Storage Blog*. 

Puede especificar SSE-KMS mediante el uso de la consola de Amazon S3, las operaciones de la API de REST, los SDK de AWS y la AWS Command Line Interface (AWS CLI). Para obtener más información, consulte los siguientes temas. 

**nota**  
Puede utilizar AWS KMS keys multirregionales en Amazon S3. No obstante, Amazon S3 trata las claves multirregionales como si fueran claves de una sola región y no utiliza las características multirregionales de la clave. Para obtener más información, consulte [ Using multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) en la *AWS Key Management Service Developer Guide*.

**nota**  
Si quiere utilizar una clave de KMS propiedad de una cuenta diferente, primero debe tener permiso para utilizar la clave. Para obtener más información sobre los permisos entre cuentas para las claves de KMS, consulte [Crear claves de KMS que otras cuentas puedan utilizar](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) en la *Guía para desarrolladores de AWS Key Management Service*. 

## Uso de la consola de S3
<a name="add-object-encryption-kms"></a>

En este tema se describe cómo configurar o cambiar el tipo de cifrado de un objeto para utilizar el cifrado del lado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) mediante la consola de Amazon S3.

**nota**  
Puede cambiar el cifrado de un objeto si el objeto es menor de 5 GB. Si el objeto es mayor de 5 GB, debe usar la [AWS CLI](mpu-upload-object.md#UsingCLImpUpload) o los [AWS SDK](CopyingObjectsMPUapi.md) para cambiar el cifrado de un objeto.
Para obtener una lista de los permisos adicionales necesarios para cambiar el cifrado de un objeto, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md). Para ver políticas de ejemplo que conceden estos permisos, consulte [Ejemplos de políticas basadas en identidad para Amazon S3](example-policies-s3.md).
Si cambia el cifrado de un objeto, se crea un nuevo objeto para reemplazar el antiguo. Si el control de versiones de S3 está activado, se crea una nueva versión del objeto y el objeto existente se convierte en una versión anterior. El rol que cambia la propiedad también se convierte en el propietario del nuevo objeto o (versión del objeto). 

**Para añadir o cambiar el cifrado de un objeto**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación, elija **Buckets** y, a continuación, la pestaña **Buckets de uso general**. Desplácese hasta el bucket o la carpeta de Amazon S3 que contiene los objetos que desea cambiar.

1. Seleccione la casilla de verificación de los objetos que desea cambiar.

1. En el menú **Acciones**, elija **Editar cifrado del servidor** en la lista de opciones que aparece.

1. Desplácese hasta la sección **Cifrado del servidor**.

1. En **Configuración del cifrado**, elija **Usar la configuración del bucket para el cifrado predeterminado** o **Anular la configuración del bucket para el cifrado predeterminado**.
**importante**  
Si utiliza la opción de SSE-KMS para la configuración de cifrado predeterminado, se le aplicarán las cuotas de solicitudes por segundo (RPS) de AWS KMS. Para obtener más información acerca de las cuotas de AWS KMS y cómo solicitar un aumento de cuota, consulte [Cuotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) en la *Guía para desarrolladores de AWS Key Management Service*. 

1. Si elige **Anular la configuración del bucket para el cifrado predeterminado**, debe configurar los siguientes ajustes de cifrado.

   1. En **Tipo de cifrado**, seleccione **Cifrado del servidor con claves de AWS Key Management Service (SSE-KMS**).

   1. En **Clave de AWS KMS**, siga una de las siguientes opciones para elegir su clave de KMS:
      + Para seleccionar en una lista de claves de KMS disponibles, marque **Elija entre sus claves de AWS KMS keys** y seleccione su **clave de KMS** en la lista de claves disponibles.

        En esta lista aparecen tanto la Clave administrada de AWS (`aws/s3`) como las claves administradas por el cliente. Para obtener más información acerca de las claves administradas por el cliente, consulte [Claves de cliente y claves de AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) en la *Guía para desarrolladores de AWS Key Management Service*.
      + Para introducir el ARN de la clave de KMS, elija **Introducir el ARN de la clave de AWS KMS key** e introduzca el ARN de la clave de KMS en el campo que aparece. 
      + Para crear una nueva clave administrada por el cliente en la consola de AWS KMS, elija **Crear una clave de KMS**.

        Para obtener más información acerca de cómo crear una AWS KMS key, consulte [Creación de claves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) en la *AWS Key Management Service Guía para desarrolladores*.
**importante**  
Solo puede utilizar las claves de KMS que estén disponibles en la misma Región de AWS del bucket. La consola de Amazon S3 solo muestra las primeras 100 claves de KMS de la misma región del bucket. Para utilizar una clave de KMS que no aparezca en la lista, debe introducir el ARN de la clave de KMS. Si desea utilizar una clave de KMS propiedad de una cuenta de diferente, primero debe tener permiso para utilizar la clave y, después, debe introducir el ARN de la clave de KMS.  
Amazon S3 admite solo claves de KMS de cifrado simétricas y no claves de KMS asimétricas. Para obtener más información, consulte [Identificación de claves de KMS simétricas y asimétricas](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) en la *Guía para desarrolladores de AWS Key Management Service*.

1. En **Configuración de copia adicional**, elija si desea **Copiar la configuración de origen**, **No especificar la configuración** o **Especificar la configuración**. **Copiar la configuración de origen** es la opción predeterminada. Si solo desea copiar el objeto sin los atributos de configuración de origen, elija **No especificar la configuración**. Elija **Especificar la configuración** para especificar la configuración de la clase de almacenamiento, las ACL, las etiquetas de objetos, los metadatos, el cifrado del servidor y las sumas de comprobación adicionales.

1. Elija **Save changes**.

**nota**  
En esta acción se aplica el cifrado a todos los objetos especificados. Al cifrar carpetas, espere a que finalice la operación de guardado para agregar nuevos objetos a la carpeta.

## Uso de la API de REST
<a name="KMSUsingRESTAPI"></a>

Cuando cree un objeto, es decir, cuando cargue un objeto nuevo o copie uno existente, podrá especificar el uso del cifrado del lado del servidor con AWS KMS keys (SSE-KMS) para cifrar los datos. Para ello, añada el encabezado `x-amz-server-side-encryption` a la solicitud. Configure el valor del encabezado para el algoritmo de cifrado `aws:kms`. Amazon S3 confirma que su objeto fue guardado con SSE-KMS al devolver el encabezado de respuesta `x-amz-server-side-encryption`. 

Si especifica el encabezado `x-amz-server-side-encryption` con un valor de `aws:kms`, también puede utilizar los siguientes encabezados de solicitud:
+ `x-amz-server-side-encryption-aws-kms-key-id`
+ `x-amz-server-side-encryption-context`
+ `x-amz-server-side-encryption-bucket-key-enabled`

**Topics**
+ [Las operaciones de la API de REST de Amazon S3 que admiten SSE-KMS](#sse-request-headers-kms)
+ [Contexto de cifrado (`x-amz-server-side-encryption-context`)](#s3-kms-encryption-context)
+ [ID de clave de AWS KMS (`x-amz-server-side-encryption-aws-kms-key-id`)](#s3-kms-key-id-api)
+ [Claves de bucket de S3 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)](#bucket-key-api)

### Las operaciones de la API de REST de Amazon S3 que admiten SSE-KMS
<a name="sse-request-headers-kms"></a>

Las siguientes operaciones de la API de REST aceptan los encabezados de solicitud `x-amz-server-side-encryption`, `x-amz-server-side-encryption-aws-kms-key-id` y `x-amz-server-side-encryption-context`.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html): cuando cargue datos mediante la operación de la API `PUT`, puede especificar estos encabezados de solicitud. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) – al copiar un objeto, tiene un objeto de origen y otro de destino. Al pasar encabezados SSE-KMS con la operación `CopyObject`, estos se aplican solo al objeto de destino. Cuando copie un objeto existente, independientemente de si el objeto de origen está cifrado o no, el objeto de destino no estará cifrado, a no ser que solicite explícitamente el cifrado del lado en el servidor.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): cuando utilice una operación `POST` para cargar un objeto, en vez de proporcionar los encabezados de solicitud, debe proporcionar la misma información en los campos del formulario.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) – cuando cargue objetos grandes mediante la operación de la API de carga multiparte, puede especificar estos encabezados. Especifique estos encabezados en la solicitud de `CreateMultipartUpload`.

Los encabezados de respuesta de las siguientes operaciones de la API de REST devuelven el encabezado `x-amz-server-side-encryption` cuando un objeto se almacena con el cifrado del lado del servidor.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**importante**  
Todas las solicitudes `GET` y `PUT` para un objeto protegido por AWS KMS producirán un error si no realiza dichas solicitudes con la capa de sockets seguros (SSL), la seguridad de la capa de transporte (TLS) o Signature Version 4.
Si su objeto utiliza SSE-KMS, no envíe encabezados de solicitud de cifrado para solicitudes `GET` y `HEAD` u obtendrá un error HTTP 400 BadRequest.

### Contexto de cifrado (`x-amz-server-side-encryption-context`)
<a name="s3-kms-encryption-context"></a>

Si especifica `x-amz-server-side-encryption:aws:kms`, la API de Amazon S3 admitirá un contexto de cifrado con el encabezado `x-amz-server-side-encryption-context`. Un contexto de cifrado es un conjunto definido de pares clave-valor que contienen información contextual adicional sobre los datos.

Amazon S3 utiliza automáticamente el nombre de recurso de Amazon (ARN) del objeto o bucket como par del contexto de cifrado. Si utiliza SSE-KMS sin habilitar una clave de bucket de S3, utilice el ARN del objeto como contexto de cifrado, por ejemplo, `arn:aws:s3:::object_ARN`. Sin embargo, si utiliza SSE-KMS y habilita una clave de bucket de S3, utilice el ARN del bucket como contexto de cifrado, por ejemplo, `arn:aws:s3:::bucket_ARN`. 

Si lo desea, puede proporcionar un par de contexto de cifrado adicional mediante el encabezado `x-amz-server-side-encryption-context`. No obstante, dado que el contexto de cifrado no está cifrado, asegúrese de no incluir información confidencial. Amazon S3 almacena este par de claves adicional junto con el contexto de cifrado predeterminado.

Para obtener información sobre el contexto de cifrado en Amazon S3, consulte [Contexto de cifrado](UsingKMSEncryption.md#encryption-context). Para obtener información general sobre el contexto de cifrado, consulte [Conceptos de AWS Key Management Service: contexto de cifrado](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) en la *Guía para desarrolladores de AWS Key Management Service*. 

### ID de clave de AWS KMS (`x-amz-server-side-encryption-aws-kms-key-id`)
<a name="s3-kms-key-id-api"></a>

Puede utilizar el encabezado `x-amz-server-side-encryption-aws-kms-key-id` para especificar el ID de la clave administrada por el cliente utilizado para proteger los datos. Si especifica el encabezado `x-amz-server-side-encryption:aws:kms`, pero no proporciona el encabezado `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 utiliza la Clave administrada de AWS (`aws/s3`) para proteger los datos. Si desea utilizar una clave administrada por el cliente, debe proporcionar el encabezado `x-amz-server-side-encryption-aws-kms-key-id` de dicha clave.

**importante**  
Cuando utilice una AWS KMS key para el cifrado en el lado del servidor en Amazon S3, debe elegir una clave de cifrado de KMS simétrica. Amazon S3 solo admite claves de KMS de cifrado simétricas. Para obtener más información sobre estas claves, consulte [Symmetric encryption KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) (Claves de KMS de cifrado simétricas) en la *Guía para desarrolladores de AWS Key Management Service*.

### Claves de bucket de S3 (`x-amz-server-side-encryption-aws-bucket-key-enabled`)
<a name="bucket-key-api"></a>

Puede utilizar el encabezado de solicitud `x-amz-server-side-encryption-aws-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 en el nivel del objeto. Las claves de bucket de S3 reducen los costos de la solicitud de AWS KMS al disminuir el tráfico de solicitudes de Amazon S3 a AWS KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md).

Si especifica el encabezado `x-amz-server-side-encryption:aws:kms`, pero no proporciona el encabezado `x-amz-server-side-encryption-aws-bucket-key-enabled`, el objeto utiliza el ajuste de la clave de bucket de S3 para que el bucket de destino cifre el objeto. Para obtener más información, consulte [Configuración de una clave de bucket de S3 en el nivel de objeto](configuring-bucket-key-object.md).

## Mediante AWS CLI
<a name="KMSUsingCLI"></a>

Para utilizar los siguientes comandos de ejemplo de la AWS CLI, sustituya `user input placeholders` con su información.

Cuando se carga un objeto nuevo o se copia uno existente, puede especificar el uso del cifrado del lado del servidor con claves de AWS KMS para cifrar los datos. Para ello, añada el encabezado `--server-side-encryption aws:kms` a la solicitud. Utilice `--ssekms-key-id example-key-id` para agregar la [clave de AWS KMS administrada de cliente](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk) que ha creado. Si especifica `--server-side-encryption aws:kms`, pero no proporciona un ID de clave de AWS KMS, Amazon S3 utilizará una clave administrada de AWS.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms --ssekms-key-id example-key-id --body filepath
```

Además, puede habilitar o desactivar las claves de bucket de Amazon S3 en las operaciones PUT o COPY agregando `--bucket-key-enabled` o `--no-bucket-key-enabled`. Las claves de bucket de Amazon S3 pueden reducir los costos de solicitud de AWS KMS al disminuir el tráfico de solicitudes de Amazon S3 a AWS KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/bucket-key.html).

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

Puede cifrar un objeto no cifrado para usar SSE-KMS volviendo a copiar el objeto en su lugar.

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --body filepath --bucket amzn-s3-demo-bucket --key example-object-key --sse aws:kms --sse-kms-key-id example-key-id --body filepath
```

## Uso de los AWS SDK
<a name="kms-using-sdks"></a>

Al utilizar los SDK de AWS, puede solicitar a Amazon S3 que utilice AWS KMS keys para el cifrado del lado del servidor. En los ejemplos siguientes se muestra cómo usar SSE-KMS con los AWS SDK para Java y .NET. Para obtener información acerca de otros SDK, consulte [Código de muestra y bibliotecas](https://aws.amazon.com/code) en el Centro de desarrolladores de AWS.

**importante**  
Cuando utilice una AWS KMS key para el cifrado en el lado del servidor en Amazon S3, debe elegir una clave de cifrado de KMS simétrica. Amazon S3 solo admite claves de KMS de cifrado simétricas. Para obtener más información sobre estas claves, consulte [Symmetric encryption KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) (Claves de KMS de cifrado simétricas) en la *Guía para desarrolladores de AWS Key Management Service*.

### `CopyObject`Operación de
<a name="kms-copy-operation"></a>

Si copia objetos, agrega las mismas propiedades de la solicitud (`ServerSideEncryptionMethod` y `ServerSideEncryptionKeyManagementServiceKeyId`) para solicitar a Amazon S3 que use una AWS KMS key. Para obtener más información acerca de la copia de objetos, consulte [Copia, traslado y cambio de nombre de objetos](copy-object.md). 

### `PUT`Operación de
<a name="kms-put-operation"></a>

------
#### [ Java ]

Si carga un objeto mediante el AWS SDK para Java, puede solicitar que Amazon S3 utilice una AWS KMS key si agrega la propiedad `SSEAwsKeyManagementParams`, tal y como se muestra en la siguiente solicitud:

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams());
```

En este caso, Amazon S3 utiliza la Clave administrada de AWS (`aws/s3`). Para obtener más información, consulte [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](UsingKMSEncryption.md). Opcionalmente, puede crear una clave de KMS de cifrado simétrica y especificarla en la solicitud, tal y como se muestra en el siguiente ejemplo:

```
PutObjectRequest putRequest = new PutObjectRequest(bucketName,
   keyName, file).withSSEAwsKeyManagementParams(new SSEAwsKeyManagementParams(keyID));
```

Para obtener más información acerca de la creación de claves administradas por el cliente, consulte [Programación de la API de AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html) en la *Guía para desarrolladores de AWS Key Management Service*.

Para ver ejemplos de código funcional sobre cómo cargar un objeto, consulte los temas siguientes. Para utilizar estos ejemplos, tiene que actualizar estos ejemplos de código y facilitar la información de cifrado, tal como se muestra en el fragmento de código anterior.
+ Para cargar un objeto en una única operación, consulte [Carga de objetos](upload-objects.md).
+ Para las cargas multiparte que utilizan las operaciones de API de carga multiparte de nivel alto o de nivel bajo, consulte [Carga de un objeto con la carga multiparte](mpu-upload-object.md). 

------
#### [ .NET ]

Si carga un objeto mediante el AWS SDK para .NET, puede solicitar que Amazon S3 utilice una AWS KMS key si agrega la propiedad `ServerSideEncryptionMethod`, tal y como se muestra en la siguiente solicitud:

```
PutObjectRequest putRequest = new PutObjectRequest
 {
     BucketName = amzn-s3-demo-bucket,
     Key = keyName,
     // other properties
     ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
 };
```

En este caso, Amazon S3 utiliza la Clave administrada de AWS. Para obtener más información, consulte [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](UsingKMSEncryption.md). Opcionalmente, puede crear su propia clave administrada por el cliente de cifrado simétrica y especificarla en la solicitud, tal y como se muestra en el siguiente ejemplo:

```
PutObjectRequest putRequest1 = new PutObjectRequest
{
  BucketName = amzn-s3-demo-bucket,
  Key = keyName,
  // other properties
  ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS,
  ServerSideEncryptionKeyManagementServiceKeyId = keyId
};
```

Para obtener más información acerca de la creación de claves administradas por el cliente, consulte [Programación de la API de AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/programming-top.html) en la *Guía para desarrolladores de AWS Key Management Service*. 

Para ver ejemplos de código funcional sobre cómo cargar un objeto, consulte los temas siguientes. Para utilizar estos ejemplos, tiene que actualizar estos ejemplos de código y facilitar la información de cifrado, tal como se muestra en el fragmento de código anterior.
+ Para cargar un objeto en una única operación, consulte [Carga de objetos](upload-objects.md).
+ Para las cargas multiparte que utilizan las operaciones de API de carga multiparte de nivel alto o de nivel bajo, consulte [Carga de un objeto con la carga multiparte](mpu-upload-object.md). 

------

### URL prefirmadas
<a name="kms-presigned-urls"></a>

------
#### [ Java ]

Si crea una dirección URL prefirmada para un objeto cifrado con una AWS KMS key, es necesario que se especifique explícitamente Signature Version 4, tal y como se muestra en el siguiente ejemplo:

```
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setSignerOverride("AWSS3V4SignerType");
AmazonS3Client s3client = new AmazonS3Client(
        new ProfileCredentialsProvider(), clientConfiguration);
...
```

Para ver un ejemplo del código, consulte . [Uso compartido de objetos con URL prefirmadas](ShareObjectPreSignedURL.md). 

------
#### [ .NET ]

Si crea una dirección URL prefirmada para un objeto cifrado con una AWS KMS key, es necesario que se especifique explícitamente Signature Version 4, tal y como se muestra en el siguiente ejemplo:

```
AWSConfigs.S3Config.UseSignatureVersion4 = true;
```

Para ver un ejemplo del código, consulte [Uso compartido de objetos con URL prefirmadas](ShareObjectPreSignedURL.md).

------

# Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3
<a name="bucket-key"></a>

Las claves de bucket de Amazon S3 reducen el costo del cifrado del lado del servidor de Amazon S3 con las claves de AWS Key Management Service (AWS KMS) (SSE-KMS). Usar una clave de nivel de bucket para SSE-KMS puede reducir los costos de la solicitud de AWS KMS hasta en un 99 %, ya que disminuye el tráfico de solicitudes de Amazon S3 a AWS KMS. Con unos pocos clics en la Consola de administración de AWS y sin modificar sus aplicaciones de cliente, puede configurar su bucket de modo que utilice una clave de bucket de S3 para el cifrado SSE-KMS en los objetos nuevos.

**nota**  
Las claves de bucket de S3 no son compatibles con el cifrado de doble capa del servidor con claves de AWS Key Management Service (AWS KMS) (DSSE-KMS).

## Claves de bucket de S3 para SSE-KMS
<a name="bucket-key-overview"></a>

Las cargas de trabajo que acceden a millones o miles de millones de objetos cifrados con SSE-KMS pueden generar grandes volúmenes de solicitudes para AWS KMS. Cuando utiliza SSE-KMS para proteger los datos sin una clave de bucket de S3, Amazon S3 recurre a AWS KMS para utilizar una [clave de datos](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys) individual por cada objeto. En ese caso, Amazon S3 realiza una llamada a AWS KMS cada vez que se realiza una solicitud respecto de un objeto con cifrado de KMS. Para obtener información sobre cómo funciona SSE-KMS, consulte [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](UsingKMSEncryption.md). 

Cuando configura el bucket para utilizar una clave de bucket de S3 para SSE-KMS, AWS genera una clave en el nivel de bucket de corta duración desde AWS KMS y, a continuación, la mantiene temporalmente en S3. Esta clave en el nivel de bucket creará claves de datos para objetos nuevos durante el ciclo de vida. Las claves de bucket de S3 se utilizan durante un periodo de tiempo limitado dentro de Amazon S3, lo que reduce la necesidad de que S3 realice solicitudes a AWS KMS para completar las operaciones de cifrado. De esta manera, se reduce el tráfico de S3 a AWS KMS, lo que le permite acceder a objetos cifrados con AWS KMS en Amazon S3 a una fracción del costo anterior.

Las claves únicas en el nivel de bucket se obtienen al menos una vez por solicitante para garantizar que el acceso del solicitante a la clave se capture en un evento de AWS KMS CloudTrail. Amazon S3 trata a los intermediarios como solicitantes diferentes cuando utilizan roles o cuentas diferentes, o el mismo rol con distintas políticas de alcance. Los ahorros en las solicitudes de AWS KMS reflejan el número de solicitantes, los patrones de solicitudes y la antigüedad relativa de los objetos solicitados. Por ejemplo, reducir el número de solicitantes, solicitar varios objetos en un periodo de tiempo limitado y cifrarlos con la misma clave de nivel de bucket sigue generando mayores ahorros.

**nota**  
El uso de claves de bucket de S3 le permite ahorrar costos de solicitud de AWS KMS al reducir las solicitudes a AWS KMS para operaciones `Encrypt`, `GenerateDataKey` y `Decrypt` mediante el uso de una clave de nivel de bucket. Por diseño, las solicitudes posteriores que aprovechan esta clave de nivel de bucket no generan solicitudes de API de AWS KMS ni validan el acceso con respecto a la política de claves de AWS KMS.

Cuando se configura una clave de bucket de S3, los objetos que ya están en el bucket no utiliza la clave de bucket de S3. Para configurar una clave de bucket de S3 para los objetos existentes, puede utilizar una operación `CopyObject`. Para obtener más información, consulte [Configuración de una clave de bucket de S3 en el nivel de objeto](configuring-bucket-key-object.md).

Amazon S3 solo compartirá una clave de Bucket de S3 para los objetos que se cifren con la misma AWS KMS key. Las claves de bucket de S3 son compatibles con las claves de KMS creadas por AWS KMS, el [material de claves importado](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html) y el [material de claves respaldado por almacenes de claves personalizados](https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).

![\[Diagrama en el que se muestra cómo AWS KMS genera una clave de bucket que crea claves de datos para objetos de un bucket.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/S3-Bucket-Keys.png)


## Configuración de claves de bucket de S3
<a name="configure-bucket-key"></a>

Es posible configurar su bucket para utilizar una clave de bucket de S3 para SSE-KMS en objetos nuevos a través de la consola de Amazon S3, los SDK de AWS, la AWS CLI o la API de REST. Con las claves de bucket de S3 habilitadas en el bucket, los objetos cargados con una clave de SSE-KMS especificada diferente utilizarán sus propias claves de bucket de S3. Independientemente de la configuración de la clave de bucket de S3, puede incluir el encabezado `x-amz-server-side-encryption-bucket-key-enabled` con un valor `true` o `false` en la solicitud para invalidar la configuración del bucket.

Antes de configurar el bucket para utilizar una clave de bucket de S3, consulte [Cambios para tener en cuenta antes de habilitar una clave de bucket de S3](#bucket-key-changes). 

### Configuración de una clave de bucket de S3 mediante la consola de Amazon S3
<a name="configure-bucket-key-console"></a>

Al crear un nuevo bucket, puede configurarlo para utilizar una clave de bucket de S3 para SSE-KMS en objetos nuevos. También puede configurar un bucket existente para utilizar una clave de bucket de S3 para SSE-KMS en objetos nuevos al actualizar las propiedades del bucket. 

Para obtener más información, consulte [Configuración del bucket para utilizar una clave de bucket de S3 con SSE-KMS para objetos nuevos](configuring-bucket-key.md).

### Compatibilidad con la API de REST, la AWS CLI y el SDK de AWS para claves de buckets de S3
<a name="configure-bucket-key-programmatic"></a>

Puede emplear la API de REST, la AWS CLI o el SDK de AWS a fin de configurar el bucket de manera que utilice una clave de bucket de S3 para SSE-KMS en los objetos nuevos. También puede habilitar una clave de bucket de S3 en el nivel de objeto.

Para obtener más información, consulte los siguientes temas: 
+ [Configuración de una clave de bucket de S3 en el nivel de objeto](configuring-bucket-key-object.md)
+ [Configuración del bucket para utilizar una clave de bucket de S3 con SSE-KMS para objetos nuevos](configuring-bucket-key.md)

Las siguientes operaciones de la API admiten claves de bucket de S3 para SSE-KMS:
+ [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
  + `ServerSideEncryptionRule` acepta el `BucketKeyEnabled` parámetro para habilitar y deshabilitar una clave de bucket de S3.
+ [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
  + `ServerSideEncryptionRule` devuelve la configuración de `BucketKeyEnabled`.
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html), [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), [CreateMutlipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) y [PostObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
  + El encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled` habilita o deshabilita una clave de bucket de S3 en el nivel de objeto.
+ [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html), [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html), [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)y [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
  + El encabezado de respuesta `x-amz-server-side-encryption-bucket-key-enabled` indica si una clave de bucket de S3 está habilitada o deshabilitada para un objeto.

### Trabajo con CloudFormation
<a name="configure-bucket-key-cfn"></a>

En CloudFormation, el recurso `AWS::S3::Bucket` contiene una propiedad de cifrado denominada `BucketKeyEnabled` que usted puede utilizar para activar o desactivar una clave de bucket de S3. 

Para obtener más información, consulte [Uso de CloudFormation](configuring-bucket-key.md#enable-bucket-key-cloudformation).

## Cambios para tener en cuenta antes de habilitar una clave de bucket de S3
<a name="bucket-key-changes"></a>

Antes de habilitar una clave de bucket de S3, tenga en cuenta los siguientes cambios relacionados:

### Políticas de IAM o de claves de AWS KMS
<a name="bucket-key-policies"></a>

Si sus políticas de AWS Identity and Access Management (IAM) o sus políticas de clave de AWS KMS existentes utilizan el nombre de recurso de Amazon (ARN) del objeto como contexto de cifrado para ajustar o limitar el acceso a su clave de KMS, estas políticas no funcionarán con una clave de bucket de S3. Las claves de bucket de S3 utilizan el ARN del bucket como contexto de cifrado. Antes de habilitar una clave de bucket de S3, actualice las políticas de IAM o las políticas de clave de AWS KMS de manera que utilicen el ARN del bucket como contexto de cifrado.

Para obtener más información sobre el contexto de cifrado y las claves de bucket de S3, consulte [Contexto de cifrado](UsingKMSEncryption.md#encryption-context).

### Eventos de CloudTrail para AWS KMS
<a name="bucket-key-cloudtrail"></a>

Después de habilitar una clave de bucket de S3, los eventos de AWS KMS CloudTrail registran el ARN del bucket en lugar del ARN del objeto. Además, en sus registros verá menos eventos de KMS CloudTrail para objetos SSE-KMS. Dado que el material clave tiene un tiempo limitado en Amazon S3, se realizan menos solicitudes a AWS KMS.

## Uso de una clave de bucket de S3 con replicación
<a name="bucket-key-replication"></a>

Puede usar claves de bucket de S3 con replicación en la misma región (SRR) y replicación entre regiones (CRR).

Cuando Amazon S3 replica un objeto cifrado, generalmente conserva la configuración de cifrado del objeto replicado en el bucket de destino. Sin embargo, si el objeto de origen no está cifrado y el bucket de destino utiliza el cifrado predeterminado o una clave de bucket de S3, Amazon S3 cifra el objeto con la configuración del bucket de destino. 

Los siguientes ejemplos ilustran cómo funciona una clave de bucket de S3 con la replicación. Para obtener más información, consulte [Replicación de objetos cifrados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Example Ejemplo 1: el objeto de origen utiliza claves de bucket de S3; el bucket de destino utiliza el cifrado predeterminado**  
Si el objeto de origen utiliza una clave de bucket de S3 pero el bucket de destino utiliza el cifrado predeterminado con SSE-KMS, el objeto de réplica mantiene su configuración de cifrado de clave de bucket de S3 en el bucket de destino. El bucket de destino sigue utilizando el cifrado predeterminado con SSE-KMS.   


**Example Ejemplo 2: el objeto de origen no está cifrado; el bucket de destino utiliza una clave de bucket de S3 con SSE-KMS**  
Si el objeto de origen no está cifrado y el bucket de destino utiliza una clave de bucket de S3 con SSE-KMS, el objeto de réplica se cifra con una clave de bucket de S3 que utiliza SSE-KMS en el bucket de destino. Esto hace que el elemento `ETag` del objeto de origen sea diferente al elemento `ETag` del objeto de réplica. Debe actualizar las aplicaciones que utilicen el elemento `ETag` para incluir esta diferencia.

## Trabajar con claves de bucket de S3
<a name="using-bucket-key"></a>

Para obtener más información sobre cómo habilitar claves de bucket de S3 y trabajar con ellas, consulte las siguientes secciones:
+ [Configuración del bucket para utilizar una clave de bucket de S3 con SSE-KMS para objetos nuevos](configuring-bucket-key.md)
+ [Configuración de una clave de bucket de S3 en el nivel de objeto](configuring-bucket-key-object.md)
+ [Visualización de la configuración de una clave de bucket de S3](viewing-bucket-key-settings.md)

# Configuración del bucket para utilizar una clave de bucket de S3 con SSE-KMS para objetos nuevos
<a name="configuring-bucket-key"></a>

Cuando configura el cifrado del lado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), puede configurar el bucket para utilizar una clave de bucket de S3 para SSE-KMS en los objetos nuevos. Las claves de bucket de S3 reducen el tráfico de solicitudes de Amazon S3 a AWS KMS, así como el costo de SSE-KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md).

Puede configurar su bucket de manera que utilice una clave de bucket de S3 para SSE-KMS en los objetos nuevos mediante la consola de Amazon S3, la API de REST, los SDK de AWS, la AWS Command Line Interface (AWS CLI) o CloudFormation. Si desea habilitar o deshabilitar una clave de bucket de S3 para los objetos existentes, puede utilizar una operación `CopyObject`. Para obtener más información, consulte [Configuración de una clave de bucket de S3 en el nivel de objeto](configuring-bucket-key-object.md) y [Uso de Operaciones por lotes para habilitar claves de bucket de S3 para SSE-KMS](batch-ops-copy-example-bucket-key.md).

Cuando se habilita una clave de bucket de S3 para el bucket de origen o de destino, el contexto de cifrado será el nombre de recurso de Amazon (ARN) del bucket y no el ARN del objeto, por ejemplo, `arn:aws:s3:::bucket_ARN`. Debe actualizar las políticas de IAM para utilizar el ARN del bucket para el contexto de cifrado. Para obtener más información, consulte [Claves de bucket y replicación de S3](replication-config-for-kms-objects.md#bk-replication).

Los siguientes ejemplos ilustran cómo funciona una clave de bucket de S3 con la replicación. Para obtener más información, consulte [Replicación de objetos cifrados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

**Requisitos previos**  
Antes de configurar el bucket para utilizar una clave de bucket de S3, consulte [Cambios para tener en cuenta antes de habilitar una clave de bucket de S3](bucket-key.md#bucket-key-changes).

**Topics**

## Uso de la consola de S3
<a name="enable-bucket-key"></a>

En la consola de S3, puede habilitar o deshabilitar una clave de bucket de S3 para un bucket nuevo o uno existente. Los objetos en la consola de S3 hereda el ajuste de la clave de bucket de S3 de la configuración del bucket. Cuando habilita una clave de bucket de S3 para su bucket, los nuevos objetos que carga en el bucket utilizan una clave de bucket de S3 para SSE-KMS. 

**Cargar, copiar o modificar objetos en buckets que tienen habilitada una clave de bucket de S3**  
Si carga, modifica o copia un objeto en un bucket que tiene habilitada una clave de bucket de S3, el ajuste de la clave de bucket de S3 para ese objeto podría actualizarse para alinearse con la configuración del bucket.

Si un objeto ya tiene habilitada una clave de bucket de S3, el ajuste de la clave de bucket de S3 para ese objeto no cambia al copiar o modificar el objeto. Sin embargo, si modifica o copia un objeto que no tiene habilitada una clave de bucket de S3 y el bucket de destino tiene una configuración de clave de bucket de S3, el objeto hereda el ajuste de la clave de bucket de S3 del bucket de destino. Por ejemplo, si el objeto de origen no tiene habilitada una clave de bucket de S3 pero el bucket de destino tiene habilitada la clave de bucket de S3, se habilita una clave de bucket de S3 para el objeto.

**Para habilitar una clave de bucket de S3 al crear un nuevo bucket,**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. Elija **Crear bucket**. 

1. Ingrese el nombre del bucket y elija la Región de AWS. 

1. En **Cifrado predeterminado**, en **Tipo de clave de cifrado**, elija **Clave de AWS Key Management Service (SSE-KMS)**.

1. En **Clave de AWS KMS**, siga una de las siguientes opciones para elegir su clave de KMS:
   + Para seleccionar en una lista de claves de KMS disponibles, marque **Elija entre sus claves de AWS KMS keys** y seleccione su **clave de KMS** en la lista de claves disponibles.

     En esta lista aparecen tanto la Clave administrada de AWS (`aws/s3`) como las claves administradas por el cliente. Para obtener más información acerca de las claves administradas por el cliente, consulte [Claves de cliente y claves de AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) en la *Guía para desarrolladores de AWS Key Management Service*.
   + Para introducir el ARN de la clave de KMS, elija **Introducir el ARN de la AWS KMS key** e introduzca el ARN de la clave de KMS en el campo que aparece. 
   + Para crear una nueva clave administrada por el cliente en la consola de AWS KMS, elija **Crear una clave de KMS**.

     Para obtener más información acerca de cómo crear una AWS KMS key, consulte [Creación de claves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) en la *AWS Key Management Service Guía para desarrolladores*.

1. En **Bucket Key** (Clave de bucket), seleccione **Enable** (Habilitar). 

1. Elija **Create bucket (Crear bucket)**. 

   Amazon S3 crea el bucket con una clave de bucket de S3 habilitada. Los nuevos objetos que cargue en el bucket utilizarán una clave de bucket de S3. 

   Para deshabilitar una clave de bucket de S3, siga los pasos anteriores y elija **Disable (Deshabilitar)**.

**Para habilitar una clave de bucket de S3 para un bucket existente,**

1. Abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets**, elija el bucket para el que desea habilitar una clave de bucket de S3.

1. Elija la pestaña **Propiedades**.

1. En **Cifrado predeterminado**, elija **Editar**.

1. En **Cifrado predeterminado**, en **Tipo de clave de cifrado**, elija **Clave de AWS Key Management Service (SSE-KMS)**.

1. En **Clave de AWS KMS**, siga una de las siguientes opciones para elegir su clave de KMS:
   + Para seleccionar en una lista de claves de KMS disponibles, marque **Elija entre sus claves de AWS KMS keys** y seleccione su **clave de KMS** en la lista de claves disponibles.

     En esta lista aparecen tanto la Clave administrada de AWS (`aws/s3`) como las claves administradas por el cliente. Para obtener más información acerca de las claves administradas por el cliente, consulte [Claves de cliente y claves de AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) en la *Guía para desarrolladores de AWS Key Management Service*.
   + Para introducir el ARN de la clave de KMS, elija **Introducir el ARN de la AWS KMS key** e introduzca el ARN de la clave de KMS en el campo que aparece. 
   + Para crear una nueva clave administrada por el cliente en la consola de AWS KMS, elija **Crear una clave de KMS**.

     Para obtener más información acerca de cómo crear una AWS KMS key, consulte [Creación de claves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) en la *AWS Key Management Service Guía para desarrolladores*.

1. En **Bucket Key (Clave de bucket)**, seleccione **Enable (Habilitar)**. 

1. Elija **Save changes**.

   Amazon S3 habilita una clave de bucket de S3 para los nuevos objetos agregados al bucket. Los objetos existentes no utilizan la clave de bucket de S3. Para configurar una clave de bucket de S3 para los objetos existentes, puede utilizar una operación `CopyObject`. Para obtener más información, consulte [Configuración de una clave de bucket de S3 en el nivel de objeto](configuring-bucket-key-object.md).

   Para deshabilitar una clave de bucket de S3, siga los pasos anteriores y elija **Disable (Deshabilitar)**.

## Uso de la API de REST
<a name="enable-bucket-key-rest"></a>

Puede utilizar [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) para habilitar o desactivar una clave de bucket de S3 en su bucket. Para configurar una clave de bucket de S3 con `PutBucketEncryption`, especifique el tipo de dato [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html), que incluye el cifrado predeterminado con SSE-KMS. También puede utilizar una clave administrada por el cliente al especificar el ID de clave de KMS para la clave administrada por el cliente.  

Para obtener más información y sintaxis de ejemplo, consulte [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html). 

## Uso de AWS SDK para Java
<a name="enable-bucket-key-sdk"></a>

En el siguiente ejemplo, se habilita el cifrado de bucket predeterminado con SSE-KMS y una clave de bucket de S3 mediante AWS SDK para Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();
    
ServerSideEncryptionByDefault serverSideEncryptionByDefault = new ServerSideEncryptionByDefault()
    .withSSEAlgorithm(SSEAlgorithm.KMS);
ServerSideEncryptionRule rule = new ServerSideEncryptionRule()
    .withApplyServerSideEncryptionByDefault(serverSideEncryptionByDefault)
    .withBucketKeyEnabled(true);
ServerSideEncryptionConfiguration serverSideEncryptionConfiguration =
    new ServerSideEncryptionConfiguration().withRules(Collections.singleton(rule));

SetBucketEncryptionRequest setBucketEncryptionRequest = new SetBucketEncryptionRequest()
    .withServerSideEncryptionConfiguration(serverSideEncryptionConfiguration)
    .withBucketName(bucketName);
            
s3client.setBucketEncryption(setBucketEncryptionRequest);
```

------

## Uso de AWS CLI
<a name="enable-bucket-key-cli"></a>

En el siguiente ejemplo, se habilita el cifrado de bucket predeterminado con SSE-KMS y una clave de bucket de S3 mediante AWS CLI. Sustituya `user input placeholders` por su propia información.

```
aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{
        "Rules": [
            {
                "ApplyServerSideEncryptionByDefault": {
                    "SSEAlgorithm": "aws:kms",
                    "KMSMasterKeyID": "KMS-Key-ARN"
                },
                "BucketKeyEnabled": true
            }
        ]
    }'
```

## Uso de CloudFormation
<a name="enable-bucket-key-cloudformation"></a>

Para obtener más información sobre cómo configurar una clave de bucket de S3 con CloudFormation, consulte [AWS::S3::Bucket ServerSideEncryptionRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-serversideencryptionrule.html) en la *Guía del usuario de AWS CloudFormation*.

# Configuración de una clave de bucket de S3 en el nivel de objeto
<a name="configuring-bucket-key-object"></a>

Cuando realiza una operación PUT o COPY mediante la API de REST, los SDK de AWS o la AWS CLI, puede habilitar o desactivar una clave de bucket de S3 en el nivel de objeto agregando el encabezado de la solicitud `x-amz-server-side-encryption-bucket-key-enabled` con un valor `true` o `false`. Las claves de bucket de S3 permiten reducir el costo de cifrado del lado del servidor mediante AWS Key Management Service (AWS KMS) (SSE-KMS) al disminuir el tráfico de solicitudes de Amazon S3 a AWS KMS. Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md). 

Cuando se configura una clave de bucket de S3 para un objeto mediante una operación PUT o COPY, Amazon S3 solo actualiza la configuración de ese objeto. El ajuste de la clave de bucket de S3 para el bucket de destino no cambia. Si envía una solicitud PUT o COPY para un objeto cifrado con KMS a un bucket con las claves de bucket de S3 habilitadas, la operación en el nivel de objeto utilizará automáticamente las claves de bucket de S3, a menos que desactive las claves del encabezado de la solicitud. Si no especifica una clave de bucket de S3 para el objeto, Amazon S3 aplica el ajuste de la clave de bucket de S3 para el bucket de destino al objeto.

**Requisito previo:**  
Antes de configurar el objeto para usar una clave de bucket de S3, consulte  [Cambios para tener en cuenta antes de habilitar una clave de bucket de S3](bucket-key.md#bucket-key-changes). 

**Topics**
+ [Herramienta de operaciones por lotes de Amazon S3](#bucket-key-object-bops)
+ [Uso de la API de REST](#bucket-key-object-rest)
+ [Uso de AWS SDK para Java (PutObject)](#bucket-key-object-sdk)
+ [Uso de la AWS CLI (PutObject)](#bucket-key-object-cli)

## Herramienta de operaciones por lotes de Amazon S3
<a name="bucket-key-object-bops"></a>

Para cifrar los objetos de Amazon S3 existentes, puede utilizar la herramienta de operaciones por lotes de Amazon S3. A las operaciones por lotes de S3 se les proporciona una lista de objetos en los que deben actuar. Las operaciones por lotes llaman a la API correspondiente para llevar a cabo la operación especificada. 

Puede utilizar la [operación de copia de la herramienta de operaciones por lotes de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/batch-ops-copy-object.html) para copiar objetos existentes sin cifrar y escribirlos como objetos cifrados en el mismo bucket. Un solo trabajo de la herramienta de operaciones por lotes puede realizar la operación especificada en miles de millones de objetos. Para obtener más información, consulte [Realización de operaciones de objetos de forma masiva con Operaciones por lotes](batch-ops.md) y [Cifrado de objetos con la herramienta de operaciones por lotes de Amazon S3](https://aws.amazon.com/blogs/storage/encrypting-objects-with-amazon-s3-batch-operations/).

## Uso de la API de REST
<a name="bucket-key-object-rest"></a>

Si utiliza SSE-KMS, puede habilitar una clave de bucket de S3 para un objeto con las siguientes operaciones de la API: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) : al cargar un objeto, puede especificar el encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 en el nivel de objeto. 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) : al copiar un objeto y configurar SSE-KMS, puede especificar el encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 para el objeto. 
+ [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): al utilizar una operación `POST` para cargar un objeto y configurar SSE-KMS, puede utilizar el campo de formulario `x-amz-server-side-encryption-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 para el objeto.
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html): al cargar objetos grandes mediante la operación de la API `CreateMultipartUpload` y configurar SSE-KMS, puede usar el encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled` para habilitar o deshabilitar una clave de bucket de S3 para el objeto.

Para habilitar una clave de bucket de S3 en el nivel de objeto, incluya el encabezado de solicitud `x-amz-server-side-encryption-bucket-key-enabled`. Para obtener más información sobre SSE-KMS y la API de REST, consulte [Uso de la API de REST](specifying-kms-encryption.md#KMSUsingRESTAPI).

## Uso de AWS SDK para Java (PutObject)
<a name="bucket-key-object-sdk"></a>

Puede utilizar el siguiente ejemplo para configurar una clave de bucket de S3 en el nivel de objeto mediante AWS SDK para Java.

------
#### [ Java ]

```
AmazonS3 s3client = AmazonS3ClientBuilder.standard()
    .withRegion(Regions.DEFAULT_REGION)
    .build();

String bucketName = "amzn-s3-demo-bucket1";
String keyName = "key name for object";
String contents = "file contents";

PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, contents)
    .withBucketKeyEnabled(true);
    
s3client.putObject(putObjectRequest);
```

------

## Uso de la AWS CLI (PutObject)
<a name="bucket-key-object-cli"></a>

Puede utilizar el siguiente ejemplo de la AWS CLI para configurar una clave de bucket de S3 en el nivel de objeto como parte de una solicitud `PutObject`.

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key object key name --server-side-encryption aws:kms --bucket-key-enabled --body filepath
```

# Visualización de la configuración de una clave de bucket de S3
<a name="viewing-bucket-key-settings"></a>

Puede visualizar la configuración de una clave de bucket de S3 en el nivel de bucket o de objeto mediante la consola de Amazon S3, la API de REST, la AWS Command Line Interface (AWS CLI) o los SDK de AWS.

Las claves de bucket de S3 permiten reducir el tráfico de solicitudes de Amazon S3 a AWS KMS así como el costo del cifrado del lado del servidor mediante AWS Key Management Service (SSE-KMS). Para obtener más información, consulte [Reducción del costo de SSE-KMS con las claves de bucket de Amazon S3](bucket-key.md). 

Para ver el ajuste de la clave de bucket de S3 para un bucket o un objeto que ha heredado el ajuste de la clave de bucket de S3 de la configuración del bucket, necesita permiso para realizar la acción `s3:GetEncryptionConfiguration`. Para obtener más información, consulte [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) en la *Referencia de la API de Amazon Simple Storage Service*. 

## Uso de la consola de S3
<a name="bucket-key-settings"></a>

En la consola de S3, puede ver el ajuste de la clave de bucket de S3 para el bucket u objeto. El ajuste de la clave de bucket de S3 se hereda de la configuración del bucket a menos que los objetos de origen ya tengan configurada una clave de bucket de S3.

Los objetos y las carpetas del mismo bucket pueden tener diferentes ajustes de clave de bucket de S3. Por ejemplo, si carga un objeto con la API de REST y habilita una clave de bucket de S3 para el objeto, este último conservará el ajuste de la clave de bucket de S3 en el bucket de destino, aun cuando la clave de bucket de S3 esté deshabilitada en el bucket de destino. Como otro ejemplo, si habilita una clave de bucket de S3 para un bucket existente, los objetos que ya estén en el bucket no utilizan una clave de bucket de S3. Sin embargo, los objetos nuevos tienen habilitada una clave de bucket de S3. 

**Para ver el ajuste de la clave de bucket de S3 para su bucket**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets**.

1. En la lista **Buckets** , elija el bucket para el que desea habilitar una clave de bucket de S3.

1. Seleccione **Properties (Propiedades)**.

1. En la sección **Default encryption** (Cifrado predeterminado), en **Bucket Key** (Clave de bucket), verá el ajuste de la clave de bucket de S3 para su bucket.

   Si no puede verlo, es posible que no tenga permiso para realizar la acción `s3:GetEncryptionConfiguration`. Para obtener más información, consulte [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) en la *Referencia de la API de Amazon Simple Storage Service*. 

**Para ver el ajuste de la clave de bucket de S3 para su objeto,**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En la lista **Buckets**, elija el bucket para el que desea habilitar una clave de bucket de S3. 

1. En la lista **Objects (Objetos)**, elija el nombre del objeto.

1. En la pestaña **Details (Detalles)**, en **Server-side encryption settings (Configuración de cifrado del lado del servidor)**, elija **Edit (Editar)**. 

   En **Clave de bucket**, verá el ajuste de la clave de bucket de S3 para su objeto. No puede editar esta configuración. 

## Uso de AWS CLI
<a name="bucket-key-settings-cli"></a>

**Para ver el ajuste de la clave de bucket de S3 de nivel de bucket,**  
Para utilizar este ejemplo, sustituya `user input placeholder` por su propia información.

```
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
```

Para obtener más información, consulte [get-bucket-encryption](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/get-bucket-encryption.html) en la *Referencia de comandos de la AWS CLI*.

**Para devolver la configuración de clave de bucket de S3 de nivel de objeto**  
Para utilizar este ejemplo, sustituya `user input placeholder` por su propia información.

```
aws s3api head-object --bucket amzn-s3-demo-bucket1 --key my_images.tar.bz2
```

Para obtener más información, consulte [head-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/head-object.html) en la *Referencia de comandos de la AWS CLI*.

## Uso de la API de REST
<a name="bucket-key-settings-rest"></a>

**Para ver el ajuste de la clave de bucket de S3 de nivel de bucket,**  
Para ver lar información de cifrado de un bucket, incluida la configuración de una clave de bucket de S3, utilice la operación `GetBucketEncryption`. El ajuste de la clave de bucket de S3 se ve en el cuerpo de la respuesta del elemento `ServerSideEncryptionConfiguration` con la configuración `BucketKeyEnabled`. Para obtener más información, consulte [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) en la *Referencia de la API de Amazon S3*. 

**Para ver la configuración de objeto de una clave de bucket de S3,**  
Para ver el estado de la clave de bucket de S3 de un objeto, utilice la operación `HeadObject`. `HeadObject` devuelve el encabezado de respuesta `x-amz-server-side-encryption-bucket-key-enabled` para mostrar si una clave de bucket de S3 está habilitada o deshabilitada para el objeto. Para obtener más información, consulte [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html) en la *Referencia de la API de Amazon S3*. 

Las siguientes operaciones de API también devuelven el encabezado de respuesta `x-amz-server-side-encryption-bucket-key-enabled` si se configura una clave de bucket de S3 para un objeto: 
+ [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 
+ [PostObject](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) 
+ [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) 
+ [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html) 
+ [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) 
+ [UploadPart](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) 
+ [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) 
+ [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) 

# Uso del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)
<a name="UsingDSSEncryption"></a>

Al utilizar el cifrado del servidor de doble capa con claves de AWS Key Management Service (AWS KMS) (DSSE-KMS), se aplican dos capas de cifrado a los objetos cuando se cargan en Amazon S3. El DSSE-KMS le ayuda a cumplir con mayor facilidad los estándares de conformidad que requieren que aplique un cifrado de varias capas a sus datos y tenga el control total de sus claves de cifrado.

El término “doble” en DSSE-KMS se refiere a dos capas independientes de cifrado AES-256 que se aplican a los datos:
+ *Primera capa:* los datos se cifran mediante una clave de cifrado de datos (DEK) única generada por AWS KMS
+ *Segunda capa:* los datos ya cifrados se cifran de nuevo mediante una clave de cifrado AES-256 administrada por Amazon S3

Esto difiere de SSE-KMS estándar, que aplica solo una capa de cifrado. El enfoque de doble capa proporciona una seguridad mejorada al garantizar que, incluso si una capa de cifrado se viera comprometida, los datos permanecerían protegidos por la segunda capa. Esta seguridad adicional viene acompañada de un aumento de la sobrecarga de procesamiento y de las llamadas a la API de AWS KMS, lo que supone un mayor costo en comparación con SSE-KMS estándar. Para obtener más información sobre los precios de DSSE-KMS, consulte [Conceptos de AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) en la Guía para desarrolladores de AWS Key Management Service y [Precios de AWS KMS](https://aws.amazon.com/kms/pricing).

Al utilizar el DSSE-KMS con un bucket de Amazon S3, las claves de AWS KMS deben estar en la misma región que el bucket. Además, cuando se solicita el DSSE-KMS para el objeto, la suma de comprobación de S3 que forma parte de los metadatos del objeto se almacena cifrada. Para obtener más información acerca de las sumas de comprobación, consulte [Comprobación de la integridad de objetos en Amazon S3](checking-object-integrity.md).

**nota**  
Las claves de bucket de S3 no son compatibles con DSSE-KMS.

Las principales diferencias entre DSSE-KMS y SSE-KMS estándar son:
+ **Capas de cifrado:** DSSE-KMS aplica dos capas independientes de cifrado AES-256, mientras que SSE-KMS estándar aplica una capa
+ **Seguridad:** DSSE-KMS proporciona una protección mejorada contra posibles vulnerabilidades de cifrado
+ **Conformidad:** DSSE-KMS ayuda a cumplir los requisitos normativos que exigen cifrado multicapa
+ **Rendimiento:** DSSE-KMS tiene una latencia ligeramente superior debido al procesamiento de cifrado adicional
+ **Costo:** DSSE-KMS genera cargos más altos debido al aumento de la sobrecarga computacional y a las operaciones adicionales de AWS KMS

**Exigir el cifrado del servidor de doble capa con AWS KMS keys (DSSE-KMS)**  
Para exigir el cifrado del servidor de doble capa para todos los objetos en un bucket de Amazon S3 determinado, puede usar una política de bucket. Por ejemplo, la siguiente política de bucket deniega el permiso de carga de objeto (`s3:PutObject`) para todos, si la solicitud no incluye el encabezado `x-amz-server-side-encryption`, que solicita el cifrado del servidor con DSSE-KMS.

------
#### [ JSON ]

****  

```
{
             "Version":"2012-10-17",		 	 	 
             "Id": "PutObjectPolicy",
             "Statement": [{
                   "Sid": "DenyUnEncryptedObjectUploads",
                   "Effect": "Deny",
                   "Principal": {
                       "AWS": "arn:aws:iam::111122223333:root"
                   },
                   "Action": "s3:PutObject",
                   "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
                   "Condition": {
                      "StringNotEquals": {
                         "s3:x-amz-server-side-encryption": "aws:kms:dsse"
                      }
                   }
                }
             ]
          }
```

------

**Topics**
+ [Especificación del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)](specifying-dsse-encryption.md)

# Especificación del cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)
<a name="specifying-dsse-encryption"></a>

Puede aplicar cifrado cuando cargue un objeto nuevo o copie un objeto existente. 

Puede especificar DSSE-KMS con la consola de Amazon S3, la API de REST de Amazon S3 y la AWS Command Line Interface (AWS CLI). Para obtener más información, consulte los siguientes temas. 

**nota**  
Puede utilizar AWS KMS keys multirregionales en Amazon S3. No obstante, Amazon S3 trata las claves multirregionales como si fueran claves de una sola región y no utiliza las características multirregionales de la clave. Para obtener más información, consulte [Using multi-Region keys](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html) en la *AWS Key Management Service Developer Guide*.

**nota**  
Si desea utilizar una clave de KMS propiedad de una cuenta diferente, primero debe tener permiso para utilizar la clave. Para obtener más información sobre los permisos entre cuentas para las claves de KMS, consulte [Crear claves de KMS que otras cuentas puedan utilizar](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) en la *Guía para desarrolladores de AWS Key Management Service*. 

## Uso de la consola de S3
<a name="add-object-encryption-dsse"></a>

En esta sección se describe cómo configurar o cambiar el tipo de cifrado de un objeto para utilizar el cifrado del servidor de doble capa con claves de AWS Key Management Service (AWS KMS) (DSSE-KMS) mediante la consola de Amazon S3.

**nota**  
Puede cambiar el cifrado de un objeto si el objeto es menor de 5 GB. Si el objeto es mayor de 5 GB, debe usar la [AWS CLI](mpu-upload-object.md#UsingCLImpUpload) o los [AWS SDK](CopyingObjectsMPUapi.md) para cambiar el cifrado de un objeto.
Para obtener una lista de los permisos adicionales necesarios para cambiar el cifrado de un objeto, consulte [Permisos necesarios para las operaciones de la API de Amazon S3](using-with-s3-policy-actions.md). Para ver políticas de ejemplo que conceden estos permisos, consulte [Ejemplos de políticas basadas en identidad para Amazon S3](example-policies-s3.md).
Si cambia el cifrado de un objeto, se crea un nuevo objeto para reemplazar el antiguo. Si el control de versiones de S3 está activado, se crea una nueva versión del objeto y el objeto existente se convierte en una versión anterior. El rol que cambia la propiedad también se convierte en el propietario del nuevo objeto o (versión del objeto). 

**Para añadir o cambiar el cifrado de un objeto**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación, elija **Buckets** y, a continuación, la pestaña **Buckets de uso general**. Desplácese hasta el bucket o la carpeta de Amazon S3 que contiene los objetos que desea cambiar.

1. Seleccione la casilla de verificación de los objetos que desea cambiar.

1. En el menú **Acciones**, elija **Editar cifrado del servidor** en la lista de opciones que aparece.

1. Desplácese hasta la sección **Cifrado del servidor**.

1. En **Configuración del cifrado**, elija **Usar la configuración del bucket para el cifrado predeterminado** o **Anular la configuración del bucket para el cifrado predeterminado**.

1. Si elige **Anular la configuración del bucket para el cifrado predeterminado**, debe configurar los siguientes ajustes de cifrado.

   1. En **Tipo de cifrado**, seleccione **Cifrado del servidor de doble capa con claves de AWS Key Management Service (DSSE-KMS)**. 

   1. En **Clave de AWS KMS**, siga una de las siguientes opciones para elegir su clave de KMS:
      + Para seleccionar en una lista de claves de KMS disponibles, marque **Elija entre sus claves de AWS KMS keys** y seleccione su **clave de KMS** en la lista de claves disponibles.

        En esta lista aparecen tanto la Clave administrada de AWS (`aws/s3`) como las claves administradas por el cliente. Para obtener más información acerca de las claves administradas por el cliente, consulte [Claves de cliente y claves de AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) en la *Guía para desarrolladores de AWS Key Management Service*.
      + Para introducir el ARN de la clave de KMS, elija **Introducir el ARN de la clave de AWS KMS key** e introduzca el ARN de la clave de KMS en el campo que aparece. 
      + Para crear una nueva clave administrada por el cliente en la consola de AWS KMS, elija **Crear una clave de KMS**.

        Para obtener más información acerca de cómo crear una AWS KMS key, consulte [Creación de claves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) en la *AWS Key Management Service Guía para desarrolladores*.
**importante**  
Solo puede utilizar las claves de KMS que estén disponibles en la misma Región de AWS del bucket. La consola de Amazon S3 solo muestra las primeras 100 claves de KMS de la misma región del bucket. Para utilizar una clave de KMS que no aparezca en la lista, debe introducir el ARN de la clave de KMS. Si desea utilizar una clave de KMS propiedad de una cuenta de diferente, primero debe tener permiso para utilizar la clave y, después, debe introducir el ARN de la clave de KMS.  
Amazon S3 admite solo claves de KMS de cifrado simétricas y no claves de KMS asimétricas. Para obtener más información, consulte [Identificación de claves de KMS asimétricas](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) en la *Guía para desarrolladores de AWS Key Management Service*.

1. En **Clave de bucket**, seleccione **Desactivar**. Las claves de bucket de S3 no son compatibles con DSSE-KMS.

1. En **Configuración de copia adicional**, elija si desea **Copiar la configuración de origen**, **No especificar la configuración** o **Especificar la configuración**. **Copiar la configuración de origen** es la opción predeterminada. Si solo desea copiar el objeto sin los atributos de configuración de origen, elija **No especificar la configuración**. Elija **Especificar la configuración** para especificar la configuración de la clase de almacenamiento, las ACL, las etiquetas de objetos, los metadatos, el cifrado del servidor y las sumas de comprobación adicionales.

1. Elija **Save changes**.

**nota**  
En esta acción se aplica el cifrado a todos los objetos especificados. Al cifrar carpetas, espere a que finalice la operación de guardado para agregar nuevos objetos a la carpeta.

## Uso de la API de REST
<a name="DSSEUsingRESTAPI"></a>

Cuando cree un objeto, es decir, cuando cargue un objeto nuevo o copie uno existente, podrá especificar el uso del cifrado del servidor de doble capa con AWS KMS keys (DSSE-KMS) para cifrar los datos. Para ello, añada el encabezado `x-amz-server-side-encryption` a la solicitud. Configure el valor del encabezado para el algoritmo de cifrado `aws:kms:dsse`. Amazon S3 confirma que su objeto se ha almacenado con cifrado DSSE-KMS al devolver el encabezado de respuesta `x-amz-server-side-encryption`. 

Si especifica el encabezado `x-amz-server-side-encryption` con un valor de `aws:kms:dsse`, también puede utilizar los siguientes encabezados de solicitud:
+ `x-amz-server-side-encryption-aws-kms-key-id: SSEKMSKeyId`
+ `x-amz-server-side-encryption-context: SSEKMSEncryptionContext`

**Topics**
+ [Operaciones de la API de REST de Amazon S3 que admiten DSSE-KMS](#dsse-request-headers-kms)
+ [Contexto de cifrado (`x-amz-server-side-encryption-context`)](#s3-dsse-encryption-context)
+ [ID de clave de AWS KMS (`x-amz-server-side-encryption-aws-kms-key-id`)](#s3-dsse-key-id-api)

### Operaciones de la API de REST de Amazon S3 que admiten DSSE-KMS
<a name="dsse-request-headers-kms"></a>

Las siguientes operaciones de la API de REST aceptan los encabezados de solicitud `x-amz-server-side-encryption`, `x-amz-server-side-encryption-aws-kms-key-id` y `x-amz-server-side-encryption-context`.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html): cuando cargue datos mediante la operación de la API `PUT`, puede especificar estos encabezados de solicitud. 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) – al copiar un objeto, tiene un objeto de origen y otro de destino. Al pasar encabezados DSSE-KMS con la operación `CopyObject`, estos se aplican solo al objeto de destino. Cuando copie un objeto existente, independientemente de si el objeto de origen está cifrado o no, el objeto de destino no estará cifrado, a no ser que solicite explícitamente el cifrado del lado del servidor.
+ [Objeto POST](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html): cuando utilice una operación `POST` para cargar un objeto, en vez de proporcionar los encabezados de solicitud, debe proporcionar la misma información en los campos del formulario.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html): cuando cargue objetos grandes mediante la carga multiparte, puede especificar estos encabezados en la solicitud `CreateMultipartUpload`.

Los encabezados de respuesta de las siguientes operaciones de API de REST devuelven el encabezado `x-amz-server-side-encryption` cuando un objeto se almacena con el cifrado del servidor.
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [POST Objeto](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html)

**importante**  
Todas las solicitudes `GET` y `PUT` para un objeto protegido por AWS KMS generarán un error si no las realiza con la capa de sockets seguros (SSL), la seguridad de la capa de transporte (TLS) o Signature Version 4.
Si su objeto utiliza DSSE-KMS, no envíe encabezados de solicitud de cifrado para solicitudes `GET` y `HEAD` porque, de lo contrario, obtendrá un error HTTP 400 (Bad Request).

### Contexto de cifrado (`x-amz-server-side-encryption-context`)
<a name="s3-dsse-encryption-context"></a>

Si especifica `x-amz-server-side-encryption:aws:kms:dsse`, la API de Amazon S3 admitirá un contexto de cifrado con el encabezado `x-amz-server-side-encryption-context`. Un contexto de cifrado es un conjunto definido de pares clave-valor que contienen información contextual adicional sobre los datos.

Amazon S3 utiliza automáticamente el nombre de recurso de Amazon (ARN) del objeto como par del contexto de cifrado; por ejemplo, `arn:aws:s3:::object_ARN`.

Si lo desea, puede proporcionar un par de contexto de cifrado adicional mediante el encabezado `x-amz-server-side-encryption-context`. No obstante, dado que el contexto de cifrado no está cifrado, asegúrese de no incluir información confidencial. Amazon S3 almacena este par de claves adicional junto con el contexto de cifrado predeterminado.

Para obtener información sobre el contexto de cifrado en Amazon S3, consulte [Contexto de cifrado](UsingKMSEncryption.md#encryption-context). Para obtener información general sobre el contexto de cifrado, consulte [Conceptos de AWS Key Management Service: contexto de cifrado](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) en la *Guía para desarrolladores de AWS Key Management Service*. 

### ID de clave de AWS KMS (`x-amz-server-side-encryption-aws-kms-key-id`)
<a name="s3-dsse-key-id-api"></a>

Puede utilizar el encabezado `x-amz-server-side-encryption-aws-kms-key-id` para especificar el ID de la clave administrada por el cliente utilizado para proteger los datos. Si especifica el encabezado `x-amz-server-side-encryption:aws:kms:dsse`, pero no proporciona el encabezado `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 utiliza la Clave administrada de AWS (`aws/s3`) para proteger los datos. Si desea utilizar una clave administrada por el cliente, debe proporcionar el encabezado `x-amz-server-side-encryption-aws-kms-key-id` de dicha clave.

**importante**  
Cuando utilice una AWS KMS key para el cifrado en el lado del servidor en Amazon S3, debe elegir una clave de cifrado de KMS simétrica. Amazon S3 solo admite claves de KMS de cifrado simétricas. Para obtener más información sobre estas claves, consulte [Symmetric encryption KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#symmetric-cmks) (Claves de KMS de cifrado simétricas) en la *Guía para desarrolladores de AWS Key Management Service*.

## Uso de AWS CLI
<a name="DSSEUsingCLI"></a>

Cuando se carga un objeto nuevo o se copia uno existente, puede especificar que se use DSSE-KMS para cifrar los datos. Para ello, añada el parámetro `--server-side-encryption aws:kms:dsse` a la solicitud. Utilice el parámetro `--ssekms-key-id example-key-id` para agregar la [clave de AWS KMS administrada de cliente](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#customer-cmk) que ha creado. Si especifica `--server-side-encryption aws:kms:dsse`, pero no proporciona un ID de clave de AWS KMS, Amazon S3 utilizará la clave administrada de AWS (`aws/s3`).

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id --body filepath
```

Puede cifrar un objeto no cifrado para usar DSSE-KMS volviendo a copiar el objeto en su lugar.

```
aws s3api copy-object --bucket amzn-s3-demo-bucket --key example-object-key --copy-source amzn-s3-demo-bucket/example-object-key --server-side-encryption aws:kms:dsse --ssekms-key-id example-key-id
```

# Uso de cifrado en el lado del servidor con claves proporcionadas por el cliente (SSE-C)
<a name="ServerSideEncryptionCustomerKeys"></a>

El cifrado en el servidor consiste en proteger los datos en reposo. El cifrado en el servidor solo cifra los datos de objetos, no los metadatos de objetos. Puede usar el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) en los buckets de propósito general para cifrar los datos con sus propias claves de cifrado. Con la clave de cifrado que proporcione como parte de su solicitud, Amazon S3 administra tanto el cifrado de datos, al escribir en los discos, como el descifrado de datos, al obtener acceso a los objetos. Por tanto, no ha de mantener ningún código para llevar a cabo el cifrado y el descifrado de los datos. Lo único que tiene que hacer es administrar las claves de cifrado que proporcione. 

En la mayoría de casos de uso modernos de Amazon S3 ya no se utiliza SSE-C porque no tiene la flexibilidad del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) o el cifrado del servidor con claves de AWS KMS (SSE-KMS). El requisito de SSE-C de proporcionar la clave de cifrado cada vez que interactúa con los datos cifrados de SSE-C hace que no sea práctico compartir la clave de SSE-C con otros usuarios, roles o servicios de AWS que leen datos de los buckets de S3 para poder operar en los datos. Debido a la amplia compatibilidad con SSE-KMS en todo AWS, la mayoría de las cargas de trabajo modernas no utilizan el cifrado SSE-C porque carece de la flexibilidad del SSE-KMS. Para obtener más información sobre SSE-KMS, consulte [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](UsingKMSEncryption.md).

Si quiere evitar que el cifrado SSE-C se utilice para los objetos escritos en el bucket, puede bloquear el cifrado SSE-C al cambiar la configuración de cifrado predeterminada del bucket. Cuando se bloquea SSE-C para un bucket de uso general, cualquier solicitud `PutObject`, `CopyObject`, `PostObject`, de carga o replicación multiparte que especifique el cifrado SSE-C se rechazará con un error `HTTP 403 AccessDenied`. Para obtener más información acerca de bloquear SSE-C, consulte [Bloqueo o desbloqueo de SSE-C para un bucket de uso general](blocking-unblocking-s3-c-encryption-gpb.md).

El uso de SSE-C no tiene costes adicionales. Sin embargo, las solicitudes de configuración y uso de SSE-C incurren en cargos estándar de solicitud de Amazon S3. Para obtener información acerca de los precios, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing/).

**importante**  
A partir de abril de 2026, AWS desactivará el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) para todos los buckets nuevos. Además, el cifrado SSE-C se desactivará para todos los buckets existentes en Cuentas de AWS que no contengan datos cifrados con SSE-C. Con estos cambios, las pocas aplicaciones que necesitan el cifrado SSE-C deberán habilitar deliberadamente el uso de SSE-C a través de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) después de crear el bucket. En estos casos, es posible que deba actualizar los scripts de automatización, las plantillas de CloudFormation u otras herramientas de configuración de infraestructura para configurar estos ajustes. Para obtener más información, consulte la [publicación del Blog de almacenamiento de AWS](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

## Consideraciones antes de usar SSE-C
<a name="considerations-before-using-sse-c"></a>
+ S3 nunca almacena la clave de cifrado cuando se utiliza SSE-C. Debe proporcionar la clave de cifrado cada vez que desee que alguien descargue los datos cifrados con SSE-C de S3. 
  + Debe administrar el mapeo de qué clave de cifrado se utiliza para cifrar cada objeto. Usted debe responsabilizarse de realizar un seguimiento de qué clave de cifrado proporciona para cada objeto. Esto también implica que, si pierde la clave de cifrado, habrá perdido el objeto. 
  + Dado que es usted quien administra las claves de cifrado en el cliente, ha de administrar todas las garantías adicionales, como la rotación de claves, en el lado del cliente. 
  + Este diseño puede dificultar el intercambio de la clave de SSE-C con otros usuarios, roles o servicios de AWS que utilice con los datos. Debido a la amplia compatibilidad con SSE-KMS en todo AWS, la mayoría de las cargas de trabajo modernas no utilizan SSE-C porque carece de la flexibilidad del SSE-KMS. Para obtener más información sobre SSE-KMS, consulte [Uso del cifrado del servidor con claves de AWS KMS (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html). 
  + Esto significa que los objetos cifrados con SSE-C no se pueden descifrar de forma mediante servicios administrados por AWS. 
+ Debe usar HTTPS al especificar los encabezados de SSE-C en las solicitudes.
  + Amazon S3 rechaza cualquier solicitud que se realice por HTTP cuando use SSE-C. Por motivos de seguridad, le recomendamos que tenga en cuenta que cualquier clave que envíe por error sobre HTTP podría estar en peligro. Descarte la clave y practique la rotación apropiada. 
+ Si el bucket tiene habilitado el control de versiones, cada versión del objeto que cargue puede tener su propia clave de cifrado. Usted debe responsabilizarse de realizar un seguimiento de qué clave de cifrado se ha utilizado en cada versión del objeto. 
+ La consola de Amazon S3 no admite SSE-C. No es posible utilizar la consola de Amazon S3 para cargar un objeto y especificar el cifrado SSE-C. Tampoco puede usar la consola para actualizar (por ejemplo, cambiar la clase de almacenamiento o agregar metadatos) un objeto existente almacenado con SSE-C. 

**Topics**
+ [Consideraciones antes de usar SSE-C](#considerations-before-using-sse-c)
+ [Especificación del cifrado del lado del servidor con claves proporcionadas por el cliente (SSE-C)](specifying-s3-c-encryption.md)
+ [Bloqueo o desbloqueo de SSE-C para un bucket de uso general](blocking-unblocking-s3-c-encryption-gpb.md)
+ [Configuración de SSE-C predeterminada para preguntas frecuentes de buckets nuevos](default-s3-c-encryption-setting-faq.md)

# Especificación del cifrado del lado del servidor con claves proporcionadas por el cliente (SSE-C)
<a name="specifying-s3-c-encryption"></a>

Para utilizar el cifrado del servidor con claves proporcionadas por el cliente (SSE-C), primero asegúrese de que SSE-C no sea un tipo de cifrado bloqueado en la configuración de cifrado predeterminada del bucket de uso general de Amazon S3. Si está bloqueado, puede habilitar este tipo de cifrado actualizando la configuración de cifrado predeterminada del bucket. Luego, puede usar SSE-C en las solicitudes de carga pasando los encabezados necesarios. Consulte [Acciones de Amazon S3 que admiten la escritura de datos con SSE-C](#amazon-s3-actions-that-support-writing-data-with-sse-c) y asegúrese de incluir [Los encabezados de la API de S3 son necesarios para las solicitudes de cifrado y descifrado de objetos con SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests). 

Cuando carga un objeto especificando SSE-C, Amazon S3 usa la clave de cifrado facilitada para aplicar un cifrado AES-256 a los datos. A continuación, Amazon S3 elimina la clave de cifrado de la memoria. Al recuperar un objeto, debe facilitar la misma clave de cifrado como parte de la solicitud. En primer lugar, Amazon S3 comprueba que la clave de cifrado proporcionada coincida, y a continuación descifra el objeto antes de devolverle los datos del mismo. 

Antes de usar SSE-C, asegúrese de haber revisado [Consideraciones antes de usar SSE-C](ServerSideEncryptionCustomerKeys.md#considerations-before-using-sse-c).

**nota**  
Amazon S3 no almacena la clave de cifrado que facilite. En su lugar, almacena un valor de código de autenticación de mensajes basado en hash (HMAC) discontinuo aleatorio de la clave de cifrado para validar las solicitudes futuras. El valor HMAC "salted" no se puede usar para derivar el valor de la clave de cifrado ni para descifrar los contenidos del objeto cifrado. Esto implica que, si pierde la clave de cifrado, habrá perdido el objeto.

**Topics**
+ [Acciones de SSE-C y encabezados obligatorios](#sse-c-actions-and-required-headers)
+ [Ejemplo de política de bucket para aplicar el cifrado SSE-C](#example-bucket-policy-to-enforce-sse-c-encryption)
+ [URL prefirmadas y SSE-C](#ssec-and-presignedurl)
+ [Realización de solicitudes con SSE-C](#making-requests-with-sse-c)
+ [Uso de la API de REST](#using-rest-api-sse-c)
+ [Uso de los SDK de AWS para especificar SSE-C en las operaciones PUT, GET, Head y Copy](#sse-c-using-sdks)
+ [Uso de los SDK de AWS para especificar SSE-C en las cargas multiparte](#sse-c-using-sdks-multipart-uploads)

## Acciones de SSE-C y encabezados obligatorios
<a name="sse-c-actions-and-required-headers"></a>

Para especificar SSE-C en las API de S3 compatibles, es necesario pasar parámetros de solicitud específicos. 

**nota**  
La API de `PutBucketEncryption` de Amazon S3 se usa para configurar el cifrado predeterminado del servidor para un bucket. Sin embargo, `PutBucketEncryption` no admite la habilitación de SSE-C como método de cifrado predeterminado para un bucket. SSE-C es un método de cifrado por objeto en el que se proporciona la clave de cifrado a Amazon S3 con cada solicitud de carga o descarga de objetos. Amazon S3 utiliza esta clave para cifrar o descifrar el objeto durante la solicitud y, a continuación, descarta la clave. Esto significa que SSE-C se habilita para cada objeto, no como una configuración de bucket predeterminada. 

### Acciones de Amazon S3 que admiten la escritura de datos con SSE-C
<a name="amazon-s3-actions-that-support-writing-data-with-sse-c"></a>

Puede solicitar el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) al escribir objetos en un bucket de uso general mediante las siguientes operaciones o acciones de la API: 
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
+ [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)

**nota**  
La replicación de S3 admite objetos cifrados con SSE-C. Para obtener más información sobre la replicación de objetos cifrados, consulte [Replicación de objetos cifrados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)](replication-config-for-kms-objects.md). 

### Los encabezados de la API de S3 son necesarios para las solicitudes de cifrado y descifrado de objetos con SSE-C
<a name="s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests"></a>

Debe proporcionar los tres encabezados de API siguientes para cifrar o descifrar objetos con SSE-C: 
+ `x-amz-server-side-encryption-customer-algorithm` Use este encabezado para especificar el algoritmo de cifrado. El valor del encabezado ha de ser AES256.
+ `x-amz-server-side-encryption-customer-key` Use este encabezado para facilitar la clave de cifrado de 256 bits con codificación base64 para que Amazon S3 pueda usarla para cifrar o descifrar los datos.
+ `x-amz-server-side-encryption-customer-key-MD5` Use este encabezado para facilitar el resumen MD5 de 128 bits con codificación en base64 de la clave de cifrado, según la RFC 1321. Amazon S3 usa este encabezado para comprobar la integridad del mensaje y garantizar que la clave de cifrado se haya transmitido sin errores.

### Los encabezados de la API de S3 son necesarios para copiar objetos de origen cifrados con SSE-C
<a name="s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c"></a>

Debe proporcionar los tres encabezados de API siguientes para copiar objetos de origen cifrados con SSE-C: 
+ `x-amz-copy-source-server-side-encryption-customer-algorithm` Incluya este encabezado para especificar el algoritmo que debe usar Amazon S3 para descifrar el objeto de origen. Este valor debe ser AES256.
+ `x-amz-copy-source-server-side-encryption-customer-key` Incluya este encabezado para facilitar la clave de cifrado con codificación base64 para que Amazon S3 la utilice para descifrar el objeto de origen. Esta clave de cifrado debe ser la que proporcionó a Amazon S3 al crear el objeto de origen. De lo contrario, Amazon S3 no puede descifrar el objeto.
+ `x-amz-copy-source-server-side-encryption-customer-key-MD5` Incluya este encabezado para facilitar el resumen MD5 de 128 bits con codificación en base64 de la clave de cifrado, según la RFC 1321.

## Ejemplo de política de bucket para aplicar el cifrado SSE-C
<a name="example-bucket-policy-to-enforce-sse-c-encryption"></a>

Para requerir SSE-C para todos los objetos escritos en un bucket de Amazon S3, puede usar una política de bucket. Por ejemplo, la siguiente política de bucket deniega la carga de objetos (`s3:PutObject`) para todas las solicitudes que no incluyan el encabezado `x-amz-server-side-encryption-customer-algorithm` que solicita SSE-C. 

```
{  
"Version":"2012-10-17",		 	 	                      
    "Id": "PutObjectPolicy",  
    "Statement": [  
        {  
"Sid": "RequireSSECObjectUploads",  
            "Effect": "Deny",  
            "Principal": "*",  
            "Action": "s3:PutObject",  
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",  
            "Condition": {  
            "Null": {  
              "s3:x-amz-server-side-encryption-customer-algorithm": "true"  
                }  
            }  
        }  
    ]  
}
```

**importante**  
Si utiliza una política de bucket para exigir SSE-C en `s3:PutObject`, debe incluir el encabezado `x-amz-server-side-encryption-customer-algorithm` en todas las solicitudes de carga multiparte (CreateMultipartUpload, UploadPart y CompleteMultipartUpload). 

## URL prefirmadas y SSE-C
<a name="ssec-and-presignedurl"></a>

Puede generar una URL prefirmada, que podrá utilizar para operaciones como la carga de un nuevo objeto, la recuperación de un objeto existente o la recuperación de metadatos de objetos. Las URL prefirmadas se usan con el SSE-C de la siguiente forma:
+ Al crear una URL prefirmada, debe especificar el algoritmo utilizando el encabezado `x-amz-server-side-encryption-customer-algorithm` en el cálculo de la firma.
+ Al usar la URL prefirmada para cargar un objeto nuevo, recuperar un objeto existente o recuperar solo metadatos de objetos, debe facilitar todos los encabezados de cifrado en su solicitud de aplicación cliente. 
**nota**  
Para objetos no SSE-C, puede generar una URL prefirmada y pegar dicha URL directamente en un navegador para acceder a los datos.   
No obstante, no puede hacer esto en objetos SSE-C porque además de la URL prefirmada también debe incluir encabezamientos de HTTP específicos de objetos SSE-C Por tanto, puede usar las URL prefirmadas para objetos SSE-C solo mediante programación.

Para obtener más información acerca de las URL prefirmadas, consulte [Descarga y carga de objetos con URL prefirmadas](using-presigned-url.md).

## Realización de solicitudes con SSE-C
<a name="making-requests-with-sse-c"></a>

 En el momento de la creación de objetos con la API de REST, puede especificar el cifrado del lado del servidor con claves proporcionadas por el cliente (SSE-C). Cuando utilice SSE-C, deberá proporcionar información sobre la clave de cifrado mediante [Los encabezados de la API de S3 son necesarios para copiar objetos de origen cifrados con SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c). Puede usar las bibliotecas de encapsulamiento del SDK de AWS para agregar estos encabezados a su solicitud. Si lo necesita, también puede realizar las llamadas a la API de REST de Amazon S3 directamente en su aplicación.

**importante**  
Antes de especificar el cifrado del servidor con claves proporcionadas por el cliente (SSE-C), asegúrese de que el cifrado SSE-C no esté bloqueado para el bucket de uso general. Para obtener más información, consulte [Bloqueo o desbloqueo de SSE-C para un bucket de uso general](blocking-unblocking-s3-c-encryption-gpb.md).

**nota**  
No puede usar la consola de Amazon S3 para cargar un objeto y solicitar SSE-C. Tampoco puede usar la consola para actualizar (por ejemplo, cambiar la clase de almacenamiento o agregar metadatos) un objeto existente almacenado con SSE-C. Para obtener más información, consulte [Los encabezados de la API de S3 son necesarios para las solicitudes de cifrado y descifrado de objetos con SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests). 

## Uso de la API de REST
<a name="using-rest-api-sse-c"></a>

### API de REST de Amazon S3 que admiten SSE-C
<a name="sse-c-supported-apis"></a>

Las siguientes API de Amazon S3 admiten el cifrado del lado del servidor con claves de cifrado (SSE-C) proporcionadas por el cliente.
+ **Operación GET**: cuando recupera datos con la API GET (consulte [GET Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)), puede especificar los encabezados de solicitud.
+ **Operación HEAD**: para recuperar metadatos de objetos con la API HEAD (consulte [HEAD Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)), puede especificar estos encabezados de solicitud.
+ **Operación PUT**: cuando carga datos con la API de PUT Object (consulte [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)), puede especificar estos encabezados de solicitud. 
+ **Carga multiparte**: al cargar objetos grandes mediante la API de carga multiparte, puede especificar estos encabezados. Debe especificar estos encabezados en la solicitud inicial (consulte [Iniciar carga multiparte](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadInitiate.html)) y en cada solicitud de carga de partes subsiguiente (consulte [Cargar parte](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html) o [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)). Para cada solicitud de carga de parte, la información de cifrado ha de ser la misma que la facilitada en la solicitud inicial de la carga multiparte.
+ **Operación POST**: cuando utiliza una operación POST para cargar un objeto (consulte [POST Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)), en vez de proporcionar los encabezados de solicitud, debe proporcionar la misma información en los campos del formulario.
+ **Operación copia**: cuando copia un objeto (consulte [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)), tiene un objeto de origen y uno de destino:
  + Si desea especificar el tipo de cifrado del objeto de destino, debe proporcionar el encabezado de solicitud `x-amz-server-side-encryption `.
  + Si quiere que el objeto de destino se cifre mediante SSE-C, debe facilitar información de cifrado mediante la API de S3 [Los encabezados de la API de S3 son necesarios para las solicitudes de cifrado y descifrado de objetos con SSE-C](#s3-api-headers-required-for-sse-c-object-encryption-and-decryption-requests).
  + Si el objeto de origen se cifra mediante SSE-C, debe proporcionar información clave de cifrado mediante los encabezados de la API de S3 [Los encabezados de la API de S3 son necesarios para copiar objetos de origen cifrados con SSE-C](#s3-api-headers-required-for-requests-to-copy-source-objects-encrypted-with-sse-c).

## Uso de los SDK de AWS para especificar SSE-C en las operaciones PUT, GET, Head y Copy
<a name="sse-c-using-sdks"></a>

En el siguiente ejemplo se muestra cómo solicitar el cifrado del lado del servidor con claves proporcionadas por el cliente (SSE-C) para objetos. En los ejemplos se realizan las siguientes operaciones. Cada operación muestra cómo especificar encabezados relacionados con el SSE-C en la solicitud:
+ **Put object:** carga un objeto y solicita el cifrado del lado del servidor mediante una clave de cifrado proporcionada por un cliente.
+ **Get object**: descarga el objeto que se cargó en el paso anterior. En la solicitud, proporciona la misma información de cifrado que proporcionó al cargar el objeto. Amazon S3 necesita esta información para descifrar el objeto de modo que pueda devolvérselo.
+ **Get object metadata**: recupera los metadatos del objeto. Proporciona la misma información de cifrado usada al crear el objeto.
+ **Copy object**: realiza una copia del objeto cargado previamente. Dado que el objeto de origen se almacena mediante SSE-C, usted debe proporcionar la información de cifrado en su solicitud de copia. De forma predeterminada, Amazon S3 cifra la copia del objeto solo si lo solicita explícitamente. En este ejemplo se indica a Amazon S3 que almacene una copia cifrada del objeto.

------
#### [ Java ]

**nota**  
Este ejemplo muestra cómo cargar un objeto en una operación única. Cuando utiliza la API de carga multiparte para cargar objetos grandes, brinda información de cifrado como se muestra en el siguiente ejemplo. Para ver ejemplos de cargas multiparte que utilizan AWS SDK para Java, consulte [Carga de un objeto con la carga multiparte](mpu-upload-object.md).

Para añadir la información de cifrado necesaria, incluya una `SSECustomerKey` en su solicitud. Para obtener más información sobre la clase `SSECustomerKey` , consulte la sección REST API (API de REST).

Para obtener instrucciones sobre cómo crear y probar una muestra funcional, consulte [Introducción](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/getting-started.html) en la Guía para desarrolladores de AWS SDK para Java.

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;

import javax.crypto.KeyGenerator;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class ServerSideEncryptionUsingClientSideEncryptionKey {
    private static SSECustomerKey SSE_KEY;
    private static AmazonS3 S3_CLIENT;
    private static KeyGenerator KEY_GENERATOR;

    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String keyName = "*** Key name ***";
        String uploadFileName = "*** File path ***";
        String targetKeyName = "*** Target key name ***";

        // Create an encryption key.
        KEY_GENERATOR = KeyGenerator.getInstance("AES");
        KEY_GENERATOR.init(256, new SecureRandom());
        SSE_KEY = new SSECustomerKey(KEY_GENERATOR.generateKey());

        try {
            S3_CLIENT = AmazonS3ClientBuilder.standard()
                    .withCredentials(new ProfileCredentialsProvider())
                    .withRegion(clientRegion)
                    .build();

            // Upload an object.
            uploadObject(bucketName, keyName, new File(uploadFileName));

            // Download the object.
            downloadObject(bucketName, keyName);

            // Verify that the object is properly encrypted by attempting to retrieve it
            // using the encryption key.
            retrieveObjectMetadata(bucketName, keyName);

            // Copy the object into a new object that also uses SSE-C.
            copyObject(bucketName, keyName, targetKeyName);
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }

    private static void uploadObject(String bucketName, String keyName, File file) {
        PutObjectRequest putRequest = new PutObjectRequest(bucketName, keyName, file).withSSECustomerKey(SSE_KEY);
        S3_CLIENT.putObject(putRequest);
        System.out.println("Object uploaded");
    }

    private static void downloadObject(String bucketName, String keyName) throws IOException {
        GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName).withSSECustomerKey(SSE_KEY);
        S3Object object = S3_CLIENT.getObject(getObjectRequest);

        System.out.println("Object content: ");
        displayTextInputStream(object.getObjectContent());
    }

    private static void retrieveObjectMetadata(String bucketName, String keyName) {
        GetObjectMetadataRequest getMetadataRequest = new GetObjectMetadataRequest(bucketName, keyName)
                .withSSECustomerKey(SSE_KEY);
        ObjectMetadata objectMetadata = S3_CLIENT.getObjectMetadata(getMetadataRequest);
        System.out.println("Metadata retrieved. Object size: " + objectMetadata.getContentLength());
    }

    private static void copyObject(String bucketName, String keyName, String targetKeyName)
            throws NoSuchAlgorithmException {
        // Create a new encryption key for target so that the target is saved using
        // SSE-C.
        SSECustomerKey newSSEKey = new SSECustomerKey(KEY_GENERATOR.generateKey());

        CopyObjectRequest copyRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName)
                .withSourceSSECustomerKey(SSE_KEY)
                .withDestinationSSECustomerKey(newSSEKey);

        S3_CLIENT.copyObject(copyRequest);
        System.out.println("Object copied");
    }

    private static void displayTextInputStream(S3ObjectInputStream input) throws IOException {
        // Read one line at a time from the input stream and display each line.
        BufferedReader reader = new BufferedReader(new InputStreamReader(input));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        System.out.println();
    }
}
```

------
#### [ .NET ]

**nota**  
Para ver ejemplos de cómo cargar objetos grandes con la API de carga multiparte, consulte [Carga de un objeto con la carga multiparte](mpu-upload-object.md) y [Uso de los SDK de AWS (API de bajo nivel)](mpu-upload-object.md#mpu-upload-low-level).

Para obtener información acerca de cómo configurar y ejecutar ejemplos de código, consulte [Introducción al SDK de AWS para .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) en la *Guía para desarrolladores del SDK de AWS para .NET*. 

**Example**  

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class SSEClientEncryptionKeyObjectOperationsTest
    {
        private const string bucketName = "*** bucket name ***"; 
        private const string keyName = "*** key name for new object created ***"; 
        private const string copyTargetKeyName = "*** key name for object copy ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            ObjectOpsUsingClientEncryptionKeyAsync().Wait();
        }
        private static async Task ObjectOpsUsingClientEncryptionKeyAsync()
        {
            try
            {
                // Create an encryption key.
                Aes aesEncryption = Aes.Create();
                aesEncryption.KeySize = 256;
                aesEncryption.GenerateKey();
                string base64Key = Convert.ToBase64String(aesEncryption.Key);

                // 1. Upload the object.
                PutObjectRequest putObjectRequest = await UploadObjectAsync(base64Key);
                // 2. Download the object and verify that its contents matches what you uploaded.
                await DownloadObjectAsync(base64Key, putObjectRequest);
                // 3. Get object metadata and verify that the object uses AES-256 encryption.
                await GetObjectMetadataAsync(base64Key);
                // 4. Copy both the source and target objects using server-side encryption with 
                //    a customer-provided encryption key.
                await CopyObjectAsync(aesEncryption, base64Key);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }

        private static async Task<PutObjectRequest> UploadObjectAsync(string base64Key)
        {
            PutObjectRequest putObjectRequest = new PutObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                ContentBody = "sample text",
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };
            PutObjectResponse putObjectResponse = await client.PutObjectAsync(putObjectRequest);
            return putObjectRequest;
        }
        private static async Task DownloadObjectAsync(string base64Key, PutObjectRequest putObjectRequest)
        {
            GetObjectRequest getObjectRequest = new GetObjectRequest
            {
                BucketName = bucketName,
                Key = keyName,
                // Provide encryption information for the object stored in Amazon S3.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            using (GetObjectResponse getResponse = await client.GetObjectAsync(getObjectRequest))
            using (StreamReader reader = new StreamReader(getResponse.ResponseStream))
            {
                string content = reader.ReadToEnd();
                if (String.Compare(putObjectRequest.ContentBody, content) == 0)
                    Console.WriteLine("Object content is same as we uploaded");
                else
                    Console.WriteLine("Error...Object content is not same.");

                if (getResponse.ServerSideEncryptionCustomerMethod == ServerSideEncryptionCustomerMethod.AES256)
                    Console.WriteLine("Object encryption method is AES256, same as we set");
                else
                    Console.WriteLine("Error...Object encryption method is not the same as AES256 we set");

                // Assert.AreEqual(putObjectRequest.ContentBody, content);
                // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getResponse.ServerSideEncryptionCustomerMethod);
            }
        }
        private static async Task GetObjectMetadataAsync(string base64Key)
        {
            GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest
            {
                BucketName = bucketName,
                Key = keyName,

                // The object stored in Amazon S3 is encrypted, so provide the necessary encryption information.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = base64Key
            };

            GetObjectMetadataResponse getObjectMetadataResponse = await client.GetObjectMetadataAsync(getObjectMetadataRequest);
            Console.WriteLine("The object metadata show encryption method used is: {0}", getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
            // Assert.AreEqual(ServerSideEncryptionCustomerMethod.AES256, getObjectMetadataResponse.ServerSideEncryptionCustomerMethod);
        }
        private static async Task CopyObjectAsync(Aes aesEncryption, string base64Key)
        {
            aesEncryption.GenerateKey();
            string copyBase64Key = Convert.ToBase64String(aesEncryption.Key);

            CopyObjectRequest copyRequest = new CopyObjectRequest
            {
                SourceBucket = bucketName,
                SourceKey = keyName,
                DestinationBucket = bucketName,
                DestinationKey = copyTargetKeyName,
                // Information about the source object's encryption.
                CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                CopySourceServerSideEncryptionCustomerProvidedKey = base64Key,
                // Information about the target object's encryption.
                ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                ServerSideEncryptionCustomerProvidedKey = copyBase64Key
            };
            await client.CopyObjectAsync(copyRequest);
        }
    }
}
```

------

## Uso de los SDK de AWS para especificar SSE-C en las cargas multiparte
<a name="sse-c-using-sdks-multipart-uploads"></a>

En el ejemplo de la sección anterior se muestra cómo solicitar cifrado del lado del servidor con claves proporcionadas por el cliente (SSE-C) en operaciones PUT, GET, Head y Copy. En esta sección se describen otras API de Amazon S3 que admiten SSE-C.

------
#### [ Java ]

Para cargar objetos grandes, puede utilizar las API de carga multiparte. Para obtener más información, consulte [Carga y copia de objetos con la carga multiparte en Amazon S3](mpuoverview.md). Puede usar API de nivel alto o de nivel bajo para cargar objetos grandes. Estas API admiten los encabezados relacionados con el cifrado en la solicitud.
+ Cuando utiliza la API de `TransferManager` de alto nivel, proporciona los encabezados específicos del cifrado en la `PutObjectRequest`. Para obtener más información, consulte [Carga de un objeto con la carga multiparte](mpu-upload-object.md). 
+ Al usar la API de bajo nivel, proporcionará información relacionada con el cifrado en la `InitiateMultipartUploadRequest`, seguida por información de cifrado idéntica en cada `UploadPartRequest`. No necesita proporcionar encabezados específicos de cifrado en su `CompleteMultipartUploadRequest`. Para ver ejemplos, consulte [Uso de los SDK de AWS (API de bajo nivel)](mpu-upload-object.md#mpu-upload-low-level). 

En el siguiente ejemplo se usa `TransferManager` para crear objetos y se muestra cómo facilitar la información relacionada con SSE-C. En el ejemplo se realiza lo siguiente:
+ Crea un objeto mediante el método `TransferManager.upload()`. En la instancia de `PutObjectRequest`, proporciona la información de la clave de cifrado en la solicitud. Amazon S3 cifre el objeto utilizando la clave de facilitada por el cliente.
+ Realiza una copia del objeto llamando al método `TransferManager.copy()`. El ejemplo indica a Amazon S3 que cifre la copia del objeto con una nueva `SSECustomerKey`. Dado que el objeto de origen está cifrado con SSE-C, la `CopyObjectRequest` también facilita la clave de cifrado del objeto de origen, de modo que Amazon S3 puede descifrar el objeto antes de copiarlo. 

**Example**  

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.SdkClientException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.CopyObjectRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.SSECustomerKey;
import com.amazonaws.services.s3.transfer.Copy;
import com.amazonaws.services.s3.transfer.TransferManager;
import com.amazonaws.services.s3.transfer.TransferManagerBuilder;
import com.amazonaws.services.s3.transfer.Upload;

import javax.crypto.KeyGenerator;
import java.io.File;
import java.security.SecureRandom;

public class ServerSideEncryptionCopyObjectUsingHLwithSSEC {

    public static void main(String[] args) throws Exception {
        Regions clientRegion = Regions.DEFAULT_REGION;
        String bucketName = "*** Bucket name ***";
        String fileToUpload = "*** File path ***";
        String keyName = "*** New object key name ***";
        String targetKeyName = "*** Key name for object copy ***";

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                    .withRegion(clientRegion)
                    .withCredentials(new ProfileCredentialsProvider())
                    .build();
            TransferManager tm = TransferManagerBuilder.standard()
                    .withS3Client(s3Client)
                    .build();

            // Create an object from a file.
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, new File(fileToUpload));

            // Create an encryption key.
            KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
            keyGenerator.init(256, new SecureRandom());
            SSECustomerKey sseCustomerEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());

            // Upload the object. TransferManager uploads asynchronously, so this call
            // returns immediately.
            putObjectRequest.setSSECustomerKey(sseCustomerEncryptionKey);
            Upload upload = tm.upload(putObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            upload.waitForCompletion();
            System.out.println("Object created.");

            // Copy the object and store the copy using SSE-C with a new key.
            CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, keyName, bucketName, targetKeyName);
            SSECustomerKey sseTargetObjectEncryptionKey = new SSECustomerKey(keyGenerator.generateKey());
            copyObjectRequest.setSourceSSECustomerKey(sseCustomerEncryptionKey);
            copyObjectRequest.setDestinationSSECustomerKey(sseTargetObjectEncryptionKey);

            // Copy the object. TransferManager copies asynchronously, so this call returns
            // immediately.
            Copy copy = tm.copy(copyObjectRequest);

            // Optionally, wait for the upload to finish before continuing.
            copy.waitForCompletion();
            System.out.println("Copy complete.");
        } catch (AmazonServiceException e) {
            // The call was transmitted successfully, but Amazon S3 couldn't process
            // it, so it returned an error response.
            e.printStackTrace();
        } catch (SdkClientException e) {
            // Amazon S3 couldn't be contacted for a response, or the client
            // couldn't parse the response from Amazon S3.
            e.printStackTrace();
        }
    }
}
```

------
#### [ .NET ]

Para cargar objetos grandes, puede utilizar la API de carga multiparte (consulte [Carga y copia de objetos con la carga multiparte en Amazon S3](mpuoverview.md)).AWS SDK para .NET proporciona API de nivel alto o bajo para cargar objetos de gran tamaño. Estas API admiten los encabezados relacionados con el cifrado en la solicitud.
+ Cuando utiliza la API de `Transfer-Utility ` de alto nivel, usted proporciona los encabezados específicos del cifrado en `TransferUtilityUploadRequest` como se muestra. Para ver ejemplos de código, consulte [Carga de un objeto con la carga multiparte](mpu-upload-object.md).

  ```
  TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()
  {
      FilePath = filePath,
      BucketName = existingBucketName,
      Key = keyName,
      // Provide encryption information.
      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
      ServerSideEncryptionCustomerProvidedKey = base64Key,
  };
  ```
+ Al usar la API de bajo nivel, proporcionará información relacionada con el cifrado en la solicitud de inicio de la carga multiparte, seguida por información de cifrado idéntica en las solicitudes de carga de partes subsiguientes. No necesita proporcionar encabezados específicos de cifrado en su solicitud de carga multiparte completa. Para ver ejemplos, consulte [Uso de los SDK de AWS (API de bajo nivel)](mpu-upload-object.md#mpu-upload-low-level).

  A continuación se muestra un ejemplo de carga multiparte de bajo nivel que hace una copia de un objeto grande existente. En el ejemplo, el objeto que se copiará se guarda en Amazon S3 mediante el SSE-C y usted también desea usar el SSE-C para guardar el objeto de destino. En el ejemplo, hará lo siguiente:
  + Inicie una solicitud de carga multiparte proporcionando una clave de cifrado y la información relacionada.
  + Proporcione las claves de cifrado del objeto de origen y de destino, y la información relacionada en `CopyPartRequest`.
  + Recupere los metadatos del objeto para obtener el tamaño del objeto de origen que se copiará.
  + Cargue los objetos en partes de 5 MB.  
**Example**  

  ```
  using Amazon;
  using Amazon.S3;
  using Amazon.S3.Model;
  using System;
  using System.Collections.Generic;
  using System.IO;
  using System.Security.Cryptography;
  using System.Threading.Tasks;
  
  namespace Amazon.DocSamples.S3
  {
      class SSECLowLevelMPUcopyObjectTest
      {
          private const string existingBucketName = "*** bucket name ***";
          private const string sourceKeyName      = "*** source object key name ***"; 
          private const string targetKeyName      = "*** key name for the target object ***";
          private const string filePath           = @"*** file path ***";
          // Specify your bucket region (an example region is shown).
          private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
          private static IAmazonS3 s3Client;
          static void Main()
          {
              s3Client = new AmazonS3Client(bucketRegion);
              CopyObjClientEncryptionKeyAsync().Wait();
          }
  
          private static async Task CopyObjClientEncryptionKeyAsync()
          {
              Aes aesEncryption = Aes.Create();
              aesEncryption.KeySize = 256;
              aesEncryption.GenerateKey();
              string base64Key = Convert.ToBase64String(aesEncryption.Key);
  
              await CreateSampleObjUsingClientEncryptionKeyAsync(base64Key, s3Client);
  
              await CopyObjectAsync(s3Client, base64Key);
          }
          private static async Task CopyObjectAsync(IAmazonS3 s3Client, string base64Key)
          {
              List<CopyPartResponse> uploadResponses = new List<CopyPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = targetKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key,
              };
  
              InitiateMultipartUploadResponse initResponse =
                  await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
              long firstByte = 0;
              long lastByte = partSize;
  
              try
              {
                  // First find source object size. Because object is stored encrypted with
                  // customer provided key you need to provide encryption information in your request.
                  GetObjectMetadataRequest getObjectMetadataRequest = new GetObjectMetadataRequest()
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                      ServerSideEncryptionCustomerProvidedKey = base64Key // " * **source object encryption key ***"
                  };
  
                  GetObjectMetadataResponse getObjectMetadataResponse = await s3Client.GetObjectMetadataAsync(getObjectMetadataRequest);
  
                  long filePosition = 0;
                  for (int i = 1; filePosition < getObjectMetadataResponse.ContentLength; i++)
                  {
                      CopyPartRequest copyPartRequest = new CopyPartRequest
                      {
                          UploadId = initResponse.UploadId,
                          // Source.
                          SourceBucket = existingBucketName,
                          SourceKey = sourceKeyName,
                          // Source object is stored using SSE-C. Provide encryption information.
                          CopySourceServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          CopySourceServerSideEncryptionCustomerProvidedKey = base64Key, //"***source object encryption key ***",
                          FirstByte = firstByte,
                          // If the last part is smaller then our normal part size then use the remaining size.
                          LastByte = lastByte > getObjectMetadataResponse.ContentLength ?
                              getObjectMetadataResponse.ContentLength - 1 : lastByte,
  
                          // Target.
                          DestinationBucket = existingBucketName,
                          DestinationKey = targetKeyName,
                          PartNumber = i,
                          // Encryption information for the target object.
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
                      uploadResponses.Add(await s3Client.CopyPartAsync(copyPartRequest));
                      filePosition += partSize;
                      firstByte += partSize;
                      lastByte += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId,
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = targetKeyName,
                      UploadId = initResponse.UploadId
                  };
                  s3Client.AbortMultipartUpload(abortMPURequest);
              }
          }
          private static async Task CreateSampleObjUsingClientEncryptionKeyAsync(string base64Key, IAmazonS3 s3Client)
          {
              // List to store upload part responses.
              List<UploadPartResponse> uploadResponses = new List<UploadPartResponse>();
  
              // 1. Initialize.
              InitiateMultipartUploadRequest initiateRequest = new InitiateMultipartUploadRequest
              {
                  BucketName = existingBucketName,
                  Key = sourceKeyName,
                  ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                  ServerSideEncryptionCustomerProvidedKey = base64Key
              };
  
              InitiateMultipartUploadResponse initResponse =
                 await s3Client.InitiateMultipartUploadAsync(initiateRequest);
  
              // 2. Upload Parts.
              long contentLength = new FileInfo(filePath).Length;
              long partSize = 5 * (long)Math.Pow(2, 20); // 5 MB
  
              try
              {
                  long filePosition = 0;
                  for (int i = 1; filePosition < contentLength; i++)
                  {
                      UploadPartRequest uploadRequest = new UploadPartRequest
                      {
                          BucketName = existingBucketName,
                          Key = sourceKeyName,
                          UploadId = initResponse.UploadId,
                          PartNumber = i,
                          PartSize = partSize,
                          FilePosition = filePosition,
                          FilePath = filePath,
                          ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256,
                          ServerSideEncryptionCustomerProvidedKey = base64Key
                      };
  
                      // Upload part and add response to our list.
                      uploadResponses.Add(await s3Client.UploadPartAsync(uploadRequest));
  
                      filePosition += partSize;
                  }
  
                  // Step 3: complete.
                  CompleteMultipartUploadRequest completeRequest = new CompleteMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId,
                      //PartETags = new List<PartETag>(uploadResponses)
  
                  };
                  completeRequest.AddPartETags(uploadResponses);
  
                  CompleteMultipartUploadResponse completeUploadResponse =
                      await s3Client.CompleteMultipartUploadAsync(completeRequest);
  
              }
              catch (Exception exception)
              {
                  Console.WriteLine("Exception occurred: {0}", exception.Message);
                  AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
                  {
                      BucketName = existingBucketName,
                      Key = sourceKeyName,
                      UploadId = initResponse.UploadId
                  };
                  await s3Client.AbortMultipartUploadAsync(abortMPURequest);
              }
          }
      }
  }
  ```

------

# Bloqueo o desbloqueo de SSE-C para un bucket de uso general
<a name="blocking-unblocking-s3-c-encryption-gpb"></a>

En la mayoría de casos de uso modernos de Amazon S3 ya no se utiliza el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) porque no tiene la flexibilidad del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) o el cifrado del servidor con claves de AWS KMS (SSE-KMS). El requisito de SSE-C de proporcionar la clave de cifrado cada vez que interactúa con los datos cifrados de SSE-C hace que no sea práctico compartir la clave de SSE-C con otros usuarios, roles o servicios de AWS que leen datos de los buckets de S3 para poder operar en los datos.

Para limitar los tipos de cifrado del servidor que puede utilizar en los buckets de uso general, tiene la opción de elegir bloquear las solicitudes de escritura de SSE-C actualizando la configuración de cifrado predeterminada de los buckets. Esta configuración por bucket bloquea las solicitudes de carga de objetos que especifican SSE-C. Cuando se bloquea SSE-C para un bucket, cualquier solicitud `PutObject`, `CopyObject`, `PostObject` o de replicación o carga multiparte que especifique el cifrado SSE-C se rechazará con un error HTTP 403 `AccessDenied`.

Esta configuración es un parámetro de la API de `PutBucketEncryption` y también se puede actualizar mediante la consola de S3, la AWS CLI y los AWS SDK, si tiene el permiso `s3:PutEncryptionConfiguration`.

Los valores válidos son `SSE-C`, que bloquea el cifrado SSE-C para el bucket de uso general y `NONE`, que permite usar SSE-C para escribir en el bucket.

**importante**  
A partir de abril de 2026, AWS desactivará el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) para todos los buckets nuevos. Además, el cifrado SSE-C se desactivará para todos los buckets existentes en Cuentas de AWS que no contengan datos cifrados con SSE-C. Con estos cambios, las pocas aplicaciones que necesitan el cifrado SSE-C deberán habilitar deliberadamente el uso de SSE-C a través de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) después de crear el bucket. En estos casos, es posible que deba actualizar los scripts de automatización, las plantillas de CloudFormation u otras herramientas de configuración de infraestructura para configurar estos ajustes. Para obtener más información, consulte la [publicación del Blog de almacenamiento de AWS](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

## Permisos
<a name="bucket-encryption-permissions"></a>

Utilice la API de `PutBucketEncryption` o la consola de S3, los AWS SDK o la AWS CLI para bloquear o desbloquear los tipos de cifrado para un bucket de uso general. Debe tener el siguiente permiso:
+ `s3:PutEncryptionConfiguration`

Utilice la API de `GetBucketEncryption` o la consola de S3, los AWS SDK o la AWS CLI para ver los tipos de cifrado bloqueados para un bucket de uso general. Debe tener el siguiente permiso:
+ `s3:GetEncryptionConfiguration`

## Consideraciones antes de bloquear el cifrado SSE-C
<a name="considerations-before-blocking-sse-c"></a>

Después de bloquear SSE-C para cualquier bucket, se aplica el siguiente comportamiento de cifrado:
+ No hay ninguna variación en el cifrado de los objetos que existían en el bucket antes de que bloqueara el cifrado SSE-C.
+ Tras bloquear el cifrado SSE-C, puede seguir realizando solicitudes GetObject y HeadObject en objetos preexistentes cifrados con SSE-C siempre que proporcione los encabezados de SSE-C necesarios en las solicitudes.
+ Cuando se bloquea SSE-C para un bucket, cualquier solicitud `PutObject`, `CopyObject`, `PostObject` o de carga multiparte que especifique el cifrado SSE-C se rechazará con un error 403 `AccessDenied`.
+ Si un bucket de destino para la replicación tiene SSE-C bloqueado y los objetos de origen que se están replicando están cifrados con SSE-C, la replicación producirá un error HTTP 403 `AccessDenied`.

Si quiere comprobar si utiliza el cifrado SSE-C en alguno de los buckets antes de bloquear este tipo de cifrado, puede utilizar herramientas como [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) para supervisar el acceso a los datos. En esta [entrada de blog](https://aws.amazon.com/blogs/storage/auditing-amazon-s3-server-side-encryption-methods-for-object-uploads/), se muestra cómo auditar los métodos de cifrado para la carga de objetos en tiempo real. También puede consultar este [artículo de re:Post](https://repost.aws/articles/ARhGC12rOiTBCKHcAe9GZXCA/how-to-detect-existing-use-of-sse-c-in-your-amazon-s3-buckets) como guía a la hora de consultar los informes de inventario de S3 para ver si tiene algún objeto cifrado con SSE-C.

### Steps
<a name="block-sse-c-gpb-steps"></a>

Puede bloquear o desbloquear el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) para un bucket de uso general mediante la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), la API de REST de Amazon S3 y los AWS SDK.

### Uso de la consola de S3
<a name="block-sse-c-gpb-console"></a>

Para bloquear o desbloquear el cifrado SSE-C de un bucket mediante la consola de Amazon S3:

1. Inicie sesión en la consola de administración de AWS y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

1. En el panel de navegación izquierdo, elija **Buckets de uso general**.

1. Seleccione el bucket para el que desea bloquear el cifrado SSE-C.

1. Seleccione la pestaña **Propiedades** del bucket.

1. Navegue hasta el panel de propiedades de **Cifrado predeterminado** del bucket y seleccione **Editar**.

1. En la sección **Tipos de cifrado bloqueados**, marque la casilla situada junto a **Cifrado del servidor con claves proporcionadas por el cliente (SSE-C)** para bloquear el cifrado SSE-C o desmarque esta casilla para permitir SSE-C.

1. Seleccione **Save Changes (Guardar cambios)**.

### Uso de AWS CLI
<a name="block-sse-c-gpb-cli"></a>

Para instalar la CLI de AWS, consulte [Instalación de la CLI de AWS](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) en la *Guía del usuario de AWS Command Line Interface*.

En el ejemplo de la CLI siguiente se muestra cómo bloquear o desbloquear el cifrado SSE-C para un bucket de uso general mediante la AWS CLI. Para usar el comando, sustituya los *marcadores de posición de entrada del usuario* con su propia información.

**Solicitud para bloquear el cifrado SSE-C para un bucket de uso general:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "SSE-C"
      }
    }]
  }'
```

**Solicitud para habilitar el uso del cifrado SSE-C en un bucket de uso general:**

```
aws s3api put-bucket-encryption \
  --bucket amzn-s3-demo-bucket \
  --server-side-encryption-configuration '{
    "Rules": [{
      "BlockEncryptionTypes": {
        "EncryptionType": "NONE"
      }
    }]
  }'
```

## Uso de los AWS SDK
<a name="block-sse-c-gpb-sdks"></a>

------
#### [ SDK for Java 2.x ]

En los ejemplos siguientes, se muestra cómo bloquear o desbloquear las escrituras de cifrado SSE-C para los buckets de uso general mediante los AWS SDK.

**Ejemplo: solicitud PutBucketEncryption que establece la configuración de cifrado predeterminada en SSE-S3 y bloquea SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.SSE_C)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

**Ejemplo: solicitud PutBucketEncryption que establece la configuración de cifrado predeterminada en SSE-S3 y desbloquea SSE-C**

```
S3Client s3Client = ...;
ServerSideEncryptionByDefault defaultSse = ServerSideEncryptionByDefault
        .builder()
        .sseAlgorithm(ServerSideEncryption.AES256)
        .build();
BlockedEncryptionTypes blockedEncryptionTypes = BlockedEncryptionTypes
        .builder()
        .encryptionType(EncryptionType.NONE)
        .build();
ServerSideEncryptionRule rule = ServerSideEncryptionRule.builder()
        .applyServerSideEncryptionByDefault(defaultSse)
        .blockedEncryptionTypes(blockedEncryptionTypes)
        .build();
s3Client.putBucketEncryption(be -> be
        .bucket(bucketName)
        .serverSideEncryptionConfiguration(c -> c.rules(rule)));
```

------
#### [ SDK for Python Boto3 ]

**Ejemplo: solicitud PutBucketEncryption que establece la configuración de cifrado predeterminada en SSE-S3 y bloquea SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["SSE-C"]
            }
        }]
    }
)
```

**Ejemplo: solicitud PutBucketEncryption que establece la configuración de cifrado predeterminada en SSE-S3 y desbloquea SSE-C**

```
s3 = boto3.client("s3")
s3.put_bucket_encryption(
    Bucket="amzn-s3-demo-bucket",
    ServerSideEncryptionConfiguration={
        "Rules":[{
            "ApplyServerSideEncryptionByDefault": {
                "SSEAlgorithm": "AES256"
            },
            "BlockedEncryptionTypes": {
                "EncryptionType": ["NONE"]
            }
        }]
    }
)
```

------

## Uso de la API de REST
<a name="bucket-tag-add-api"></a>

Para obtener información sobre la compatibilidad con la API de REST de Amazon S3 para el bloqueo o desbloqueo del cifrado SSE-C para un bucket de uso general, consulte la siguiente sección en la *Referencia de la API de Amazon Simple Storage Service*:
+ Tipo de datos [BlockedEncryptionTypes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_BlockedEncryptionTypes.html) usado en el tipo de datos [ServerSideEncryptionRule](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ServerSideEncryptionRule.html) de las operaciones de la API [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) y [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html).

# Configuración de SSE-C predeterminada para preguntas frecuentes de buckets nuevos
<a name="default-s3-c-encryption-setting-faq"></a>

**importante**  
A partir de abril de 2026, AWS desactivará el cifrado del servidor con claves proporcionadas por el cliente (SSE-C) para todos los buckets nuevos. Además, el cifrado SSE-C se desactivará para todos los buckets existentes en Cuentas de AWS que no contengan datos cifrados con SSE-C. Con estos cambios, las pocas aplicaciones que necesitan el cifrado SSE-C deberán habilitar deliberadamente el uso de SSE-C a través de la API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) después de crear el bucket. En estos casos, es posible que deba actualizar los scripts de automatización, las plantillas de CloudFormation u otras herramientas de configuración de infraestructura para configurar estos ajustes. Para obtener más información, consulte la [publicación del Blog de almacenamiento de AWS](https://aws.amazon.com/blogs/storage/advanced-notice-amazon-s3-to-disable-the-use-of-sse-c-encryption-by-default-for-all-new-buckets-and-select-existing-buckets-in-april-2026/).

Las siguientes secciones responden a las preguntas sobre esta actualización.

**1. En abril de 2026, ¿entrará en vigor la nueva configuración de SSE-C para todos los buckets recién creados?**

Sí. Durante el mes de abril de 2026, la nueva configuración predeterminada se implementará gradualmente en todas las regiones de AWS.

**2. ¿Cuánto tiempo pasará antes de que esta implementación cubra todas las regiones de AWS?**

Esta actualización tardará varias semanas en lanzarse. Realizaremos una publicación sobre las novedades cuando empecemos a implementar esta actualización.

**3. Cómo sabré que la actualización se ha completado?**

Para determinar fácilmente si el cambio se ha realizado en la región de AWS, cree un nuevo bucket y llame a la operación de la API [GetBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html) para determinar si el cifrado SSE-C está desactivado. Una vez finalizada la actualización, todos los buckets de uso general desactivarán automáticamente el cifrado SSE-C de forma predeterminada. Puede ajustar esta configuración después de crear el bucket de S3 mediante la operación de la API [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html).

**4. Amazon S3 actualizará las configuraciones de mis bucket existentes?**

Si la cuenta de AWS no tiene ningún objeto con cifrado SSE-C, AWS desactivará el cifrado SSE-C en todos los buckets existentes. Si algún bucket de la cuenta de AWS tiene objetos con cifrado SSE-C, AWS no cambiará la configuración del bucket de ninguno de los buckets de esa cuenta. Cuando se complete el cambio `CreateBucket` en la región de AWS, la nueva configuración predeterminada se aplicará a todos los nuevos buckets de uso general. 

 **5. Puedo desactivar el cifrado SSE-C para mis buckets antes de que se complete la actualización?** 

Sí. Para desactivar el cifrado SSE-C en cualquier bucket, llame a la operación de la API [PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html) y especifique el nuevo encabezado `BlockedEncryptionTypes`. 

**6. Puedo usar SSE-C para cifrar los datos de mis nuevos buckets?**

Sí. En la mayoría de casos de uso modernos de Amazon S3 ya no se utiliza SSE-C porque no tiene la flexibilidad del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) o el cifrado del servidor con claves de AWS KMS (SSE-KMS). Si necesita usar el cifrado SSE-C en un bucket nuevo, puede crear el nuevo bucket y, a continuación, habilitar el uso del cifrado SSE-C en una solicitud `PutBucketEncryption` independiente.

 **Ejemplo**

```
aws s3api create-bucket \  
bucket amzn-s3-demo-bucket \ 
region us-east-1 \ 
  
aws s3api put-bucket-encryption \  
-- bucket amzn-s3-demo-bucket \
-- server-side-encryption-configuration \
'{ \Rules\: [{   
   {   
   \ApplyServerSideEncryptionByDefault\: {   
     \SSEAlgorithm\: \AES256\,  
    },   
   \BlockedEncryptionTypes\: [  
     \EncryptionType\:\NONE\]   
   }   
   }]   
}'
```

**nota**  
Debe tener el permiso `s3:PutEncryptionConfiguration` para llamar a la API `PutBucketEncryption`. 

**7. Cómo afecta el bloqueo de SSE-C a las solicitudes a mi bucket?**

Cuando se bloquea SSE-C para un bucket, cualquier solicitud `PutObject`, `CopyObject`, `PostObject` o de replicación o carga multiparte que especifique el cifrado SSE-C se rechazará con un error HTTP 403 `AccessDenied`. 

# Protección de los datos con el cifrado del cliente
<a name="UsingClientSideEncryption"></a>

El *cifrado del cliente* es el acto de cifrar los datos de manera local para ayudar a garantizar su seguridad en tránsito y en reposo. Para cifrar los objetos antes de enviarlos a Amazon S3, utilice el cliente de cifrado de Amazon S3. Si cifra sus objetos de esta manera, no estarán expuestos a terceros, ni siquiera AWS. Amazon S3 recibe los objetos ya cifrados; Amazon S3 no interviene en el cifrado ni el descifrado de los objetos. Puede utilizar tanto el cliente de cifrado de Amazon S3 como el [cifrado del lado del servidor](serv-side-encryption.md) para cifrar sus datos. Cuando envía objetos cifrados a Amazon S3, Amazon S3 no reconoce los objetos como cifrados, solo detecta los objetos típicos.

El cliente de cifrado de Amazon S3 funciona como intermediario entre usted y Amazon S3. Tras crear una instancia del cliente de cifrado de Amazon S3, sus objetos se cifran y descifran automáticamente como parte de sus solicitudes `PutObject` y `GetObject` de Amazon S3. Todos sus objetos se cifran con una clave de datos única. El cliente de cifrado de Amazon S3 no usa claves de bucket ni interactúa con ellas, incluso si especifica una clave de KMS como clave de empaquetado.

La *Guía para desarrolladores del cliente de cifrado de Amazon S3* se centra en las versiones 3.0 y posteriores del cliente de cifrado de Amazon S3. Para obtener más información, consulte [¿Qué es el cifrado del cliente de Amazon S3?](https://docs.aws.amazon.com//amazon-s3-encryption-client/latest/developerguide/what-is-s3-encryption-client.html) en la *Guía para desarrolladores de cifrado del cliente de Amazon S3*.

Para obtener más información acerca de las versiones anteriores del cliente de cifrado de Amazon S3, consulte la Guía para desarrolladores del SDK de AWS de su lenguaje de programación.
+ [AWS SDK para Java](https://docs.aws.amazon.com//sdk-for-java/v1/developer-guide/examples-crypto.html)
+ [AWS SDK para .NET](https://docs.aws.amazon.com//sdk-for-net/v3/developer-guide/kms-keys-s3-encryption.html)
+ [AWS SDK para Go](https://docs.aws.amazon.com//sdk-for-go/v1/developer-guide/welcome.html)
+ [AWS SDK para PHP](https://docs.aws.amazon.com//sdk-for-php/v3/developer-guide/s3-encryption-client.html)
+ [AWS SDK para Ruby](https://docs.aws.amazon.com//sdk-for-ruby/v3/api/Aws/S3/Encryption.html)
+ [AWS SDK para C\$1\$1](https://docs.aws.amazon.com//sdk-for-cpp/v1/developer-guide/welcome.html)

# Protección de los datos en tránsito con cifrado
<a name="UsingEncryptionInTransit"></a>

Amazon S3 admite los protocolos HTTP y HTTPS para la transmisión de datos. HTTP transmite los datos en texto sin formato, mientras que HTTPS agrega una capa de seguridad al cifrar los datos mediante seguridad de la capa de transporte (TLS). TLS protege contra el espionaje, la manipulación de datos y los ataques de intermediarios. Aunque se acepta el tráfico HTTP, la mayoría de las implementaciones utilizan el cifrado en tránsito con HTTPS y TLS para proteger los datos cuando viajan entre los clientes y Amazon S3.

## Soporte de TLS 1.2 y TLS 1.3
<a name="UsingEncryptionInTransit.TLS-support"></a>

Amazon S3 admite TLS 1.2 y TLS 1.3 para las conexiones HTTPS en todos los puntos de conexión de la API para todas las Regiones de AWS. S3 negocia automáticamente la protección TLS más sólida compatible con el software de cliente y el punto de conexión de S3 al que está accediendo. Las herramientas de AWS actuales (de 2014 o posteriores), incluidos los AWS SDK y la AWS CLI pasan automáticamente a TLS 1.3 de forma predeterminada, sin que sea necesario que realice ninguna acción. Puede invalidar esta negociación automática mediante los ajustes de configuración del cliente para especificar una versión de TLS concreta si se necesita la compatibilidad con versiones anteriores de TLS 1.2. Si utiliza TLS 1.3, puede configurar opcionalmente el intercambio de claves poscuánticas híbrido (ML-KEM) para realizar solicitudes con resistencia cuántica a Amazon S3. Para obtener más información, consulte [Configuración del cifrado TLS poscuántico híbrido para el cliente](pqtls-how-to.md). 

**nota**  
TLS 1.3 se admite en todos los puntos de conexión de S3, excepto en AWS PrivateLink para Amazon S3 y los puntos de acceso multirregionales.

## Supervisión del uso de TLS
<a name="UsingEncryptionInTransit.monitoring"></a>

Puede utilizar los registros de acceso al servidor de Amazon S3 o AWS CloudTrail para supervisar las solicitudes a los buckets de Amazon S3. Ambas opciones de registro registran la versión de TLS y el conjunto de cifrado utilizados en cada solicitud.
+ **Registros de acceso del servidor de Amazon S3**: el registro de acceso del servidor brinda registros detallados para las solicitudes realizadas a un bucket. Por ejemplo, la información del registro de acceso puede ser útil en auditorías de acceso y seguridad. Para obtener más información, consulte [Formato de registro de acceso al servidor de Amazon S3](LogFormat.md).
+ **AWS CloudTrail**: [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) es un servicio que proporciona un registro de las acciones que realiza un usuario, un rol o un servicio de AWS. CloudTrail captura todas las llamadas a la API para Amazon S3 como eventos. Para obtener más información, consulte [Eventos de Amazon S3 CloudTrail](cloudtrail-logging-s3-info.md).

## Aplicación del cifrado en tránsito
<a name="UsingEncryptionInTransit.enforcement"></a>

Es una práctica recomendada de seguridad para aplicar el cifrado de los datos en tránsito a Amazon S3. Puede aplicar la comunicación solo mediante HTTPS o el uso de una versión de TLS específica a través de varios mecanismos de políticas. Estos incluyen políticas de IAM basadas en recursos para buckets de S3 ([políticas de bucket](bucket-policies.md)), [Políticas de control de servicios](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCP), [Políticas de control de recursos](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCP) y [Políticas de punto de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).

### Ejemplos de políticas de bucket para aplicar el cifrado en tránsito
<a name="UsingEncryptionInTransit.bucket-policy-example"></a>

Puede utilizar la [clave de condición de S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) `s3:TlsVersion` para restringir el acceso a buckets de Amazon S3 en función de la versión de TLS que utilice el cliente. Para obtener más información, consulte [Ejemplo 6: Necesidad de una versión mínima de TLS](amazon-s3-policy-keys.md#example-object-tls-version).

**Example política de bucket que aplica TLS 1.3 mediante la clave de condición `S3:TlsVersion`**  

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyInsecureConnections",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
        "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ],
      "Condition": {
        "NumericLessThan": {
          "s3:TlsVersion": "1.3"
        }
      }
    }
  ]
}
```

Puede usar la [clave de condición global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) `aws:SecureTransport` de la política de bucket de S3 para comprobar si la solicitud se envió a través de HTTPS (TLS). A diferencia del ejemplo anterior, esta condición no comprueba la existencia de una versión de TLS específica. Para obtener más información, consulte [Restringir el acceso solo a las solicitudes HTTPS](example-bucket-policies.md#example-bucket-policies-use-case-HTTP-HTTPS-1).

**Example política de bucket que aplica HTTPS mediante la clave de condición global `aws:SecureTransport`**  

```
{
    "Version":"2012-10-17",		 	 	 		 	 	 
    "Statement": [
     {
        "Sid": "RestrictToTLSRequestsOnly",		 	 	 
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket1",
            "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        },
        "Principal": "*"
    }
  ]
}
```

**Ejemplo de política basada en ambas claves y en más ejemplos**  
Puede usar los dos tipos de claves de condición de los ejemplos anteriores en una política. Para obtener más información y enfoques de cumplimiento adicionales, consulte el artículo del blog sobre almacenamiento de AWS [Aplicación del cifrado en tránsito con TLS 1.2 o superior con Amazon S3](https://aws.amazon.com/blogs/storage/enforcing-encryption-in-transit-with-tls1-2-or-higher-with-amazon-s3/).

# Uso de TLS poscuántico híbrido con Amazon S3
<a name="UsingEncryptionInTransit.PQ-TLS"></a>

Amazon S3 admite una opción de intercambio de claves poscuánticas híbrido para el protocolo de cifrado de red TLS. Puede utilizar esta opción de TLS cuando realice solicitudes a los puntos de conexión de Amazon S3 mediante TLS 1.3. Los conjuntos de cifrado clásicos que S3 admite para las sesiones de TLS convierten en inviables los ataques de fuerza bruta en los mecanismos de intercambio de claves con la tecnología actual. Sin embargo, si una computación cuántica relevante criptográficamente tiene efectos prácticos en el futuro, los conjuntos de cifrado clásicos utilizados en los mecanismos de intercambio de claves TLS serán susceptibles a estos ataques. En la actualidad, el sector está alineado con el intercambio de claves poscuánticas híbrido que combina elementos clásicos y poscuánticos para garantizar que la conexión TLS sea al menos tan sólida como con los conjuntos de cifrado clásicos. Amazon S3 es compatible con PQ-TLS híbrido, en cumplimiento de la especificación de IANA estándar del sector, en la actualidad

Si va a desarrollar aplicaciones que dependen de la confidencialidad a largo plazo de los datos transmitidos a través de una conexión TLS, debe considerar un plan para migrar a la criptografía poscuántica antes de que los equipos cuánticos a gran escala estén disponibles para su uso. Como parte del modelo de responsabilidad compartida, S3 permite la criptografía de seguridad cuántica en nuestros puntos de conexión de servicio. Como los navegadores y las aplicaciones utilizan PQ-TLS, S3 elegirá la configuración más sólida posible para proteger los datos en tránsito.

**Tipos de puntos de conexión compatibles y Regiones de AWS**

El TLS poscuántico para Amazon S3 está disponible en todas las Regiones de AWS. Para obtener la lista de puntos de conexión de S3 en cada Región de AWS, consulte [Puntos de conexión y cuotas de Amazon Simple Storage Service](https://docs.aws.amazon.com/general/latest/gr/s3.html) en la *Referencia general de Amazon Web Services*.

**nota**  
TLS poscuántico híbrido se admite para todos los puntos de conexión de S3, excepto para AWS PrivateLink para Amazon S3, los puntos de acceso multirregionales y S3 Vectors.

## Uso de TLS poscuántico híbrido con Amazon S3
<a name="pqtls-details"></a>

Debe configurar el cliente que realiza las solicitudes a Amazon S3 para que admita el TLS poscuántico híbrido. Cuando configure el entorno de prueba del cliente HTTP o entornos de producción, tenga en cuenta la siguiente información:

**Cifrado en tránsito**

El TLS poscuántico híbrido solo se utiliza para el cifrado en tránsito. Esto protege los datos mientras viajan desde el cliente hasta el punto de conexión de S3. Este nuevo soporte, combinado con el cifrado del servidor de Amazon S3, que utiliza algoritmos AES-256 de forma predeterminada, ofrece a los clientes un cifrado con resistencia cuántica en tránsito y en reposo. Para obtener más información sobre el cifrado del servidor en Amazon S3, consulte [Protección de datos con cifrado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

**Clientes compatibles**

El uso de el TLS poscuántico híbrido requiere el uso de un cliente que admita esta funcionalidad. AWS Los SDK y las herramientas tienen capacidades y configuraciones criptográficas que difieren según los lenguajes y los tiempos de ejecución. Para obtener más información sobre la criptografía poscuántica para herramientas específicas, consulte [Habilitación de TLS poscuántica híbrida](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html).

**nota**  
Los detalles del intercambio de claves PQ-TLS para las solicitudes a Amazon S3 no están disponibles en los eventos de AWS CloudTrail ni en los registros de acceso al servidor de S3.

## Obtenga más información sobre el cifrado TLS poscuántico
<a name="pqtls-see-also"></a>

Para obtener más información acerca del uso de TLS poscuántico híbrido, consulte los siguientes recursos.
+ Para obtener información sobre la criptografía poscuántica en AWS, incluidos enlaces a publicaciones de blogs y artículos de investigación, consulte [Criptografía poscuántica para AWS](https://aws.amazon.com/security/post-quantum-cryptography/).
+ Para obtener información acerca de s2n-tls, consulte [Presentación de s2n-tls, una nueva implementación de TLS de código abierto](https://aws.amazon.com/blogs/security/introducing-s2n-a-new-open-source-tls-implementation/) y [Uso de s2n-tls](https://github.com/aws/s2n-tls/tree/main/docs/usage-guide).
+ Para obtener información sobre el cliente HTTP de AWS de tiempo de ejecución común, consulte [Configuración del cliente HTTP de AWS basado en CRT](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html) en la *Guía para AWS SDK for Java 2.x desarrolladores*.
+ Para obtener información sobre el proyecto de criptografía postcuántica del Instituto Nacional de Estándares y Tecnología (NIST), consulte [Post-Quantum Cryptography](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography).
+ Para obtener información sobre la estandarización de la criptografía poscuántica de NIST, consulte [Estandarización de la criptografía poscuántica de NIST](https://csrc.nist.gov/Projects/post-quantum-cryptography/post-quantum-cryptography-standardization).

# Configuración del cifrado TLS poscuántico híbrido para el cliente
<a name="pqtls-how-to"></a>

Para usar PQ-TLS con Amazon S3, debe configurar el cliente para que admita algoritmos de intercambio de claves poscuánticas. Asegúrese también de que el cliente apoye el enfoque híbrido, que combina la criptografía tradicional de curva elíptica con algoritmos poscuánticos como ML-KEM (Module-Lattice-Based Key Encapsulation Mechanism).

La configuración específica depende de la biblioteca del cliente y del lenguaje de programación. Para obtener más información, consulte [Habilitación del TLS poscuántico híbrido](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html).

## Ejemplo de configuración de cliente: AWS SDK para Java 2
<a name="UsingEncryptionInTransit.PQ-TLS.configuration.java2-sdk"></a>

En este procedimiento, agregue una dependencia de Maven para el cliente HTTP en tiempo de ejecución común de AWS. A continuación, configure un cliente HTTP que prefiera el TLS postcuántico. A continuación, cree un cliente de Amazon S3 que utilice el cliente HTTP.

**nota**  
El cliente HTTP de en tiempo de ejecución común de AWS, que estaba disponible como versión preliminar, pasó a estar disponible en febrero de 2023. En esa versión, la clase `tlsCipherPreference` y el parámetro del método `tlsCipherPreference()` se sustituyen por el parámetro del método `postQuantumTlsEnabled()`. Si utilizó este ejemplo durante la vista previa, debe actualizar el código.

1. Agregue el cliente del tiempo de ejecución común de AWS a sus dependencias de Maven. Le recomendamos que utilice la última versión disponible. 

   Por ejemplo, esta declaración agrega la versión `2.30.22` del cliente del tiempo de ejecución común de AWS a sus dependencias de Maven. 

   ```
   <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>aws-crt-client</artifactId>
       <version>2.30.22</version>
   </dependency>
   ```

1. Para habilitar los conjuntos de cifrado híbrido postcuántico, agregue AWS SDK for Java 2.x a su proyecto e inícielo. Luego habilite los conjuntos de cifrado postcuántico híbrido en su cliente HTTP como se muestra en el siguiente ejemplo.

   Este código usa el parámetro del método `postQuantumTlsEnabled()` para configurar un [cliente HTTP de AWS en tiempo de ejecución común](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html) que prefiera el conjunto de cifrado poscuántico híbrido recomendado, ECDH con ML-KEM. A continuación, utiliza el cliente HTTP configurado para crear una instancia del cliente de Amazon S3 asincrónico, [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html). Cuando se complete este código, todas las solicitudes de la [API de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/API/) de la instancia `S3AsyncClient` utilizarán un TLS poscuántico híbrido.
**importante**  
A partir de v2.35.11, las personas que llamen ya no tendrán que configurar `.postQuantumTlsEnabled(true)` para habilitar el TLS poscuántico híbrido para el cliente. Todas las versiones posteriores a v2.35.11 habilitan el TLS poscuántico de forma predeterminada.

   ```
   // Configure HTTP client
   SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder()
             .postQuantumTlsEnabled(true)
             .build();
   
   // Create the Amazon S3 async client
   S3AsyncClient s3Async = S3AsyncClient.builder()
            .httpClient(awsCrtHttpClient)
            .build();
   ```

1. Pruebe las llamadas de Amazon S3 con TLS poscuántico híbrido.

   Cuando llama a operaciones de la API de Amazon S3 en el cliente de Amazon S3 configurado, las llamadas se transmiten al punto de conexión de Amazon S3 mediante TLS poscuántico híbrido. Para probar la configuración, ejecute una llamada a la API de Amazon S3, como `[ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)`.

   ```
   ListBucketsResponse reponse = s3Async.listBuckets();
   ```

### Prueba de su configuración de TLS postcuántico híbrido
<a name="pqtls-testing"></a>

Considere la posibilidad de ejecutar las siguientes pruebas con conjuntos de cifrado híbridos en las aplicaciones que llaman a Amazon S3.
+ Ejecute pruebas de carga y pruebas de rendimiento. Los conjuntos de cifrado híbridos funcionan de manera diferente que los algoritmos tradicionales de intercambio de claves. Es posible que tenga que ajustar los tiempos de espera de conexión para permitir tiempos de negociación más prolongados. Si la ejecución se realiza dentro de una función AWS Lambda, amplíe la configuración del tiempo de espera de ejecución.
+ Intente conectarse desde diferentes ubicaciones. En función de la ruta de red que tome la solicitud, es posible que descubra que hosts intermedios, proxies o firewalls con inspección profunda de paquetes (DPI) bloquean la solicitud. Esto podría dar lugar a que se utilicen los nuevos conjuntos de cifrado en la parte [ClientHello](https://tools.ietf.org/html/rfc5246#section-7.4.1.2) del protocolo TLS o a mensajes de intercambio de claves más grandes. Si le resulta difícil resolver estos problemas, trabaje con su equipo de seguridad o con los administradores de TI para actualizar la configuración pertinente y desbloquear los nuevos conjuntos de cifrado TLS. 

# Privacidad del tráfico entre redes
<a name="inter-network-traffic-privacy"></a>

Este tema describe cómo Amazon S3 protege las conexiones desde el servicio a otras ubicaciones.

## Tráfico entre el servicio y las aplicaciones y clientes locales
<a name="inter-network-traffic-privacy-on-prem"></a>

Las siguientes conexiones se pueden combinar con AWS PrivateLink para proporcionar conectividad entre la red privada y AWS: 
+ Una conexión de Site-to-Site VPN de AWS. Para obtener más información, consulte [¿Qué es AWS Site-to-Site VPN? ](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)
+ Una conexión de Direct Connect. Para obtener más información, consulte [¿Qué es Direct Connect?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)

El acceso a Amazon S3 a través de la red se realiza mediante las API publicadas por AWS. Los clientes deben admitir el protocolo de seguridad de la capa de transporte (TLS) 1.2. Recomendamos utilizar TLS 1.3 con intercambio de claves poscuánticas híbrido. Los clientes también deben admitir conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos. Además, debe firmar las solicitudes con un ID de clave de acceso y una clave de acceso secreta que estén asociados a una entidad principal de IAM, o bien, puede usar [AWS Security Token Service (STS)](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) para generar credenciales de seguridad temporales a la hora de firmar solicitudes.

## Tráfico entre recursos de AWS en la misma región
<a name="inter-network-traffic-privacy-within-region"></a>

Un punto de conexión de la nube privada virtual (Virtual Private Cloud, VPC) de Amazon S3 es una entidad lógica dentro de una VPC que permite la conectividad solo a Amazon S3. La VPC direcciona las solicitudes a Amazon S3 y vuelve a direccionar las respuestas a la VPC. Para obtener más información, consulte [Puntos de enlace de la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) en la *guía del usuario de VPC*. Para consultar ejemplos de políticas de bucket que puede utilizar para controlar el acceso al bucket de S3 desde los puntos de enlace de la VPC, consulte [Control del acceso desde puntos de enlace de la VPC con políticas de bucket](example-bucket-policies-vpc-endpoint.md). 

# AWS PrivateLink para Amazon S3
<a name="privatelink-interface-endpoints"></a>

Con AWS PrivateLink para Amazon S3, puede aprovisionar *puntos de enlace de la VPC de la interfaz* (puntos de enlace de la interfaz) en su Virtual Private Cloud (VPC). A estos puntos de enlace se puede acceder directamente desde las aplicaciones que se encuentran en las instalaciones a través de la VPN y Direct Connect, o bien, en una Región de AWS diferente mediante la interconexión de VPC.

Los puntos de enlace de la interfaz se representan mediante una o más interfaces de red elásticas (elastic network interfaces, ENI) a las que se asignan direcciones IP privadas desde subredes de la VPC. Las solicitudes a Amazon S3 sobre puntos de conexión de la interfaz permanecen en la red de Amazon. Asimismo, puede acceder a los puntos de conexión de la interfaz en su VPC desde aplicaciones en las instalaciones a través de AWS Direct Connect oAWS Virtual Private Network (Site-to-Site VPN). Para obtener más información sobre cómo conectar la VPC a la red en las instalaciones, consulte la [Guía del usuario de Direct Connect](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html) y la [Guía del usuario de AWS Site-to-Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html).

Para obtener más información sobre los puntos de enlace de la interfaz, consulte [Puntos de enlace de la VPC de la interfaz (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html) en la *Guía de AWS PrivateLink*.

**Topics**
+ [Tipos de puntos de enlace de la VPC para Amazon S3](#types-of-vpc-endpoints-for-s3)
+ [Restricciones y límites de AWS PrivateLink para Amazon S3](#privatelink-limitations)
+ [Creación de un punto de conexión de VPC](#s3-creating-vpc)
+ [Acceso a los puntos de enlace de la interfaz de Amazon S3](#accessing-s3-interface-endpoints)
+ [Tipos de direcciones IP para puntos de conexión de VPC](#privatelink-ip-address-types)
+ [Tipos de IP de registros de DNS para puntos de conexión de VPC](#privatelink-dns-record-types)
+ [DNS privado](#private-dns)
+ [Acceder a buckets, puntos de acceso y operaciones de la API de control de Amazon S3 desde los puntos de conexión de la interfaz de S3](#accessing-bucket-and-aps-from-interface-endpoints)
+ [Actualización de una configuración DNS en las instalaciones](#updating-on-premises-dns-config)
+ [Creación de una política de puntos de enlace de la VPC para Amazon S3](#creating-vpc-endpoint-policy)

## Tipos de puntos de enlace de la VPC para Amazon S3
<a name="types-of-vpc-endpoints-for-s3"></a>

Puede utilizar dos tipos de puntos de conexión de VPC para acceder a Amazon S3: *puntos de conexión de la puerta de enlace* y *puntos de conexión de la interfaz* (mediante AWS PrivateLink). Un *punto de conexión de gateway* es una gateway que se especifica en la tabla de enrutamiento para acceder a Amazon S3 desde su VPC a través de la red de AWS. Los *puntos de conexión de la interfaz* extienden la funcionalidad de los puntos de conexión de la puerta de enlace a través de direcciones IP privadas para enviar solicitudes a Amazon S3 desde su VPC, el sistema en las instalaciones u otra VPC en otra Región de AWS mediante la interconexión de VPC o AWS Transit Gateway. Para obtener más información, consulte [¿Qué es una interconexión de VPC?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) y [Transit Gateway frente a interconexión de VPC](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway-vs-vpc-peering.html).

Los puntos de enlace de la interfaz son compatibles con los puntos de enlace de gateway. Si tiene un punto de conexión de gateway existente en la VPC, puede utilizar ambos tipos de puntos de enlace en la misma VPC.


|  Puntos de enlace de gateway para Amazon S3  |  Puntos de enlace de interfaz para Amazon S3  | 
| --- | --- | 
|  En ambos casos, el tráfico de red permanece en la red de AWS.  | 
|  Utilice direcciones IP públicas de Amazon S3  |  Utilice direcciones IP privadas de su VPC para acceder a Amazon S3  | 
|  Utilizar los mismos nombres DNS de Simple Storage Service (Amazon S3)  |  [Requerir nombres DNS de Simple Storage Service (Amazon S3) específicos de punto de conexión](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#accessing-s3-interface-endpoints)  | 
|  No permite el acceso desde las instalaciones  |  Permitir el acceso desde las instalaciones  | 
|  No permite el acceso desde otra Región de AWS  |  Permite el acceso desde una VPC en otra Región de AWS mediante el uso de emparejamiento de VPC o AWS Transit Gateway  | 
|  No facturado  |  Facturado  | 

Para obtener más información, consulte [Puntos de conexión de la puerta de enlace](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html) y [puntos de conexión de VPC de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) en la *Guía de AWS PrivateLink*.

## Restricciones y límites de AWS PrivateLink para Amazon S3
<a name="privatelink-limitations"></a>

Los límites de VPC se aplican a AWS PrivateLink para Amazon S3. Para obtener más información, consulte [Consideraciones de los puntos de conexión de la interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations) y [Cuotas de AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html) en la *Guía de AWS PrivateLink*. Además, se aplican las siguientes restricciones.

Los puntos de conexión de interfaz de Amazon S3 no admiten lo siguiente:
+ [Puntos de enlace del estándar federal de procesamiento de información (FIPS](https://aws.amazon.com/compliance/fips/)
+ [Puntos de enlace de sitio web](WebsiteEndpoints.md)
+ [Puntos de enlace global heredado](VirtualHosting.md#deprecated-global-endpoint)
+ [Puntos de conexión de S3 guion región ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html)
+ Usar [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) o [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) entre buckets en diferentes Regiones de AWS
+ Seguridad de la capa de transporte (TLS) 1.0
+ Seguridad de la capa de transporte (TLS) 1.1
+ Seguridad de la capa de transporte (TLS) 1.3
+ Seguridad de la capa de transporte (TLS) poscuántica híbrida

## Creación de un punto de conexión de VPC
<a name="s3-creating-vpc"></a>

Para crear un punto de conexión de interfaz de VPC, consulte [Crear un punto de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) en la *Guía de AWS PrivateLink*. Para crear un punto de conexión de puerta de enlace de VPC, consulte [Crear un punto de conexión de puerta de enlace](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3) en la *Guía de AWS PrivateLink*.

## Acceso a los puntos de enlace de la interfaz de Amazon S3
<a name="accessing-s3-interface-endpoints"></a>

Cuando se crea un punto de conexión de interfaz, Amazon S3 genera dos tipos de nombres DNS de S3 específicos del punto de conexión: *regional* y *zonal*. 
+ Un nombre de DNS *regional* incluye un ID único de punto de conexión de VPC, un identificador de servicio, la Región de AWS y `vpce.amazonaws.com` en su nombre. Por ejemplo, para el Id. de punto de conexión de la VPC `vpce-1a2b3c4d`, el nombre DNS generado podría ser similar a `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com`.
+ Un nombre de DNS *zonal* incluye la zona de disponibilidad, por ejemplo, `vpce-1a2b3c4d-5e6f-us-east-1a.s3.us-east-1.vpce.amazonaws.com`. Puede utilizar esta opción si la arquitectura aísla Zonas de disponibilidad. Por ejemplo, podría usarlo para la contención de fallos o para reducir los costos de transferencia de datos regionales.

Los nombres DNS S3 específicos de los puntos de enlace se pueden resolver desde el dominio DNS público de S3.

Los puntos de conexión de VPC para Amazon S3 admiten diferentes tipos de direcciones IP, incluidos: IPv4, IPv6 y pila doble. Consulte [Tipos de direcciones IP para puntos de conexión de VPC](#privatelink-ip-address-types) y [Tipos de IP de registros de DNS para puntos de conexión de VPC](#privatelink-dns-record-types). 

## Tipos de direcciones IP para puntos de conexión de VPC
<a name="privatelink-ip-address-types"></a>

Los puntos de conexión de VPC para Amazon S3 admiten diferentes tipos de direcciones IP, incluidos:
+ **IPv4**

  Los puntos de conexión de VPC se pueden configurar para que usen solo direcciones IPv4 para la conectividad.
+ **IPv6**

  Los puntos de conexión de VPC se pueden configurar para que usen solo direcciones IPv6 para la conectividad.
+ **Doble pila**

  Los puntos de conexión de VPC se pueden configurar en modo de pila doble y admiten direcciones IPv4 e IPv6 de forma simultánea. Esto proporciona flexibilidad para acceder a Amazon S3 a través de redes IPv4 o IPv6.

El tipo de dirección IP que elija para el punto de conexión de VPC dependerá de los requisitos de red de las aplicaciones e infraestructura. Las consideraciones pueden incluir los esquemas de direcciones IP utilizados en la VPC, las redes en las instalaciones y la conectividad a través de Internet con Amazon S3. Para obtener más información, consulte los tipos de direcciones IP para los [puntos de conexión de la interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-service-ip-address-type) y los [puntos de conexión de puerta de enlace](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html#gateway-endpoint-ip-address-type) en la guía de *Amazon Virtual Private Cloud*.

## Tipos de IP de registros de DNS para puntos de conexión de VPC
<a name="privatelink-dns-record-types"></a>

Según el tipo de dirección IP, al llamar a un punto de conexión de VPC, el Servicio de AWS puede devolver registros `A`, registros `AAAA` o registros `A` y `AAAA`. Se pueden personalizar los tipos de registros que devuelve el servicio de AWS al modificar el tipo de IP del registro de DNS. En la siguiente tabla se muestran los tipos de IP de registro de DNS admitidos y los tipos de direcciones IP:


| Tipos de direcciones IP compatibles | Tipos de IP de registro de DNS | 
| --- | --- | 
| IPv4 | IPv4 | 
| IPv6 | IPv6 | 
| Pila doble | Doble pila, IPv4, IPv6, definido por el servicio | 

### Configuración del tipo de IP de registro de DNS definido por el servicio para Amazon S3
<a name="privatelink-dns-record-types-configure"></a>

Si crea un punto de conexión de puerta de enlace para Amazon S3 y configura el tipo de IP de registro de DNS como definido por el servicio y utiliza el punto de conexión de servicio regional (por ejemplo, `s3.us-east-2.amazonaws.com`), Amazon S3 devuelve registros de `A` a los clientes. Por el contrario, si crea un punto de conexión de puerta de enlace y utiliza un punto de conexión de servicio de doble pila (por ejemplo, `s3.dualstack.us-east-2.amazonaws.com`) y selecciona el tipo de IP de registro de DNS como`service-defined`, Amazon S3 devuelve los registros `A` y `AAAA` a los clientes.

Del mismo modo, si crea un punto de conexión de interfaz con el DNS privado habilitado y elige el tipo de registro de DNS definido por el servicio, para el punto de conexión del servicio regional (por ejemplo, `s3.us-east-2.amazonaws.com`), Amazon S3 devuelve los registros de `A` al cliente. Mientras que, para un punto de conexión de servicio de doble pila (como, `s3.dualstack.us-east-2.amazonaws.com`), Amazon S3 devuelve ambos registros `A` y `AAAA`. Para obtener más información, consulte el tipo de IP de registro de DNS para los [puntos de conexión de la interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-services-dns-record-ip-type) y [puntos de conexión de la puerta de enlace](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html#gateway-endpoint-dns-record-ip-type) en la *Guía del usuario de la VPC*.

En la siguiente tabla se muestran los tipos de IP de registro de DNS compatibles para puerta de enlace y puntos de conexión de la interfaz:


| Tipo de dirección IP | Tipos de IP de registro de DNS compatibles para los puntos de conexión de puerta de enlace de S3 | Tipos de IP de registro de DNS compatibles para los puntos de conexión de interfaz de S3  | 
| --- | --- | --- | 
| IPv4 | IPv4, definido por el servicio\$1 | IPv4 | 
| IPv6 | IPv6, definido por el servicio\$1 | IPv6 | 
| Pila doble | IPv4, IPv6, doble pila, definido por el servicio\$1 | Doble pila\$1, IPv4, IPv6, definido por el servicio | 

\$1 Representa el tipo de IP del registro de DNS predeterminado.

Para habilitar la conectividad de IPv6 en una puerta de enlace de S3 o punto de conexión de interfaz existente, actualice el tipo de dirección IP del punto de conexión en **Dualstack**. Cuando se actualiza, Amazon S3 actualiza automáticamente las tablas de enrutamiento con direcciones IPv6 para los puntos de conexión de las puertas de enlace. A continuación, puede utilizar el punto de conexión del servicio de doble pila, por ejemplo, `s3.dualstack.us-east-2.amazonaws.com`, y Amazon S3 devolverá ambos registros `A` y `AAAA` para las consultas de DNS de S3 de doble pila. Si quiere usar IPV6 con el punto de conexión del servicio regional, por ejemplo, `s3.us-east-2.amazonaws.com`, modifique el tipo de dirección IP del punto de conexión a **Dualstack** y el tipo de IP del registro de DNS a **Dualstack**. A continuación, Amazon S3 devolverá ambos registros `A` y `AAAA` de las consultas de DNS regionales de S3.

**Consideraciones**  
Si el punto de conexión de la puerta de enlace tiene la configuración predeterminada del tipo de dirección IP como `IPv4` y el tipo de IP del registro de DNS es `service-defined`, entonces, el punto de conexión del servicio de doble pila (por ejemplo, `s3.dualstack.us-east-2.amazonaws.com`), el tráfico que utiliza registros de `AAAA` no se enrutará a través del punto de conexión de la puerta de enlace. En su lugar, este tráfico se descartará o se enrutará a través de una ruta compatible con IPv6, si existe alguna. Por ejemplo, si la nube privada virtual (VPC) tiene una puerta de enlace de Internet, el tráfico de IPv6 se enrutará a través de la puerta de enlace de Internet de la VPC en este escenario. Si desea asegurarse de que el tráfico se enrute siempre a través de un punto de conexión de VPC, puede utilizar una política de bucket de Amazon S3 que restrinja el acceso a un bucket específico si no se utiliza el punto de conexión de VPC específico. Para obtener más información, consulte [Restricción del acceso a un punto de conexión de VPC específico](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-accesss-vpc-endpoint).
Si el punto de conexión de la interfaz tiene la configuración predeterminada del tipo de dirección IP, que es IPv4, y el tipo de IP del registro de DNS es IPv4, los puntos de conexión del servicio de doble pila, como, por ejemplo, `ass3.dualstack.us-east-2.amazonaws.com`, no son compatibles. El tráfico que utilice los registros `A` o `AAAA` de los puntos de conexión del servicio de doble pila no se enrutará a través del punto de conexión de la interfaz. En su lugar, este tráfico se descartará o se enrutará a través de una ruta compatible si existe alguna.
La creación o modificación de un punto de conexión de puerta de enlace con un tipo de IP de registro de DNS distinto del definido por el servicio requiere que los atributos de la VPC `enableDnsSupport` y `enableDnsHostnames` se establezcan en verdadero.

## DNS privado
<a name="private-dns"></a>

Las opciones de DNS privado para los puntos de conexión de la interfaz de VPC simplifican el enrutamiento del tráfico de S3 a través de los puntos de conexión de VPC y le ayudan a aprovechar la ruta de red más económica disponible para su aplicación. Puede usar las opciones de DNS privadas para dirigir el tráfico de S3 regional sin actualizar sus clientes de S3 para que usen los nombres DNS específicos de los puntos de conexión de sus interfaces ni administrar la infraestructura de DNS. Con los nombres DNS privados habilitados, las consultas de DNS de S3 regional se resuelven en las direcciones IP privadas de AWS PrivateLink para los siguientes puntos de conexión:
+ Puntos de conexión de bucket regionales (por ejemplo, `s3.us-east-1.amazonaws.com`)
+ Puntos de conexión de control (por ejemplo, `s3-control.us-east-1.amazonaws.com`)
+ Puntos de conexión de puntos de acceso (por ejemplo, `s3-accesspoint.us-east-1.amazonaws.com`)

Si tiene un punto de conexión de puerta de enlace en su VPC, puede dirigir automáticamente las solicitudes dentro de la VPC a través del punto de conexión de la puerta de enlace de S3 actual y las solicitudes en las instalaciones a través del punto de conexión de su interfaz. Este enfoque le permite optimizar sus costos de red mediante el uso de puntos de conexión de la puerta de enlace, que no se facturan, para el tráfico en la VPC. Sus aplicaciones en las instalaciones pueden utilizar AWS PrivateLink con la ayuda del punto de conexión de Resolver entrante. Amazon proporciona un servidor DNS, denominado Route 53 Resolver, para la VPC. Un punto de conexión de Resolver entrante reenvía las consultas de DNS desde la red local a Route 53 Resolver.

**importante**  
Para aprovechar la ruta de red más económica al utilizar **Habilitar el DNS privado solo para puntos de conexión entrantes**, debe haber un punto de conexión de la puerta de enlace en la VPC. La presencia de un punto de conexión de puerta de enlace ayuda a garantizar que el tráfico en la VPC siempre se dirija a través de la red AWS privada cuando se selecciona la opción **Habilitar el DNS privado solo para puntos de conexión entrantes**. Debe mantener este punto de conexión de puerta de enlace mientras tenga seleccionada la opción **Habilitar el DNS privado solo para puntos de conexión entrantes**. Si desea eliminar el punto de conexión de puerta de enlace, primero debe desmarcar **Habilitar el DNS privado solo para puntos de conexión entrantes**.   
Si desea actualizar un punto de conexión de interfaz existente para **Habilitar el DNS privado solo para los puntos de conexión entrantes**, primero debe confirmar que su VPC tenga un punto de conexión de puerta de enlace de S3. Para obtener más información sobre los puntos de conexión de la puerta de enlace y la administración de los nombres DNS privados, consulte los [Puntos de conexión de VPC de la puerta de enlace](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-gateway.html) y [Administración de nombres de DNS](https://docs.aws.amazon.com//vpc/latest/privatelink/manage-dns-names.html), respectivamente, en la *Guía de AWS PrivateLink*.  
Al habilitar el **DNS privado solo para la resolución entrante**, el `dnsRecordIpType`del punto de conexión de la puerta de enlace debe coincidir con el punto de conexión de la interfaz o estar **definido por el servicio**.

La opción **Habilitar el DNS privado solo para los puntos de conexión entrantes** solo está disponible para los servicios que admiten puntos de conexión de la puerta de enlace.

Para obtener más información sobre la creación de un punto de conexión de VPC que utilice **Habilitar el DNS privado solo para los puntos de conexión entrantes**, consulte [Crear un punto de conexión de la interfaz](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html) en la *Guía de AWS PrivateLink*.

**Uso de la consola de la VPC**

En la consola, tiene dos opciones: **Habilitar el nombre de DNS** y **Habilitar el DNS privado solo para los puntos de conexión entrantes**. **Habilitar el nombre de DNS** es una opción admitida por AWS PrivateLink. Al utilizar la opción **Habilitar el nombre de DNS**, puede utilizar la conectividad privada de Amazon con Amazon S3 y, al mismo tiempo, realizar solicitudes a los nombres de DNS de puntos de conexión públicos predeterminados. Cuando esta opción está habilitada, los clientes pueden aprovechar la ruta de red más económica disponible para su aplicación.

Al habilitar los nombres DNS privados en un punto de conexión de la interfaz de VPC nuevo o existente para Amazon S3, se selecciona la opción **Habilitar el DNS privado solo para los puntos de conexión entrantes** de forma predeterminada. Si se selecciona esta opción, las aplicaciones utilizan únicamente los puntos de conexión de la interfaz para el tráfico en las instalaciones. Este tráfico dentro de la VPC utiliza automáticamente los puntos de conexión de la puerta de enlace más económicos. También puede desmarcar la opción **Habilitar el DNS privado solo para puntos de conexión entrantes** para dirigir todas las solicitudes de S3 a través del punto de conexión de la interfaz.

**Uso de AWS CLI**

Si no especifica un valor para `PrivateDnsOnlyForInboundResolverEndpoint`, el valor predeterminado es `true`. Sin embargo, antes de que la VPC aplique la configuración, realiza una comprobación para asegurarse de que haya un punto de conexión de la puerta de enlace presente en la VPC. Si hay un punto de conexión de la puerta de enlace en la VPC, la llamada se realiza correctamente. De lo contrario, si ve el siguiente mensaje de error: 

Para configurar PrivateDnsOnlyForInboundResolverEndpoint en true, la VPC *vpce\$1id* debe tener un punto de conexión de la puerta de enlace para el servicio.

**Para un nuevo punto de conexión de la interfaz de la VPC**

Utilice los atributos `private-dns-enabled` y `dns-options` para habilitar el DNS privado a través de la línea de comandos. La opción `PrivateDnsOnlyForInboundResolverEndpoint` del atributo `dns-options` debe estar establecida en `true`. Sustituya `user input placeholders` por su propia información.

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name s3-service-name \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \ 
--vpc-endpoint-type Interface  \
--private-dns-enabled  \
--ip-address-type ip-address-type \ 
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=true \
--security-group-ids client-sg-id
```

**Para un punto de conexión de VPC existente**

Si quiere usar un DNS privado para un punto de conexión de VPC existente, use el siguiente comando de ejemplo y reemplace `user input placeholders` con su información.

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-id \
--private-dns-enabled \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=false
```

Si desea actualizar un punto de conexión de VPC existente para habilitar el DNS privado solo para el Resolver entrante, utilice el siguiente ejemplo y sustituya los valores de ejemplo por los suyos.

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-id \
--private-dns-enabled \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=true
```

## Acceder a buckets, puntos de acceso y operaciones de la API de control de Amazon S3 desde los puntos de conexión de la interfaz de S3
<a name="accessing-bucket-and-aps-from-interface-endpoints"></a>

Puede utilizar la AWS CLI o los SDK de AWS para acceder a los buckets, los puntos de acceso de S3 y las operaciones de la API de control de Amazon S3 a través de los puntos de conexión de la interfaz de S3. 

La siguiente imagen muestra la pestaña **Details (Detalles)** de la consola de la VPC, donde puede encontrar el nombre DNS de un punto de conexión de la VPC. En este ejemplo, el *ID de punto de conexión de la VPC (vpce-id)* es `vpce-0e25b8cdd720f900e` y el *nombre DNS* es `*.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com`. 







![\[La pestaña Detalles de la consola de VPC.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/vpc-console-details-tab.png)


Cuando utilice el nombre de DNS para acceder a un recurso, sustituya *\$1* por el valor correspondiente. Los valores adecuados que se deben utilizar en lugar de `*` son los siguientes: 
+ `bucket`
+ `accesspoint`
+ `control`

Por ejemplo, para acceder a un bucket, utilice un *nombre de DNS* como este:

 `bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com`

Para ver ejemplos de cómo usar los nombres de DNS para acceder a los buckets, los puntos de acceso y las operaciones de la API de control de Amazon S3, consulte las siguientes secciones de [AWS CLIEjemplos de](#privatelink-aws-cli-examples) y [Ejemplos del SDK de AWS](#privatelink-aws-sdk-examples).

Para obtener más información acerca de cómo ver los nombres de DNS específicos de los puntos de conexión, consulte [Visualización de la configuración de los nombres de DNS privados de servicio de los puntos de conexión](https://docs.aws.amazon.com/vpc/latest/privatelink/view-vpc-endpoint-service-dns-name.html) en la *Guía del usuario de VPC*.

### AWS CLIEjemplos de
<a name="privatelink-aws-cli-examples"></a>

Utilice los parámetros `--region` y `--endpoint-url` para acceder a los buckets de S3, los puntos de acceso S3 o las operaciones de la API de control de Amazon S3 a través de los puntos de conexión de la interfaz de S3 en los comandos AWS CLI. 

**Ejemplo: utilizar una URL del punto de conexión para enumerar objetos en su bucket**  
En el siguiente ejemplo, reemplace el nombre del bucket `my-bucket`, la región `us-east-1` y el nombre de DNS del ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información.

```
aws s3 ls s3://my-bucket/ --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
```

**Ejemplo: utilizar una URL del punto de conexión para enumerar objetos de un punto de acceso**
+ **Método 1**: usar el nombre de recurso de Amazon (ARN) del punto de acceso con el punto de conexión del punto de acceso

  Reemplace el ARN `us-east-1:123456789012:accesspoint/accesspointexamplename`, la región `us-east-1` y el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información.

  ```
  aws s3api list-objects-v2 --bucket arn:aws:s3:us-east-1:123456789012:accesspoint/accesspointexamplename --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```

  Si no puede ejecutar el comando correctamente, actualice su AWS CLI a la versión más reciente e inténtelo de nuevo. Para obtener más información sobre la instalación de actualización, consulte [Instalación o actualización de la versión más reciente de AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) en la *Guía del usuario de AWS Command Line Interface*.
+ **Método 2**: usar el alias del punto de acceso con el punto de conexión del bucket regional

  En el siguiente ejemplo, reemplace el alias del punto de acceso `accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias`, la región `us-east-1` y el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información.

  ```
  aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```
+ **Método 3**: usar el alias del punto de acceso con el punto de conexión del punto de acceso

  En primer lugar, para crear un punto de conexión de S3 con el bucket incluido como parte del nombre de host, defina el estilo de direccionamiento hacia `virtual` para que lo utilice `aws s3api`. Para obtener más información sobre `AWS configure`, consulte [Opciones de los archivos de configuración y credenciales](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) en la *Guía del usuario de AWS Command Line Interface*. 

  ```
  aws configure set default.s3.addressing_style virtual
  ```

  En el siguiente ejemplo, reemplace el alias del punto de acceso `accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias`, la región `us-east-1` y el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información. Para obtener más información acerca de los alias de punto de acceso, consulte [Alias de punto de acceso](access-points-naming.md#access-points-alias).

  ```
  aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```

**Ejemplo: utilizar una URL del punto de conexión para enumerar trabajos con una operación de la API de control de S3**  
En el siguiente ejemplo, reemplace la región `us-east-1`, el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` y el ID de cuenta `12345678` con su información.

```
aws s3control --region us-east-1 --endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com list-jobs --account-id 12345678
```

### Ejemplos del SDK de AWS
<a name="privatelink-aws-sdk-examples"></a>

Para acceder a los buckets de S3, los puntos de acceso de S3 o las operaciones de la API de control de Amazon S3 a través de los puntos de conexión de la interfaz de S3 al utilizar los SDK de AWS, actualice sus SDK a la versión más actual. A continuación, configure sus clientes para que utilicen una URL de punto de conexión para acceder a un bucket, un punto de acceso o a operaciones de la API de control de Amazon S3 a través de los puntos de conexión de la interfaz de S3. 

------
#### [ SDK for Python (Boto3) ]

**Ejemplo: utilizar una URL de punto de conexión para acceder a un bucket de S3**  
En el siguiente ejemplo, reemplace la región `us-east-1` y el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información. 

```
s3_client = session.client(
service_name='s3',
region_name='us-east-1',
endpoint_url='https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
)
```

**Ejemplo: utilizar una URL de punto de conexión para acceder a un punto de acceso S3**  
En el siguiente ejemplo, reemplace la región `us-east-1` y el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información. 

```
ap_client = session.client(
service_name='s3',
region_name='us-east-1',
endpoint_url='https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
)
```

**Ejemplo: utilizar una URL de punto de conexión para acceder a la API de control S3**  
En el siguiente ejemplo, reemplace la región `us-east-1` y el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información. 

```
control_client = session.client(
service_name='s3control',
region_name='us-east-1',
endpoint_url='https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com'
)
```

------
#### [ SDK for Java 1.x ]

**Ejemplo: utilizar una URL de punto de conexión para acceder a un bucket de S3**  
En el siguiente ejemplo, reemplace el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información. 

```
// bucket client
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
List<Bucket> buckets = s3.listBuckets();
```

**Ejemplo: utilizar una URL de punto de conexión para acceder a un punto de acceso S3**  
En el siguiente ejemplo, reemplace el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` y el ARN `us-east-1:123456789012:accesspoint/prod` con su información. 

```
// accesspoint client
final AmazonS3 s3accesspoint = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
ObjectListing objects = s3accesspoint.listObjects("arn:aws:s3:us-east-1:123456789012:accesspoint/prod");
```

**Ejemplo: utilizar una URL de punto de conexión para acceder a una operación de la API de control de Amazon S3**  
En el siguiente ejemplo, reemplace el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` con su información. 

```
// control client
final AWSS3Control s3control = AWSS3ControlClient.builder().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
final ListJobsResult jobs = s3control.listJobs(new ListJobsRequest());
```

------
#### [ SDK for Java 2.x ]

**Ejemplo: utilizar una URL de punto de conexión para acceder a un bucket de S3**  
En el siguiente ejemplo, reemplace el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` y la región `Region.US_EAST_1` con su información.

```
// bucket client
Region region = Region.US_EAST_1;
s3Client = S3Client.builder().region(region)
                   .endpointOverride(URI.create("https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                   .build()
```

**Ejemplo: utilizar una URL de punto de conexión para acceder a un punto de acceso S3**  
En el siguiente ejemplo, reemplace el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` y la región `Region.US_EAST_1` con su información.

```
// accesspoint client
Region region = Region.US_EAST_1;
s3Client = S3Client.builder().region(region)
                   .endpointOverride(URI.create("https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                   .build()
```

**Ejemplo: utilizar una URL de punto de conexión para acceder a la API de control S3**  
En el siguiente ejemplo, reemplace el ID de punto de conexión de VPC `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` y la región `Region.US_EAST_1` con su información.

```
// control client
Region region = Region.US_EAST_1;
s3ControlClient = S3ControlClient.builder().region(region)
                                 .endpointOverride(URI.create("https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                                 .build()
```

------

## Actualización de una configuración DNS en las instalaciones
<a name="updating-on-premises-dns-config"></a>

Al utilizar nombres DNS específicos de puntos de enlace para acceder a los puntos de enlace de la interfaz de Amazon S3, no es necesario actualizar la resolución DNS local. Puede resolver el nombre DNS específico del punto de conexión con la dirección IP privada del punto de conexión de la interfaz desde el dominio DNS público de Amazon S3. 

### Uso de puntos de enlace de interfaz para acceder a Amazon S3 sin un punto de conexión de gateway o una gateway de Internet en la VPC
<a name="using-interface-endpoints"></a>

Los puntos de enlace de interfaz de su VPC pueden dirigir tanto las aplicaciones en VPC como las aplicaciones locales a Amazon S3 a través de la red de Amazon, como se muestra en el siguiente diagrama.

![\[Diagrama de flujo de datos en el que se muestra el acceso a Amazon S3 mediante un punto de conexión de la interfaz y AWS PrivateLink.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/interface-endpoints.png)


En el siguiente diagrama se ilustra lo siguiente: 
+ Su red en las instalaciones utiliza Direct Connect o Site-to-Site VPN para conectarse a la VPC A.
+ Las aplicaciones locales y en la VPC A utilizan nombres DNS específicos de punto de conexión para acceder a Amazon S3 a través del punto de conexión de la interfaz S3.
+ Las aplicaciones en las instalaciones envían datos al punto de conexión de la interfaz en la VPC a través de Direct Connect (o Site-to-Site VPN). AWS PrivateLink transfiere los datos desde el punto de conexión de la interfaz hasta Amazon S3 a través de la red de AWS.
+ Las aplicaciones en la VPC también envían tráfico al punto de conexión de la interfaz. AWS PrivateLink transfiere los datos desde el punto de conexión de la interfaz a Amazon S3 a través de la red de AWS.

### Uso de puntos de enlace de gateway y puntos de enlace de interfaz juntos en la misma VPC para acceder a Amazon S3
<a name="using-gateway-and-interface-endpoints"></a>

Puede crear puntos de enlace de interfaz y conservar el punto de conexión de gateway existente en la misma VPC, como se muestra en el siguiente diagrama. De este modo, permite que las aplicaciones de la VPC continúen accediendo a Amazon S3 a través del punto de conexión de la puerta de enlace, lo que no se factura. En ese caso, solo las aplicaciones en las instalaciones utilizarían puntos de conexión de la interfaz para acceder a Amazon S3. A fin de acceder a Amazon S3 de esta manera, debe actualizar las aplicaciones en las instalaciones para utilizar nombres de DNS específicos de puntos de conexión para Amazon S3.

![\[Diagrama de flujo de datos en el que se muestra el acceso a Amazon S3 mediante puntos de conexión de la puerta de enlace y los puntos de conexión de la interfaz.\]](http://docs.aws.amazon.com/es_es/AmazonS3/latest/userguide/images/interface-and-gateway-endpoints.png)


En el siguiente diagrama se ilustra lo siguiente: 
+ Las aplicaciones en las instalaciones utilizan nombres de DNS específicos de cada punto de conexión para enviar datos al punto de conexión de la interfaz dentro de la VPC a través de Direct Connect (o Site-to-Site VPN). AWS PrivateLink transfiere los datos desde el punto de conexión de la interfaz hasta Amazon S3 a través de la red de AWS.
+ Mediante el uso de nombres regionales predeterminados de Amazon S3, las aplicaciones en VPC envían datos al punto de conexión de gateway que se conecta a Amazon S3 a través de la red de AWS.

Para obtener más información acerca de los puntos de enlace de gateway, consulte [Puntos de enlace de la VPC de gateway ](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html) en la *Guía del usuario de VPC*. 

## Creación de una política de puntos de enlace de la VPC para Amazon S3
<a name="creating-vpc-endpoint-policy"></a>

Puede asociar una política de puntos de enlace con su punto de conexión de la VPC que controla el acceso a Amazon S3. La política especifica la siguiente información: 
+ La entidad principal de AWS Identity and Access Management (IAM) que puede realizar acciones 
+ Las acciones que se pueden realizar 
+ Los recursos en los que se pueden llevar a cabo las acciones 

También puede utilizar las políticas de bucket de Amazon S3 para restringir el acceso a buckets específicos desde un punto de conexión de VPC específico utilizando la condición `aws:sourceVpce` de su política de bucket. En los siguientes ejemplos se muestran políticas que restringen el acceso a un bucket o a un punto de conexión.

**Topics**
+ [Ejemplo: restringir el acceso a un bucket específico desde un punto de conexión de la VPC](#privatelink-example-restrict-access-to-bucket)
+ [Ejemplo: restringir el acceso a los buckets a una cuenta específica desde un punto de conexión de la VPC](#privatelink-example-access-bucket-in-specific-account-only)
+ [Ejemplo: restringir el acceso a un punto de conexión de la VPC específico en la política de bucket de S3](#privatelink-example-restrict-access-to-vpc-endpoint)

### Ejemplo: restringir el acceso a un bucket específico desde un punto de conexión de la VPC
<a name="privatelink-example-restrict-access-to-bucket"></a>

Puede crear una política de puntos de conexión que restrinja el acceso únicamente a buckets específicos de Amazon S3. Este tipo de política es útil si tiene otros Servicios de AWS en su VPC que utilicen buckets. La siguiente política de bucket restringe el acceso únicamente a `amzn-s3-demo-bucket1`. Para utilizar esta política de puntos de conexión, sustituya `amzn-s3-demo-bucket1` por el nombre de su bucket.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "Policy1415115909151",
  "Statement": [
    { "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket1",
                   "arn:aws:s3:::amzn-s3-demo-bucket1/*"]
    }
  ]
}
```

------

### Ejemplo: restringir el acceso a los buckets a una cuenta específica desde un punto de conexión de la VPC
<a name="privatelink-example-access-bucket-in-specific-account-only"></a>

Puede crear una política de punto de conexión que restrinja el acceso solo a los buckets de S3 de una Cuenta de AWS específica. Para evitar que los clientes de su VPC accedan a los buckets que no posee, utilice la siguiente instrucción en su política de puntos de conexión. En el siguiente ejemplo de instrucción, se crea una política que restringe el acceso a los recursos pertenecientes a un único ID de Cuenta de AWS, *`111122223333`*.

```
{
  "Statement": [
    {
      "Sid": "Access-to-bucket-in-specific-account-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

**nota**  
Puede utilizar la clave Cuenta de AWS o `aws:ResourceAccount` en la política de IAM para especificar el ID de `s3:ResourceAccount` del recurso al que se va a acceder. Sin embargo, debe tener en cuenta que algunos Servicios de AWS dependen del acceso a buckets administrados por AWS. Por lo tanto, es posible que el uso de la clave `aws:ResourceAccount` o `s3:ResourceAccount` de la política de IAM también afecte al acceso a estos recursos.

### Ejemplo: restringir el acceso a un punto de conexión de la VPC específico en la política de bucket de S3
<a name="privatelink-example-restrict-access-to-vpc-endpoint"></a>

La siguiente política de bucket de Amazon S3 permite el acceso a un bucket específico, `amzn-s3-demo-bucket2`, solo desde un punto de conexión de VPC `vpce-1a2b3c4d`. La política deniega todo el acceso al bucket si el punto de conexión especificado no se está utilizando. La condición `aws:sourceVpce` especifica el punto de conexión y no requiere un nombre de recurso de Amazon (ARN) para el recurso de punto de conexión de VPC, solo el ID de punto de conexión. Para utilizar esta política de buckets, sustituya `amzn-s3-demo-bucket2` y `vpce-1a2b3c4d` por el nombre del bucket y el punto de conexión. 

**importante**  
Al aplicar las siguientes políticas de bucket de Amazon S3 para restringir el acceso únicamente a determinados puntos de conexión de VPC, puede bloquear el acceso al bucket de forma inintencionada. Las políticas de bucket pensadas para limitar específicamente el acceso del bucket a las conexiones procedentes de su punto de conexión de VPC pueden bloquear todas las conexiones al bucket. Para obtener información acerca de cómo corregir este problema, consulte [Mi política de bucket tiene una VPC o un ID de punto de conexión de la VPC incorrectos. ¿Cómo puedo corregir la política de modo que pueda tener acceso al bucket? en el ](https://aws.amazon.com/premiumsupport/knowledge-center/s3-regain-access/)Centro de conocimientos de *Soporte*.
Antes de utilizar la política de ejemplo siguiente, reemplace el ID del punto de conexión de la VPC por un valor adecuado para su caso de uso. De lo contrario, no podrá acceder a su bucket. 
Esta política deshabilita el acceso a la *consola* al bucket especificado, ya que las solicitudes de consola no se originan en el punto de conexión de la VPC especificado. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "Policy1415115909152",
  "Statement": [
    { "Sid": "Access-to-specific-VPCE-only",
      "Principal": "*",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2",
                   "arn:aws:s3:::amzn-s3-demo-bucket2/*"],
      "Condition": {"StringNotEquals": {"aws:sourceVpce": "vpce-1a2b3c4d"}}
    }
  ]
}
```

------

Para obtener más ejemplos de políticas, consulte [Puntos de enlace para Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) en la *Guía del usuario de VPC*.

Para obtener más información acerca de la conectividad de VPC, consulte [Opciones de conectividad de red a VPC](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html) en el documento técnico de AWS[Opciones de conectividad de Amazon Virtual Private Cloud](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/welcome.html).

# Validación de la conformidad para Amazon S3
<a name="s3-compliance"></a>

Auditores externos evalúan la seguridad y la conformidad de Amazon S3 como parte de varios programas de conformidad de AWS, incluidos los siguientes:
+ Controles del Sistema y Organizaciones (System and Organization Controls, SOC)
+ La norma de seguridad de datos del sector de pagos con tarjeta (PCI DSS)
+ Programa Federal de Administración de Riesgos y Autorizaciones (Federal Risk and Authorization Management Program, FedRAMP)
+ Ley de Portabilidad y Responsabilidad de Seguros Médicos de EE. UU (Health Insurance Portability and Accountability Act, HIPAA).

AWS proporciona una lista actualizada frecuentemente de los servicios de AWS adscritos al ámbito de los programas de conformidad en [Servicios de AWS en el ámbito del programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/). 

Los informes de auditoría de terceros están disponibles para su descarga mediante AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html). 

Para obtener más información acerca de los programas de conformidad de AWS, consulte [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/).

Su responsabilidad de conformidad al utilizar Amazon S3 se determina en función de la sensibilidad de los datos, los objetivos de conformidad de la organización, así como de la legislación y los reglamentos aplicables. Si su uso de Amazon S3 está sujeto a conformidad con ciertos estándares, como HIPAA, PCI o FedRAMP, AWS proporciona recursos de ayuda:
+ En las [Guías de inicio rápido de seguridad y conformidad](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance), se incluyen consideraciones sobre arquitectura y se ofrecen pasos para implementar los entornos de referencia centrados en la seguridad y la conformidad en AWS. 
+ En el documento [Diseño de arquitecturas para la conformidad y la seguridad de HIPAA](https://docs.aws.amazon.com/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.html), se describe la manera en que las empresas utilizan AWS para poder cumplir los requisitos de HIPAA.
+ Los [recursos de conformidad de AWS](https://aws.amazon.com/compliance/resources/) proporcionan diferentes cuadernos de trabajo y guías que es posible que se apliquen a su sector y ubicación.
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) se puede utilizar para evaluar en qué medida las configuraciones de los recursos cumplen las prácticas internas, las directrices del sector y las normativas.
+ [AWS Security Hub](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) ofrece una vista integral de su estado de seguridad en AWS que lo ayuda a comprobar la conformidad con las normas del sector de seguridad y las prácticas recomendadas. 
+ [Bloqueo de objetos mediante Bloqueo de objetos](object-lock.md) puede ayudar a cumplir con los requisitos técnicos de los reguladores de servicios financieros (como SEC, FINRA y CFTC) que requieren un almacenamiento de datos Write Once, Read Many (WORM, Escritura única y lectura múltiple) para determinados tipos de libros e información de registros. 
+ [Catálogo y análisis de sus datos con Inventario de S3](storage-inventory.md) puede ayudarle a auditar e informar sobre el estado de replicación y cifrado de los objetos para sus necesidades empresariales, de conformidad y legales.

# Resiliencia en Amazon S3
<a name="disaster-recovery-resiliency"></a>

La infraestructura global de AWS se divide en regiones y zonas de disponibilidad. Las Regiones de AWS proporcionan varias zonas de disponibilidad físicamente independientes y aisladas que se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, además de baja latencia. Estas zonas de disponibilidad ofrecen un medio eficaz de diseñar y utilizar aplicaciones y bases de datos. Tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras de centros de datos tradicionales únicos o múltiples. Si específicamente necesita replicar sus datos en distancias geográficas mayores, puede utilizar [Replicación de objetos dentro de regiones y entre regiones](replication.md), que permite la copia automática y asincrónica de objetos en buckets de diferentes Regiones de AWS.

Cada Región de AWS cuenta con varias zonas de disponibilidad. Puede implementar sus aplicaciones en varias zonas de disponibilidad en la misma región para la tolerancia de errores y la baja latencia. Las zonas de disponibilidad están conectadas entre sí con redes de fibra óptica rápidas y privadas, lo que permite diseñar aplicaciones con facilidad que conmuten por error entre las zonas de disponibilidad sin interrupciones.

Para obtener más información sobre las Regiones de AWS y las zonas de disponibilidad, consulte [Infraestructura global de AWS](https://aws.amazon.com/about-aws/global-infrastructure/).

Además de la infraestructura global de AWS, Amazon S3 ofrece varias características que lo ayudan con sus necesidades de resiliencia y copia de seguridad de los datos.

**Configuración del ciclo de vida**  
La configuración del ciclo de vida es un conjunto de reglas que definen acciones que Amazon S3 aplica a un grupo de objetos. Con las reglas de configuración del ciclo de vida, puede indicarle a Amazon S3 que pase los objetos a otras clases de almacenamiento más económicas, que los archive o que los elimine. Para obtener más información, consulte [Administración del ciclo de vida de los objetos](object-lifecycle-mgmt.md).

**Control de versiones**  
El control de versiones es una forma de conservar diversas variantes de un objeto en el mismo bucket. Puede utilizar el control de versiones para conservar, recuperar y restaurar todas las versiones de los objetos almacenados en su bucket de Amazon S3. Con el control de versiones, puede recuperarse fácilmente de acciones no deseadas del usuario y de errores de la aplicación. Para obtener más información, consulte [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md).

**Bloqueo de objetos de S3**  
Puede usar Bloqueo de objetos de S3 para almacenar objetos mediante un modelo de *escritura única y lectura múltiple* (WORM). Con Bloqueo de objetos de S3 puede evitar que se elimine o se sobrescriba un objeto durante un periodo de tiempo determinado o de manera indefinida. Bloqueo de objetos de S3 le permite cumplir con los requisitos normativos que precisen de almacenamiento WORM o agregar una capa adicional de protección frente a cambios y eliminaciones de objetos. Para obtener más información, consulte [Bloqueo de objetos mediante Bloqueo de objetos](object-lock.md).

**Clases de almacenamiento**  
Amazon S3 ofrece una gama de clases de almacenamiento para elegir según los requisitos de la carga de trabajo. Las clases de almacenamiento S3 Standard-IA y S3 One Zone-IA están diseñadas para datos a los que se accede aproximadamente una vez al mes y necesitan acceso en milisegundos. La clase de almacenamiento S3 Glacier Instant Retrieval está diseñada para datos de archivo de larga duración a los que se accede aproximadamente una vez por trimestre con acceso en milisegundos. Para los datos de archivo que no requieren acceso inmediato, como las copias de seguridad, puede utilizar las clases de almacenamiento S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive. Para obtener más información, consulte [Descripción y administración de clases de almacenamiento de Amazon S3](storage-class-intro.md).

Las siguientes prácticas recomendadas sobre seguridad también evalúan la resiliencia:
+ [Enable versioning](security-best-practices.md#versioning)
+ [Consider Amazon S3 cross-region replication](security-best-practices.md#cross-region)
+ [Identify and audit all your Amazon S3 buckets](security-best-practices.md#audit)

## Cifrado de copias de seguridad de Amazon S3
<a name="backup-encryption"></a>

Si almacena copias de seguridad mediante Amazon S3, el cifrado de las copias de seguridad depende de la configuración de esos buckets. Amazon S3 proporciona un medio de definir el comportamiento de cifrado predeterminado para un bucket de S3. Puede configurar el cifrado predeterminado en un bucket para que todos los objetos se cifren cuando se almacenen en el bucket. El cifrado predeterminado es compatible con las claves almacenadas en AWS KMS (SSE-KMS). Para obtener más información, consulte [Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3](bucket-encryption.md).

Para obtener más información sobre el control de versiones y el bloqueo de objetos, consulte los temas siguientes: [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md) [Bloqueo de objetos mediante Bloqueo de objetos](object-lock.md) 

# Seguridad de la infraestructura en Amazon S3
<a name="network-isolation"></a>

Como se trata de un servicio administrado, Amazon S3 está protegido por los procedimientos de seguridad de red globales de AWS que se describen en el pilar de seguridad del [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/welcome.html).

El acceso a Amazon S3 a través de la red se realiza mediante las API publicadas por AWS. Los clientes deben admitir el protocolo de seguridad de la capa de transporte (TLS) 1.2. Recomendamos que también admita TLS 1.3 y el intercambio de claves poscuánticas híbrido. Para obtener información sobre la criptografía poscuántica en AWS, incluidos enlaces a publicaciones de blogs y artículos de investigación, consulte [Criptografía poscuántica para AWS](https://aws.amazon.com/security/post-quantum-cryptography/).

**nota**  
TLS 1.3 se admite en todos los puntos de conexión de S3, excepto en AWS PrivateLink para Amazon S3 y los puntos de acceso multirregionales.

Los clientes también deben admitir conjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Diffie-Hellman Ephemeral (ECDHE). Además, las solicitudes se deben firmar con AWS Signature V4 o AWS Signature V2, lo que requiere que se proporcionen credenciales válidas.

Estas API se pueden invocar desde cualquier ubicación de red. No obstante, Amazon S3 admite políticas de acceso basadas en recursos, que pueden incluir restricciones en función de la dirección IP de origen. Puede utilizar las políticas de bucket de Amazon S3 para controlar el acceso a los buckets desde puntos de enlace específicos de Virtual Private Cloud (VPC) o VPC específicas. Este proceso aísla con eficacia el acceso de red a un bucket de Amazon S3 determinado únicamente desde la VPC específica de la red de AWS. Para obtener más información, consulte [Control del acceso desde puntos de enlace de la VPC con políticas de bucket](example-bucket-policies-vpc-endpoint.md).

Las siguientes prácticas recomendadas sobre seguridad también abordan la seguridad de la infraestructura en Amazon S3:
+ [Consider VPC endpoints for Amazon S3 access](security-best-practices.md#end-points)
+ [Identify and audit all your Amazon S3 buckets](security-best-practices.md#audit)

# Configuración y análisis de vulnerabilidades en CM de Amazon S3
<a name="vulnerability-analysis-and-management"></a>

AWS gestiona las tareas de seguridad básicas, como la aplicación de parches en la base de datos y el sistema operativo (SO) de invitado, la configuración del firewall y la recuperación de desastres. Estos procedimientos han sido revisados y certificados por los terceros pertinentes. Para obtener más detalles, consulte los siguientes recursos:
+ [Validación de la conformidad para Amazon S3](s3-compliance.md)
+ [Modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/)
+ [Amazon Web Services: Overview of Security Processes](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf)

Las siguientes prácticas recomendadas sobre seguridad también evalúan la configuración y los análisis de vulnerabilidades en Amazon S3:
+ [Identify and audit all your Amazon S3 buckets](security-best-practices.md#audit)
+ [Habilitar AWS Config](security-best-practices.md#config)

# Administración de accesos
<a name="security-access-management"></a>

Amazon S3 proporciona una variedad de herramientas de administración de acceso. A continuación, se muestra una lista de estas características y herramientas. No necesita todas estas herramientas de administración de acceso, pero debe usar una o más para conceder acceso a sus buckets de Amazon S3, objetos y otros [Recursos de S3](access-management.md#access-management-resources). La aplicación adecuada de estas herramientas puede ayudarle a garantizar que solo pueden acceder a sus recursos los usuarios previstos. 

La herramienta de administración de acceso más utilizada es una *política de acceso*. Una política de acceso puede ser una *política basada en recursos* que se asocia a un recurso de AWS, como una política de bucket para un bucket. Una política de acceso también puede ser una *política basada en identidades* que se asocia a una identidad AWS Identity and Access Management (IAM), como un usuario, grupo o rol de IAM. Una política de acceso describe quién tiene acceso a qué elemento. Escriba una política de acceso para conceder a Cuentas de AWS y usuarios, grupos y roles de IAM permisos para realizar operaciones en un recurso. Por ejemplo, puede conceder un permiso `PUT Object` a otra cuenta Cuenta de AWS de modo que la otra cuenta pueda cargar objetos en su bucket.

A continuación se muestran las herramientas de administración de acceso disponibles en Amazon S3. Para obtener una guía más completa sobre el control de acceso de Amazon S3, consulte [Control de acceso en Amazon S3](access-management.md).

**Política de bucket**  
Una política de bucket de Amazon S3 es una [política basada en recursos de AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) con formato JSON que se asocia a un bucket concreto. Utilice políticas de bucket para conceder a otras Cuentas de AWS o a identidades de IAM permisos para el bucket y los objetos que contiene. Muchos casos de uso de administración de acceso de S3 se pueden cumplir con una política de bucket. Con las políticas de bucket, puede personalizar el acceso al bucket para garantizar que solo las identidades que haya aprobado puedan acceder a los recursos y realizar acciones dentro de ellos. Para obtener más información, consulte [Políticas de buckets para Amazon S3](bucket-policies.md). 

**Políticas basadas en identidad**  
Una política de usuario de IAM o basada en identidades es un tipo de [política de AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html). Una política basada en identidades es una política con formato JSON que se asocia a los usuarios, grupos o roles de IAM de su cuenta de AWS. Puede utilizar políticas basadas en identidades para conceder a una identidad de IAM acceso a sus buckets u objetos. Puede crear usuarios, grupos y roles de IAM en su cuenta y asociarles políticas de acceso. A continuación, puede conceder acceso a los recursos de AWS, incluidos los recursos de Amazon S3. Para obtener más información, consulte [Políticas basadas en identidad para Amazon S3](security_iam_id-based-policy-examples.md). 

**Concesiones de acceso a S3**  
Utilice Concesiones de acceso a S3 para crear concesiones de acceso a sus datos de Amazon S3 tanto para las identidades en los directorios de identidades corporativas, como Active Directory, como para las identidades AWS Identity and Access Management (de IAM). Concesiones de acceso a S3 le ayuda a administrar los permisos de datos a escala. Además, Concesiones de acceso a S3 registra la identidad del usuario final y la aplicación utilizada para acceder a los datos de S3 en AWS CloudTrail. Esto proporciona un historial de auditoría detallado que incluye hasta la identidad del usuario final para todos los accesos a los datos de sus buckets de S3. Para obtener más información, consulte [Administración del acceso con S3 Access Grants](access-grants.md).

**Puntos de acceso**  
Los puntos de acceso de Amazon S3 simplifican la administración del acceso a los datos a escala para aplicaciones que utilizan conjuntos de datos compartidos en Amazon S3. Los puntos de acceso son puntos de conexión de red con nombre que están asociados a los buckets. Puede usar puntos de acceso para realizar operaciones de objetos de S3 a escala, como la carga y la recuperación de objetos. Un bucket puede tener hasta 10 000 puntos de acceso asociados y para cada punto de acceso puede aplicar permisos y controles de red diferenciados para proporcionarle un control detallado sobre el acceso a los objetos de S3. Los puntos de acceso de Amazon S3 se pueden asociar a buckets en la misma cuenta o en otra cuenta de confianza. Las políticas de puntos de acceso son políticas basadas en recursos que se evalúan junto con la política de bucket subyacente. Para obtener más información, consulte [Administración del acceso a conjuntos de datos compartidos con puntos de acceso](access-points.md).

**Lista de control de acceso (ACL)**  
Una ACL es una lista de concesiones en la que se identifica el beneficiario y el permiso concedido. Puede utilizar las ACL para conceder permisos de lectura o escritura básicos a otras Cuentas de AWS. Las ACL usan un esquema XML específico de Amazon S3. Una ACL es un tipo de [política de AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html). Una ACL de objeto se usa para administrar el acceso a un objeto y una ACL de bucket se usa para administrar el acceso a un bucket. Con las políticas de bucket, hay una sola política de bucket para la totalidad del bucket, pero las ACL de objetos se especifican por cada objeto. Le recomendamos que mantenga las ACL desactivadas, excepto en circunstancias en las que necesite controlar el acceso a cada objeto de manera individual. Para obtener más información sobre cómo utilizar las ACL, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md).

**aviso**  
La mayoría de los casos de uso modernos de Amazon S3 ya no requieren el uso de ACL. 

**Propiedad del objeto**  
Para administrar el acceso a sus objetos, debe ser el propietario del objeto. Puede utilizar el ajuste en el nivel de bucket de Propiedad de objetos para controlar la propiedad de los objetos cargados en el bucket. Además, use Propiedad de objetos para activar las ACL. De forma predeterminada, la Propiedad de objetos se establece en el *ajuste Aplicada al propietario del bucket* y todas las ACL están deshabilitadas. Cuando las ACL están deshabilitadas, el propietario del bucket posee todos los objetos del bucket y administra el acceso a los datos de forma exclusiva. Para administrar el acceso, el propietario del bucket usa políticas u otra herramienta de administración de acceso, excluyendo las ACL. Para obtener más información, consulte [Control de la propiedad de los objetos y desactivación de las ACL del bucket](about-object-ownership.md).

Para obtener una guía más completa sobre el control de acceso de Amazon S3 y conocer otras prácticas recomendadas, consulte [Control de acceso en Amazon S3](access-management.md).

# Inventario de datos de Amazon Simple Storage Service
<a name="s3-data-inventory"></a>

## Amazon S3
<a name="s3-intro"></a>

Amazon S3 proporciona almacenamiento de objetos escalable en la nube de AWS. Le permite almacenar y recuperar cualquier cantidad de datos desde cualquier parte de la web. En función de su arquitectura única, S3 está diseñado para superar el 99,999999999 % (11 nueves) de durabilidad de los datos. Además, S3 almacena los datos de forma redundante en un mínimo de 3 zonas de disponibilidad de forma predeterminada, lo que proporciona una resistencia integrada contra los desastres generalizados. Los clientes pueden almacenar los datos en una única zona de disponibilidad para minimizar el costo de almacenamiento o la latencia, en varias zonas de disponibilidad para resistir la pérdida permanente de todo un centro de datos o en varias Regiones de AWS para cumplir con los requisitos de resiliencia geográfica. Características clave

Ubicación geográfica  
Amazon S3 está alojado en varias ubicaciones de todo el mundo. Seleccionará las ubicaciones para los datos que los coloquen cerca de los clientes.

Buckets  
Un bucket es un contenedor para objetos almacenados en Amazon S3. Cada objeto está almacenado dentro de un bucket.

Objetos  
Los objetos son las entidades fundamentales almacenadas en Amazon S3. Los objetos se componen de datos de objetos y metadatos.

Clases de almacenamiento  
Amazon S3 ofrece diferentes clases de almacenamiento optimizadas para distintos casos de uso.

Administración del almacenamiento  
Amazon S3 tiene características de administración del almacenamiento que puede utilizar para administrar los costos y cumplir los requisitos de cumplimiento. 

Gestión de acceso y seguridad  
Amazon S3 proporciona funciones para auditar y gestionar el acceso a sus buckets y objetos.

## Ubicación geográfica
<a name="s3-geographic-location"></a>

Amazon S3 está disponible en cada Región de AWS del mundo. Cada región es un área geográfica independiente.

### Por qué es importante
<a name="s3-geographic-location-why"></a>

Después de determinar dónde quiere almacenar los datos, puede decidir si desea implementar almacenamiento equivalente de forma funcional en las mismas ubicaciones o en ubicaciones diferentes, en función de sus necesidades.

### Obtención de un resumen de los buckets de Amazon S3 en todas las regiones
<a name="s3-geographic-location-how"></a>

Utilice el siguiente comando AWS CLI:

```
   aws s3api list-buckets /
    --max-items 100 / 
    --page-size 100
```

Para obtener más información, consulte [list-buckets](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-buckets.html) en la referencia de comandos de la AWS CLI.

## Buckets
<a name="s3-buckets"></a>

Los buckets de Amazon S3 son contenedores de objetos. Cada bucket tiene un nombre único en todo AWS. Amazon S3 admite cuatro tipos de buckets: buckets de uso general, buckets de directorio, buckets de tablas y buckets vectoriales. Cada tipo de bucket proporciona un conjunto único de características para diferentes casos de uso. Para obtener más información sobre los distintos tipos de bucket, consulte [Buckets](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html#BasicsBucket) en la Guía del usuario de Amazon S3.

### Por qué importan
<a name="s3-buckets-why"></a>

Después de mostrar los buckets, puede validar la configuración de los buckets para sistemas de almacenamiento funcionalmente equivalentes revisando los distintos ajustes de configuración de los buckets. 

### Muestra de las configuraciones de los buckets
<a name="s3-buckets-how"></a>

```
aws s3api get-bucket-versioning --bucket amzn-s3-demo-bucket1
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
aws s3api get-bucket-logging --bucket amzn-s3-demo-bucket1
```

Para obtener más información, consulte [get-bucket-versioning](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-versioning.html) en la referencia de comandos de la AWS CLI.

## Objetos
<a name="s3-objects"></a>

Los objetos son las entidades fundamentales almacenadas en Amazon S3. Cada objeto consta de datos, una clave (nombre) y metadatos.

### Por qué importan
<a name="s3-objects-why"></a>

Comprender las características del objeto ayuda a planificar los requisitos de rendimiento y capacidad de almacenamiento equivalentes en sistemas funcionalmente equivalentes.

### Muestra de los objetos y sus propiedades
<a name="s3-objects-how"></a>

```
aws s3api list-objects-v2 --bucket amzn-s3-demo-bucket1 /
    --query 'Contents[].{Key: Key, Size: Size, LastModified: LastModified}'
```

Para obtener más información, consulte [list-objects-v2](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-objects-v2.html) en la referencia de comandos de la AWS CLI.

## Clases de almacenamiento
<a name="s3-storage-classes"></a>
+ Amazon S3 Standard
+ Amazon S3 Intelligent-Tiering
+ Amazon S3 Standard-IA
+ Amazon S3 One Zone-IA
+ Amazon S3 Glacier Instant Retrieval
+ Amazon S3 Glacier Flexible Retrieval
+ Amazon S3 Glacier Deep Archive
+ Amazon S3 Express One Zone

### Por qué importan
<a name="s3-storage-classes-why"></a>

Comprender el uso de la clase de almacenamiento ayuda a determinar los niveles de almacenamiento adecuados en sistemas funcionalmente equivalentes. Para obtener más información, consulte [Descripción y administración de clases de almacenamiento de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html) en la Guía del usuario de Amazon S3.

### Revisión de la selección y el uso de las clases de almacenamiento
<a name="s3-storage-classes-how"></a>

Puede utilizar la lente de almacenamiento de Amazon S3 para revisar la selección y el uso de la clase de almacenamiento. Para obtener más información, consulte [Descripción y administración de clases de almacenamiento de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html) en la Guía del usuario de Amazon S3.

## Administrar el almacenamiento
<a name="s3-storage-management"></a>

### Por qué es importante
<a name="s3-storage-management-why"></a>

Comprender el uso de la administración del almacenamiento ayuda a planificar características equivalentes para administrar los costos y cumplir con los requisitos de conformidad en sistemas funcionalmente equivalentes.

### Revisión de la selección y el uso de las características de administración del almacenamiento
<a name="s3-storage-management-how"></a>

Puede utilizar la lente de almacenamiento de Amazon S3 para revisar el uso de las características de administración del almacenamiento. Para obtener más información, consulte [Glosario de métricas de lente de almacenamiento de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html) en la Guía del usuario de Amazon S3. 

## Gestión de acceso y seguridad
<a name="s3-access-management"></a>

### Por qué importan
<a name="s3-access-management-why"></a>

Comprender la configuración de seguridad y administración de acceso le ayudará a planificar características equivalentes para administrar los requisitos de acceso y seguridad en sistemas funcionalmente equivalentes.

### Revisión de la administración de acceso y la configuración de seguridad
<a name="s3-access-management-how"></a>

Después de mostrar los buckets, puede validar los ajustes de seguridad y acceso de los buckets para sistemas de almacenamiento funcionalmente equivalentes revisando las distintas configuraciones de los buckets.

```
aws s3api get-public-access-block --bucket amzn-s3-demo-bucket1 
aws s3api get-bucket-acl --bucket amzn-s3-demo-bucket1 
aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket1
aws s3api get-bucket-policy --bucket amzn-s3-demo-bucket1
```

## Transferencia de datos
<a name="s3-data-transfer"></a>

Puede transferir datos desde Amazon S3 mediante varios métodos:
+ AWS CLI
+ AWS SDK
+ API de REST de Amazon S3
+ Herramientas de terceros

### Ejemplo de uso de AWS CLI
<a name="s3-data-transfer-examples"></a>

Para descargar un bucket completo:

```
aws s3 sync s3://amzn-s3-demo-bucket1 /local/path
```

Para obtener más información, consulte [sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) en la referencia de c‎omandos de la AWS CLI.

Para descargar objetos específicos:

```
aws s3 cp s3://amzn-s3-demo-bucket1/path/to/object /local/path
```

Para obtener más información, consulte [cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) en la referencia de comandos de la AWS CLI.

## Activos relacionados
<a name="s3-related-resources"></a>

A continuación, se muestran características adicionales de Amazon S3:
+ [Control de acceso en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-management.html)
+ [Seguridad en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security.html)
+ [Protección de los datos en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/data-protection.html)
+ [Registro y supervisión en Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/monitoring-overview.html)