Replicar 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 creados con cifrado del servidor (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 elDOC-EXAMPLE-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 perfilDOC-EXAMPLE-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
yDOC-EXAMPLE-SOURCE-BUCKET
. Debe crear dos claves de KMS distintas para los bucketsDOC-EXAMPLE-DESTINATION-BUCKET
yDOC-EXAMPLE-SOURCE-BUCKET
DOC-EXAMPLE-DESTINATION-BUCKET
. Las AWS KMS keys nunca se comparten fuera de la Región de AWS en la que se han creado.{ "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:::DOC-EXAMPLE-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":[ "DOC-EXAMPLE-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:::DOC-EXAMPLE-DESTINATION-BUCKET
/*" ] } }, "Resource":[ "DOC-EXAMPLE-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":[ "DOC-EXAMPLE-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 prefijoDOC-EXAMPLE-SOURCE-BUCKET
Tax/
en el bucket
.DOC-EXAMPLE-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>DOC-EXAMPLE-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:DOC-EXAMPLE-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":"DOC-EXAMPLE-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
,DOC-EXAMPLE-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 bucketDOC-EXAMPLE-SOURCE-BUCKET
.DOC-EXAMPLE-SOURCE-BUCKET
$
aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket
\ --profileDOC-EXAMPLE-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 llamadaDOC-EXAMPLE-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.DOC-EXAMPLE-DESTINATION-BUCKET
Para ver un ejemplo de código sobre cómo agregar una configuración de replicación, consulte Uso de los SDK de AWS. Tendrá que modificar la configuración de replicación en concordancia.
Para obtener información conceptual, consulte Replicación de objetos creados con cifrado del servidor (SSE-C, SSE-S3, SSE-KMS, DSSE-KMS).