Quiero que mi bucket de Amazon Simple Storage Service (Amazon S3) almacene únicamente objetos cifrados con una clave de AWS Key Management Service (AWS KMS) de mi cuenta de AWS. ¿Cómo puedo asegurarme de que solo esos objetos se pueden cargar a mi bucket?
Descripción corta
Utilice el cifrado predeterminado de Amazon S3 para asegurarse de que AWS KMS cifre los objetos que haya cargado sin encabezados de cifrado (como x-amz-server-side-encryption y x-amz-server-side-encryption-aws-kms-key-id) antes de almacenarlos en su bucket de S3. A continuación, utilice la política de bucket para asegurarse de que los objetos con otra configuración de cifrado (AES-256) no se puedan cargar y de que los objetos cargados con el cifrado de AWS KMS contengan un ID de clave de su cuenta de AWS.
Nota: Para cargar un objeto cifrado mediante una clave de AWS KMS, la clave y el bucket de S3 deben estar en la misma región de AWS.
Resolución
Cifrado predeterminado de Amazon S3
Siga estos pasos para configurar el cifrado predeterminado de Amazon S3 de su bucket en AWS KMS mediante la consola de Amazon S3:
- Abra la consola de Amazon S3.
- Elija el bucket que quiere usar para los objetos cifrados mediante AWS KMS.
- Seleccione la vista Propiedades.
- Elija Cifrado predeterminado y, a continuación, AWS-KMS.
- Seleccione Guardar.
Nota: Para habilitar el cifrado predeterminado de Amazon S3 mediante la API de REST, la interfaz de la línea de comandos de AWS (AWS CLI) o AWS SDK, consulte Configuración del cifrado predeterminado.
Política de bucket
Siga estos pasos para configurar su política de bucket a fin de denegar las solicitudes de carga que utilicen otra configuración de cifrado (AES-256) o que utilicen el cifrado de AWS KMS pero que contengan un ID de clave que no pertenezca a su cuenta de AWS:
- Abra la consola de Amazon S3.
- Elija el bucket que quiere usar para los objetos cifrados mediante AWS KMS.
- Elija la vista Permisos.
- Elija Política de bucket.
- Introduzca una política de bucket similar a la siguiente:
Nota: Sustituya samplebucketname por el nombre de su bucket y sustituya us-east-1:111122223333 por la región de AWS correcta y el ID de su cuenta de AWS.
{
"Version": "2012-10-17",
"Id": "PutObjPolicy",
"Statement": [
{
"Sid": "DenySSE-S3",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::samplebucketname/*",
"Condition": {
"StringEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
},
{
"Sid": "RequireKMSEncryption",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::samplebucketname/*",
"Condition": {
"StringNotLikeIfExists": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/*"
}
}
}
]
}
Información relacionada
Cómo utiliza Amazon Simple Storage Service (Amazon S3) AWS KMS