¿Por qué no puedo cargar un archivo grande a Amazon S3 con el cifrado de clave de AWS KMS?

4 minutos de lectura
0

Quiero cargar un archivo grande al bucket de Amazon Simple Storage Service (Amazon S3). En mi solicitud de carga, incluyo información de cifrado con una clave de AWS Key Management Service (AWS KMS). Sin embargo, aparece un error de acceso denegado.

Breve descripción

Confirme que tiene permiso para llevar a cabo acciones de kms:Decrypt en la clave de AWS KMS que utiliza para cifrar el objeto.

En el caso de archivos grandes, los comandos de AWS S3 de alto nivel de la interfaz de la línea de comandos de AWS (AWS CLI), los AWS SDK y muchos programas de terceros llevan a cabo automáticamente una carga multiparte. Para usar una clave de AWS KMS para cifrar una carga multiparte, debe tener los permisos kms:GenerateDataKey y kms:Decrypt. El permiso kms:GenerateDataKey le permite iniciar la carga. El permiso kms:Decrypt le permite cifrar las partes recién cargadas con la clave que utilizó para las partes anteriores del mismo objeto.

Nota: Para realizar una carga multiparte con cifrado mediante una clave de AWS KMS, debe disponer de lo siguiente:

  • Permiso para las acciones kms:Decrypt y kms:GenerateDataKey en la clave.
  • Permisos para la acción kms:GenerateDataKey en la API CreateMultipartUpload.
  • Permisos para la acción kms:Decrypt en las API UploadPart y UploadPartCopy. Estos permisos son necesarios porque Amazon S3 debe descifrar y leer los datos de las partes cifradas del archivo antes de completar la carga multiparte.

Si su usuario o rol de AWS Identity and Access Management (IAM) está en la misma cuenta de AWS que la clave de KMS, debe tener estos permisos en la política de claves. Si su usuario o rol de IAM pertenece a una cuenta diferente de la clave de KMS, debe tener los permisos tanto en la política de claves como en su usuario o rol de IAM.

Resolución

Política de claves

Revise la política de claves de AWS KMS en la vista de políticas de la Consola de administración de AWS.

En la política de claves, busque las instrucciones en las que el nombre de recurso de Amazon (ARN) de su usuario o rol de IAM aparezca como entidad principal de AWS. El ARN tiene el formato siguiente: arn:aws:iam::111122223333:user/john.

A continuación, consulte la lista de acciones que permiten sus declaraciones de usuario o rol de IAM. En las cargas multiparte, la lista de acciones permitidas debe incluir kms:Decrypt con SSE-KMS.

Por ejemplo, la siguiente instrucción de una política de claves permite al usuario John llevar a cabo las acciones kms:Decrypt y kms:GenerateDataKey:

{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/john"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Resource": "*"
}

Permisos de IAM

Para revisar los permisos que tiene en IAM, abra la consola de IAM y, a continuación, elija su usuario o rol de IAM.

Revise la lista de políticas de permisos que se aplican a su usuario o rol de IAM. Asegúrese de que se aplique una política que le permita llevar a cabo la acción kms:Decrypt en la clave que utiliza para cifrar el objeto:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey"
    ],
    "Resource": [
      "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    ]
  }
}

La instrucción de ejemplo concede al usuario de IAM acceso para ejecutar kms:Decrypt y kms:GenerateDataKey en la clave arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd.

Para obtener instrucciones sobre cómo actualizar los permisos de IAM, consulte Cambio de los permisos de un usuario de IAM.

Información relacionada

AWS Policy Generator

Data encryption in Amazon S3

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 10 meses