Replicación de objetos cifrados (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS)
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 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 y los SDK de AWS. Para obtener más información, consulte Preguntas frecuentes del cifrado predeterminado.
Existen algunas consideraciones especiales cuando replica objetos que se han cifrado mediante el cifrado en el servidor. Amazon S3 admite los siguientes tipos de cifrado en el servidor:
-
Cifrado en el servidor con claves administradas por Amazon S3 (SSE-S3)
-
Cifrado del lado del servidor con claves AWS Key Management Service (AWS KMS) (SSE-KMS)
-
Cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS)
-
Cifrado en el servidor con claves proporcionadas por el cliente (SSE-C)
Para obtener más información acerca del cifrado del lado del servidor, consulte Protección de los datos con el cifrado del servidor.
En este tema se explican los permisos que necesita para dirigir Amazon S3 a la replicación de objetos que se han cifrado mediante el cifrado en el servidor. En este tema también se proporcionan elementos de configuración adicionales que puede agregar y políticas de AWS Identity and Access Management (IAM) de ejemplo que conceden los permisos necesarios para replicar objetos cifrados.
Para ver un ejemplo con instrucciones paso a paso, consulte Habilitación de la replicación de objetos cifrados. Para obtener información acerca de la creación de configuración de replicación, consulte Información general de la replicación de objetos.
nota
Puede utilizar AWS KMS keys de varias regiones en Amazon S3. No obstante, Amazon S3 trata las claves de varias regiones como si fueran claves de una sola región y no utiliza las características de varias regiones de la clave. Para obtener más información, consulte Uso de claves de varias regiones en la Guía para desarrolladores de AWS Key Management Service.
Temas
Cómo afecta el cifrado de buckets predeterminado a la replicación
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.
Replicación de objetos cifrados con SSE-C
Al utilizar cifrado en el servidor con claves proporcionadas por el cliente (SSE-C), puede administrar sus propias claves de cifrado. Con SSE-C, usted administra las claves mientras que Amazon S3 administra el proceso de cifrado y descifrado. Debe proporcionar una clave de cifrado como parte de su solicitud, pero no necesita escribir ningún código para realizar el cifrado o descifrado de objetos. Cuando carga un objeto, Amazon S3 cifra el objeto mediante la clave que ha proporcionado. A continuación, Amazon S3 purga dicha clave de la memoria. Al recuperar un objeto, debe facilitar la misma clave de cifrado como parte de la solicitud. Para obtener más información, consulte Uso de cifrado en el lado del servidor con claves proporcionadas por el cliente (SSE-C).
La replicación de S3 admite objetos cifrados con SSE-C. Puede configurar la replicación de objetos SSE-C en la consola de Amazon S3 o con los SDK de AWS, de la misma manera que configura la replicación para objetos no cifrados. No hay permisos de SSE-C adicionales a los que se requieren actualmente para la replicación.
La replicación de S3 replica automáticamente los objetos cifrados con SSE-C recién cargados si son elegibles, tal como se especifique en la configuración de replicación de S3. Para replicar objetos existentes en sus buckets, utilice la replicación por lotes de S3. Para obtener más información sobre la replicación de objetos, consulte Configuración de la replicación en directo y Replicación de objetos existentes con replicación por lotes de S3.
No se aplican cargos adicionales por replicar objetos SSE-C. Para obtener más información sobre los precios de replicación, consulte la página de precios de Amazon S3
Replicación de objetos cifrados con SSE-S3, SSE-KMS o DSSE-KMS
De forma predeterminada, Amazon S3 no replica objetos cifrados con SSE-KMS o DSSE-KMS. En esta sección se explican los elementos de configuración adicionales que puede agregar para indicar a Amazon S3 que replique estos objetos.
Para ver un ejemplo con instrucciones paso a paso, consulte Habilitación de la replicación de objetos cifrados. Para obtener información acerca de la creación de configuración de replicación, consulte Información general de la replicación de objetos.
Especificar información adicional en la configuración de replicación
En la configuración de replicación, haga lo siguiente:
-
En el elemento
Destination
de su configuración de replicación, agregue el ID de la clave de AWS KMS simétrica administrada por el cliente que desea que Amazon S3 utilice para cifrar las réplicas de objetos, como se muestra en el siguiente ejemplo de configuración de replicación. -
Opte explícitamente por permitir la replicación de objetos cifrados mediante claves de KMS (SSE-KMS o DSSE-KMS). Para ello, agregue el elemento
SourceSelectionCriteria
, como se muestra en el siguiente ejemplo de configuración de la replicación.
<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>
AWS KMS key ARN or Key Alias ARN that's in the same Región de AWS as the destination bucket.
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>
importante
La clave de KMS debe haberse creado en la misma Región de AWS que el bucket de destino.
La clave de KMS debe ser válida. La operación de la API PutBucketReplication
no comprueba la validez de las claves de KMS. Si usa una clave de KMS no válida, recibirá el código de estado 200 OK
de HTTP en respuesta, pero la replicación genera un error.
En el siguiente ejemplo se muestra una configuración de replicación que incluye elementos de configuración opcionales. Esta configuración de replicación tiene una regla. La regla se aplica a los objetos con el prefijo de clave Tax
. Amazon S3 utiliza el ID de AWS KMS key especificado para cifrar estas réplicas de objetos.
<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration> <Role>arn:aws:iam::
account-id
:role/role-name
</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>
amzn-s3-demo-destination-bucket
AWS KMS key ARN or Key Alias ARN that's in the same Región de AWS as the destination bucket. (S3 uses this key to encrypt object replicas.)
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>
Conceder permisos adicionales para el rol de IAM
Para replicar objetos cifrados en reposo mediante SSE-S3, SSE-KMS o DSSE-KMS, conceda los siguientes permisos adicionales al rol de AWS Identity and Access Management (IAM) que especifique en la configuración de replicación. Estos permisos los otorga actualizando la política de permisos asociada con el rol de IAM.
-
Acción
s3:GetObjectVersionForReplication
para objetos de origen: esta acción permite que Amazon S3 replique tanto los objetos sin cifrar como los creados con cifrado del servidor mediante claves de SSE-S3, SSE-KMS o DSSE-KMS.nota
Se recomienda utilizar la
s3:GetObjectVersionForReplication
acción en lugar de la accións3:GetObjectVersion
, ya ques3:GetObjectVersionForReplication
proporciona a Amazon S3 solo los permisos mínimos necesarios para la replicación. Además, la accións3:GetObjectVersion
permite replicar objetos sin cifrar y cifrados con SSE-S3, pero no replicar objetos cifrados con claves de KMS (SSE-KMS o DSSE-KMS). -
Acciones
kms:Decrypt
ykms:Encrypt
de AWS KMS para las claves de KMS-
Debe conceder permisos
kms:Decrypt
para la AWS KMS key que se utilizó para descifrar el objeto de origen. -
Debe conceder permisos
kms:Encrypt
para la AWS KMS key que se utilizó para cifrar la réplica del objeto.
-
-
Acción
kms:GenerateDataKey
para replicar objetos de texto sin formato: si está replicando objetos de texto sin formato en un bucket con el cifrado SSE-KMS o DSSE-KMS habilitado de forma predeterminada, debe incluir el permisokms:GenerateDataKey
para el contexto de cifrado de destino y la clave de KMS en la política de IAM.
Se recomienda restringir estos permisos solo a los buckets y objetos de destino que utilicen las claves de condición de AWS KMS. La Cuenta de AWS que posea el rol de IAM debe tener permisos para la acciones kms:Encrypt
y kms:Decrypt
para las claves de KMS que se indican en la política. Si las claves de KMS pertenecen a otra cuenta de Cuenta de AWS, el propietario de las claves de KMS debe conceder estos permisos a la Cuenta de AWS que posee el rol de IAM. Para obtener más información acerca de cómo administrar el acceso a estas claves de KMS, consulte Uso de políticas de IAM con AWS KMS en la Guía para desarrolladores de AWS Key Management Service.
Claves de bucket y replicación de S3
Para utilizar la replicación con una clave de Bucket de S3, la política de AWS KMS key para la clave de KMS utilizada para cifrar la réplica de objeto debe incluir el permiso kms:Decrypt
para la entidad principal que realiza la llamada. La llamada a kms:Decrypt
verifica la integridad de la clave de bucket de S3 antes de usarla. Para obtener más información, consulte Uso de una clave de bucket de S3 con replicación.
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:::
). Debe actualizar las políticas de IAM para usar el ARN del bucket para el contexto de cifrado:bucket_ARN
"kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::
bucket_ARN
" ]
Para obtener más información, consulte Contexto de cifrado (x-amz-server-side-encryption-context) (en la sección “Uso de la API de REST”) y Cambios para tener en cuenta antes de habilitar una clave de bucket de S3.
Ejemplo de políticas: uso de SSE-KMS y SSE-KMS con replicación
En las siguientes políticas de IAM de ejemplo se muestran instrucciones para utilizar SSE-S3 y SSE-KMS con replicación.
ejemplo : uso de SSE-KMS con buckets de destino independientes
En la siguiente política de ejemplo, se muestran instrucciones para utilizar SSE-KMS con buckets de destino independientes.
{ "Version":"2012-10-17", "Statement":[ { "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.
source-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::/
amzn-s3-demo-source-bucket
key-prefix1
*" ] } }, "Resource": [ "List of AWS KMS key ARNs that are used to encrypt source objects.
" ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-1-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::/
amzn-s3-demo-destination-bucket1
key-prefix1
*" ] } }, "Resource": [ "AWS KMS key ARNs (in the same Región de AWS as destination bucket 1). Used to encrypt object replicas created in destination bucket 1.
" ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-2-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::/
amzn-s3-demo-destination-bucket2
key-prefix1
*" ] } }, "Resource": [ "AWS KMS key ARNs (in the same Región de AWS as destination bucket 2). Used to encrypt object replicas created in destination bucket 2.
" ] } ] }
ejemplo : replicación de objetos creados con SSE-S3 y SSE-KMS
A continuación, se muestra una política de IAM completa que concede los permisos necesarios para replicar objetos no cifrados, objetos creados con SSE-KMS y objetos creados con SSE-KMS.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/
amzn-s3-demo-source-bucket
key-prefix1
*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::/
amzn-s3-demo-destination-bucket
key-prefix1
*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::/
amzn-s3-demo-source-bucket
key-prefix1
*" ] } }, "Resource":[ "List of the AWS KMS key ARNs that are used to encrypt source objects.
" ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::/
amzn-s3-demo-destination-bucket
prefix1
*" ] } }, "Resource":[ "AWS KMS key ARNs (in the same Región de AWS as the destination bucket) to use for encrypting object replicas
" ] } ] }
ejemplo : replicación de objetos con claves de bucket de S3
A continuación, se muestra una política de IAM completa que concede los permisos necesarios para replicar objetos con claves de bucket de S3.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/
amzn-s3-demo-source-bucket
key-prefix1
*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::/
amzn-s3-demo-destination-bucket
key-prefix1
*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::" ] } }, "Resource":[ "
amzn-s3-demo-source-bucket
List of the AWS KMS key ARNs that are used to encrypt source objects.
" ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::" ] } }, "Resource":[ "
amzn-s3-demo-destination-bucket
AWS KMS key ARNs (in the same Región de AWS as the destination bucket) to use for encrypting object replicas
" ] } ] }
Conceder permisos adicionales para escenarios que afectan a varias cuentas
En un escenario de reproducción entre cuentas en el que los buckets de origen y destino pertenecen a Cuentas de AWS diferentes, puede utilizar una clave de KMS para cifrar réplicas de objetos. El propietario de la clave de KMS debe conceder al propietario del bucket de origen permiso para usar la clave de KMS.
nota
Si necesita replicar datos de SSE-KMS entre cuentas, la regla de replicación debe especificar una clave administrada por el cliente de AWS KMS para la cuenta de destino. Las Claves administradas por AWS no permiten el uso entre cuentas y, por tanto, no se pueden usar para realizar la replicación entre cuentas.
Para conceder permiso al propietario del bucket de origen para usar la clave de KMS (consola de AWS KMS)
-
Inicie sesión en la AWS Management Console y abra la consola de AWS KMS en https://console.aws.amazon.com/kms
. -
Para cambiar la Región de AWS, utilice el Selector de regiones ubicado en la esquina superior derecha de la página.
-
Si desea ver las claves de la cuenta que usted crea y administra, en el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).
-
Seleccione la clave de KMS;.
-
En Configuración general, elija la pestaña Política de claves.
-
Desplácese hacia abajo hasta Otras Cuentas de AWS.
-
Elija Agregar otras Cuentas de AWS.
Aparecerá el cuadro de diálogo Otro Cuentas de AWS.
-
En el cuadro de diálogo, elija Agregar otro Cuenta de AWS. Para arn:aws:iam::, introduzca el ID de la cuenta de bucket de origen.
-
Elija Guardar cambios.
Para conceder permiso al propietario del bucket de origen para usar la clave de KMS (AWS CLI)
-
Para obtener información sobre el comando
put-key-policy
AWS Command Line Interface (AWS CLI), consulte put-key-policy en la Referencia de comandos de AWS CLI. Para obtener información acerca de la operación de la APIPutKeyPolicy
subyacente, consulte PutKeyPolicy en la Referencia de la API de AWS Key Management Service.
Consideraciones sobre cuotas de transacciones de AWS KMS
Cuando agregue muchos objetos nuevos con cifrado de AWS KMS después de activar la replicación entre regiones (CRR), es posible que experimente una limitación (errores 503 Service
Unavailable
de HTTP). La limitación controlada se produce cuando el número de transacciones de AWS KMS por segundo supera las cuotas actuales. Para obtener más información, consulte Cuotas en la Guía para desarrolladores de AWS Key Management Service.
Para solicitar un aumento de una cuota, use Service Quotas. Para obtener más información, consulte Solicitud de un aumento de cuota. Si Service Quotas no es compatible en su región, abra un caso de AWS Support
Habilitación de la replicación de objetos cifrados
De forma predeterminada, Amazon S3 no replica los objetos cifrados mediante el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) ni el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS). Para replicar objetos cifrados con SSE-KMS o DSS-KMS, es necesario modificar la configuración de replicación del bucket para indicar a Amazon S3 que replique estos objetos. Este ejemplo explica cómo usar la consola de Amazon S3 y la AWS Command Line Interface (AWS CLI) para cambiar la configuración de replicación del bucket con el fin de habilitar la replicación de objetos cifrados.
Para obtener más información, consulte Replicación de objetos cifrados (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS).
nota
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. Debe actualizar las políticas de IAM para usar el ARN del bucket para el contexto de cifrado. Para obtener más información, consulte Claves de bucket y replicación de S3.
nota
Puede utilizar AWS KMS keys de varias regiones en Amazon S3. No obstante, Amazon S3 trata las claves de varias regiones como si fueran claves de una sola región y no utiliza las características de varias regiones de la clave. Para obtener más información, consulte Uso de claves de varias regiones en la Guía para desarrolladores de AWS Key Management Service.
Para obtener instrucciones paso a paso, consulte Configuración de la replicación para buckets de origen y destino que son propiedad de la misma cuenta. En este tema, se proporcionan instrucciones para establecer la configuración de replicación cuando los buckets son propiedad de la misma y de diferentes Cuentas de AWS.
Para replicar los objetos replicados cifrados con AWS CLI, haga lo siguiente:
-
Cree los buckets de origen y de destino y habilite el control de versiones de dichos buckets.
-
Cree un rol de servicio de AWS Identity and Access Management (IAM) que conceda permiso para replicar objetos en Amazon S3. Los permisos del rol de IAM incluye los permisos necesarios para replicar los objetos cifrados.
-
Añada una configuración de replicación al bucket de origen. La configuración de replicación proporciona información relacionada con objetos de replicación cifrados mediante claves de KMS.
-
Agregue objetos al bucket de origen.
-
Pruebe la configuración para confirmar que los objetos cifrados se están replicando en el bucket de destino.
Los siguientes procedimientos le guiarán por este proceso.
Para replicar objetos cifrados del lado del servidor (AWS CLI)
-
En este ejemplo, se crea tanto el bucket
como elamzn-s3-demo-source-bucket
en la misma Cuenta de AWS. También puede configurar un perfil de credenciales para la AWS CLI. En este ejemplo, usamos el nombre de perfilamzn-s3-demo-destination-bucket
.acctA
Para obtener más información acerca de la configuración de perfiles de credenciales, consulte Perfiles con nombre en la Guía del usuario de AWS Command Line Interface. Para usar los comandos de este ejemplo, sustituya
por su información.user input placeholders
-
Use los siguientes comandos para crear el bucket
y habilitar el control de versiones en él. Los siguientes comandos de ejemplo crean el bucketDOC-EXAMPLE-SOURCE-BUCKET
en la región Este de EE. UU. (Norte de Virginia) (DOC-EXAMPLE-SOURCE-BUCKET
us-east-1
).aws s3api create-bucket \ --bucket
\ --regionDOC-EXAMPLE-SOURCE-BUCKET
us-east-1
\ --profileacctA
aws s3api put-bucket-versioning \ --bucket
\ --versioning-configuration Status=Enabled \ --profileDOC-EXAMPLE-SOURCE-BUCKET
acctA
-
Use los siguientes comandos para crear el bucket
y habilitar el control de versiones en él. Los siguientes comandos de ejemplo crean el bucketDOC-EXAMPLE-DESTINATION-BUCKET
en la región Oeste de EE. UU. (Oregón) (DOC-EXAMPLE-DESTINATION-BUCKET
us-west-2
).nota
Para establecer la configuración de replicación cuando los buckets
yDOC-EXAMPLE-SOURCE-BUCKET
están en la misma Cuenta de AWS, debe utilizar el mismo perfil. En este ejemplo, usaremosDOC-EXAMPLE-DESTINATION-BUCKET
. Para configurar la replicación cuando los buckets son propiedad de diferentes Cuentas de AWS, debe especificar diferentes perfiles para cada uno.acctA
aws s3api create-bucket \ --bucket
\ --regionDOC-EXAMPLE-DESTINATION-BUCKET
us-west-2
\ --create-bucket-configuration LocationConstraint=us-west-2
\ --profileacctA
aws s3api put-bucket-versioning \ --bucket
\ --versioning-configuration Status=Enabled \ --profileDOC-EXAMPLE-DESTINATION-BUCKET
acctA
-
A continuación, cree un rol de servicio de IAM. Especificará este rol en la configuración de replicación que agregue al bucket
más adelante. Amazon S3 asume este rol para replicar objetos en su nombre. Crea el rol de IAM en dos pasos:DOC-EXAMPLE-SOURCE-BUCKET
-
Cree un rol de servicio.
-
Asocie una política de permisos al rol.
-
Para crear un rol de servicio de IAM, haga lo siguiente:
-
Copie la siguiente política de confianza y guárdela en un archivo llamado
s3-role-trust-policy-kmsobj.json
en el directorio actual en su equipo local. Esta política concede permisos a la entidad principal de servicio de Amazon S3 para asumir el rol para que Amazon S3 puede realizar tareas en su nombre.{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
Utilice el siguiente comando para crear el rol:
$
aws iam create-role \ --role-namereplicationRolekmsobj
\ --assume-role-policy-document file://s3-role-trust-policy-kmsobj.json \ --profileacctA
-
-
A continuación, asocie una política de permisos al rol. Esta política concede permisos para varias acciones de buckets y objetos de Amazon S3.
-
Copie la siguiente política de permisos y guárdela en un archivo llamado
s3-role-permissions-policykmsobj.json
en el directorio actual en su equipo local. Creará un rol de IAM y le asociará la política más adelante.importante
En la política de permisos, debe especificar los ID de la clave AWS KMS que se emplearán para el cifrado de los buckets
yamzn-s3-demo-source-bucket
. Debe crear dos claves de KMS para los bucketsamzn-s3-demo-destination-bucket
yamzn-s3-demo-source-bucket
amzn-s3-demo-destination-bucket
. Las AWS KMS keys no se comparten fuera de la Región de AWS en la que se crearon.{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::
", "arn:aws:s3:::amzn-s3-demo-source-bucket
/*" ] }, { "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Effect":"Allow", "Condition":{ "StringLikeIfExists":{ "s3:x-amz-server-side-encryption":[ "aws:kms", "AES256", "aws:kms:dsse" ], "s3:x-amz-server-side-encryption-aws-kms-key-id":[ "amzn-s3-demo-source-bucket
AWS KMS key IDs(in ARN format) to use for encrypting object replicas
" ] } }, "Resource":"arn:aws:s3:::
/*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" ] } }, "Resource":[ "amzn-s3-demo-source-bucket
AWS KMS key IDs(in ARN format) used to encrypt source objects.
" ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.us-west-2.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::
/*" ] } }, "Resource":[ "amzn-s3-demo-destination-bucket
AWS KMS key IDs(in ARN format) to use for encrypting object replicas
" ] } ] } -
Cree una política y asóciela al rol.
$
aws iam put-role-policy \ --role-name replicationRolekmsobj \ --policy-document file://s3-role-permissions-policykmsobj.json \ --policy-name replicationRolechangeownerPolicy \ --profileacctA
-
-
-
A continuación, añada la siguiente configuración de replicación al bucket
, que le indica a Amazon S3 que replique los objetos con el prefijoamzn-s3-demo-source-bucket
Tax/
en el bucket
.amzn-s3-demo-destination-bucket
importante
En la configuración de replicación, debe especificar el rol de IAM que puede asumir Amazon S3. Solo puede hacer esto si tiene el permiso
iam:PassRole
. El perfil que especifique en el comando de la CLI tiene que tener este permiso. Para obtener más información, consulte Concesión de permisos a un usuario para transferir un rol a un servicio de Servicio de AWS en la Guía del usuario de IAM.<ReplicationConfiguration> <Role>
IAM-Role-ARN
</Role> <Rule> <Priority>1</Priority> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Status>Enabled</Status> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> <Bucket>arn:aws:s3:::
</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>amzn-s3-demo-destination-bucket
AWS KMS key IDs to use for encrypting object replicas
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> </Rule> </ReplicationConfiguration>Para añadir una configuración de replicación al bucket
, haga lo siguiente:amzn-s3-demo-source-bucket
-
La AWS CLI requiere que especifique la configuración de replicación como JSON. Guarde la siguiente JSON en un archivo (
replication.json
) en el directorio actual en su equipo local.{ "Role":"
IAM-Role-ARN
", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ "Prefix":"Tax" }, "Destination":{ "Bucket":"arn:aws:s3:::
", "EncryptionConfiguration":{ "ReplicaKmsKeyID":"amzn-s3-demo-destination-bucket
AWS KMS key IDs (in ARN format) to use for encrypting object replicas
" } }, "SourceSelectionCriteria":{ "SseKmsEncryptedObjects":{ "Status":"Enabled" } } } ] } -
Edite el JSON para proporcionar valores para el bucket
,amzn-s3-demo-destination-bucket
yAWS KMS key IDs (in ARN format)
. Guarde los cambios.IAM-role-ARN
-
Use el siguiente comando para añadir la configuración de replicación al bucket
. Asegúrese de proporcionar el nombre del bucketamzn-s3-demo-source-bucket
.amzn-s3-demo-source-bucket
$
aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket
\ --profileamzn-s3-demo-source-bucket
acctA
-
-
Compruebe la configuración para verificar que se hayan replicado los objetos cifrados. En la consola de Amazon S3, haga lo siguiente:
Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
En el bucket
, cree una carpeta llamadaamzn-s3-demo-source-bucket
Tax
. -
Añada objetos de ejemplo a la carpeta. Asegúrese de elegir la opción de cifrado y especifique su clave de KMS para cifrar los objetos.
-
Compruebe que el bucket
contenga las réplicas de objeto y que se hayan cifrado con la clave de KMS que especificó en la configuración. Para obtener más información, consulte Obtención de información del estado de replicación.amzn-s3-demo-destination-bucket
Para ver un ejemplo de código sobre cómo agregar una configuración de replicación, consulte Uso de los AWS SDK. Tendrá que modificar la configuración de replicación en concordancia.
Para obtener información conceptual, consulte Replicación de objetos cifrados (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS).