Aparece el siguiente error cuando intento descargar o copiar un objeto desde mi bucket de Amazon Simple Storage Service (Amazon S3): El texto cifrado hace referencia a una clave maestra de cliente que no existe, no existe en esta región o a la que no se le permite acceder.
Resolución
Aparece este error cuando se cumplen las dos condiciones siguientes:
- El objeto que se almacena en el bucket al que realiza las solicitudes está cifrado con una clave de AWS Key Management Service (AWS KMS).
- El rol o el usuario de AWS Identity and Access Management (IAM) que realiza las solicitudes no tiene los permisos suficientes para acceder a la clave de AWS KMS que se utiliza para cifrar los objetos.
Nota: Si recibe errores al ejecutar los comandos de la interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente.
Puede comprobar el cifrado de un objeto mediante el comando head-object de la AWS CLI:
aws s3api head-object --bucket my-bucket --key my-object
Asegúrese de hacer lo siguiente en el comando anterior:
- Sustituya my-bucket por el nombre de su bucket.
- Sustituya my-object por el nombre de su objeto.
La salida de este comando es similar a la siguiente:
{
"AcceptRanges": "bytes",
"ContentType": "text/html",
"LastModified": "Thu, 16 Apr 2015 18:19:14 GMT",
"ContentLength": 77,
"VersionId": "null",
"ETag": "\"30a6ec7e1a9ad79c203d05a589c8b400\"",
"ServerSideEncryption": "aws:kms",
"Metadata": {},
"SSEKMSKeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
"BucketKeyEnabled": true
}
El campo SSEKMSKeyId de la salida especifica la clave de AWS KMS que se usó para cifrar el objeto.
Para resolver este error, realice una de las siguientes acciones:
- Asegúrese de que la política vinculada al usuario o rol de IAM tenga los permisos necesarios. Ejemplo:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"kms:DescribeKey",
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": [
"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
]
}
}
- Asegúrese de que la política de AWS KMS tenga los permisos necesarios. Ejemplo:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AWS-account-ID:user/user-name-1"
},
"Action": [
"kms:DescribeKey",
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "*"
}
}
Si el usuario o rol de IAM y la clave de AWS KMS provienen de diferentes cuentas de AWS, asegúrese de lo siguiente:
- La política vinculada a la entidad de IAM tiene los permisos de AWS KMS necesarios.
- La política de claves de AWS KMS concede los permisos necesarios a la entidad de IAM.
Importante: no puede utilizar las claves administradas de AWS en casos de uso entre cuentas porque las políticas de claves administradas de AWS no se pueden modificar.
Para obtener información detallada sobre una clave de AWS KMS, ejecute el comando describe-key:
aws kms describe-key --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
También puede utilizar la consola de AWS KMS para ver detalles de una clave de AWS KMS.
Nota: Asegúrese de que la clave de AWS KMS que se utiliza para cifrar el objeto esté habilitada.
Información relacionada
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?
¿Tengo que especificar la clave de AWS KMS al descargar un objeto cifrado con KMS desde Amazon S3?