aws key management serviceaws key management service guía para desarrolladores

406
AWS Key Management Service Guía para desarrolladores

Upload: others

Post on 03-May-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management ServiceGuía para desarrolladores

Page 2: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

AWS Key Management Service: Guía para desarrolladoresCopyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Table of Contents¿Qué es AWS Key Management Service? ............................................................................................. 1

Conceptos ................................................................................................................................. 2Claves maestras de cliente (CMK) ........................................................................................ 3Claves de datos ................................................................................................................. 5Pares de claves de datos .................................................................................................... 7Operaciones criptográficas ................................................................................................. 11Identificadores de clave (KeyId) .......................................................................................... 12Origen del material de claves ............................................................................................. 14Especificación de clave ...................................................................................................... 14Uso de claves .................................................................................................................. 15Cifrado de sobre ............................................................................................................... 15Contexto de cifrado ........................................................................................................... 16Políticas de claves ............................................................................................................ 20Concesiones .................................................................................................................... 20Tokens de concesión ........................................................................................................ 20Auditar el uso de la CMK ................................................................................................... 20Infraestructura de administración de claves ........................................................................... 21

Introducción ..................................................................................................................................... 22Crear claves ............................................................................................................................ 22

Crear CMK simétricas ....................................................................................................... 22Crear CMK asimétricas ...................................................................................................... 25

Consultar claves ....................................................................................................................... 28Consultar las CMK en la consola ........................................................................................ 28Ver las CMK con la API .................................................................................................... 35Encontrar el ID y el ARN de la clave ................................................................................... 39Identificar CMK simétricas y asimétricas ............................................................................... 40

Editar claves ............................................................................................................................ 43Edición de las CMK (console) ............................................................................................. 43Edición de las CMK (AWS KMS API) ................................................................................... 45

Etiquetar claves ........................................................................................................................ 47Administrar etiquetas de CMK (console) ............................................................................... 47Administrar etiquetas de CMK (AWS KMS API) ..................................................................... 48

Habilitar y deshabilitar claves ..................................................................................................... 49Habilitar y deshabilitar CMK (console) .................................................................................. 49Habilitar y deshabilitar CMK (AWS KMS API) ........................................................................ 50

Descargar claves públicas .......................................................................................................... 50Consideraciones especiales para descargar claves públicas .................................................... 51Descargar una clave pública (console) ................................................................................. 52Descargar una clave pública (AWS KMS API) ....................................................................... 52

Autenticación y control de acceso ....................................................................................................... 53Autenticación ............................................................................................................................ 53Control de acceso ..................................................................................................................... 54Información general sobre la administración del acceso .................................................................. 54

Recursos y operaciones de AWS KMS ................................................................................ 55Administrar el acceso a las CMK de AWS KMS .................................................................... 55Especificar permisos en una política .................................................................................... 56Especificación de las condiciones de una política .................................................................. 57

Usar políticas de claves ............................................................................................................. 57Información general de las políticas de claves ....................................................................... 57Política de claves predeterminada ....................................................................................... 58Política de claves de ejemplo ............................................................................................. 66Consultar una política de claves ......................................................................................... 69Cambiar una política de claves ........................................................................................... 72Actualizar las políticas de claves ......................................................................................... 74

iii

Page 4: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Usar políticas de IAM ................................................................................................................ 76Información general de políticas de IAM ............................................................................... 76Especificar las CMK en instrucciones de políticas de IAM ....................................................... 77Permisos necesarios para usar la consola de AWS KMS ........................................................ 78Políticas administradas (predefinidas) por AWS para AWS KMS ............................................... 78Ejemplos de políticas administradas por el cliente .................................................................. 79

Permitir el acceso entre cuentas a una CMK ................................................................................ 81Paso 1: Agregar una instrucción de política de claves en la cuenta local .................................... 82Paso 2: Agregar políticas de IAM a la cuenta externa ............................................................. 83Crear CMK que otras cuentas pueden utilizar ....................................................................... 84Usar CMK externas con servicios de AWS ........................................................................... 86

Referencia de permisos de la API de AWS KMS ........................................................................... 86Usar condiciones de política ....................................................................................................... 97

Claves de condición globales de AWS ................................................................................. 97Claves de condición de AWS KMS ...................................................................................... 99

Usar concesiones .................................................................................................................... 127Crear una concesión ....................................................................................................... 127Concesiones para las CMK simétricas y asimétricas ............................................................. 128Restricciones de concesiones ........................................................................................... 129Autorizar a CreateGrant en una política de claves ................................................................ 129Conceder el permiso a CreateGrant ................................................................................... 130

Uso de roles vinculados a servicios ........................................................................................... 130Permisos de roles vinculados a un servicio para almacenes de claves personalizadas de AWSKMS .............................................................................................................................. 130

Determinar el acceso ............................................................................................................... 131Examinar la política de claves ........................................................................................... 131Examinar las políticas de IAM ........................................................................................... 133Examinar concesiones ..................................................................................................... 135Solución de problemas de acceso a las claves .................................................................... 136

Usar claves simétricas y asimétricas .................................................................................................. 143Acerca de las CMK simétricas y asimétricas ............................................................................... 144

Claves maestras de cliente simétricas ................................................................................ 144Claves maestras asimétricas de cliente .............................................................................. 144

Cómo elegir la configuración de la CMK ..................................................................................... 145Seleccionar el uso de la clave .......................................................................................... 146Seleccionar la especificación de clave ................................................................................ 147

Consultar la configuración criptográfica de las CMK ..................................................................... 152Comparar las CMK simétricas y asimétricas ................................................................................ 153

Rotar claves ................................................................................................................................... 157Funcionamiento de la rotación automática de claves .................................................................... 158Cómo habilitar y deshabilitar la rotación automática de claves ........................................................ 159

Habilitar y deshabilitar la rotación de claves (console) ........................................................... 159Habilitar y deshabilitar la rotación de claves (AWS KMS API) ................................................. 159

Rotar manualmente las claves .................................................................................................. 160Importar material de claves .............................................................................................................. 162

Acerca de material de claves importado ..................................................................................... 162Cómo importar el material de claves .......................................................................................... 163Cómo volver a importar el material de claves .............................................................................. 164Cómo identificar las CMK con material de claves importado ........................................................... 164

Para identificar el valor de la propiedad Origin de las CMK (console) .................................... 164Para identificar el valor de la propiedad Origin de las CMK (AWS KMS API) .......................... 165

Paso 1: Crear una CMK sin material de claves ............................................................................ 165Crear una CMK sin material de claves (console) .................................................................. 166Crear una CMK sin material de claves (AWS KMS API) ........................................................ 167

Paso 2: Descargar la clave pública y el token de importación ......................................................... 168Descargar la clave pública y el token de importación (console) ............................................... 169Descargar la clave pública y el token de importación (AWS KMS API) ..................................... 170

iv

Page 5: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Paso 3: Cifrar el material de claves ........................................................................................... 171Ejemplo: Cifrar el material de claves con OpenSSL .............................................................. 171

Paso 4: Importar el material de claves ....................................................................................... 172Importar material de claves (console) ................................................................................. 173Importar material de claves (AWS KMS API) ....................................................................... 173

Eliminar el material de claves ................................................................................................... 174Cómo afecta la eliminación del material de claves a los servicios de AWS integrados con AWSKMS .............................................................................................................................. 174Eliminar el material de claves (console) .............................................................................. 175Eliminar el material de claves (AWS KMS API) .................................................................... 175

Eliminar las claves maestras de cliente .............................................................................................. 176Cómo funciona la eliminación de CMK ....................................................................................... 176

Eliminar las CMK asimétricas ............................................................................................ 177Cómo afecta la eliminación de CMK a los servicios de AWS integrados ................................... 178

Programación y cancelación de la eliminación de claves ............................................................... 178Uso de Consola de administración de AWS ........................................................................ 179Uso de AWS CLI ............................................................................................................ 179Uso de AWS SDK for Java .............................................................................................. 180

Agregar el permiso para programar y cancelar la eliminación de claves ........................................... 181Uso de Consola de administración de AWS ........................................................................ 181Uso de AWS CLI ............................................................................................................ 181

Crear una alarma de Amazon CloudWatch ................................................................................. 182Requisitos para una alarma de CloudWatch ........................................................................ 183Crear la alarma de CloudWatch ........................................................................................ 183

Determinar el uso anterior de una CMK ..................................................................................... 186Examinar los permisos de CMK para determinar el ámbito de uso potencial .............................. 186Examinar los registros de AWS CloudTrail para determinar el uso real ..................................... 186

Usar un almacén de claves personalizado .......................................................................................... 189¿Qué es un almacén de claves personalizado? ........................................................................... 191

Almacén de claves personalizado de AWS KMS .................................................................. 191Clúster de AWS CloudHSM .............................................................................................. 192Usuario de criptografía de kmsuser .................................................................................. 192Las CMK en un almacén de claves personalizado ................................................................ 193

Controlar el acceso al almacén de claves personalizado ............................................................... 193Autorizar a supervisores y usuarios del almacén de claves personalizado ................................ 194Autorizar a AWS KMS para administrar AWS CloudHSM y recursos de Amazon EC2 ................. 194

Crear un almacén de claves personalizado ................................................................................. 196Cumplir los requisitos previos ........................................................................................... 196Crear un almacén de claves personalizado (consola) ............................................................ 198Crear un almacén de claves personalizado (API) ................................................................. 199

Administrar un almacén de claves personalizado ......................................................................... 200Consultar un almacén de claves personalizado .................................................................... 200Editar la configuración del almacén de claves personalizado .................................................. 202Conectar y desconectar un almacén de claves personalizado ................................................ 204Eliminar un almacén de claves personalizado ...................................................................... 209

Administrar CMK en un almacén de claves personalizado ............................................................. 211Crear CMK en un almacén de claves personalizado ............................................................. 211Consultar las CMK en un almacén de claves personalizado ................................................... 216Usar las CMK en un almacén de claves personalizado ......................................................... 217Buscar las CMK y material de claves ................................................................................. 218Programar la eliminación de CMK de un almacén de claves personalizado ............................... 222

Resolver problemas de un almacén de claves personalizado ......................................................... 223Cómo arreglar las CMK no disponibles ............................................................................... 223Cómo arreglar una CMK que produce error ......................................................................... 224Cómo arreglar un error de conexión .................................................................................. 224Cómo arreglar las credenciales de kmsuser no válidas ........................................................ 226Cómo eliminar material de claves huérfano ......................................................................... 227

v

Page 6: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Cómo recuperar el material de claves eliminado de una CMK ................................................ 228Cómo iniciar sesión como kmsuser ................................................................................... 229

Usar un punto de enlace de la VPC .................................................................................................. 232Crear un punto de enlace de la VPC ......................................................................................... 233

Crear un punto de enlace de la VPC (consola) ................................................................... 233Crear un punto de enlace de la VPC de AWS KMS (AWS CLI) .............................................. 234

Conectar con un punto de enlace de la VPC ............................................................................... 236Utilizar un punto de enlace de la VPC en una instrucción de política ............................................... 236Auditar el uso de CMK para la VPC .......................................................................................... 238

Usar el cifrado TLS híbrido postcuántico ............................................................................................. 240Acerca del cifrado TLS postcuántico .......................................................................................... 241Modo de uso .......................................................................................................................... 241Cómo configurarlo ................................................................................................................... 242Cómo probarlo ........................................................................................................................ 244Más información ...................................................................................................................... 244

Estado de una clave: efecto en su CMK ............................................................................................. 245Cómo los servicios de AWS usan AWS KMS ...................................................................................... 250

AWS CloudTrail ...................................................................................................................... 250Conocer cuándo se usa su CMK ....................................................................................... 250Conocer la frecuencia con que se usa su CMK ................................................................... 254

Amazon DynamoDB ................................................................................................................ 255Cifrado en el lado del cliente para DynamoDB ..................................................................... 255Usar las CMK y las claves de datos .................................................................................. 256Autorizar el uso de la CMK .............................................................................................. 258Contexto de cifrado de DynamoDB .................................................................................... 261Monitorear la interacción de DynamoDB con AWS KMS ........................................................ 262

Amazon Elastic Block Store (Amazon EBS) ................................................................................ 265Cifrado de Amazon EBS .................................................................................................. 266Usar las CMK y las claves de datos .................................................................................. 266Contexto de cifrado de Amazon EBS ................................................................................. 266Detectar errores de Amazon EBS ...................................................................................... 267Usar AWS CloudFormation para crear volúmenes de Amazon EBS cifrados ............................. 267

Amazon Elastic Transcoder ...................................................................................................... 268Cifrado del archivo de entrada .......................................................................................... 268Descifrado del archivo de entrada ..................................................................................... 269Cifrado del archivo de salida ............................................................................................. 269Protección de contenido HLS ............................................................................................ 271Contexto de cifrado de Elastic Transcoder .......................................................................... 271

Amazon EMR ......................................................................................................................... 272Cifrar datos en el sistema de archivos EMR (EMRFS) .......................................................... 272Cifrar datos en los volúmenes de almacenamiento de los nodos de clúster ............................... 274Contexto de cifrado ......................................................................................................... 275

Amazon Redshift ..................................................................................................................... 276Cifrado de Amazon Redshift ............................................................................................. 276Contexto de cifrado ......................................................................................................... 277

Amazon Relational Database Service (Amazon RDS) ................................................................... 277Contexto de cifrado de Amazon RDS ................................................................................. 277

AWS Secrets Manager ............................................................................................................. 278Proteger el valor del secreto ............................................................................................. 278Cifrar y descifrar secretos ................................................................................................. 279Usar la CMK de AWS KMS .............................................................................................. 281Autorizar el uso de la CMK .............................................................................................. 282Contexto de cifrado de Secrets Manager ............................................................................ 283Monitorear la interacción de Secrets Manager con AWS KMS ................................................ 284

Amazon Simple Email Service (Amazon SES) ............................................................................. 286Información general del cifrado de Amazon SES con AWS KMS ............................................. 287Contexto de cifrado de Amazon SES ................................................................................. 287

vi

Page 7: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Conceder a Amazon SES permiso para utilizar la clave maestra de cliente (CMK) de AWS KMS ... 288Obtener y descifrar mensajes de correo electrónico .............................................................. 288

Amazon Simple Storage Service (Amazon S3) ............................................................................ 289Cifrado en el servidor: uso de SSE-KMS ............................................................................ 289Usar el cliente de cifrado de Amazon S3 ............................................................................ 290Contexto de cifrado ......................................................................................................... 290

AWS Administrador de sistemas Parameter Store ........................................................................ 291Proteger los parámetros de cadena segura estándar ............................................................ 291Proteger los parámetros de cadena segura avanzada ........................................................... 294Configurar permisos para cifrar y descifrar valores de parámetros ........................................... 296Contexto de cifrado de Parameter Store ............................................................................. 298Solucionar problemas con las CMK en Parameter Store ........................................................ 299

Amazon WorkMail ................................................................................................................... 300Información general de Amazon WorkMail .......................................................................... 300Cifrado de Amazon WorkMail ............................................................................................ 300Autorizar el uso de la CMK .............................................................................................. 303Contexto de cifrado de Amazon WorkMail ........................................................................... 305Monitorear la interacción de Amazon WorkMail con AWS KMS ............................................... 305

Amazon WorkSpaces ............................................................................................................... 307Información general del cifrado de Amazon WorkSpaces con AWS KMS .................................. 307Contexto de cifrado de Amazon WorkSpaces ...................................................................... 308Conceder permiso a Amazon WorkSpaces para usar una CMK en su nombre ........................... 309

Monitorear las claves maestras de cliente ........................................................................................... 311Herramientas de monitoreo ....................................................................................................... 311

Herramientas automatizadas ............................................................................................. 312Herramientas manuales .................................................................................................... 312

Monitoreo con CloudWatch ....................................................................................................... 313Métricas y dimensiones .................................................................................................... 313Creación de alarmas ....................................................................................................... 314Eventos de AWS KMS ..................................................................................................... 316

Registrar llamadas a la API de AWS KMS con AWS CloudTrail ............................................................. 318Información de AWS KMS en CloudTrail .................................................................................... 318Excluir eventos de AWS KMS de un registro de seguimiento ......................................................... 319Conocer las entradas de archivos de registro de AWS KMS .......................................................... 320

CreateAlias ..................................................................................................................... 320CreateGrant .................................................................................................................... 321CreateKey ...................................................................................................................... 322Decrypt .......................................................................................................................... 323DeleteAlias ..................................................................................................................... 323DescribeKey ................................................................................................................... 324DisableKey ..................................................................................................................... 326EnableKey ...................................................................................................................... 326Encrypt .......................................................................................................................... 327GenerateDataKey ............................................................................................................ 328GenerateDataKeyWithoutPlaintext ...................................................................................... 328GenerateRandom ............................................................................................................ 329GetKeyPolicy .................................................................................................................. 330ListAliases ...................................................................................................................... 330ListGrants ...................................................................................................................... 331ReEncrypt ...................................................................................................................... 332Ejemplo uno de Amazon EC2 ........................................................................................... 332Ejemplo dos de Amazon EC2 ........................................................................................... 334

Programación de la API de AWS KMS ............................................................................................... 339Crear un cliente ...................................................................................................................... 339Trabajo con claves .................................................................................................................. 340

Crear una clave maestra de cliente ................................................................................... 340Generar una clave de datos ............................................................................................. 342

vii

Page 8: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Consultar una clave maestra de cliente .............................................................................. 344Obtener los ID y los ARN de las claves maestras de cliente .................................................. 346Habilitar las claves maestras de cliente .............................................................................. 348Deshabilitar las claves maestras de cliente ......................................................................... 350

Cifrar y descifrar claves de datos .............................................................................................. 351Cifrar una clave de datos ................................................................................................. 352Descifrando una clave de datos ........................................................................................ 354Volver a cifrar una clave de datos con otra clave maestra de cliente ........................................ 356

Trabajar con las políticas de claves ........................................................................................... 359Mostrar los nombres de las políticas de claves .................................................................... 359Obtener una política de claves .......................................................................................... 361Configurar una política de claves ....................................................................................... 363

Trabajar con concesiones ......................................................................................................... 367Crear una concesión ....................................................................................................... 368Consultar una concesión .................................................................................................. 370Retirar una concesión ...................................................................................................... 372Revocar una concesión .................................................................................................... 374

Trabajar con alias ................................................................................................................... 376Crear un alias ................................................................................................................. 376Mostrar alias .................................................................................................................. 378Actualizar un alias ........................................................................................................... 382Eliminar un alias ............................................................................................................. 384

Cuotas ........................................................................................................................................... 386Cuotas de recursos ................................................................................................................. 386

Claves maestras de cliente (CMK): 10 000 .......................................................................... 387Alias: 10 000 .................................................................................................................. 387Concesiones por cada CMK: 10 000 .................................................................................. 387Concesiones por entidad principal (por CMK): 500 ............................................................... 387Tamaño del documento de política de claves; 32 KB ............................................................ 388

Cuotas de solicitud .................................................................................................................. 388Aplicar cuotas de solicitud ................................................................................................ 389Cuotas compartidas para operaciones criptográficas ............................................................. 389Solicitudes de API realizadas en su nombre ........................................................................ 390Solicitudes entre cuentas .................................................................................................. 390Cuotas del almacén de claves personalizado ...................................................................... 390Cuotas de solicitud para cada operación de API de AWS KMS ............................................... 391

Historial de revisión ......................................................................................................................... 394Actualizaciones recientes ......................................................................................................... 394Actualizaciones anteriores ........................................................................................................ 395

viii

Page 9: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

¿Qué es AWS Key ManagementService?

AWS Key Management Service (AWS KMS) es un servicio administrado que facilita la creación y el controlde las claves maestras del cliente (CMK), las claves de cifrado utilizadas para cifrar los datos. Las CMK deAWS KMS están protegidas por módulos de seguridad de hardware (HSM) validados por el Programa devalidación de módulos criptográficos FIPS 140-2 excepto en las regiones China (Pekín) y China (Ningxia).

AWS KMS está integrado con la mayoría de los demás servicios de AWS que cifran sus datos. AWS KMStambién está integrado con AWS CloudTrail para registrar el uso de sus CMK para las necesidades deauditoría, regulación y conformidad.

Puede realizar las siguientes acciones básicas de administración en las claves maestras del cliente deAWS KMS (CMK):

• Cree (p. 22) y consulte (p. 28) CMK simétricas y asimétricas (p. 143) y edite (p. 43) suspropiedades.

• Habilitar y deshabilitar (p. 49) las CMK• Crear y consultar políticas de control de acceso (p. 53) y concesiones (p. 127) para sus CMK• Habilitar y deshabilitar la rotación automática (p. 157) del material criptográfico en una CMK• Etiquetar sus CMK (p. 47) para facilitar la identificación, clasificación y seguimiento del uso y los

costos• Crear, eliminar, enumerar y actualizar alias (p. 376), que son nombres descriptivos para sus CMK• Eliminar las CMK (p. 176) para completar el ciclo de vida de la clave

También puede realizar las siguientes operaciones criptográficas (p. 11) con sus CMK. Para verejemplos, consulte Programación de la API de AWS KMS (p. 339).

• Cifrar, descifrar y volver a cifrar datos con CMK simétricas o asimétricas• Firmar y verificar mensajes con CMK asimétricas• Generar claves de datos simétricas exportables y pares de claves de datos asimétricos• Generar números aleatorios adecuados para las aplicaciones de cifrado

También puede utilizar las características avanzadas de AWS KMS

• Importar material criptográfico (p. 162) a una CMK• Cree las CMK en su propio almacén de claves personalizado (p. 189) respaldado por un clúster de

AWS CloudHSM.• Conectarse directamente a AWS KMS través de un punto de enlace privado en su VPC (p. 232)• Utilizar el cifrado TLS híbrido postcuántico (p. 240) para proporcionar cifrado prospectivo en tránsito

para los datos que envíe a AWS KMS

Con AWS KMS obtiene más control sobre el acceso a los datos que cifra. Puede utilizar las característicascriptográficas y administración de claves directamente en sus aplicaciones o a través de los servicios de

1

Page 10: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConceptos

AWS que están integrados en AWS KMS. Si escribe aplicaciones para AWS o usa los servicios de AWS,AWS KMS le permite mantener el control sobre quién puede usar las claves maestras y obtener acceso asus datos cifrados.

AWS KMS se integra en AWS CloudTrail, un servicio que envía los archivos de registro al bucket deAmazon S3 que haya designado. Con CloudTrail puede monitorizar e investigar cómo y cuándo se hanutilizado las claves maestras y quién las ha usado.

Más información

• Para obtener más información sobre los términos y conceptos utilizados en AWS KMS, consulteConceptos de AWS KMS (p. 2).

• Para obtener información acerca de la API de AWS KMS, consulte AWS Key Management Service APIReference. Para ver ejemplos en diferentes lenguajes de programación, consulte Programación de laAPI de AWS KMS (p. 339).

• Para obtener información técnica detallada sobre cómo utiliza AWS KMS la criptografía y protege lasclaves maestras, consulte el documento técnico Detalles criptográficos de AWS Key ManagementService. En este documento técnico, no se describe cómo funciona AWS KMS en las regiones China(Pekín) y China (Ningxia).

• Para obtener ayuda sobre preguntas acerca de AWS KMS, consulte el Foro de debate de AWS KeyManagement Service.

AWS KMS en las regiones de AWS

Las regiones de AWS en las que se admite AWS KMS se enumeran en Cuotas y puntos de enlace deAWS Key Management Service. Si una característica de AWS KMS no se admite en una región de AWSque AWS KMS admite, la diferencia regional se describe en el tema acerca de la característica.

Precios de AWS KMS

Al igual que sucede con otros productos de AWS, no hay contratos ni compromisos mínimos para utilizarAWS KMS. Para obtener más información sobre los precios de AWS KMS, consulte Precios de AWS KeyManagement Service.

Acuerdo de nivel de servicios

AWS Key Management Service cuenta con el respaldo de un acuerdo de nivel de servicios que definenuestra política de disponibilidad del servicio.

Conceptos de AWS Key Management ServiceConozca los términos y conceptos básicos de AWS Key Management Service (AWS KMS) y cómofuncionan conjuntamente para proteger sus datos.

Temas• Claves maestras de cliente (CMK) (p. 3)• Claves de datos (p. 5)• Pares de claves de datos (p. 7)• Operaciones criptográficas (p. 11)• Identificadores de clave (KeyId) (p. 12)• Origen del material de claves (p. 14)

2

Page 11: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves maestras de cliente (CMK)

• Especificación de clave (p. 14)• Uso de claves (p. 15)• Cifrado de sobre (p. 15)• Contexto de cifrado (p. 16)• Políticas de claves (p. 20)• Concesiones (p. 20)• Tokens de concesión (p. 20)• Auditar el uso de la CMK (p. 20)• Infraestructura de administración de claves (p. 21)

Claves maestras de cliente (CMK)Las claves maestras de cliente son los principales recursos de AWS KMS

Una clave maestra de cliente (CMK) es una representación lógica de una clave principal. La CMK incluyemetadatos, como el ID de clave, la fecha de creación, la descripción y el estado de la clave. La CMKtambién contiene el material de claves utilizado para cifrar y descifrar datos.

AWS KMS es compatible con CMK simétricas y asimétricas. Una CMK simétrica representa una clave de256 bits que se utiliza para el cifrado y el descifrado. Una CMK asimétrica representa un par de clavesRSA que se utiliza para el cifrado y el descifrado o para la firma y la verificación (pero no ambos), oun par de claves de una curva elíptica (ECC) que se utiliza para la firma y la verificación. Para obtenerinformación detallada acerca de las CMK simétricas y asimétricas, consulte Usar claves simétricas yasimétricas (p. 143).

Las CMK se crean en AWS KMS. Las CMK simétricas y las claves privadas de CMK asimétricas nuncadejan el AWS KMS sin cifrar. Para administrar su CMK, puede utilizar la Consola de administración deAWS o la API de AWS KMS. Para utilizar una CMK en operaciones criptográficas (p. 11), debe utilizarla API de AWS KMS. Esta estrategia difiere de las claves de datos (p. 5). AWS KMS no almacena,administra ni realiza el seguimiento de las claves de datos. Debe utilizarlas fuera de AWS KMS.

De forma predeterminada, AWS KMS crea el material de claves para una CMK. No puede extraer,exportar, ver ni administrar este material de claves. Además, no puede eliminar este material de claves;debe eliminar la CMK (p. 176). Sin embargo, puede importar su propio material de claves (p. 162) enuna CMK o crear el material de claves para una CMK en el clúster de AWS CloudHSM asociado a unalmacén de claves personalizado de AWS KMS (p. 189).

Para obtener más información acerca de cómo se crean y se administran CMK, consulteIntroducción (p. 22). Para obtener información acerca del uso de las CMK, consulte la AWS KeyManagement Service API Reference.

AWS KMS admite tres tipos de CMK: CMK administradas por el cliente, CMK administradas por AWS yCMK propiedad de AWS.

Tipo de CMK Puede ver losmetadatos dela CMK

PuedeadministrarCMK

Usada solopara mi cuentade AWS

Rotaciónautomática (p. 157)

CMKadministradapor elcliente (p. 4)

Sí Sí Sí Opcional. Cada365 días (1año).

3

Page 12: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves maestras de cliente (CMK)

Tipo de CMK Puede ver losmetadatos dela CMK

PuedeadministrarCMK

Usada solopara mi cuentade AWS

Rotaciónautomática (p. 157)

CMKadministradaporAWS (p. 4)

Sí No Sí Obligatorio.Cada 1095días (3 años).

CMKpropiedad deAWS (p. 5)

No No No Varía

Para distinguir las CMK administradas por el cliente de las CMK administradas por AWS, utilice el campoKeyManager de la respuesta de la operación DescribeKey. En el caso de las CMK administradas porel cliente, el valor de KeyManager es Customer. En las CMK administradas por AWS, el valor deKeyManager es AWS.

Los servicios de AWS que se integran con AWS KMS (p. 250) difieren en el respaldo de las CMK.Algunos servicios de AWS cifran los datos de forma predeterminada con una CMK propiedad de AWS ouna CMK administrada de AWS. Otros servicios AWS ofrecen cifrar los datos con una CMK administradapor el cliente que elija. Otros otros servicios de AWS admiten todos los tipos de CMK para permitirle lasencillez de una CMK propiedad de AWS, la visibilidad de una CMK administrada por AWS o el controlde una CMK administrada por el cliente. Para obtener información detallada sobre las opciones de cifradoque ofrece un servicio de AWS, consulte el tema Cifrado en reposo en la guía del usuario o en la guía paradesarrolladores del servicio.

CMK administradas por el clienteLas CMK administradas por el cliente son CMK de su cuenta de AWS, que ha creado, poseey administra usted. Puede controlar por completo estas CMK, incluido el establecimiento y elmantenimiento de sus políticas de claves, políticas de IAM y concesiones (p. 53), su habilitacióny deshabilitación (p. 49), la rotación de su material criptográfico (p. 157), la adición deetiquetas (p. 47), la creación de alias (p. 376) que hacen referencia a la CMK y la programación de lasCMK para su eliminación (p. 176).

Las CMK administradas por el cliente aparecen en la página Customer managed keys (Clavesadministradas por el cliente) de la Consola de administración de AWS de AWS KMS. Para identificardefinitivamente una CMK administrada por el cliente, utilice la operación DescribeKey. En el caso de lasCMK administradas por el cliente, el valor del campo KeyManager de la respuesta DescribeKey esCUSTOMER.

Puede usar sus CMK administradas por el cliente en operaciones criptográficas y auditar su uso en losregistros de AWS CloudTrail. Además, muchos servicios de AWS integrados con AWS KMS (p. 250)le permiten especificar una CMK administrada por el cliente para proteger los datos que almacenan yadministran para usted.

Las CMK administradas por el cliente tienen una tarifa mensual y una tarifa por uso excesivo de la capagratuita. Se contabilizan en las cuotas (p. 386) de AWS KMS de su cuenta. Consulte los Precios de AWSKey Management Service y Cuotas (p. 386) para obtener más información.

CMK administradas por AWSLas CMK administradas por AWS son las CMK de la cuenta que se crean, administran y usan en nombrede un servicio de AWS integrado con AWS KMS. Algunos servicios de AWS solo admiten una CMKadministrada por AWS

4

Page 13: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de datos

Puede ver las CMK administradas por AWS en su cuenta (p. 28), ver sus políticas de claves (p. 69)y auditar su uso (p. 318) en los registros de AWS CloudTrail. Sin embargo, no puede administrar estasCMK, rotarlas ni cambiar sus políticas de claves. No puede usar las CMK administradas por AWS enoperaciones criptográficas directamente. El servicio que las crea las usa en su nombre.

Las CMK administradas por AWS aparecen en la página de claves administradas por AWS de la Consolade administración de AWS de AWS KMS. También puede identificar las CMK administradas por AWSa través de sus alias, que tienen el formato aws/service-name; por ejemplo, aws/redshift. Paraidentificar definitivamente una CMK administrada por AWS, utilice la operación DescribeKey. En el caso delas CMK administradas por AWS, el valor del campo KeyManager de la respuesta DescribeKey es AWS.

No debe pagar ninguna tarifa mensual por las CMK administradas por AWS. Pueden estar sujetas a tarifaspor uso excesivo de la capa gratuita, pero algunos servicios de AWS cubren estos costos por usted. Paraobtener más información, consulte el tema Cifrado en reposo en la guía del usuario o en la guía paradesarrolladores del servicio. Las CMK administradas por AWS no se contabilizan en las cuotas de recursoscorrespondientes al número de CMK en cada región de su cuenta. Sin embargo, cuando se utilizan ennombre de una entidad principal en su cuenta, estas CMK se contabilizan en las cuotas de solicitud.Consulte los Precios de AWS Key Management Service y Cuotas (p. 386) para obtener más información.

CMK propiedad de AWSLas CMK propiedad de AWS son una colección de CMK que un servicio de AWS posee y administra parasu uso en varias cuentas de AWS. Aunque las CMK propiedad de AWS no están en su cuenta de AWS, unservicio de AWS puede usar las CMK propiedad de AWS para proteger los recursos de su cuenta.

No es necesario crear ni administrar las CMK propiedad de AWS. Sin embargo, no se pueden ver, usar,supervisar ni auditar. No se le cobra ninguna tarifa mensual ni tarifa de uso por las CMK propiedad deAWS y no se contabilizan en las cuotas de AWS KMS (p. 386) de su cuenta.

La estrategia de rotación de claves (p. 157) para un CMK propiedad de AWS se determina según elservicio de AWS que crea y administra el CMK. Para obtener información acerca de los tipos de CMK queadmite un servicio de AWS, incluidas las CMK de AWS, consulte el tema Cifrado en reposo en la guía delusuario o la guía para desarrolladores del servicio.

Claves de datosLas claves de datos son las claves de cifrado que puede utilizar para cifrar los datos, incluidas grandescantidades de datos y otras claves de cifrado de datos.

Puede utilizar las claves maestras del cliente (p. 3) (CMK) de AWS KMS para generar, cifrar ydescifrar claves de datos. Sin embargo, AWS KMS no almacena, administra o realiza el seguimiento delas claves de datos, ni realiza operaciones criptográficas con claves de datos. Debe utilizar y administrarclaves de datos fuera de AWS KMS.

Crear una clave de datosPara crear una clave de datos, llame a la operación GenerateDataKey. AWS KMS utiliza la CMK queespecifique para generar una clave de datos. Esta operación devuelve una copia de texto no cifradode la clave de datos y una copia que está cifrada con la CMK. En la imagen siguiente, se muestra estaoperación.

5

Page 14: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de datos

AWS KMS también admite la operación GenerateDataKeyWithoutPlaintext, que devuelve solo una clave dedatos cifrada. Cuando tenga que utilizar la clave de datos, solicite a AWS KMS que la descifre.

Cifrar los datos con una clave de datosAWS KMS no puede utilizar una clave de datos para cifrar los datos. Sin embargo, la clave de datos puedeutilizarse fuera de KMS; por ejemplo, con OpenSSL o una biblioteca criptográfica, como SDK de cifrado deAWS.

Después de utilizar la clave de datos en texto no cifrado para cifrar los datos, elimínela de la memoriatan pronto como sea posible. Puede almacenar de forma segura la clave de datos cifrada con los datoscifrados para que esté disponible para descifrar los datos.

6

Page 15: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPares de claves de datos

Descifrar los datos con una clave de datosPara descifrar los datos, pase la clave de datos cifrada a la operación Decrypt. AWS KMS utiliza la CMKpara descifrar la clave de datos y, a continuación, devuelve la clave en texto sin cifrar. Utilice la clave dedatos de texto no cifrado para descifrar los datos y, a continuación, elimine la clave de datos de texto nocifrado de la memoria tan pronto como sea posible.

En el siguiente diagrama, se muestra cómo se utiliza la operación Decrypt para descifrar una clave dedatos cifrada.

Pares de claves de datosLos pares de claves de datos son claves de datos asimétricos que constan de una clave públicarelacionada matemáticamente y una clave privada. Están diseñados para ser utilizados para el cifrado ydescifrado del lado del cliente o la firma y verificación fuera de AWS KMS.

A diferencia de los pares de claves de datos que generan herramientas como OpenSSL, AWS KMSprotege la clave privada en cada par de claves de datos en una CMK simétrica en el AWS KMS que

7

Page 16: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPares de claves de datos

especifique. Sin embargo, AWS KMS no almacena, administra o realiza el seguimiento de los paresde claves de datos, ni realiza operaciones criptográficas con pares de claves de datos. Debe utilizar yadministrar pares de claves de datos fuera de AWS KMS.

AWS KMS admite los siguientes tipos de pares de claves de datos:

• Pares de claves RSA: RSA_2048, RSA_3072 y RSA_4096• Pares de claves de curva elíptica: ECC_NIST_P256, ECC_NIST_P384, ECC_NIST_P521 y

ECC_SECG_P256K1

El tipo de par de claves de datos que por lo general depende de su caso de uso o de los requisitosreglamentarios. La mayoría de los certificados precisan claves RSA. Las claves de curva elíptica seutilizan a menudo para firmas digitales. Las claves ECC_SECG_P256K1 son se utiliza normalmente concriptomonedas.

Crear un par de clave de datosPara crear un par de claves de datos, llame a las operaciones GenerateDataKeyPair oGenerateDataKeyPairWithoutPlaintext. Especifique la CMK simétrica que desea utilizar para cifrar la claveprivada.

GenerateDataKeyPair devuelve una clave pública de texto no cifrado, una clave pública de texto nocifrado y una clave privada cifrada. Utilice esta operación cuando necesite una clave privada de texto nocifrado inmediatamente, por ejemplo, para generar una firma digital.

GenerateDataKeyPairWithoutPlaintext devuelve una clave pública de texto no cifrado y una claveprivada de texto cifrado, pero no una clave privada de texto no cifrado. Utilice esta operación cuando nonecesite una clave privada de texto no cifrado inmediatamente, por ejemplo, cuando esté cifrando con unaclave pública. Más tarde, cuando necesite una clave privada de texto no cifrado para descifrar los datos,puede llamar a la operación Decrypt.

En la imagen siguiente, se muestra la operación GenerateDataKeyPair. La operaciónGenerateDataKeyWithoutPlaintext omite la clave privada de texto no cifrado.

8

Page 17: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPares de claves de datos

Cifrar los datos con un par de claves de datosCuando cifra con un par de claves de datos, utiliza la clave pública del par para cifrar los datos y la claveprivada del mismo par para descifrar los datos. Normalmente, los pares de claves de datos se utilizancuando muchas partes necesitan cifrar datos que solo la parte que posee la clave privada puede descifrar.

Las partes con la clave pública utilizan esa clave para cifrar datos, como se muestra en el siguientediagrama.

9

Page 18: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPares de claves de datos

Descifrar los datos con un par de claves de datosPara descifrar los datos, utilice la clave privada en el par de claves de datos. Para que la operación tengaéxito, las claves públicas y las privadas deben pertenecer al mismo par de claves de datos y debe utilizar elmismo algoritmo de cifrado.

Para descifrar la clave privada cifrada, pásala a la operación Decrypt . Utilice la clave privada de texto nocifrado para descifrar los datos. A continuación, elimina la clave privada de texto no cifrado de la memorialo antes posible.

El siguiente diagrama muestra cómo utilizar la clave privada en un par de claves de datos para descifrar eltexto cifrado.

Firmar los mensajes con un par de claves de datosPara generar una firma criptográfica para un mensaje, utilice la clave privada en el par de claves de datos.Cualquier persona con clave pública puede utilizarla para verificar que el mensaje se firmase con su claveprivada y que no haya cambiado desde entonces.

Si su clave privada está cifrada, pase la clave de datos cifrada a la operación Decrypt. AWS KMS utilizasu CMK para descifrar la clave de datos y después devuelve la clave privada de texto no cifrado. Utilice laclave privada de texto no cifrado para generar la firma. A continuación, elimina la clave privada de texto nocifrado de la memoria lo antes posible.

Para firmar un mensaje, cree un resumen de mensaje con una función hash criptográfica, como elcomando dgst en OpenSSL. Después, pase su clave privada no cifrada al algoritmo de firma. El resultadoes una firma que representa los contenidos del mensaje.

10

Page 19: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresOperaciones criptográficas

El siguiente diagrama muestra cómo utilizar la clave privada en un par de claves de datos para firmar unmensaje.

Verificar una firma con un par de claves de datosCualquier persona que tenga la clave pública en su par de claves de datos puede utilizarla para verificar lafirma que generó con su clave privada. La verificación confirma que un usuario autorizado firmó el mensajecon el algoritmo de firma y la clave privada especificada y el mensaje no ha cambiado desde entonces.

Para tener éxito, la parte que verifique la firma debe generar el mismo tipo de resumen, utilizar el mismoalgoritmo y utilizar la clave pública que se corresponde con la clave privada utilizada para firmar elmensaje.

El siguiente diagrama muestra cómo utilizar la clave pública en un par de claves de datos para verificar lafirma de un mensaje.

Operaciones criptográficasEn AWS KMS, las operaciones criptográficas son operaciones de la API que utilizan las CMK para protegerlos datos. Debido a que las CMK permanecen dentro de AWS KMS, debe llamar a AWS KMS para usaruna CMK en una operación criptográfica.

Para realizar operaciones criptográficas con las CMK, utilice los SDK de AWS, la AWS CommandLine Interface (AWS CLI) o el Herramientas de AWS para PowerShell. No puede realizar operacionescriptográficas en la consola de AWS KMS. Para ver ejemplos de cómo llamar a las operacionescriptográficas en varios lenguajes de programación, consulte Programación de la API de AWSKMS (p. 339).

Las operaciones criptográficas de AWS KMS son las siguientes.

11

Page 20: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresIdentificadores de clave (KeyId)

Operation Key type Uso de claves

Decrypt Cualquiera ENCRYPT_DECRYPT

Encrypt Cualquiera ENCRYPT_DECRYPT

GenerateDataKey Simétrica ENCRYPT_DECRYPT

GenerateDataKeyPair Simétrica ENCRYPT_DECRYPT

GenerateDataKeyPairWithoutPlaintext Simétrica ENCRYPT_DECRYPT

GenerateDataKeyWithoutPlaintext Simétrica ENCRYPT_DECRYPT

GenerateRandom N/A. Esta operación noutiliza una CMK.

N/A

ReEncrypt Cualquiera ENCRYPT_DECRYPT

Sign Asimétrica SIGN_VERIFY

Verificar Asimétrica SIGN_VERIFY

Para obtener información acerca de los permisos para operaciones criptográficas, consulte the sectioncalled “Referencia de permisos de la API de AWS KMS” (p. 86).

Para que AWS KMS tenga capacidad de respuesta y sea eficaz para todos los usuarios, AWS KMSestablece cuotas en el número de operaciones criptográficas que se pueden llamar en cada segundo.Para obtener más información, consulte the section called “Cuotas compartidas para operacionescriptográficas” (p. 389).

Identificadores de clave (KeyId)Los identificadores de clave actúan como nombres para las claves maestras del cliente (CMK) de AWSKMS. Le ayudan a reconocer sus CMK en la consola. Se utilizan para indicar qué CMK desea utilizar enoperaciones de la API de AWS KMS, políticas de IAM y concesiones.

AWS KMS define varios identificadores de clave. Al crear una CMK, AWS KMS genera un ARN de clavey un ID de clave, que son propiedades de la CMK. Al crear un alias, AWS KMS genera un ARN de aliasbasado en el nombre de alias que defina. Puede ver los identificadores de clave y alias en la Consola deadministración de AWS y en la API de AWS KMS.

En la consola de AWS KMS, puede ver y filtrar las CMK por su ARN de clave, ID de clave o nombrede alias, y ordenarlas por ID de clave y nombre de alias. Para obtener ayuda para encontrar losidentificadores clave en la consola, consulte the section called “Encontrar el ID y el ARN de laclave” (p. 39).

En la API de AWS KMS, los parámetros que se utilizan para identificar una CMK se denominan KeyId ouna variación, como TargetKeyId o DestinationKeyId. Sin embargo, los valores de esos parámetrosno se limitan a los ID de clave. Algunos pueden tomar cualquier identificador de clave válido. Para obtenerinformación sobre los valores de cada parámetro, consulte la descripción del parámetro en la AWS KeyManagement Service API Reference.

Note

Cuando utilice la API de AWS KMS, preste especial atención al identificador de clave que utilice.Las diferentes API requieren identificadores de clave distintos. En general, utilice el identificadorde clave más completo que sea práctico para su tarea.

12

Page 21: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresIdentificadores de clave (KeyId)

AWS KMS admite los siguientes identificadores de clave.

ARN de clave

El ARN de clave es el nombre de recurso de Amazon (ARN) de una CMK. Es un identificador únicoy completo para la CMK. Un ARN de clave incluye la cuenta de AWS, la región y el ID de clave. Paraobtener ayuda para encontrar el ARN de clave de una CMK, consulte the section called “Encontrar elID y el ARN de la clave” (p. 39).

El formato de un ARN de clave es el siguiente:

arn:aws:kms:<region>:<account-id>:key/<key-id>

A continuación, se muestra un ARN de clave de ejemplo.

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

ID de clave

El ID de clave identifica de forma inequívoca una CMK dentro de una cuenta y región. Para obtenerayuda para encontrar el ID de clave de una CMK, consulte the section called “Encontrar el ID y el ARNde la clave” (p. 39).

A continuación, se muestra un ID de clave de ejemplo.

1234abcd-12ab-34cd-56ef-1234567890ab

ARN de alias

El ARN de alias es el nombre de recurso de Amazon (ARN) de un alias de AWS KMS. Es unidentificador único y completo para el alias, y para la CMK que representa. Un ARN de alias incluye lacuenta de AWS, la región y el nombre del alias.

En cualquier momento dado, un ARN de alias identifica una CMK en particular. Sin embargo, dadoque puede cambiar la CMK asociada con el alias, el ARN de alias puede identificar diferentes CMK endiferentes momentos.

El formato de un ARN de alias es el siguiente:

arn:aws:kms:<region>:<account-id>:alias/<alias-name>

A continuación, se muestra el ARN de alias de un ExampleAlias ficticio.

arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias

Nombre del alias

El nombre de alias identifica de forma inequívoca una CMK asociada dentro de una cuenta y región.En la API de AWS KMS, los nombres de alias siempre comienzan por alias.

El formato de un nombre de alias es el siguiente:

alias/<alias-name>

Por ejemplo:

13

Page 22: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresOrigen del material de claves

alias/ExampleAlias

El prefijo aws/ de un nombre de alias está reservado para las CMK administradas por AWS (p. 4).No se puede crear un alias con este prefijo. Por ejemplo, el nombre de alias de la CMK administradapor AWS para Amazon Simple Storage Service (Amazon S3) es el siguiente.

alias/aws/s3

Origen del material de clavesEl origen del material de claves es una propiedad de la CMK que identifica el origen del material de clavesen la CMK. El origen del material de claves se selecciona al crear la CMK y no se puede cambiar. Parabuscar el origen del material de claves de una CMK, utilice la operación DescribeKey o consulte el valorde Origin (Origen) de la sección Cryptographic configuration (Configuración criptográfica) de la páginade detalles de una CMK en la consola de AWS KMS. Para obtener ayuda, consulte Visualización declaves (p. 28).

Las CMK pueden tener uno de los siguientes valores de origen de material de claves.

KMS (predeterminado)

Valor de la API: AWS_KMS

AWS KMS crea y administra el material de claves de la CMK en su propio almacén de claves. Este esel valor predeterminado y el valor recomendado para la mayoría de las CMK.

Para obtener ayuda para crear claves con material de claves de AWS KMS, consulte Crearclaves (p. 22).

Externo

Valor de la API: EXTERNAL

La CMK tiene material de claves importado (p. 162). Cuando se crea una CMK con un origen dematerial de claves External, la CMK no tiene material de claves. Más adelante, puede importarmaterial de claves en la CMK. Cuando utilice material de claves importado, debe proteger yadministrar ese material de claves fuera de AWS KMS, incluido reemplazar el material de claves sicaduca. Para obtener más información, consulte Acerca de material de claves importado (p. 162).

Para obtener ayuda con la creación de una CMK para material de claves importado, consulte Paso 1:Crear una CMK sin material de claves (p. 165).

Almacén de claves personalizado (CloudHSM)

Valor de la API: AWS_CLOUDHSM

AWS KMS creó el material de claves para la CMK en su almacén de claves personalizado (p. 189).

Para obtener ayuda con la creación de una CMK en un almacén de claves personalizado, consulteCrear CMK en un almacén de claves personalizado (p. 211)

Especificación de claveLa especificación de clave es una propiedad que representa la configuración criptográfica de la CMK. Laespecificación de clave determina si la CMK es simétrica o asimétrica, el tipo de material de la clave en laCMK y los algoritmos de cifrado o firma que puede utilizar con la CMK.

14

Page 23: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUso de claves

Normalmente, la especificación de clave que seleccione para su CMK se basa en su caso de uso yrequisitos reglamentarios. Se selecciona la especificación de clave al crear la CMK (p. 22) y no sepuede cambiar. Si ha elegido la especificación de clave incorrecta, elimine el CMK (p. 176) y cree unanueva.

Para obtener una lista de especificaciones de clave y ayuda para elegir una especificación de clave,consulte Seleccionar la especificación de clave (p. 147). Para buscar la especificación de clave de unaCMK, utilice la operación DescribeKey o consulte la sección Cryptographic configuration (Configuracióncriptográfica) de la página de detalles de una CMK en la consola de AWS KMS. Para obtener ayuda,consulte Visualización de claves (p. 28).

Note

En las operaciones de API de AWS KMS, la especificación de la clave de las CMK se denominaCustomerMasterKeySpec. Esto la distingue de la especificación de las claves de datos(KeySpec), de la especificación de los pares de claves de datos (KeyPairSpec) y de laespecificación de claves que se utiliza cuando se encapsula material de claves para suimportación (WrappingKeySpec). Cada tipo de especificación de claves tiene valores diferentes.

Para limitar las especificaciones de clave que pueden utilizar las entidades principales al crear CMK,utilice la clave de condición kms:CustomerMasterKeySpec (p. 102). También puede utilizar la clavede condición kms:CustomerMasterKeySpec para permitir que las entidades principales llamen a lasoperaciones de AWS KMS para una CMK basada en su especificación de clave. Por ejemplo, puededenegar permiso para programar la eliminación de CMK con una especificación de clave RSA_4096.

Uso de clavesEl uso de la clave es una propiedad de la CMK que determina si una CMK se utiliza para el cifrado y eldescifrado o para la firma y la verificación. No se pueden elegir ambas opciones. El uso de una CMK paramás de un tipo de operaciones hace que el producto de ambas operaciones sea más vulnerable a ataques.

El uso de claves para CMK simétricas siempre es para el cifrado y el descifrado. El uso claves para CMKde curva elíptica (ECC) es siempre para la firma y verificación. Solo tiene que seleccionar un uso de clavespara las CMK RSA. Se selecciona el uso de la clave al crear la CMK (p. 22) y no se puede cambiar. Siha elegido el uso de claves incorrecta, elimine el CMK (p. 176) y cree una nueva.

Para seleccionar el uso de claves, consulte Seleccionar el uso de la clave (p. 146). Para buscar el usode claves de una CMK, utilice la operación DescribeKey o consulte la sección Cryptographic configuration(Configuración criptográfica) de la página de detalles de una CMK en la consola de AWS KMS. Paraobtener ayuda, consulte Visualización de claves (p. 28).

Para permitir que las entidades principales creen CMK solo para la firma y la verificación o solo para elcifrado y el descifrado, utilice la clave de condición kms:CustomerMasterKeyUsage (p. 103). Tambiénpuede utilizar la clave de condición kms:CustomerMasterKeyUsage para permitir que las entidadesprincipales llamen a las operaciones de la API para una CMK basada en su uso de claves. Por ejemplo,puede permitir un permiso que deshabilite una CMK solo si su uso de clave es SIGN_VERIFY.

Cifrado de sobreAl cifrar sus datos, los datos están protegidos, pero tiene que proteger su clave de cifrado. Una estrategiaconsiste en cifrarla. El cifrado de sobres es la práctica de cifrar los datos en texto no cifrado con una clavede datos y, a continuación, cifrar la clave de datos con otra clave.

Incluso puede cifrar la clave de cifrado de datos con otra clave de cifrado y cifrar dicha clave de cifrado conotra clave de cifrado. Sin embargo, finalmente, una clave debe permanecer en texto no cifrado para quepueda descifrar las claves y los datos. Esta clave de cifrado de clave de texto no cifrado de nivel superiorse conoce como clave maestra.

15

Page 24: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado

AWS KMS le ayuda a proteger sus claves maestras almacenándolas y administrándolas de forma segura.Las claves maestras almacenadas en AWS KMS, conocidas como claves maestras de cliente (p. 3)(CMK), nunca salen de los módulos de seguridad de hardware validados por FIPS de AWS KMS sin cifrar.Para utilizar una CMK de AWS KMS, debe llamar a AWS KMS.

El cifrado de sobre ofrece varios beneficios:

• Protección de las claves de datos

Al cifrar una clave de datos, no tiene que preocuparse del almacenamiento la clave de datos cifrada,porque la clave de datos está intrínsecamente protegida por el cifrado. Puede almacenar de formasegura la clave de datos cifrada junto con los datos cifrados.

• Cifrado de los mismos datos en varias claves maestras

Las operaciones de cifrado pueden tardar mucho tiempo, en concreto cuando los datos que se cifran sonobjetos grandes. En vez de volver a cifrar los datos sin procesar varias veces con claves distintas, puedevolver a cifrar solo las claves de datos que protegen los datos sin procesar.

• Combinación de los puntos fuertes de varios algoritmos

En general, los algoritmos de clave simétrica son más rápidos y producen textos cifrados más pequeñosque los algoritmos de clave pública. Sin embargo, los algoritmos de clave pública proporcionan unaseparación inherente entre las funciones y facilitan la administración de las claves. El cifrado de sobre lepermite combinar los puntos fuertes de cada estrategia.

Contexto de cifradoTodas las operaciones criptográficas (p. 11) de AWS KMS con CMK simétricas aceptan un contexto decifrado, un conjunto de claves opcional: pares de clave valor que pueden contener información contextualadicional sobre los datos. AWS KMS utiliza el contexto de cifrado como datos autenticados adicionales(AAD) para admitir el cifrado autenticado.

16

Page 25: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado

No puede especificar un contexto de cifrado en una operación criptográfica con una CMKasimétrica (p. 144). Los algoritmos de cifrado asimétrico estándar que AWS KMS utiliza no admiten loscontextos de cifrado.

Cuando incluye un contexto de cifrado en una solicitud de cifrado, este se vincula criptográficamente altexto cifrado de forma que sea necesario utilizar el mismo contexto de cifrado para descifrar (o descifrary volver a cifrar) los datos. Si el contexto de cifrado proporcionado en la solicitud de descifrado no es unacoincidencia exacta, incluido el uso de mayúsculas y minúsculas, la solicitud de descifrado producirá unerror. Solo puede variar el orden de los pares clave-valor en el contexto de cifrado.

El contexto de cifrado no es secreto. Aparece en texto no cifrado en los registros de AWSCloudTrail (p. 318) para que pueda utilizarlo para identificar y clasificar las operaciones criptográficas.

Un contexto de cifrado puede contener cualquier clave y cualquier valor. Sin embargo, como no es secretoy no está cifrado, el contexto de cifrado no debe incluir información confidencial. Le recomendamos que elcontexto de cifrado describa los datos que se van a cifrar o descifrar. Por ejemplo, cuando cifre un archivo,puede usar parte de la ruta del archivo como contexto de cifrado.

La clave y el valor de un par de contexto de cifrado deben ser cadenas literales simples. No pueden sernúmeros enteros ni objetos, ni ningún tipo que no esté totalmente resuelto. Si utiliza un tipo diferente, comoun número entero o flotante, AWS KMS lo interpretará como una cadena.

"encryptionContext": { "department": "10103.0"}

La clave y el valor de contexto de cifrado pueden incluir caracteres especiales, como guiones bajos (_),guiones (-), barras diagonales (/, \) y dos puntos (:).

Por ejemplo, Amazon Simple Storage Service (p. 290) (Amazon S3) utiliza un contexto de cifrado en elque la clave es aws:s3:arn. El valor es la ruta del bucket de S3 que lleva al archivo que se está cifrando.

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::bucket_name/file_name"}

También se puede utilizar el contexto de cifrado para ajustar o limitar el acceso a las claves maestrasde cliente (CMK) de su cuenta. Puede utilizar el contexto de cifrado como una restricción enconcesiones (p. 127) y como una condición en instrucciones de política (p. 97).

Para obtener información sobre cómo usar el contexto para proteger la integridad de los datos cifrados,consulte la publicación How to Protect the Integrity of Your Encrypted Data by Using AWS KeyManagement Service and EncryptionContext en el blog de seguridad de AWS.

Más información sobre el contexto de cifrado.

Contexto de cifrado de las políticasEl contexto de cifrado se utiliza principalmente para verificar la integridad y la autenticidad. Sin embargo,también puede utilizar el contexto de cifrado para controlar el acceso a las claves maestras de cliente(CMK) simétricas en las políticas de claves y las políticas de IAM.

Las claves de condición kms:EncryptionContext: (p. 107) y kms:EncryptionContextKeys (p. 107)solamente conceden (o deniegan) un permiso cuando la solicitud contiene determinadas claves decontexto de cifrado o determinados pares de clave–valor.

Por ejemplo, la siguiente declaración de política de claves permite al rol RoleForExampleApp utilizar laCMK en operaciones Decrypt. Utiliza la clave de condición kms:EncryptionContext: para concedereste permiso solo cuando el contexto de cifrado de la solicitud incluye un par de contexto de cifradoAppName:ExampleApp.

17

Page 26: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } }}

Para obtener más información sobre estas claves de condición de contexto de cifrado, consulte Usarcondiciones de política con AWS KMS (p. 97).

Contexto de cifrado de las concesiones

Al crear una concesión (p. 127), puede incluir restricciones de concesión que permitan el accesosolo cuando una solicitud incluya un determinado contexto de cifrado o claves de contexto de cifrado.Para obtener más información sobre las restricciones de concesiones EncryptionContextSubset yEncryptionContextEquals, consulte Restricciones de concesiones (p. 129).

Para especificar una restricción de contexto de cifrado en una concesión de una CMK simétrica, utiliceel parámetro Constraints en la operación CreateGrant. En este ejemplo, se utiliza la AWS CommandLine Interface, pero puede utilizar cualquier SDK de AWS. La concesión que este comando crea concedeel permiso exampleUser para llamar a la operación Decrypt. Sin embargo, ese permiso solo esefectivo cuando el contexto de cifrado de la solicitud Decrypt contiene un par de contexto de cifrado"Department": "IT".

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

La concesión resultante se parece a la siguiente. Tenga en cuenta que el permiso concedido aexampleUser solo es efectivo cuando la solicitud Decrypt incluye el par de contexto de cifradoespecificado en la restricción de concesiones. Para buscar las concesiones de una CMK, utilice laoperación ListGrants.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

{ "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "8c94d1f12f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } },

18

Page 27: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado

"CreationDate": 1568565290.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole" } ]}

Los servicios de AWS suelen utilizar restricciones de contexto de cifrado en las concesiones que lesdan permiso para utilizar CMK en la cuenta de AWS. Por ejemplo, Amazon DynamoDB utiliza unaconcesión como la siguiente para obtener permiso para utilizar la CMK administrada por AWS (p. 4)de DynamoDB en la cuenta. La restricción EncryptionContextSubset de esta concesión hace que lospermisos de la concesión solo sean efectivos cuando el contexto de cifrado de la solicitud contiene pares"tableName": "Services" y "subscriberID": "111122223333". Esta restricción de concesiónsignifica que la concesión permite a DynamoDB utilizar la CMK especificada solo en una determinada tablade la cuenta de AWS.

Para obtener esta salida, ejecute la operación ListGrants en la CMK administrada por AWS de DynamoDBen la cuenta.

$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321

{ "Grants": [ { "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "IssuingAccount": "arn:aws:iam::111122223333:root", "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" } }, "CreationDate": 1518567315.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59" } ]}

Registrar el contexto de cifradoAWS KMS usa AWS CloudTrail para registrar el contexto de cifrado de modo que pueda determinar a quéCMK y datos se ha tenido acceso. La entrada de registro muestra exactamente qué CMK se ha usado paracifrar o descifrar los datos específicos a los que hace referencia el contexto de cifrado en la entrada deregistro.

Important

Como el contexto de cifrado se ha registrado, no debe contener información confidencial.

19

Page 28: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolíticas de claves

Almacenar el contexto de cifradoPara simplificar el uso de cualquier contexto de cifrado al llamar a las operaciones Decrypt oReEncrypt, puede almacenar el contexto de cifrado junto con los datos cifrados. Es recomendable quealmacene solo la parte suficiente del contexto de cifrado para crear todo el contexto cuando sea necesariopara el cifrado o el descifrado.

Por ejemplo, si el contexto de cifrado es la ruta completa a un archivo, almacene solo parte de esa ruta conel contenido del archivo cifrado. A continuación, cuando necesite todo el contexto de cifrado, reconstrúyaloa partir del fragmento almacenado. Si alguien intenta manipular el archivo (por ejemplo, cambiarlo denombre o moverlo a otra ubicación), el valor de contexto de cifrado cambia y la solicitud de descifradoproduce un error.

Políticas de clavesAl crear una CMK, determine quién puede usar y administrar dicha CMK. Estos permisos se encuentran enun documento denominado la política de claves. Puede utilizar la política de claves para añadir, eliminar ocambiar permisos en una CMK administrada por el cliente en cualquier momento. Sin embargo, no puedemodificar la política de claves de una CMK administrada por AWS. Para obtener más información, consulteAutenticación y control de acceso de AWS KMS (p. 53).

ConcesionesUna concesión es otro mecanismo para proporcionar permisos. Es una alternativa a las políticas de claves.Como las concesiones pueden ser muy específicas y son fáciles de crear y revocar, suelen utilizarse paraproporcionar permisos temporales o permisos más detallados.

Tokens de concesiónAl crear una concesión, los permisos especificados en ella no surtirán efecto inmediatamente debidoa la consistencia final. Si necesita mitigar el retraso potencial, use el token de concesión que reciba enla respuesta a su solicitud CreateGrant. Puede pasar el token de concesión con algunas solicitudes deAPI de AWS KMS para que los permisos de la concesión surtan efecto inmediatamente. Las siguientesoperaciones de la API de AWS KMS aceptan tokens de concesión:

• CreateGrant• Decrypt• DescribeKey• Encrypt• GenerateDataKey• GenerateDataKeyWithoutPlaintext• ReEncrypt• RetireGrant

Un token de concesión no es un secreto. El token de concesión contiene información sobre el destinatariode la concesión y, por lo tanto, quién puede usarla para que los permisos de la concesión surtan efectomás rápidamente.

Auditar el uso de la CMKPuede utilizar AWS CloudTrail para auditar el uso de las claves. CloudTrail crea archivos de registro quecontienen un historial de las llamadas a la API de AWS y de los eventos relacionados de su cuenta. Estosarchivos de registro contienen todas las solicitudes de AWS KMS de la API realizadas con la consola

20

Page 29: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresInfraestructura de administración de claves

de administración de AWS, los SDK de AWS y las herramientas de línea de comandos. Los archivos deregistro también contienen las solicitudes dirigidas a AWS KMS que los servicios de AWS realizan en sunombre. Puede utilizar estos archivos de registro para buscar información importante, como cuándo seutilizó la CMK, la operación solicitada, la identidad del solicitante y la dirección IP de origen. Para obtenermás información, consulte Registrar llamadas a la API de AWS KMS con AWS CloudTrail (p. 318) y laAWS CloudTrail User Guide.

Infraestructura de administración de clavesUna práctica habitual en criptografía es cifrar y descifrar con un algoritmo público y revisado porhomólogos, como AES (Advanced Encryption Standard), y una clave secreta. Uno de los principalesproblemas con la criptografía es que es muy difícil mantener una clave secreta. Este suele ser el trabajode una infraestructura de administración de claves (KMI). AWS KMS opera la KMI automáticamente.AWS KMS crea y almacena de forma segura las claves maestras, denominadas CMK. Para obtener másinformación sobre cómo opera AWS KMS, consulte el documento técnico Detalles criptográficos de AWSKey Management Service.

21

Page 30: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear claves

IntroducciónPuede utilizar la Consola de administración de AWS y las operaciones de API de AWS KMS para crear,ver, editar, etiquetar, habilitar y deshabilitar temas.

Temas• Crear claves (p. 22)• Consultar claves (p. 28)• Editar claves (p. 43)• Etiquetar claves (p. 47)• Habilitar y deshabilitar claves (p. 49)• Descargar claves públicas (p. 50)

Crear clavesPuede crear una claves maestras de cliente simétricas o asimétricas (p. 143) (CMK) en la Consolade administración de AWS o utilizar la operación CreateKey. Durante este proceso, usted determinala configuración criptográfica de su CMK y el origen de su material de clave. No puede cambiar estaspropiedades después de que se cree la CMK. También establece la política de claves para la CMK, quepuede cambiar en cualquier momento.

Si crea una CMK para cifrar los datos que almacena o administra en un servicio de AWS, cree una CMKsimétrica. Los servicios de AWS que se integran con AWS KMS utilizan CMK simétricas para cifrar susdatos. Estos servicios no admiten cifrado con CMK asimétricas. Para obtener ayuda para decidir qué tipode CMK crear, consulte Cómo elegir la configuración de la CMK (p. 145).

Más información:

• Para obtener ayuda con la creación de una CMK con material de claves importado (el valor de keymaterial origin (origen de material de claves) (p. 14) es External), consulte Crear una clave maestra delcliente sin material de claves (p. 165).

• Para obtener ayuda con la creación de una CMK en un almacén de claves personalizado (el valor dekey material origin (origen del material de claves) (p. 14) es Custom Key Store (CloudHSM)), consulteCreación de CMK en un almacén de claves personalizado (p. 211).

• Para obtener ayuda para determinar si una CMK existente es simétrica o asimétrica, consulte IdentificarCMK simétricas y asimétricas (p. 40).

• Para usar la CMK mediante programación y en las operaciones de la interfaz de línea de comandos,necesita un ID de clave o un ARN de clave. Para obtener instrucciones detalladas, consulte Encontrar elID y el ARN de la clave (p. 39).

Temas• Crear CMK simétricas (p. 22)• Crear CMK asimétricas (p. 25)

Crear CMK simétricasCuando crea CMK simétricas (p. 144) en la Consola de administración de AWS o mediante la API deAWS KMS. El cifrado de clave simétrica utiliza la misma clave para cifrar y descifrar datos.

22

Page 31: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK simétricas

Crear CMK simétricas (console)

Puede utilizar la Consola de administración de AWS para crear claves maestras del cliente (CMK).

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Elija Create key.5. Para crear una CMK simétrica, para Key type (Tipo de clave) seleccione Symmetric (Simétrica).

Para obtener información acerca de cómo crear una CMK asimétrica en la consola de AWS KMS,consulte Crear CMK asimétricas (console) (p. 25).

6. Seleccione Next (Siguiente).7. Escriba un alias para la CMK. El nombre del alias no puede empezar por aws/. El prefijo aws/ está

reservado para Amazon Web Services y representa las CMK administradas por AWS de su cuenta.

Un alias es un nombre de visualización que puede usar para identificar a una CMK. Le recomendamosque elija un alias que indique el tipo de datos que piensa proteger o la aplicación que piensa usar conla CMK.

Los alias son necesarios para crear una CMK en la Consola de administración de AWS. Se empleanen la operación CreateKey.

8. (Opcional) Escriba una descripción para la CMK.

Escriba una descripción que explique el tipo de datos que piensa proteger o la aplicación que piensausar con la CMK. No utilice el formato de descripción que se usa para las CMK administradas porAWS (p. 4). El formato de descripción Clave maestra predeterminada que protege ... cuando no sedefine ninguna otra clave se reserva para las CMK administradas por AWS.

Puede añadir una descripción ahora o actualizarla en cualquier momento, a menos que el estado de laclave (p. 245) sea Pending Deletion. Para añadir, cambiar o eliminar la descripción de una CMKadministrada por el cliente existente, edite la CMK (p. 43) en la Consola de administración de AWSo utilice la operación UpdateKeyDescription.

9. Seleccione Siguiente.10. (Opcional) Escriba una clave de etiqueta y un valor de etiqueta opcional. Para agregar más de una

etiqueta a la CMK, elija Add tag.

Cuando se agregan etiquetas a los recursos de AWS, AWS genera un informe de asignación decostos con el uso y los costos agregados por etiquetas. Para obtener más información acerca deletiquetado de CMK, consulte Etiquetar claves (p. 47).

11. Seleccione Next (Siguiente).12. Seleccione los usuarios y roles de IAM que pueden administrar la CMK.

Note

Las políticas de IAM pueden otorgar permisos para administrar la CMK a otros usuarios yroles de IAM.

13. (Opcional) Para evitar que los usuarios y los roles de IAM seleccionados eliminen esta CMK, desactivela casilla de verificación Allow key administrators to delete this key (Permitir que los administradoresde claves eliminen esta clave) situada en la parte inferior de la página de la sección Key deletion(Eliminación de claves).

14. Seleccione Next (Siguiente).15. Seleccione los usuarios y roles de IAM que pueden usar la CMK en operaciones criptográficas (p. 11).

23

Page 32: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK simétricas

Note

La cuenta de AWS (usuario raíz) tiene permisos completos de forma predeterminada. Enconsecuencia, las políticas de IAM también pueden conceder permisos a los usuarios y rolespara usar la CMK en operaciones criptográficas.

16. (Opcional) Puede permitir que otras cuentas de AWS usen esta CMK en operaciones criptográficas.Para ello, en la parte inferior de la página de la sección Other AWS accounts (Otras cuentas de AWS)elija Add another AWS account (Añadir otra cuenta de AWS) y especifique el número de identificaciónde la cuenta de AWS de una cuenta externa. Para añadir varias cuentas externas, repita este paso.

Note

Para permitir que las entidades principales de las cuentas externas usen la CMK, losadministradores de la cuenta externa también deben crear las políticas de IAM queproporcionan estos permisos. Para obtener más información, consulte Permitir a los usuariosde otras cuentas utilizar una CMK (p. 81).

17. Seleccione Next (Siguiente).18. Revise el documento de políticas de claves creado a partir de las opciones elegidas. También lo

puede editar.19. Elija Finish para crear la CMK.

Crear CMK simétricas (AWS KMS API)

Puede utilizar la operación CreateKey para crear una nueva clave maestra de cliente (CMK) simétrica. Enestos ejemplos, se utiliza la AWS Command Line Interface (AWS CLI), pero puede usar cualquier lenguajede programación admitido.

Esta operación no tiene parámetros obligatorios. Sin embargo, es posible que también desee utilizarel parámetro Policy para especificar una política de claves. Puede cambiar la política de claves(PutKeyPolicy) y añadir elementos opcionales como, por ejemplo, una descripción y etiquetas en cualquiermomento. Además, si está crea una CMK para el material de claves importado (p. 162) o una CMK en unalmacén de claves personalizado (p. 189), el parámetro Origin es obligatorio.

A continuación se muestra un ejemplo de una llamada a la operación CreateKey sin parámetros. Estecomando utiliza todos los valores predeterminados. Crea una CMK simétrica para cifrar y descifrar conmaterial de claves generado por AWS KMS.

$ aws kms create-key{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1502910355.475, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

24

Page 33: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK asimétricas

Si no especifica una política de claves para su nueva CMK, la política de claves predeterminada (p. 58)que aplica CreateKey es diferente de la política de claves predeterminada que aplica la consola cuandose utiliza para crear una nueva CMK.

Por ejemplo, esta llamada a la operación GetKeyPolicy devuelve la política de claves que aplicaCreateKey. Ofrece a la cuenta de AWS acceso a la CMK y le permite crear políticas de AWS Identity andAccess Management (IAM) para la CMK. Para obtener información detallada sobre las políticas de IAM ylas políticas de claves para las CMK, consulte Autenticación y control de acceso de AWS KMS (p. 53)

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ]}

Crear CMK asimétricasPuede crear CMK asimétricas (p. 144) en la Consola de administración de AWS o utilizando la API deAWS KMS. Una CMK asimétrica representa un par de claves pública y privada que se puede utilizar parael cifrado o la firma.

Si va a crear una CMK para cifrar los datos que almacena o administra en un servicio de AWS, utiliceuna CMK simétrica. Los servicios de AWS que se integran con AWS KMS no admiten CMK asimétricas.Para obtener ayuda para decidir si crear una CMK simétrica o asimétrica, consulte Cómo seleccionar laconfiguración de su CMK (p. 145).

Crear CMK asimétricas (console)

Puede utilizar la Consola de administración de AWS para crear claves maestras del cliente (CMK)asimétricas. Cada CMK asimétrica representa un par de claves públicas y privadas.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Elija Create key.5. Para crear una CMK asimétrica, en Tipo de clave, seleccione Asymmetric (Asimétrico).

Para obtener información acerca de cómo crear una CMK simétrica en la consola de AWS KMS,consulte Crear CMK simétricas (console) (p. 23).

6. Para crear una CMK asimétrica para el cifrado de claves públicas, en Uso de claves, elija Encrypt anddecrypt (Cifrar y descifrar). O bien, para crear una CMK asimétrica para firmar mensajes y verificarfirmas, en Uso de claves, elija Sign and verify (Firmar y verificar).

Para obtener ayuda sobre cómo elegir un valor de uso de clave, consulte Seleccionar el uso de laclave (p. 146).

25

Page 34: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK asimétricas

7. Seleccione una especificación (Key spec [Especificación de clave]) para su CMK asimétrica.

A menudo, la especificación de clave que seleccione está determinada por requisitos normativos, deseguridad o empresariales. También puede estar influenciado por el tamaño de los mensajes quenecesita cifrar o firmar. En general, las claves de cifrado más largas son más resistentes a los ataquesde fuerza bruta.

Para obtener ayuda para elegir una especificación de clave, consulte Seleccionar la especificación declave (p. 147).

8. Seleccione Next (Siguiente).9. Escriba un alias para la CMK. El nombre del alias no puede empezar por aws/. El prefijo aws/ está

reservado para Amazon Web Services y representa las CMK administradas por AWS de su cuenta.

Un alias es un nombre de visualización que puede usar para identificar a una CMK. Le recomendamosque elija un alias que indique el tipo de datos que piensa proteger o la aplicación que piensa usar conla CMK.

Los alias son necesarios para crear una CMK en la Consola de administración de AWS. Se empleanen la operación CreateKey.

10. (Opcional) Escriba una descripción para la CMK.

Escriba una descripción que explique el tipo de datos que piensa proteger o la aplicación que piensausar con la CMK. No utilice el formato de descripción que se usa para las CMK administradas porAWS (p. 4). El formato de descripción Clave maestra predeterminada que protege ... cuando no sedefine ninguna otra clave se reserva para las CMK administradas por AWS.

Puede añadir una descripción ahora o actualizarla en cualquier momento, a menos que el estado de laclave (p. 245) sea Pending Deletion. Para añadir, cambiar o eliminar la descripción de una CMKadministrada por el cliente existente, edite la CMK (p. 43) en la Consola de administración de AWSo utilice la operación UpdateKeyDescription.

11. (Opcional) Escriba una clave de etiqueta y un valor de etiqueta opcional. Para agregar más de unaetiqueta a la CMK, elija Add tag.

Cuando se agregan etiquetas a los recursos de AWS, AWS genera un informe de asignación decostos con el uso y los costos agregados por etiquetas. Para obtener más información acerca deletiquetado de CMK, consulte Etiquetar claves (p. 47).

12. Seleccione Next (Siguiente).13. Seleccione los usuarios y roles de IAM que pueden administrar la CMK.

Note

Las políticas de IAM pueden otorgar permisos para administrar la CMK a otros usuarios yroles de IAM.

14. (Opcional) Para evitar que los usuarios y los roles de IAM seleccionados eliminen esta CMK, desactivela casilla de verificación Allow key administrators to delete this key (Permitir que los administradoresde claves eliminen esta clave) situada en la parte inferior de la página de la sección Key deletion(Eliminación de claves).

15. Seleccione Next (Siguiente).16. Seleccione los usuarios y roles de IAM que pueden usar la CMK en operaciones criptográficas (p. 11).

Note

La cuenta de AWS (usuario raíz) tiene permisos completos de forma predeterminada. Enconsecuencia, las políticas de IAM también pueden conceder permisos a los usuarios y rolespara usar la CMK en operaciones criptográficas.

17. (Opcional) Puede permitir que otras cuentas de AWS usen esta CMK en operaciones criptográficas.Para ello, en la parte inferior de la página de la sección Other AWS accounts (Otras cuentas de AWS)

26

Page 35: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK asimétricas

elija Add another AWS account (Añadir otra cuenta de AWS) y especifique el número de identificaciónde la cuenta de AWS de una cuenta externa. Para añadir varias cuentas externas, repita este paso.

Note

Para permitir que las entidades principales de las cuentas externas usen la CMK, losadministradores de la cuenta externa también deben crear las políticas de IAM queproporcionan estos permisos. Para obtener más información, consulte Permitir a los usuariosde otras cuentas utilizar una CMK (p. 81).

18. Seleccione Next (Siguiente).19. Revise el documento de políticas de claves creado a partir de las opciones elegidas. También lo

puede editar.20. Elija Finish para crear la CMK.

Crear CMK asimétricas (AWS KMS API)

Puede utilizar la operación CreateKey para crear una clave maestra de cliente (CMK) simétrica. En estosejemplos, se utiliza la AWS Command Line Interface (AWS CLI), pero puede usar cualquier lenguaje deprogramación admitido.

Al crear una CMK asimétrica, debe especificar el parámetro CustomerMasterKeySpec, que determinael tipo de claves que cree. Además, debe especificar un valor KeyUsage de ENCRYPT_DECRYPT oSIGN_VERIFY. No puede cambiar estas propiedades después de que se cree la CMK.

En el ejemplo siguiente se utiliza la operación CreateKey para crear una CMK asimétrica de claves RSAde 4096 bits diseñadas para el cifrado de claves públicas.

$ aws kms create-key --customer-master-key-spec RSA_4096 --key-usage ENCRYPT_DECRYPT{ "KeyMetadata": { "KeyState": "Enabled", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "CustomerMasterKeySpec": "RSA_4096", "KeyManager": "CUSTOMER", "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1569973196.214, "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ], "AWSAccountId": "111122223333", "Origin": "AWS_KMS", "Enabled": true }}

El comando de ejemplo siguiente crea una CMK asimétrica que representa un par de claves ECDSAutilizadas para la firma y verificación. No se puede crear un par de claves de curva elíptica para el cifrado yel descifrado.

$ aws kms create-key --customer-master-key-spec ECC_NIST_P521 --key-usage SIGN_VERIFY{ "KeyMetadata": { "KeyState": "Enabled", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321",

27

Page 36: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar claves

"CreationDate": 1570824817.837, "Origin": "AWS_KMS", "SigningAlgorithms": [ "ECDSA_SHA_512" ], "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "AWSAccountId": "111122223333", "CustomerMasterKeySpec": "ECC_NIST_P521", "KeyManager": "CUSTOMER", "Description": "", "Enabled": true, "KeyUsage": "SIGN_VERIFY" }}

Consultar clavesPuede utilizar la Consola de administración de AWS o la API de AWS Key Management Service (AWSKMS) para ver las claves maestras de cliente (CMK), incluidas las CMK que administra usted y las queadministra AWS.

Temas• Consultar las CMK en la consola (p. 28)• Ver las CMK con la API (p. 35)• Encontrar el ID y el ARN de la clave (p. 39)• Identificar CMK simétricas y asimétricas (p. 40)

Consultar las CMK en la consolaEn la Consola de administración de AWS, puede ver listas de las CMK y detalles acerca de cada CMK.

Temas• Navegar hasta las tablas de claves (p. 28)• Clasificar y filtrar las CMK (p. 29)• Visualizar los detalles de la CMK (p. 31)• Personalizar las tablas de CMK (p. 34)

Navegar hasta las tablas de clavesLas claves maestras de cliente (CMK) de AWS KMS de cada cuenta y región se muestran en tablas.Existen tablas independientes para las CMK que usted crea y las CMK que los servicios de AWS creanpara usted.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. Si desea ver las claves de su cuenta que usted crea y administra, en el panel de navegación, elijaCustomer managed keys (Claves administradas por el cliente). Si desea ver las claves de su cuentaque AWS crea y administra por usted, en el panel de navegación, elija AWS managed keys (Claves

28

Page 37: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar las CMK en la consola

administradas por AWS). Para obtener información acerca de los diferentes tipos de CMK, consulteClaves maestras de cliente (p. 3).

Tip

Para ver las CMK administradas por AWS (p. 4) a las que les falta un alias, utilice la páginaCustomer managed keys (Claves administradas por el cliente).La consola de AWS KMS también muestra los almacenes de claves personalizadas de lacuenta y la región. Las CMK que crea en los almacenes de claves personalizadas aparecenen la página Customer managed keys (Claves administradas por el cliente). Para obtenerinformación acerca de los almacenes de claves personalizadas, consulte Usar un almacén declaves personalizado (p. 189).

Clasificar y filtrar las CMKPara facilitar la búsqueda de las CMK en la consola, puede ordenarlas y filtrarlas.

Note

La columna Key type (Tipo de clave) se muestra de forma opcional (p. 34) y solo estádisponible en las regiones de AWS donde AWS KMS admite las CMK asimétricas.

Sort

Puede ordenar las CMK administradas por el cliente en orden ascendente o descendente por susvalores de columna. Esta función ordena todas las CMK de la tabla, aunque no aparezcan en lapágina de la tabla actual.

Las columnas que se pueden ordenar aparecen indicadas con una flecha que aparece junto al nombrede la columna. En la página AWS managed keys (Claves administradas por AWS), puede ordenarpor Alias o Key ID (ID de clave). En la página Customer managed keys (Claves administradas por elcliente), puede ordenar por Alias, Key ID (ID de clave) o Key type (Tipo de clave).

Para ordenar en orden ascendente, seleccione el encabezado de la columna hasta que la flechaapunte hacia arriba. Para ordenar en orden descendente, seleccione el encabezado de la columnahasta que la flecha apunte hacia abajo. Puede ordenar solo por una columna cada vez.

Por ejemplo, puede ordenar las CMK en orden ascendente por ID de clave en lugar de por alias, quees el valor predeterminado.

Cuando ordena las CMK en la página Customer master keys (Claves maestras del cliente) en ordenascendente por Key type (Tipo de clave), todas las claves asimétricas se muestran antes que todaslas claves simétricas.

Filtro

Puede filtrar las CMK por sus valores de columna. El filtro se aplica a todas las CMK de la tabla,aunque no aparezcan en la página de la tabla actual. El filtro no distingue entre mayúsculas yminúsculas.

29

Page 38: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar las CMK en la consola

Las columnas que se pueden filtrar se enumeran en el cuadro de filtro. En la página AWS managedkeys (Claves administradas por AWS), puede filtrar por Alias y Key ID (ID de clave). En la páginaCustomer managed keys (Claves administradas por el cliente), puede filtrar por Alias, Key ID (ID declave) y Key type (Tipo de clave).

Para filtrar por el valor de una columna específica, seleccione el filtro, seleccione el nombre decolumna y, a continuación, selecciónelo de la lista de valores de columna reales. Después deseleccionar una columna, también puede introducir una parte o el valor de la columna completo. Veráuna vista previa de los resultados antes de tomar su decisión.

Por ejemplo, para mostrar las CMK con un nombre de alias que contenga aws/e, seleccione el cuadrode filtro, seleccione Alias, introduzca aws/e y, a continuación, pulse Enter o Return para añadir elfiltro.

Para mostrar solo las CMK asimétricas en la página Customer master keys (Claves maestras delcliente), haga clic en el cuadro de filtro, elija Key type (Tipo de clave) y, a continuación, elija Key type:Asymmetric (Tipo de clave: Asimétrica). La opción Asymmetric (Asimétrica) solo aparece cuando tieneCMK asimétricas en la tabla.

Para buscar texto en todas las columnas que se pueden filtrar, introduzca una parte o el valor de lacolumna completo en el cuadro de filtro. Verá una vista previa de los resultados antes de tomar sudecisión.

Por ejemplo, para mostrar las CMK que tengan test en cualquiera de los valores de columna,introduzca test en el cuadro de filtro. La vista previa muestra las CMK que seleccionará el filtro. Eneste caso, test solo aparece en la columna Alias.

30

Page 39: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar las CMK en la consola

Puede tener varios filtros al mismo tiempo. Cuando añade filtros adicionales, también puedeseleccionar un operador lógico.

Visualizar los detalles de la CMKLa página de detalles de cada CMK muestra las propiedades de la CMK. Difiere ligeramente de losdiferentes tipos de CMK.

Para mostrar información detallada acerca de una CMK:

1. Para mostrar la página de detalles de una CMK, en la página AWS managed keys (Clavesadministradas por AWS) o Customer managed keys (Claves administradas por el cliente), seleccioneel alias o el ID de clave de la CMK.

2. Para mostrar todos los detalles, amplíe las secciones General configuration (Configuración general)y Cryptographic configuration (Configuración criptográfica) de la página. Si la CMK se configura parael material de claves importado, la página también tiene una sección denominada Key materials(Materiales de claves) que puede ampliar.

31

Page 40: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar las CMK en la consola

La página de detalles de una CMK incluye una sección General Configuration (Configuración general)que muestra las propiedades básicas de la CMK, una sección Cryptographic Configuration (Configuracióncriptográfica) que muestra las propiedades criptográficas de la CMK y una visualización con pestañas queincluye la política de claves, las etiquetas, la rotación de claves (para CMK simétricas) y la clave pública(para CMK asimétricas).

En la siguiente lista se describen los campos de la visualización detallada. Algunos de estos campostambién están disponibles como columnas en la visualización de tabla.

Alias

Un nombre fácil de recordar para la CMK. El campo Alias de la consola solo registra un alias. Parabuscar todos los alias de la CMK, utilice la operación ListAliases.

ARN

El nombre de recurso de Amazon (ARN) de la CMK. Este valor únicamente identifica la CMK. Puedeutilizarlo para identificar la CMK en las operaciones de la API de AWS KMS.

Fecha de creación

La fecha y hora en la que se ha creado la CMK. Este valor se muestra en la hora local del dispositivo.La zona horaria no varía en función de la región.

A diferencia de Expiration (Vencimiento), la creación se refiere únicamente a la CMK, no a su materialde claves.

ID del clúster de CloudHSM

ID del clúster de AWS CloudHSM que contiene el material de claves de la CMK. Este campo apareceúnicamente cuando la CMK se crea en un almacén de claves personalizadas (p. 189) de AWS KMS.

Si hace clic en el ID del clúster de CloudHSM, se abre la página Clusters (Clústeres) de la consola deAWS CloudHSM.

32

Page 41: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar las CMK en la consola

ID del almacén de claves personalizadas

ID del almacén de claves personalizadas (p. 189) que contiene la CMK. Este campo apareceúnicamente cuando la CMK se crea en un almacén de claves personalizadas de AWS KMS.

Si hace clic en el ID el almacén de claves personalizadas, se abre la página Custom key stores(Almacenes de claves personalizadas) en la consola de AWS KMS.

Nombre del almacén de claves personalizadas

Nombre del almacén de claves personalizadas (p. 189) que contiene la CMK. Este campo apareceúnicamente cuando la CMK se crea en un almacén de claves personalizadas de AWS KMS.

Descripción

Una descripción breve y opcional de la CMK. Para añadir o actualizar la descripción de una CMKadministrada por el cliente, sobre General Configuration (Configuración general), seleccione Edit(Editar).

Algoritmos de cifrado

Enumera los algoritmos de cifrado que se pueden utilizar con la CMK en AWS KMS. Este campoaparece únicamente cuando el Key type (Tipo de clave) es Asymmetric (Asimétrico) y cuando elKey usage (Uso de la clave) es Encrypt and decrypt (Cifrar y descifrar). Para obtener informaciónacerca de los algoritmos de cifrado que admite AWS KMS, consulte Especificación de claveSYMMETRIC_DEFAULT (p. 148) y Especificaciones de clave de RSA para el cifrado y eldescifrado (p. 149).

Fecha de vencimiento

Fecha y hora en la que el material de claves de la CMK vence. Este campo aparece únicamente enlas CMK con material de claves importado (p. 162), es decir, cuando el Origin (Origen) es External(Externo) y la CMK contiene material de claves que vence.

Política de claves

Controla el acceso a la CMK junto con las políticas de IAM (p. 76) y las concesiones (p. 127).Cada CMK tiene una política de claves. Es el único elemento de autorización obligatorio. Para cambiarla política de claves de una CMK administrada por el cliente, en la pestaña Key policy (Política declaves), seleccione Edit (Editar). Para obtener más información, consulte the section called “Usarpolíticas de claves” (p. 57).

Rotación de claves

Habilita y deshabilita la rotación de claves automática (p. 157) cada año.

Para cambiar el estado de la rotación de claves de una CMK administrada por el cliente (p. 4), utilicela casilla de verificación que se encuentra en la pestaña Key rotation (Rotación de claves). Todas lasCMK administradas por AWS (p. 4) rotan automáticamente cada tres años.

Especificación de clave

Tipo de material de claves de la CMK. AWS KMS admite las CMK simétricas(SYMMETRIC_DEFAULT), CMK para claves de RSA de diferentes longitudes y claves de curvaelíptica con diferentes curvas. Para obtener más información, consulte Especificación de clave (p. 14).

Key type

Indica si la CMK es Symmetric (Simétrica) o Asymmetric (Asimétrica).Uso de claves

Indica si una CMK se puede utilizar para Encrypt and decrypt (Cifrar y descifrar) o Sign and verify(Firmar y verificar). Únicamente las CMK asimétricas se pueden utilizar para firmar y verificar. Paraobtener más información, consulte Uso de claves (p. 15).

33

Page 42: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar las CMK en la consola

Origen

Fuente del material de claves de la CMK. Los valores válidos son AWS_KMS para elmaterial de claves que genera AWS KMS, EXTERNAL (EXTERNO) para el material declaves importado (p. 162) y AWS_CloudHSM para las CMK de los almacenes de clavespersonalizadas (p. 189).

Clave pública

Muestra la clave pública de una CMK asimétrica. Los usuarios autorizados pueden utilizar estapestaña para copiar y descargar la clave pública (p. 50).

Algoritmos de firma

Enumera los algoritmos de firma que se pueden utilizar con la CMK en AWS KMS. Este campoaparece únicamente cuando el Key type (Tipo de clave) es Asymmetric (Asimétrico) y cuando el Keyusage (Uso de la clave) es Sign and verify (Firmar y verificar). Para obtener información acerca de losalgoritmos de firma que admite AWS KMS, consulte Especificaciones de clave de RSA para la firma yla verificación (p. 150) y Especificaciones de clave de curva elíptica (p. 151).

Estado

Estado de la clave de la CMK. Puede utilizar la CMK en operaciones criptográficas (p. 11) solo cuandoel estado es Enabled (Habilitado). Para obtener una descripción detallada de cada estado de CMK ysu impacto en las operaciones que puede ejecutar en la CMK, consulte Estado de una clave: efecto ensu CMK (p. 245).

Etiquetas

Pares clave-valor opcionales que describen la CMK. Para añadir o cambiar las etiquetas de una CMK,en la pestaña Tags (Etiquetas), seleccione Edit (Editar).

Cuando se agregan etiquetas a los recursos de AWS, AWS genera un informe de asignación decostos con el uso y los costos agregados por etiquetas. Para obtener más información acerca deletiquetado de CMK, consulte Etiquetar claves (p. 47).

Personalizar las tablas de CMKPuede personalizar las tablas que aparecen en las páginas AWS managed keys (Claves administradas porAWS) y Customer managed keys (Claves administradas por el cliente) de la Consola de administración deAWS para satisfacer sus necesidades. Puede seleccionar las columnas de la tabla, el número de clavesmaestras personalizadas (CMK) de cada página (Page size [Tamaño de página]) y el ajuste de texto. Laconfiguración que seleccione se guarda cuando la confirma y se vuelve a aplicar cuando abre las páginas.

Para personalizar las tablas de CMK

1. En la página AWS managed keys (Claves administradas por AWS) o Customer managed keys (Claves

administradas por el cliente), seleccione el icono de configuración ( ) de la esquina superiorderecha de la página.

2. En la página Preferences (Preferencias), elija su configuración preferida y, a continuación, Confirm(Confirmar).

Considere utilizar la configuración Page size (Tamaño de página) para aumentar el número de CMK que semuestran en cada página, especialmente si suele utilizar un dispositivo que es fácil de desplazar.

Las columnas de datos que muestra pueden variar en función de la tabla, el rol de trabajo y los tipos deCMK de la cuenta y la región. En la siguiente tabla aparecen algunas sugerencias de configuración. Paraobtener descripciones de las columnas, consulte Visualizar los detalles de la CMK (p. 31).

34

Page 43: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresVer las CMK con la API

Configuraciones sugeridas para la tabla de CMKPuede personalizar las columnas que aparecen en la tabla CMK para mostrar la información que necesitasobre sus CMK.

Claves administradas por AWS

De forma predeterminada, la tabla de AWS managed keys (Claves administradas por AWS) muestralas columnas Alias, Key ID (ID de clave) y Status (Estado). Estas columnas son ideales para lamayoría de casos de uso.

Claves simétricas administradas por el cliente

Si utiliza únicamente las CMK simétricas con el material de claves que genera AWS KMS, es probableque las columnas Alias, Key ID (ID de clave), Status (Estado) y Creation date (Fecha de creación)sean las más útiles.

Claves asimétricas administradas por el cliente

Si utiliza CMK asimétricas, además de las columnas Alias, Key ID (ID de clave) y Status (Estado),debe considerar la adición de las columnas Key type (Tipo de clave), Key spec (Especificación declave) y Key usage (Uso de clave). Estas columnas le mostrarán si una CMK es simétrica o asimétrica,el tipo de material de claves y si la CMK se puede utilizar para el cifrado o la firma.

Material de claves importado

Si tiene CMK con material de claves importado (p. 162), además de las columnas Alias, Key ID (IDde clave) y Status (Estado), debe considerar la adición de las columnas Origin (Origen) y Expirationdate (Fecha de vencimiento). Estas columnas le mostrarán si el material de claves de una CMK seimporta o lo genera AWS KMS y cuándo vence el material de claves, si se da el caso. El campoCreation date (Fecha de creación) muestra la fecha en la que se creó la CMK (sin el material declaves). No refleja ninguna característica del material de claves.

Claves de los almacenes de claves personalizadas

Si tiene CMK en almacenes de claves personalizadas (p. 189), además de las columnas Alias, KeyID (ID de clave) y Status (Estado), debe considerar la adición de la columna Custom key store ID (IDdel almacén de claves personalizadas). Un valor de esta columna indica que la CMK se encuentra enun almacén de claves personalizadas, además de mostrar los almacenes de claves personalizadasque contiene.

Ver las CMK con la APIPuede utilizar la API de AWS Key Management Service (AWS KMS) para ver sus CMK. En esta secciónse muestran varias operaciones que devuelven información detallada sobre las CMK existentes. En estosejemplos se utiliza la AWS Command Line Interface (AWS CLI), pero puede usar cualquier lenguaje deprogramación admitido.

Temas• ListKeys: obtener el ID y el ARN de todas las CMK (p. 35)• DescribeKey: obtener información detallada sobre una CMK (p. 36)• GetKeyPolicy: obtener la política de clave asociada a una CMK (p. 37)• ListAliases: consultar las CMK por nombre del alias (p. 37)

ListKeys: obtener el ID y el ARN de todas las CMKLa operación ListKeys devuelve el ID y el nombre de recurso de Amazon (ARN) de todas las CMK de lacuenta y la región.

35

Page 44: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresVer las CMK con la API

Por ejemplo, esta llamada a la operación ListKeys devuelve el ID y el ARN de todas las CMK de estacuenta ficticia.

$ aws kms list-keys { "Keys": [ { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, { "KeyArn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, { "KeyArn": "arn:aws:kms:us-east-2:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "KeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }}

DescribeKey: obtener información detallada sobre una CMKLa operación DescribeKey devuelve los detalles de la CMK especificada. Para identificar la CMK, utilice suID de clave, ARN de clave, nombre de alias o ARN de alias.

Por ejemplo, esta llamada a DescribeKey devuelve información acerca de una CMK simétrica. Loscampos de la respuesta varían en función de la especificación de la clave maestra de cliente, el origen y elestado de la clave.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": true, "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1499988169.234, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

En este ejemplo se llama a la operación DescribeKey en una CMK asimétrica utilizada para la firma y laverificación. La respuesta incluye los algoritmos de firma que AWS KMS admite para esta CMK.

$ aws kms describe-key --key-id 0987dcba-09fe-87dc-65ba-ab0987654321

36

Page 45: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresVer las CMK con la API

{ "KeyMetadata": { "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "Origin": "AWS_KMS", "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "KeyState": "Enabled", "KeyUsage": "SIGN_VERIFY", "CreationDate": 1569973196.214, "Description": "", "CustomerMasterKeySpec": "ECC_NIST_P521", "AWSAccountId": "111122223333", "Enabled": true, "KeyManager": "CUSTOMER" "SigningAlgorithms": [ "ECDSA_SHA_512" ] }}

Puede utilizar la operación DescribeKey en un alias de AWS predefinido, es decir, un alias de AWSsin ID de clave. Cuando lo haga, AWS KMS asocia el alias con una CMK administrada por AWS (p. 3) ydevuelve su KeyId y Arn en la respuesta.

GetKeyPolicy: obtener la política de clave asociada a una CMKLa operación GetKeyPolicy obtiene la política de claves asociada a la CMK. Para identificar la CMK, utilicesu ID o ARN de clave. Asimismo, debe especificar el nombre de política, que siempre es default. (Si susalida es difícil de leer, añada la opción --output text a su comando).

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default

{ "Version" : "2012-10-17", "Id" : "key-default-1", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ]}

ListAliases: consultar las CMK por nombre del aliasLa operación ListAliases devuelve los alias de la cuenta y la región. El TargetKeyId en la respuestamuestra la ID de clave de la CMK a la que se refiere el alias, si la hay.

De forma predeterminada el comando ListAliases devuelve todos los alias de la cuenta y la región. Estoincluye los alias que ha creado y asociado a sus CMK administradas por el cliente (p. 3) y los alias queAWS ha creado y asociado a las CMK administradas por AWS (p. 3) en su cuenta. Puede reconocer losalias de AWS porque sus nombres tienen el formato aws/<service-name>, como aws/dynamodb.

La respuesta también podría incluir los alias que no tienen ningún campo TargetKeyId, como, porejemplo, el alias aws/redshift en este ejemplo. Estos son los alias predefinidos que AWS ha creado,pero aún no se han asociado con una CMK.

37

Page 46: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresVer las CMK con la API

$ aws kms list-aliases

{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ImportedKey", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "AliasName": "alias/ExampleKey" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasName": "alias/test-key" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/financeKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasName": "alias/financeKey" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/dynamodb", "TargetKeyId": "1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "AliasName": "alias/aws/dynamodb" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/redshift", "AliasName": "alias/aws/redshift" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/aws/s3", "TargetKeyId": "0987ab65-43cd-21ef-09ab-87654321cdef", "AliasName": "alias/aws/s3" } ]}

Para obtener los alias que se refieren a una CMK determinada, utilice el parámetro KeyId. El valor delparámetro puede ser el Nombre de recurso de Amazon (ARN) de la CMK o el ID de CMK. No puedeespecificar un alias o ARN de alias.

El comando en el siguiente ejemplo obtiene los alias que se refieren a una CMK administrada por elcliente. Sin embargo, puede utilizar un comando como este para buscar los alias que se refieren a las CMKadministradas por AWS también.

$ aws kms list-aliases --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/test-key", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasName": "alias/test-key" }, { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/financeKey", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "AliasName": "alias/financeKey" }, ]}

38

Page 47: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEncontrar el ID y el ARN de la clave

Encontrar el ID y el ARN de la clavePara identificar sus CMK de AWS KMS en programas, scripts y comandos de la interfaz de la línea decomandos (CLI), se utiliza el ID de la clave (p. 13) de la CMK o su nombre de recurso de Amazon (ARN dela clave (p. 13)). En operaciones criptográficas (p. 11), también puede utilizar el nombre de alias (p. 13) o elARN de alias (p. 13).

Para obtener información detallada sobre los identificadores de CMK que admite AWS KMS, consulteIdentificadores de clave (KeyId) (p. 12).

Para encontrar el ID y el ARN de la CMK (console)1. Abra la consola de AWS KMS en https://console.aws.amazon.com/kms.2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de la

página.3. Si desea ver las claves de su cuenta que usted crea y administra, en el panel de navegación, elija

Customer managed keys (Claves administradas por el cliente). Si desea ver las claves de su cuentaque AWS crea y administra por usted, en el panel de navegación, elija AWS managed keys (Clavesadministradas por AWS).

4. Para buscar el ID de clave (p. 13) de una CMK, consulte la fila que empieza por el alias de CMK.

La columna Key ID (ID de clave) aparece en las tablas de forma predeterminada. Si la columna KeyID (ID de clave) no aparece en la tabla, utilice el procedimiento que se describe en the section called“Personalizar las tablas de CMK” (p. 34) para restaurarla. También puede ver el ID de clave de unaCMK en su página de detalles.

5. Para buscar el nombre de recurso de Amazon (ARN) de la CMK, elija el ID o alias de la clave. El ARNde clave (p. 13) aparece en la sección General Configuration (Configuración general).

39

Page 48: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresIdentificar CMK simétricas y asimétricas

Para buscar el ID y el ARN de clave (AWS KMS API)Usar la operación de API ListKeys

• Para buscar el ID de clave (p. 13) y el ARN de clave (p. 13) de una clave maestra de cliente (CMK),utilice la operación ListKeys (p. 35) .

Identificar CMK simétricas y asimétricasPara determinar si una CMK concreta es simétrica o asimétrica (p. 143), busque su tipo de clave oespecificación de clave (p. 14). Puede utilizar la consola de AWS KMS o la API de AWS KMS.

Algunos de estos métodos también le mostrarán otros aspectos de la configuración criptográfica de unaCMK, incluido su uso de claves y los algoritmos de cifrado o de firma que admite la CMK. Puede ver laconfiguración criptográfica de una CMK existente, pero no puede cambiarla.

Para obtener información general sobre cómo ver las CMK, como ordenar, filtrar y elegir columnas para lapantalla de la consola, consulte Consultar las CMK en la consola (p. 28).

Temas• Buscar el tipo de clave en la tabla CMK (p. 40)• Buscar el tipo de clave en la página de detalles (p. 41)• Buscar la especificación de clave mediante la API de AWS KMS (p. 42)

Buscar el tipo de clave en la tabla CMKEn la consola de AWS KMS, la columna Key type (Tipo de clave) muestra si cada CMK es simétrica oasimétrica. Puede agregar una columna Key type (Tipo de clave) a la tabla CMK en las páginas Customermanaged keys (Claves administradas por el cliente) o AWS managed keys (Claves administradas porAWS) en la consola.

Para identificar CMK simétricas y asimétricas en la tabla CMK, utilice el procedimiento siguiente.

1. Abra la consola de AWS KMS en https://console.aws.amazon.com/kms.2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de la

página.3. Si desea ver las claves de su cuenta que usted crea y administra, en el panel de navegación, elija

Customer managed keys (Claves administradas por el cliente). Si desea ver las claves de su cuentaque AWS crea y administra por usted, en el panel de navegación, elija AWS managed keys (Clavesadministradas por AWS).

4. Las columnas Key type (Tipo de clave) muestran si cada CMK es simétrica o asimétrica. Tambiénpuede ordenar y filtrar (p. 29) por el valor Key type (Tipo de clave).

Si la columna Key type (Tipo de clave) no aparece en la tabla CMK, elija el icono de engranaje en laesquina superior derecha de la página, elija Key type (Tipo de clave), y, a continuación, elija Confirm(Confirmar). También puede agregar las columnas Key spec (Especificación de clave) y Key usage(Uso de clave).

40

Page 49: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresIdentificar CMK simétricas y asimétricas

Buscar el tipo de clave en la página de detallesEn la consola de AWS KMS, la página de detalles de cada CMK incluye una sección CryptographicConfiguration (Configuración criptográfica) que muestra el tipo de clave (simétrica o asimétrica) y otrosdetalles criptográficos sobre la CMK.

Para identificar CMK simétricas y asimétricas en la página de detalles de una CMK, utilice el procedimientosiguiente.

1. Abra la consola de AWS KMS en https://console.aws.amazon.com/kms.2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de la

página.3. Si desea ver las claves de su cuenta que usted crea y administra, en el panel de navegación, elija

Customer managed keys (Claves administradas por el cliente). Si desea ver las claves de su cuentaque AWS crea y administra por usted, en el panel de navegación, elija AWS managed keys (Clavesadministradas por AWS).

4. Elija el alias o el ID de clave de una CMK.5. Seleccione Cryptographic configuration (Configuración criptográfica).

La sección de Cryptographic configuration (Configuración criptográfica) incluye el Key type (Tipo declave), que indica si es simétrica o asimétrica. También muestra otros detalles sobre la CMK, incluidoel Key Usage (Uso de claves), que indica si una CMK se puede utilizar para cifrar y descifrar o parafirmar y verificar. Para CMK asimétricos, muestra los algoritmos de cifrado o algoritmos de firma queadmite la CMK.

Por ejemplo, la siguiente es una sección de Cryptographic configuration (Configuración criptográfica)de ejemplo para una CMK simétrica.

A continuación se muestra un ejemplo de sección de Cryptographic configuration (Configuracióncriptográfica) para una CMK asimétrica de RSA que se utiliza para la firma y la verificación.

41

Page 50: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresIdentificar CMK simétricas y asimétricas

Buscar la especificación de clave mediante la API de AWS KMSPara determinar si una CMK es simétrica o asimétrica, utilice la operación DescribeKey . El campoCustomerMasterKeySpec de la respuesta contiene la especificación clave (p. 14) de la CMK. Parauna CMK simétrica, el valor de CustomerMasterKeySpec es SYMMETRIC_DEFAULT. Todos los demásvalores indican una CMK asimétrica.

Por ejemplo, DescribeKey devuelve la siguiente respuesta para una CMK simétrica. El valorCustomerMasterKeySpec es SYMMETRIC_DEFAULT.

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "0987dcba-09fe-87dc-65ba-ab0987654321", "Arn": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "CreationDate": 1496966810.831, "Enabled": true, "Description": "", "KeyState": "Enabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "KeyUsage": "ENCRYPT_DECRYPT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

La respuesta DescribeKey para una CMK asimétrica de RSA utilizada en la firma y verificación es similara este ejemplo. La especificación de clave, como se muestra en el valor de CustomerMasterKeySpec,es RSA_2048 (p. 148). El KeyUsage es SIGN_VERIFY y el elemento SigningAlgorithms indica losalgoritmos de firma válidos para la CMK.

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1571767572.317, "Enabled": false, "Description": "", "KeyState": "Disabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "RSA_2048", "KeyUsage": "SIGN_VERIFY", "SigningAlgorithms": [ "RSASSA_PKCS1_V1_5_SHA_256",

42

Page 51: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEditar claves

"RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512" ] }}

Editar clavesPuede utilizar la API de AWS KMS y la página de detalles de la clave de la Consola de administración deAWS para editar algunas de las propiedades de las claves maestras de cliente (p. 3) (CMK) administradaspor el cliente. Puede cambiar la descripción, añadir y eliminar administradores y usuarios, administraretiquetas y habilitar y deshabilitar la rotación de claves.

No puede cambiar las propiedades de las CMK administradas por AWS (p. 3).

Temas• Edición de las CMK (console) (p. 43)• Edición de las CMK (AWS KMS API) (p. 45)

Edición de las CMK (console)Los usuarios que disponen de los permisos necesarios pueden modificar las propiedades de una CMKadministrada por el cliente, incluida su descripción, etiquetas, políticas y concesiones, y el estado derotación en la Consola de administración de AWS.

Puede ver (p. 28) pero no puede editar las propiedades de las CMK administradas por AWS. Para ver lapolítica de claves de una CMK administrada por AWS, utilice la operación GetKeyPolicy.

Vaya a la página de detalles de la CMK

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS KeyManagement Service (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).(No puede editar las propiedades de las claves administradas por AWS).

4. Elija el alias o el ID de clave de la CMK que desea editar. A continuación, utilice los controles dela página de detalles de la clave para ver y modificar las propiedades de la CMK.

Cambie la descripción de la CMK

Puede añadir, cambiar o eliminar la descripción de su CMK, a menos que el estado de laclave (p. 245) sea Pending Deletion. La descripción es opcional.

1. En la esquina superior derecha, elija Edit (Editar).2. En Description (Descripción), escriba una breve descripción de la CMK. También puede eliminar

una descripción existente.

Escriba una descripción que explique el tipo de datos que piensa proteger o la aplicación quepiensa usar con la CMK. El formato de descripción Clave maestra predeterminada que protege ...cuando no se define ninguna otra clave se reserva para las CMK administradas por AWS (p. 4).

43

Page 52: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEdición de las CMK (console)

3. Para guardar los cambios, elija Save.

Cambiar los administradores y usuarios de la CMK

Puede modificar la política de claves de su CMK. Las políticas de claves definen los usuarios, grupos yroles de IAM que puede administrar la CMK y utilizarla en operaciones criptográficas (p. 11).

La cuenta de AWS (usuario raíz) tiene permisos completos de forma predeterminada. Como resultado,los usuarios y las funciones de IAM cuyas políticas asociadas conceden los permisos relevantestambién pueden administrar la CMK. Para obtener información detallada sobre la configuraciónde políticas de claves y políticas de IAM, consulte Autenticación y control de acceso de AWSKMS (p. 53).

1. En la página de detalles de la CMK, seleccione la pestaña Key policy (Política de claves).

Si la política de claves para la CMK es una política predeterminada, la pestaña Key policy(Política de claves) mostrará la vista predeterminada con las secciones Key administrators(Administradores de claves), Key deletion (Eliminación de claves), Key users (Usuarios declaves) y Other AWS accounts (Otras cuentas de AWS). De lo contrario, la pestaña mostrará eldocumento de la política de claves.

Para editar el documento de política de claves directamente, elija Switch to policy view (Cambiar ala vista de política) (si aplica), Edit (Editar), edite el documento y, por último, elija Save (Guardar).

Los pasos restantes de este procedimiento explican cómo se edita la política de claves con lavista predeterminada.

2. Para modificar los usuarios y los roles que puede administrar la CMK, utilice la sección Keyadministrators (Administradores de claves).• Para añadir un administrador de claves, elija Add (Añadir), escoja o escriba un usuario o rol y,

luego, Add (Añadir).• Para eliminar un administrador de claves, marque el cuadro del usuario o rol y, luego, elija

Remove (Eliminar).3. Para evitar que los administradores de claves programen la eliminación de la CMK, desactive la

casilla de verificación Allow key administrators to delete this key (Permitir que los administradoresde claves eliminen esta clave) situada en la sección Key deletion (Eliminación de claves).

4. Para cambiar los usuarios y roles que pueden usar la CMK en operaciones criptográficas (p. 11),utilice la sección Key users (Usuarios de claves).• Para añadir un usuario de claves, elija Add (Añadir), escoja o escriba un usuario o rol y, luego,

Add (Añadir).• Para eliminar un usuario de claves, marque el cuadro del usuario o rol y, luego, elija Remove

(Eliminar).5. Para modificar las otras cuentas de AWS que pueden usar CMK en operaciones criptográficas, en

la sección Other AWS accounts (Otras cuentas de ), seleccione Add other AWS accounts (Añadirotras cuentas de).

Note

Añadir una cuenta externa no permite a los usuarios y roles de la cuenta usar la CMK.Para permitir que los usuarios y los roles de una cuenta externa usen la CMK, unadministrador de la cuenta externa debe añadir las políticas de IAM que proporcionanestos permisos. Para obtener más información, consulte Permitir a los usuarios de otrascuentas utilizar una CMK (p. 81).

• Para añadir cuentas, elija Add another AWS account (Añadir otra cuenta de AWS) y escriba elnombre de la cuenta.

• Para eliminar cuentas, en la fila del número de la cuenta, elija Remove (Eliminar).

44

Page 53: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEdición de las CMK (AWS KMS API)

Cuando haya acabado, elija Save changes (Guardar cambios) y haga clic en la X para cerrar laventana.

Añadir, editar y eliminar etiquetas

Puede modificar las etiquetas de su CMK. Cada etiqueta es un par de nombre-valor. – El nombre de laetiqueta debe ser único en la cuenta y la región.

Puede utilizar etiquetas para identificar y categorizar las CMK. Cuando se agregan etiquetas a losrecursos de AWS, AWS genera un informe de asignación de costos con el uso y los costos agregadospor etiquetas. Para obtener más información acerca de las etiquetas de las CMK, consulte Etiquetarclaves (p. 47).

• En la página de detalles de la CMK, seleccione la pestaña Tags (Etiquetas).• Para crear la primera etiqueta, elija Create tag (Crear etiqueta), escriba el nombre y el valor de

la etiqueta y, por último, elija Save (Guardar).• Para añadir una etiqueta, elija Edit (Editar), Add tag (Añadir etiqueta), escriba el nombre y el

valor de la etiqueta y, por último, elija Save (Guardar).• Para modificar el nombre o el valor de una etiqueta, elija Edit (Editar), aplique los cambios y

elija Save (Guardar).• Para eliminar una etiqueta, elija Edit (Editar). En la fila de la etiqueta, elija Remove (Eliminar) y,

luego, Save (Guardar).

Habilitar o deshabilitar la rotación

Puede habilitar y deshabilitar la rotación automática (p. 157) del material criptográfico en una CMKadministrada por el cliente (p. 3) simétrica. Las CMK con material de claves importado o las CMKasimétricas no admiten esta característica.

Las CMK administradas por AWS (p. 3) se rotan cada tres años de forma automática. No puedehabilitar o deshabilitar esta característica.

1. En la página de detalles de la CMK, seleccione la pestaña Key rotation (Rotación de claves).2. Para habilitar la rotación automática de claves, seleccione la casilla de verificación Automatically

rotate this CMK every year (Rotar esta CMK cada año de forma automática). Para deshabilitar larotación automática de claves, desmarque la casilla de verificación.

3. Para guardar los cambios, elija Save.

Edición de las CMK (AWS KMS API)Puede utilizar la API de AWS Key Management Service (AWS KMS) para editar las propiedades de susCMK administradas por el cliente (p. 3). En estos ejemplos se utiliza la AWS Command Line Interface(AWS CLI), pero puede usar cualquier lenguaje de programación admitido. En esta sección se muestranvarias operaciones que devuelven información detallada sobre las CMK existentes.

No puede editar las propiedades de las CMK administradas por AWS (p. 3).

Temas• UpdateKeyDescription: cambiar la descripción de una CMK (p. 46)• PutKeyPolicy: cambiar la política de claves de una CMK (p. 46)• Habilitar y deshabilitar la rotación de claves (p. 46)

45

Page 54: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEdición de las CMK (AWS KMS API)

Tip

Para obtener información sobre cómo añadir, eliminar y editar las etiquetas, consulte Etiquetarclaves (p. 47).

UpdateKeyDescription: cambiar la descripción de una CMKLa operación UpdateKeyDescription reemplaza la descripción de la CMK con aquella que especifique.Puede utilizarla para añadir, cambiar o eliminar la descripción de una CMK. Para ver la descripción, utilicela operación DescribeKey.

Por ejemplo, esta llamada a la operación UpdateKeyDescription cambia la descripción de la CMKespecificada.

$ aws kms update-key-description --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --description "Example key"

Para conseguir la descripción de una clave, utilice la operación DescribeKey, tal y como se muestra en elsiguiente ejemplo.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "Example key", "KeyManager": "CUSTOMER", "Enabled": true, "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "Enabled", "CreationDate": 1499988169.234, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

PutKeyPolicy: cambiar la política de claves de una CMKLa operación PutKeyPolicy cambia la política de claves de la CMK a la política que especifique. La políticacomprende los permisos de los administradores, los usuarios y los roles. Para ver un ejemplo detallado,consulte Ejemplos de PutKeyPolicy.

Habilitar y deshabilitar la rotación de clavesLa operación EnableKeyRotation habilita la rotación automática (p. 157) del material criptográfico enuna CMK simétrica. La operación DisableKeyRotation la deshabilita. La operación GetKeyRotationStatusdevuelve un valor booleano que le indica si la rotación de claves automática está habilitada (true) odeshabilitada (false).

Para ver un ejemplo, consulte Rotar claves maestras de cliente (p. 157).

46

Page 55: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEtiquetar claves

Etiquetar clavesMuchos servicios de AWS admiten etiquetas de recursos. Puede utilizar etiquetas para etiquetar, identificary clasificar sus recursos en todos los servicios de AWS.

AWS KMS admite etiquetas de recursos en claves maestras de cliente (p. 3) (CMK). Puede agregar,cambiar y eliminar etiquetas de recursos para CMK administradas por el cliente (p. 3). AWS KMS noadmite etiquetas de recursos en alias y no puede crear ni administrar las etiquetas en CMK administradaspor AWS (p. 3).

Cada etiqueta de recurso consta de una clave de etiqueta y un valor de etiqueta, ambos definidos por elusuario. Por ejemplo, la clave de etiqueta puede ser "Centro de costos" y el valor de etiqueta puede ser"87654". Puede asociar la misma etiqueta, con la misma clave de etiqueta y valor de etiqueta, a variasCMK. Sin embargo, cada etiqueta de una CMK debe tener una clave de etiqueta diferente. Por ejemplo, nopuede tener más de una clave de etiqueta "Centro de costes" en la misma CMK. Para obtener informacióndetallada acerca de las etiquetas de recursos, consulte Etiquetado de recursos de AWS en la AWSGeneral Reference.

Cuando se agregan etiquetas a los recursos de AWS, AWS genera un informe de asignación decostos con el uso y los costos agregados por etiquetas. Puede utilizar esta característica para realizarun seguimiento de los costos de AWS KMS para un proyecto, aplicación o centro de costos. Paraobtener más información sobre el uso de etiquetas para la asignación de costos, consulte Uso deetiquetas de asignación de costos en la Guía del usuario de AWS Billing and Cost Management. Paraobtener información sobre las reglas que se aplican a las claves y los valores de las etiquetas, consulteRestricciones de las etiquetas definidas por el usuario en la Guía del usuario de AWS Billing and CostManagement.

Temas• Administrar etiquetas de CMK (console) (p. 47)• Administrar etiquetas de CMK (AWS KMS API) (p. 48)

Administrar etiquetas de CMK (console)Puede añadir, editar y eliminar etiquetas de las CMK administradas por el cliente en la Consola deadministración de AWS. También puede agregar etiquetas a una CMK al crearla (p. 22) y editarlasen cualquier momento. No puede editar las etiquetas de las CMK cuya eliminación está pendiente. Paraobtener más información, consulte Crear claves (p. 22) y Editar claves (p. 43).

El siguiente procedimiento muestra cómo administrar etiquetas mediante las casillas de verificación dela página Customer managed keys (Claves administradas por el cliente). Puede utilizar la pestaña Tags(Etiquetas) de la página de detalles (p. 31) para cualquiera CMK administrada por el cliente.

Si desea agregar, editar o eliminar una etiqueta para una CMK existente

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente). (Nopuede administrar las etiquetas de una CMK administrada por AWS).

4. Seleccione la casilla de verificación situada junto al alias de una CMK.5. Elija Key actions, Add or edit tags.6. Utilice los controles para añadir, eliminar o editar etiquetas.7. Para guardar los cambios, elija Save changes (Guardar cambios).

47

Page 56: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAdministrar etiquetas de CMK (AWS KMS API)

Administrar etiquetas de CMK (AWS KMS API)Puede utilizar la API de AWS Key Management Service (AWS KMS) para añadir, eliminar y enumeraretiquetas para las CMK que administre. En estos ejemplos, se utiliza la AWS Command Line Interface(AWS CLI), pero puede usar cualquier lenguaje de programación admitido.

No puede etiquetar CMK administradas por AWS (p. 4).

Temas• CreateKey: agregar etiquetas a una CMK nueva (p. 48)• TagResource: agregar o cambiar etiquetas para una CMK (p. 48)• ListResourceTags: obtener las etiquetas para una CMK (p. 48)• UntagResource: eliminar etiquetas de una CMK (p. 49)

CreateKey: agregar etiquetas a una CMK nuevaPuede agregar etiquetas al crear una CMK administrada por el cliente (p. 4). Para especificar las etiquetas,utilice el parámetro Tags de la operación CreateKey. El valor del parámetro Tags es una colección depares de clave-valor de etiqueta.

Por ejemplo, el siguiente comando de la AWS CLI crea una CMK simétrica con una etiquetaProject:Alpha. Cuando especifique más de un par de clave-valor, utilice un espacio para separar cadapar.

$ aws kms create-key --tags TagKey=Project,TagValue=Alpha

Cuando este comando se ejecuta correctamente, devuelve un objeto KeyMetadata con información sobrela nueva CMK. Sin embargo, KeyMetadata no incluye etiquetas. Para obtener las etiquetas, utilice laoperación ListResourceTags (p. 48).

TagResource: agregar o cambiar etiquetas para una CMKLa operación TagResource añade una o varias etiquetas a una CMK.

También pueden utilizar TagResource para cambiar los valores de una etiqueta. Para sustituir los valoresde etiqueta, especifique la misma clave de etiqueta con distintos valores. Para añadir valores a unaetiqueta, especifique la clave de etiqueta con valores nuevos y existentes.

Por ejemplo, el siguiente comando agrega las etiquetas Purpose y Department a una CMK de ejemplo.

$ aws kms tag-resource \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --tags TagKey=Purpose,TagValue=Test TagKey=Department,TagValue=Finance

Si este comando se realiza correctamente, no devuelve ningún resultado. Para ver las etiquetas de unaCMK, utilice la operación ListResourceTags.

ListResourceTags: obtener las etiquetas para una CMKLa operación ListResourceTags obtiene las etiquetas de una CMK. El parámetro key-id es obligatorio.

Por ejemplo, el comando siguiente obtiene las etiquetas para una CMK de ejemplo.

$ aws kms list-resource-tags --key-id 1234abcd-12ab-34cd-56ef-1234567890ab "Truncated": false,

48

Page 57: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresHabilitar y deshabilitar claves

"Tags": [ { "TagKey": "Project", "TagValue": "Alpha" } { "TagKey": "Purpose", "TagValue": "Test" }, { "TagKey": "Department", "TagValue": "Finance" } ]}

UntagResource: eliminar etiquetas de una CMKLa operación UntagResource elimina etiquetas de una CMK. Los parámetros key-id y tag-keys sonobligatorios.

Por ejemplo, este comando elimina la etiqueta Purpose y todos sus valores de la CMK especificada.

$ aws kms untag-resource --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --tag-keys Purpose

Si este comando se realiza correctamente, no devuelve ningún resultado.

Habilitar y deshabilitar clavesPuede deshabilitar y volver a habilitar las claves maestras del cliente (p. 3) (CMK) que administre. Nopuede habilitar o deshabilitar CMK administradas por AWS.

Al crear una CMK, está habilitada de forma predeterminada. Si deshabilita una CMK, no se puede utilizarpara cifrar o descifrar datos hasta que vuelva a habilitarla. Las CMK administradas por AWS estánhabilitadas de forma permanente para que las usen los servicios que utilizan AWS KMS (p. 250). Nopuede deshabilitarlas.

También puede eliminar las CMK. Para obtener más información, consulte Eliminar las claves maestras decliente (p. 176).

Note

AWS KMS no rota las claves de backup de las CMK administradas por el cliente mientras estándeshabilitadas. Para obtener más información, consulte Funcionamiento de la rotación automáticade claves (p. 158).

Temas• Habilitar y deshabilitar CMK (console) (p. 49)• Habilitar y deshabilitar CMK (AWS KMS API) (p. 50)

Habilitar y deshabilitar CMK (console)Puede habilitar y deshabilitar las CMK administradas por el cliente desde la sección IAM de la Consola deadministración de AWS.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

49

Page 58: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresHabilitar y deshabilitar CMK (AWS KMS API)

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Seleccione la casilla de verificación de las CMK que quiere habilitar o deshabilitar.5. Para habilitar una CMK, elija Key actions, Enable. Para deshabilitar una CMK, elija Key actions,

Disable.

Habilitar y deshabilitar CMK (AWS KMS API)La operación EnableKey habilita una clave maestra del cliente (CMK) de AWS KMS deshabilitada. Enestos ejemplos, se utiliza la AWS Command Line Interface (AWS CLI), pero puede usar cualquier lenguajede programación admitido. El parámetro key-id es obligatorio.

Esta operación no devuelve ninguna salida. Para ver el estado de la clave, utilice la operaciónDescribeKey.

$ aws kms enable-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

La operación DisableKey deshabilita una CMK habilitada. El parámetro key-id es obligatorio.

$ aws kms disable-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

Esta operación no devuelve ninguna salida. Para ver el estado de la clave, utilice la operación DescribeKeyy consulte el campo Enabled.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "KeyMetadata": { "Origin": "AWS_KMS", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "KeyManager": "CUSTOMER", "Enabled": false, "KeyState": "Disabled", "KeyUsage": "ENCRYPT_DECRYPT", "CreationDate": 1502910355.475, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

Descargar claves públicasPuede ver, copiar y descargar la clave pública en un par de CMK asimétrica al utilizar la Consola deadministración de AWS o la API de AWS KMS. Debe tener el permiso kms:GetPublicKey en la CMKasimétrica.

Cada par de CMK asimétrica consta de una clave privada que nunca deja AWS KMS sin cifrar y una clavepública que puede descargar y compartir.

50

Page 59: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsideraciones especiales para descargar claves públicas

Puede compartir una clave pública para permitir que otros cifren datos fuera de AWS KMS que puededescifrar solo con su clave privada. O bien, para permitir que otros verifiquen una firma digital fuera delAWS KMS que haya generado con su clave privada.

Cuando utiliza la clave pública en su CMK asimétrica dentro de AWS KMS, se beneficia de laautenticación, autorización y registro que forman parte de cada operación de AWS KMS. También reduceel riesgo de cifrar datos que no se pueden descifrar. Estas características no son efectivas fuera deAWS KMS. Para obtener más información, consulte Consideraciones especiales para descargar clavespúblicas (p. 51).

Temas• Consideraciones especiales para descargar claves públicas (p. 51)• Descargar una clave pública (console) (p. 52)• Descargar una clave pública (AWS KMS API) (p. 52)

Consideraciones especiales para descargar clavespúblicasPara proteger sus CMK, AWS KMS proporciona controles de acceso, cifrado autenticado y registrosdetallados de cada operación. AWS KMS también le permite evitar el uso de CMK, temporal opermanentemente. Finalmente, las operaciones de AWS KMS están diseñadas para minimizar el riesgo decifrar datos que no se pueden descifrar. Estas características no están disponibles cuando utiliza clavespúblicas descargadas fuera de AWS KMS.

Autorización

Las políticas de claves (p. 57) y las políticas de IAM (p. 76) que controlan el acceso a la CMK enAWS KMS no tienen efecto en las operaciones realizadas fuera de AWS. Cualquier usuario que puedaobtener la clave pública puede utilizarla fuera de AWS KMS aunque no tenga permiso para cifrar datoso verificar firmas con la CMK.

Restricciones de uso de las claves

Las restricciones de uso de las claves no son efectivas fuera de AWS KMS. Si llama a la operación Encrypt con una CMK que tiene KeyUsage de SIGN_VERIFY, la operación de AWS KMS falla. Sinembargo, si cifra datos fuera de AWS KMS con una clave pública de una CMK con un KeyUsage deSIGN_VERIFY, los datos no se pueden descifrar.

Restricciones del algoritmo

Las restricciones a los algoritmos de cifrado y firma compatibles con AWS KMS no son efectivas fuerade AWS KMS. Si cifra los datos con la clave pública de una CMK fuera de AWS KMS y utiliza unalgoritmo de cifrado que no es compatible con AWS KMS, no se pueden descifrar los datos.

Deshabilitar y eliminar las CMK

Las acciones que puede tomar para evitar el uso de la CMK en una operación criptográfica en AWSKMS no evitan que nadie utilice la clave privada fuera de AWS KMS. Por ejemplo, deshabilitar unaCMK, programar la eliminación de una CMK, eliminar una CMK o eliminar el material de claves de unaCMK no tienen ningún efecto en una clave pública fuera de AWS KMS. Si elimina una CMK asimétricao elimina o pierde su material de claves, los datos que cifra con una clave pública fuera de AWS KMSson irrecuperables.

Registro

Registros de AWS CloudTrail que registran cada operación de AWS KMS, incluida la solicitud, larespuesta, la fecha, el tiempo y el usuario autorizado, no registran el uso de la clave pública fuera deAWS KMS.

51

Page 60: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDescargar una clave pública (console)

Descargar una clave pública (console)Puede utilizar la Consola de administración de AWS para ver, copiar y descargar la clave pública en unaCMK asimétrica en su cuenta de AWS. Para descargar la clave pública de una CMK asimétrica en unacuenta de AWS diferente, utilice la API de AWS KMS.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Elija el alias o el ID de clave de una CMK asimétrica.5. En la sección Cryptographic configuration (Configuración criptográfica), registre los valores de Key

spec (Especificación de clave), Key usage (Uso de claves) y Encryption algorithms (Algoritmos decifrado) o Signing Algorithms (Algoritmos de firma). Tendrá que utilizar estos valores para utilizar laclave pública fuera de AWS KMS. Asegúrese de compartir esta información cuando comparta la clavepública.

6. Seleccione la pestaña Public key (Clave pública).7. Para copiar la clave pública al portapapeles, elija Copy (Copiar). Para descargar la clave pública en un

archivo, elija Download (Descargar).

Descargar una clave pública (AWS KMS API)La operación GetPublicKey devuelve la clave pública en una CMK asimétrica. También devuelveinformación crítica que necesita para utilizar la clave pública correctamente fuera de AWS KMS, incluidoel uso de claves y algoritmos de cifrado. Asegúrese de guardar estos valores y compartirlos siempre quecomparta la clave pública.

En los ejemplos de esta sección se utiliza la AWS Command Line Interface (AWS CLI), pero puede usarcualquier lenguaje de programación compatible.

Para especificar una CMK, utilice su ID de clave, nombre de recurso de Amazon (ARN), nombre de alias oARN de alias. Cuando utilice un nombre del alias, utilice el prefijo alias/. Para especificar una CMK en unacuenta de AWS diferente, debe utilizar su clave de ARN o su alias de ARN.

Antes de ejecutar este comando, sustituya el nombre del alias de ejemplo por un identificador válido parala CMK. Para ejecutar este comando, debe tener permisos de kms:GetPublicKey en la CMK.

$ aws kms get-public-key --key-id alias/example_RSA_3072

{ "CustomerMasterKeySpec": "RSA_3072", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "KeyUsage": "ENCRYPT_DECRYPT", "EncryptionAlgorithms": [ "RSAES_OAEP_SHA_1", "RSAES_OAEP_SHA_256" ], "PublicKey": "MIIBojANBgkqhkiG..."}

52

Page 61: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutenticación

Autenticación y control de acceso deAWS KMS

El acceso a AWS KMS requiere credenciales que AWS puede utilizar para autenticar las solicitudes. Lascredenciales deben tener permisos para obtener acceso a los recursos AWS, como claves maestras decliente (CMK) de AWS KMS. En las secciones siguientes, se incluye información detallada sobre cómopuede utilizar AWS Identity and Access Management (IAM) y AWS KMS para ayudar a proteger susrecursos controlando quién puede obtener acceso a ellos.

Temas

• Autenticación (p. 53)• Control de acceso (p. 54)

AutenticaciónPuede obtener acceso a AWS con los siguientes tipos de identidades:

• Usuario raíz de la cuenta de AWS: al inscribirse en AWS, proporcione una dirección de correoelectrónico y una contraseña para su cuenta de AWS. – Estas son las credenciales raíz y proporcionanacceso completo a todos los recursos de AWS.

Important

Por motivos de seguridad, le recomendamos que utilice las credenciales raíz solo para crear unusuario administrador, que es un usuario de IAM con permiso total para gestionar su cuenta deAWS. Después, podrá utilizar este usuario administrador para crear otros usuarios y funcionesde IAM con permisos limitados. Para obtener más información, consulte Crear usuarios de IAMindividuales (prácticas recomendadas de IAM) y Creación de un grupo y usuario administradoren la Guía del usuario de IAM.

• Usuario de IAM: un usuario de IAM es una identidad en su cuenta de AWS que tiene permisosespecíficos (por ejemplo, para usar una CMK de KMS). – Puede utilizar un nombre de usuario de IAM yuna contraseña para iniciar sesión en páginas web seguras de AWS, como la Consola de administraciónde AWS, los foros de debate de AWS o el AWS Support Center.

Además de un nombre de usuario y una contraseña, también puede crear claves de acceso para cadausuario a fin de habilitarle el acceso a los servicios de AWS mediante programación, a través de uno delos SDK de AWS o las herramientas de línea de comandos. Los SDK y las herramientas de la línea decomandos usan las claves de acceso para firmar criptográficamente las solicitudes de API. Si no utilizalas herramientas de AWS, debe firmar las solicitudes de la API. AWS KMS es compatible con SignatureVersion 4, un protocolo AWS para autenticar solicitudes de API. Para obtener más información sobrela autenticación de solicitudes de API, consulte Proceso de firma de Signature Version 4 en la AWSGeneral Reference.

• Rol de IAM: un rol de IAM es otra identidad de IAM que puede crear en su cuenta y que tiene permisosespecíficos. – Es similar a un usuario de IAM, pero no está asociado a una determinada persona. Unafunción de IAM le permite obtener claves de acceso temporales para obtener acceso a los recursos yservicios de AWS mediante programación. Las funciones de IAM son útiles en los siguientes casos:• Acceso de usuarios federados: en lugar de crear un usuario de IAM, puede usar identidades de

usuario preexistentes de AWS Directory Service, el directorio de usuarios de su empresa o unproveedor de identidad web. – Esto se conoce como usuarios federados. Los usuarios federados usanroles de IAM mediante un proveedor de identidades. Para obtener más información acerca de losusuarios federados, consulte Usuarios federados y roles en la Guía del usuario de IAM.

53

Page 62: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresControl de acceso

• Acceso entre cuentas: puede utilizar una función de IAM de su cuenta de AWS para concederpermisos a otra cuenta de AWS para que tenga acceso a los recursos de su cuenta. – Para ver unejemplo, consulte Tutorial: Delegación del acceso entre cuentas de AWS mediante roles de IAM en laGuía del usuario de IAM.

• Acceso a servicios de AWS: puede utilizar una función de IAM de su cuenta para conceder permisosa un servicio de AWS para tener acceso a los recursos de su cuenta. – Por ejemplo, puede crearuna función que permita a Amazon Redshift tener acceso a un bucket de S3 en su nombre y, acontinuación, cargar los datos almacenados en el bucket de S3 en un clúster de Amazon Redshift.Para obtener más información, consulte Crear un rol para delegar permisos a un servicio de AWS enla Guía del usuario de IAM.

• Aplicaciones que se ejecutan en instancias EC2: en lugar de almacenar claves de acceso enla instancia EC2 para que las usen aplicaciones que se ejecutan en la instancia y que realizansolicitudes de API de AWS, puede usar una función de IAM para proporcionar claves de accesotemporales a estas aplicaciones. – Para asignar una función de IAM a una instancia EC2, cree unperfil de instancia y, a continuación, asócielo al lanzar la instancia. Un perfil de instancia contiene elrol y permite a las aplicaciones que se encuentran en ejecución en la instancia EC2 obtener clavesde acceso temporales. Para obtener más información, consulte Uso de un rol de IAM para concederpermisos a aplicaciones en Amazon EC2 en la Guía del usuario de IAM.

Control de accesoPuede tener credenciales válidas para autenticar las solicitudes, pero también necesita permisos paraque las solicitudes de API de AWS KMS creen, administres o usen recursos de AWS KMS. Por ejemplo,debe tener permisos para crear una CMK de KMS, administrar la CMK y utilizar la CMK para operacionescriptográficas (p. 11).

En las páginas siguientes se describe cómo administrar los permisos de AWS KMS. Le recomendamosque lea primero la información general.

• Información general sobre la administración del acceso (p. 54)• Usar políticas de claves (p. 57)• Usar políticas de IAM (p. 76)• Referencia de permisos de la API de AWS KMS (p. 86)• Usar condiciones de política (p. 97)• Usar concesiones (p. 127)• Uso de roles vinculados a servicios (p. 130)• Determinar el acceso (p. 131)

Información general sobre la administración deacceso a sus recursos de AWS KMS

Todos los recursos de AWS pertenecen a una cuenta de AWS y los permisos para crear o acceder alos recursos se definen en las políticas de permisos de dicha cuenta. Un administrador de cuenta puedeasociar políticas de permisos a identidades de IAM (es decir, usuarios, grupos y funciones); también hayotros servicios (incluido AWS KMS) que permiten asociar políticas de permisos a otros tipos a recursos.

Note

Un administrador de la cuenta (o usuario administrador) es un usuario con permisos deadministrador. Para obtener más información, consulte Creación de un grupo y usuarioadministrador en la Guía del usuario de IAM.

54

Page 63: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRecursos y operaciones de AWS KMS

Al administrar permisos, puede decidir quién obtiene los permisos, los recursos para los que obtienen lospermisos y las acciones específicas permitidas.

Temas• Recursos y operaciones de AWS KMS (p. 55)• Administrar el acceso a las CMK de AWS KMS (p. 55)• Especificar permisos en una política (p. 56)• Especificación de las condiciones de una política (p. 57)

Recursos y operaciones de AWS KMSEn AWS KMS, el recurso principal es una clave maestra del cliente (p. 3) (CMK). AWS KMS tambiénadmite un alias (p. 376), un recurso que es independiente de la CMK, pero proporciona un nombreconocido que puede asociar a una CMK. Algunas operaciones de AWS KMS le permiten utilizar un aliaspara identificar una CMK.

Cada instancia de una CMK o alias tiene un único nombre de recurso de Amazon (ARN) con un formatoestándar. En los recursos de AWS KMS, el nombre del servicio de AWS es kms.

• Clave maestra de cliente (CMK)

Formato de ARN:

arn:AWS partition name:AWS service name:AWS Region:AWS account ID:key/CMK keyID

Ejemplo de ARN:

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

• Alias

Formato de ARN:

arn:AWS partition name:AWS service name:AWS region:AWS account ID:alias/aliasname

Ejemplo de ARN:

arn:aws:kms:us-west-2:111122223333:alias/example-alias

AWS KMS proporciona un conjunto de operaciones de API para trabajar con sus recursos de AWS KMS.Para obtener más información acerca de la identificación de CMK en las operaciones de API de la Consolade administración de AWS y AWS KMS, consulte Identificadores de clave (KeyId) (p. 12). Para obtener unalista de las operaciones de AWS KMS, consulte la AWS Key Management Service API Reference.

Administrar el acceso a las CMK de AWS KMSLa forma principal de administrar el acceso a sus CMK de AWS KMS es a través de políticas. Las políticasson documentos que describen quién tiene acceso a qué. Las políticas asociadas a una identidad de IAMse denominan políticas basadas en identidad (o políticas de IAM) y las políticas asociadas a otros tipos derecursos se denominan políticas basadas en recursos. En AWS KMS, debe asociar las políticas basadasen recursos a las claves maestras de cliente (CMK). Se denominan políticas de claves. Todas las CMK deKMS tienen una política de claves.

Puede controlar el acceso a sus CMK de KMS de estas formas:

55

Page 64: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEspecificar permisos en una política

• Usar la política de claves: debe usar la política de claves para controlar el acceso a una CMK.– Puedeutilizar solo la política de claves para controlar el acceso, lo que significa que el ámbito completo deacceso a la CMK se define en un único documento (la política de claves).

• Usar las políticas de IAM en combinación con la política de claves: puede utilizar políticas de IAM encombinación con la política de claves para controlar el acceso a una CMK.– Este modo de controlar elacceso le permite administrar todos los permisos de las identidades de IAM en IAM.

• Usar las concesiones en combinación con la política de claves: puede utilizar concesiones encombinación con la política de claves para permitir el acceso a una CMK. – Con este modo de controlarel acceso puede permitir el acceso a la clave CMK en la política de claves y permitir que los usuariosdeleguen su acceso a otras personas.

Para la mayoría de los servicios de AWS, las políticas de IAM son el único modo de controlar el acceso alos recursos del servicio. Algunos servicios ofrecen políticas basadas en recursos u otros mecanismos decontrol de acceso para complementar las políticas de IAM, pero, por lo general, son opcionales y puedecontrolar el acceso a los recursos de estos servicios solo con las políticas de IAM. Sin embargo, esto nosucede con AWS KMS. Para permitir el acceso a una CMK de KMS, debe utilizar la política de claves, solao con políticas o concesiones de IAM. Las políticas de IAM no son suficientes para permitir el acceso a unaCMK, aunque puede usarlas en combinación con la política de claves de una CMK.

Para obtener más información sobre el uso de políticas de claves, consulte Usar políticas declaves (p. 57).

Para obtener más información sobre el uso de políticas de IAM, consulte Usar políticas de IAM (p. 76).

Para obtener más información sobre cómo usar concesiones, consulte Usar concesiones (p. 127).

Especificar permisos en una políticaAWS KMS proporciona un conjunto de operaciones de la API. Para controlar el acceso a estasoperaciones de la API, AWS KMS proporciona un conjunto de acciones que puede especificar enuna política. Para obtener más información, consulte Referencia de permisos de la API de AWSKMS (p. 86).

Una política es un documento que describe un conjunto de permisos. A continuación se indican loselementos básicos de una política.

• Recurso: en una política de IAM, se usa un nombre de recurso de Amazon (ARN) para especificar elrecurso al que se aplica la política. – Para obtener más información, consulte Recursos y operaciones deAWS KMS (p. 55). En una política de claves, se utiliza "*" para el recurso, lo que, de hecho, significa"esta CMK". Una política de claves se aplica solo a la CMK a la que está asociada.

• Acción: las acciones se usan para especificar las operaciones de la API que se desean permitir odenegar. – Por ejemplo, la acción kms:Encrypt corresponde a la operación Cifrar de AWS KMS.

• Efecto: el efecto se usa para especificar si se permiten o deniegan los permisos. – Si no permite elacceso de forma explícita a un recurso, el acceso se deniega implícitamente. También puede denegarexplícitamente el acceso a un recurso para asegurarse de que un usuario no pueda obtener acceso a él,aunque otra política permita el acceso.

• Entidad principal: en una política de IAM no se especifica una entidad principal de AWS. En su lugar,la identidad (el usuario, grupo o función de IAM) a la que se asocia la política es la entidad principalimplícita. En una política de claves, debe especificar la entidad principal (la identidad) a la que se aplicanlos permisos. Puede especificar cuentas (raíz) de AWS, usuarios de IAM, funciones de IAM y algunosservicios de AWS como entidades principales en una política de claves. Los grupos de IAM no sonentidades principales válidas en una política de claves.

Para obtener más información, consulte Usar políticas de claves (p. 57) y Usar políticas deIAM (p. 76).

56

Page 65: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEspecificación de las condiciones de una política

Especificación de las condiciones de una políticaPuede utilizar otro elemento denominado condición para especificar las circunstancias en las que entra envigor una política. Por ejemplo, es posible que desee que solo entre en vigor una declaración de políticadespués de una fecha específica. O puede que desee que una declaración de política controle el accesoen función de si existe un valor específico en la solicitud de la API.

Para especificar las condiciones, se usan claves de condición predefinidas. Por lo general, algunas clavesde condición se aplican a AWS y otras son específicas de AWS KMS. Para obtener más información,consulte Usar condiciones de política (p. 97).

Usar políticas de claves en AWS KMSLas políticas de claves son la forma principal de controlar el acceso a las claves principales de cliente(CMK) en AWS KMS. No solo son la única forma de controlar el acceso, sino que no puede controlarel acceso sin ellas. Para obtener más información, consulte Administrar el acceso a las CMK de AWSKMS (p. 55).

Temas

• Información general de las políticas de claves (p. 57)• Política de claves predeterminada (p. 58)• Política de claves de ejemplo (p. 66)

Información general de las políticas de clavesUna política de claves es un documento que utiliza JSON (JavaScript Object Notation, notación de objetosde JavaScript) para especificar los permisos. Puede trabajar con estos documentos JSON directamenteo bien se puede usar la Consola de administración de AWS para trabajar con ellos utilizando una interfazgráfica llamada la vista predeterminada. Para obtener más información sobre la vista predeterminada de laconsola para las políticas de claves, consulte Política de claves predeterminada (p. 58) y Cambiar unapolítica de claves (p. 72).

Un documento de política de claves no puede superar los 32 KB (32 768 bytes). Los documentos depolíticas de claves usan la misma sintaxis JSON que otras políticas de permisos de AWS y tienen lasiguiente estructura básica:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "statement identifier", "Effect": "effect", "Principal": "principal", "Action": "action", "Resource": "resource", "Condition": {"condition operator": {"condition context key": "context key value"}} }]}

Un documento de política de claves debe tener un elemento Version. Recomendamos configurar laversión en 2012-10-17 (la última versión). Además, un documento de políticas de claves debe tener unao varias declaraciones, y cada una de ellas se compone de un máximo de seis elementos:

• Sid – (opcional): es un identificador de instrucción, una cadena arbitraria que puede utilizar paraidentificar la instrucción.

57

Page 66: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves predeterminada

• Efecto: (obligatorio) el efecto especifica si desea permitir o denegar los permisos en la declaración depolítica.– El efecto debe ser Permitir o Denegar. Si no permite el acceso de forma explícita a una CMK,el acceso se deniega implícitamente. También puede denegar explícitamente el acceso a una CMK.Puede hacer esto para asegurarse de que un usuario no pueda tener acceso a ella, aunque otra políticale permita el acceso.

• Principal (obligatorio): la entidad principal es la identidad que obtiene los permisos especificados en lainstrucción de política.– Puede especificar cuentas (raíz) de AWS, usuarios de IAM, funciones de IAM yalgunos servicios de AWS como entidades principales en una política de claves. Los grupos de IAM noson entidades principales válidas en una política de claves.

Note

No establezca un asterisco (*) en la entidad principal en cualquier declaración de privacidad queofrezca permiso. Un asterisco ofrece permiso a las identidades de todas las cuentas de AWSpara utilizar el CMK, a no ser que otra declaración de privacidad lo deniegue explícitamente.Los usuarios de otras cuentas de AWS solo necesitan permisos de IAM en sus cuentas parausar el CMK.

• Acción: (obligatorio) las acciones especifican las operaciones de la API que se permitirán o denegarán.–Por ejemplo, la acción kms:Encrypt corresponde a la operación Cifrar de AWS KMS. Puede enumerarvarias acciones en una declaración de política. Para obtener más información, consulte Referencia depermisos de la API de AWS KMS (p. 86).

• Recurso: (obligatorio) en una política de claves, se utiliza "*" para el recurso, lo que significa “estaCMK”.– Una política de claves se aplica solo a la CMK a la que está asociada.

• Condición: (opcional) las condiciones especifican requisitos que deben cumplirse para que se apliqueuna política de claves.– Con las condiciones, AWS puede evaluar el contexto de una solicitud de la APIpara determinar si se aplica la declaración de política. Para obtener más información, consulte Usarcondiciones de política (p. 97).

Para obtener más información sobre la sintaxis y descripciones de la política de AWS, consulte Referenciade políticas de AWS IAM en la Guía del usuario de IAM.

Política de claves predeterminadaPolítica de claves predeterminada al crear una CMK mediante programación

Al crea una CMK mediante programación, es decir, con la API de AWS KMS (incluidos los SDK de AWSy las herramientas de línea de comandos), tiene la opción de proporcionar la política de claves a lanueva CMK.—— Si no proporcionan una, AWS KMS la crea automáticamente. Esta política de clavespredeterminada incluye una declaración de política que concede a la cuenta de AWS (usuario raíz)propietaria de la CMK acceso completo a ella y permite que las políticas de IAM de la cuenta concedanacceso a la CMK. Para obtener más información sobre esta declaración de política, consulte Permite elacceso a la cuenta de AWS y habilita las políticas de IAM (p. 59).

Política de claves predeterminada al crear una CMK con la Consola de administración de AWS

Al crear una CMK con la Consola de administración de AWS (p. 22) puede elegir los usuarios de IAM,las funciones de IAM y las cuentas de AWS a los que se ha concedido acceso a la CMK. Los usuarios,los roles y las cuentas que elija se agregan a una política de claves predeterminada que la consola creaautomáticamente. Con la consola, puede utilizar la vista predeterminada para ver o modificar esta políticade claves, o puede trabajar con el documento de políticas de claves directamente. La política de clavespredeterminada que ha creado la consola permite los siguientes permisos, cada uno de los cuales seexplica en la sección correspondiente.

Permissions (Permisos)

• Permite el acceso a la cuenta de AWS y habilita las políticas de IAM (p. 59)

58

Page 67: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves predeterminada

• Permite que los administradores de claves administren la CMK (p. 59)• Permite a los usuarios de claves utilizar la CMK (p. 62)

• Permite a los usuarios de claves utilizar una CMK para las operaciones criptográficas (p. 63)• Permite a los usuarios de claves utilizar la CMK con los servicios de AWS (p. 65)

Permite el acceso a la cuenta de AWS y habilita las políticas deIAMLa política de claves predeterminada ofrece a la cuenta de AWS (usuario raíz) que posee la CMK accesototal a la CMK, que lleva a cabo las dos siguientes tareas.

1. Reduce el riesgo de la CMK deje de poder administrarse.

No puede eliminar el usuario raíz de la cuenta de AWS, por lo que permitir el acceso a este usuarioreduce el riesgo de que la CMK deje de poder administrarse. Considere esta situación:1. Una política de claves de CMK solo permite que el usuario Alice de IAM administre la CMK. Esta

política de claves no permite el acceso al usuario raíz.2. Alguien elimina el usuario Alice de IAM.

En este caso, la CMK no se puede administrar y debe ponerse en contacto con AWS Support pararecuperar el acceso a la CMK. El usuario raíz no tiene acceso a la CMK, ya que puede obtener accesoa una CMK solo cuando la política de claves lo permita de forma explícita. Es diferente de la mayoríade los recursos de AWS que, de forma implícita, permite el acceso al usuario raíz.

2. Permite que las políticas de IAM permitan el acceso a la CMK.

Las políticas de IAM por sí mismas no son suficientes para permitir el acceso a una CMK. Sinembargo, puede utilizarlas junto con una política de claves de CMK si la política de claves lo permite.Al conceder a la cuenta de AWS acceso completo a la CMK se consigue esto; le permite usar políticasde IAM para conceder a los usuarios y las funciones de IAM de la cuenta acceso a la CMK. Noconcede a los usuarios o las funciones de IAM acceso la CMK, pero permite usar políticas de IAMpara hacerlo. Para obtener más información, consulte Administrar el acceso a las CMK de AWSKMS (p. 55).

En el siguiente ejemplo se muestra la declaración de política que permite el acceso a la cuenta de AWS y,por lo tanto, habilita las políticas de IAM.

{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*"}

Permite que los administradores de claves administren la CMKLa política de claves predeterminada creada por la consola le permite elegir usuarios y funciones de IAMde la cuenta y convertirlos en administradores de claves. Los administradores de claves tienen permisospara administrar la CMK, pero no para utilizar la CMK en operaciones criptográficas (p. 11).

Warning

Aunque los administradores de claves no tienen permisos para utilizar la CMK para cifrary descifrar datos, sí lo tienen para cambiar la política de claves. Esto significa que puedenconcederse cualquier permiso de AWS KMS.

59

Page 68: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves predeterminada

Puede añadir usuarios y funciones de IAM a la lista de administradores de claves al crear la CMK. Tambiénpuede editar la lista con la vista predeterminada de la consola para las políticas de claves, tal como semuestra en la siguiente imagen. La vista predeterminada de las políticas de claves está disponible en lapágina de detalles de clave de cada CMK.

Al utilizar la vista predeterminada de la consola para modificar la lista de administradores de claves, laconsola modifica el elemento Principal en una declaración concreta en la política de claves. Estadeclaración se denomina la declaración de los administradores de claves. En el siguiente ejemplo semuestra la declaración de los administradores de claves.

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KMSAdminUser", "arn:aws:iam::111122223333:role/KMSAdminRole" ]}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ],

60

Page 69: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves predeterminada

"Resource": "*"}

La declaración de los administradores de claves permite los permisos siguientes:

• kms:Create*–: permite a los administradores de claves crear alias y concesiones (p. 127) para estaCMK.

• kms:Describe*: permite a los administradores de claves obtener información sobre esta CMK, incluidossus identificadores, fecha de creación, estado y mucho más. Este permiso es necesario para ver lapágina de detalles de clave en la Consola de administración de AWS.

• kms:Enable* : permite a los administradores de claves establecer el estado de esta CMK en habilitado.Para las CMK simétricas, permite a los administradores de claves especificar la rotación anual delmaterial de claves de la CMK (p. 157).

• kms:List*: permite a los administradores de claves obtener las listas de alias, las concesiones, laspolíticas de claves y las etiquetas para esta CMK. Este permiso es necesario para ver la lista de CMK enla Consola de administración de AWS.

• kms:Put*: permite a los administradores de claves cambiar la política de claves de esta CMK.• kms:Update*: permite a los administradores de claves cambiar el destino de un alias a esta CMK y para

cambiar la descripción de esta CMK.• kms:Revoke*–: permite a los administradores de claves revocar los permisos de esta CMK que están

autorizados mediante una concesión (p. 127).• kms:Disable*: permite a los administradores de claves establecer el estado de clave de esta CMK en

deshabilitado. Para las CMK simétricas, permite a los administradores de claves deshabilitar la rotaciónanual del material de claves de esta CMK (p. 157).

• kms:Get*: permite a los administradores de claves obtener la política de claves de esta CMKy determinar si el material de claves de esta CMK debe rotar anualmente. Para las CMKsimétricas (p. 144) con material de claves importado (p. 162), también permite a los administradoresde claves descargar el token de importación y la clave pública que necesitan para importar material declaves en la CMK. Para las CMK asimétricas (p. 144), permite a los administradores clave descargar laclave pública (p. 50) de la CMK.

• kms:Delete*: permite a los administradores claves eliminar un alias que apunte a esta CMK. Para lasCMK simétricas con material de claves importado (p. 162), permite al administrador de claves eliminarel material de claves importado. Tenga en cuenta que este permiso no permite a los administradores declaves eliminar la CMK (p. 176).

• kms:ImportKeyMaterial–: permite a los administradores de claves importar material de claves en laCMK. Este permiso solo se incluye en la política de claves cuando crea una CMK sin material declaves (p. 165).

Note

Este permiso no se muestra en la declaración de política de ejemplo anterior.• kms:TagResource–: permite a los administradores de claves agregar y actualizar las etiquetas de esta

CMK.• kms:UntagResource–: permite a los administradores de claves eliminar etiquetas de esta CMK.• kms:ScheduleKeyDeletion–: permite a los administradores de claves eliminar esta CMK (p. 176).• kms:CancelKeyDeletion–: permite a los administradores de claves cancelar la eliminación pendiente de

esta CMK.

Los dos últimos permisos de la lista anterior, kms:ScheduleKeyDeletion ykms:CancelKeyDeletion, se incluyen de forma predeterminada al crear una CMK (p. 22). No obstante,puede eliminarlos de la política de claves al crear una CMK desmarcando la casilla situada junto a Allowkey administrators to delete this key. De la misma forma, puede utilizar la página de detalles de clave para

61

Page 70: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves predeterminada

eliminarlos de la política de claves predeterminada de las CMK existentes. Para obtener más información,consulte Editar claves (p. 43).

Muchos de estos permisos contienen el carácter comodín (*). Esto significa que si AWS KMSagrega nuevas operaciones de la API en el futuro, a los administradores de claves se les permitiráautomáticamente llevar a cabo todas las operaciones de la API nuevas que comienzan con Create,Describe, Enable, List, Put, Update, Revoke, Disable, Get o Delete.

Note

La declaración de administradores de claves descrita en la sección anterior es la última versión dela política de claves predeterminada. Para obtener más información sobre versiones anteriores dela política de claves predeterminada, consulte Actualizar las políticas de claves (p. 74).

Permite a los usuarios de claves utilizar la CMKLa política de claves predeterminada que la consola crea para las CMK simétricas le permite elegirusuarios y funciones de IAM de la cuenta y de las cuentas de AWS externas, y convertirlos en usuarios declaves.

La consola agrega dos declaraciones de política a la política de claves para los usuarios de claves.

• Uso de la CMK directamente (p. 63): la primera instrucción de política de claves concedea los usuarios de claves permiso para usar la CMK directamente para todas las operacionescriptográficas (p. 11) admitidas para ese tipo de CMK.

• Uso de la CMK con los servicios de AWS (p. 65): la segunda declaración de la política da a losusuarios permiso para permitir que los servicios de AWS integrados con AWS KMS utilicen la CMK en sunombre para proteger los recursos, como los buckets de Amazon Simple Storage Service (p. 289) y lasmesas de Amazon DynamoDB (p. 255).

Puede añadir usuarios de IAM, roles de IAM y cuentas de AWS externas, a la lista de usuarios de claves alcrear la CMK. También puede editar la lista con la vista predeterminada de la consola para las políticas declaves, tal como se muestra en la siguiente imagen. La vista predeterminada de las políticas de claves estádisponible en la página de detalles de clave. Para obtener más información acerca de cómo permitir a losusuarios de otras cuentas de AWS utilizar la CMK, consulte Permitir a los usuarios de otras cuentas utilizaruna CMK (p. 81).

62

Page 71: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves predeterminada

Al utilizar la vista predeterminada de la consola para cambiar la lista de usuarios de claves, la consolacambia el elemento Principal en dos declaraciones en la política de claves. Estas declaraciones sedenominan declaraciones de usuarios de claves. En los siguientes ejemplos se muestran las declaracionesde usuarios de claves para las CMK simétricas.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/CMKUser", "arn:aws:iam::111122223333:role/CMKRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"},{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/CMKUser", "arn:aws:iam::111122223333:role/CMKRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}}

Permite a los usuarios de claves utilizar una CMK para lasoperaciones criptográficasLos usuarios de claves tienen permiso para usar la CMK directamente en todas las operacionescriptográficas (p. 11) admitidas en la CMK. También pueden utilizar la operación DescribeKey para obtenerinformación detallada sobre la CMK en la consola de AWS KMS o mediante las operaciones de la API deAWS KMS.

De forma predeterminada, la consola de AWS KMS agrega declaraciones de usuarios de claves comolas de los ejemplos siguientes a la política de claves predeterminada. Debido a que son compatibles condiferentes operaciones de la API, las acciones en las declaraciones de la política para las CMK simétricas,CMK asimétricas para el cifrado de claves público y las CMK asimétricas para la firma y la verificación sonligeramente diferentes.

CMK simétricas

La consola agrega la siguiente declaración a la política clave para CMK simétricas.

{ "Sid": "Allow use of the key", "Effect": "Allow",

63

Page 72: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves predeterminada

"Principal": {"AWS": "arn:aws:iam::111122223333:user/CMKUser"}, "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*", "kms:ReEncrypt*" ], "Resource": "*"}

CMK asimétricas para el cifrado de claves públicas

La consola agrega la siguiente declaración a la política clave para CMK asimétricas con un uso declaves de Encrypt and decrypt (Cifrar y descifrar).

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/CMKUser"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey", "kms:GetPublicKey" ], "Resource": "*"}

CMK asimétricas para la firma y la verificación

La consola agrega la siguiente declaración a la política clave para CMK asimétricas con un uso declaves de Sign and verify (Firmar y verificar).

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/CMKUser"}, "Action": [ "kms:DescribeKey", "kms:GetPublicKey", "kms:Sign", "kms:Verify" ], "Resource": "*"}

Las acciones de estas declaraciones proporcionan a los usuarios de clave algunos de los siguientespermisos.

• kms:Encrypt: permite a los usuarios de claves cifrar los datos con esta CMK.• kms:Decrypt: permite a los usuarios de claves descifrar los datos con esta CMK.• kms:DescribeKey: permite a los usuarios de claves obtener información detallada sobre esta CMK,

incluidos sus identificadores, fecha de creación y el estado de la clave. También permite a los usuariosde claves mostrar detalles acerca de la CMK en la consola de AWS KMS.

• kms:GenerateDataKey*: permite a los usuarios de claves solicitar una clave de datos simétrica oun par de claves de datos asimétricas para las operaciones criptográficas del lado del cliente. Laconsola utiliza el carácter comodín * para representar el permiso para las siguientes operaciones

64

Page 73: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves predeterminada

de la API: GenerateDataKey, GenerateDataKeyWithoutPlaintext, GenerateDataKeyPair yGenerateDataKeyPairWithoutPlaintext.

• kms:GetPublicKey: permite a los usuarios de claves descargar la clave pública de la CMK asimétrica.Las partes con las que comparte esta clave pública pueden cifrar datos fuera de AWS KMS. Sinembargo, esos textos cifrados solo se pueden descifrar llamando a la operación Descifrar en AWS KMS.

• kms:ReEncrypt*: permite a los usuarios de claves solicitar volver a cifrar los datos que se habían cifradooriginalmente con esta CMK, o utilizar esta CMK para volver a cifrar los datos cifrados anteriormente. Laoperación ReEncrypt precisa acceso al destino y al origen de las CMK. Para lograr esto, puede permitirlos permisos kms:ReEncryptFrom en la CMK de origen y kms:ReEncryptTo en la CMK de destino.Sin embargo, para simplificar, la consola permite kms:ReEncrypt* (con el carácter comodín *) enambas CMK.

• kms:Sign: permite a los usuarios de claves firmar mensajes con esta CMK.• kms:Verify permite a los usuarios de claves verificar las firmas con esta CMK.

Permite a los usuarios de claves utilizar la CMK con los serviciosde AWSLa política de claves predeterminada en la consola también permite a los usuarios permitir que losservicios de AWS integrados con AWS KMS (p. 250) utilicen la CMK, en particular los servicios queutilizan concesiones.

Los usuarios de claves pueden conceder implícitamente estos permisos de servicios para utilizarla CMK de formas específicas y limitadas. Esta delegación implícita se lleva a cabo medianteconcesiones (p. 127). Estas concesiones permiten que el servicio de AWS integrado utilice la CMK paraproteger los recursos de la cuenta.

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/CMKUser"}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}}

Por ejemplo, los usuarios de claves pueden utilizar estos permisos en la CMK de las siguientes maneras.

• Utilizar esta CMK con Amazon Elastic Block Store (Amazon EBS) y Amazon Elastic Compute Cloud(Amazon EC2) para asociar un volumen de EBS cifrado a una instancia EC2. El usuario de clavesconcede implícitamente a Amazon EC2 permiso para utilizar la CMK con el fin de asociar el volumencifrado a la instancia. Para obtener más información, consulte Cómo Amazon Elastic Block Store(Amazon EBS) usa AWS KMS (p. 265).

• Utilice esta CMK con Amazon Redshift para lanzar un clúster cifrado. El usuario de claves concedeimplícitamente a Amazon Redshift permiso para utilizar la CMK con el fin de lanzar el clúster cifrado ycrear instantáneas cifradas. Para obtener más información, consulte Cómo Amazon Redshift usa AWSKMS (p. 276).

• Utilice esta CMK con otros servicios de AWS integrados con AWS KMS (p. 250), en particular losservicios que utilizan concesiones, para crear, administrar o usar recursos cifrados con esos servicios.

La clave de condición kms:GrantIsForAWSResource (p. 116) permite a los usuarios de claves crear yadministrar concesiones, pero solo cuando el beneficiario sea un servicio de AWS que utiliza concesiones.

65

Page 74: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves de ejemplo

El permiso permite a los usuarios de claves utilizar todos los servicios integrados que utilizan concesiones.Sin embargo, puede crear una política de clave personalizada que permita que determinados servicios deAWS utilicen la CMK en nombre del usuario. Para obtener más información, consulte la clave de condiciónkms:ViaService (p. 122).

Los usuarios de claves necesitan estos permisos de concesiones para utilizar la CMK con los serviciosintegrados, pero estos permisos no son suficientes. Los usuarios de claves también necesitan permisopara utilizar los servicios integrados. Para obtener información sobre cómo conceder a los usuarios accesoa un servicio de AWS que esté integrado con AWS KMS, consulte la documentación del servicio integrado.

Política de claves de ejemploEn el siguiente ejemplo se muestra una política de claves completa para una CMK simétrica. Estapolítica de claves combina los ejemplos de declaraciones de política de la sección política de clavespredeterminada (p. 58) anterior en una sola política de claves que lleva a cabo lo siguiente:

• Concede a la cuenta de AWS (usuario raíz) 111122223333 acceso total a la CMK y, por lo tanto, habilitalas políticas de IAM en la cuenta para permitir el acceso a la CMK.

• Permite que el usuario KMSAdminUser de IAM y la función KMSAdminRole de IAM administren la CMK.• Permite que el usuario CMKUser de IAM, el rol CMKRole de IAM y la cuenta 444455556666 de AWS

usen la CMK.

{ "Version": "2012-10-17", "Id": "key-consolepolicy-2", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/KMSAdminUser", "arn:aws:iam::111122223333:role/KMSAdminRole" ]}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }, { "Sid": "Allow use of the key",

66

Page 75: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves de ejemplo

"Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/CMKUser", "arn:aws:iam::111122223333:role/CMKRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }, { "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/CMKUser", "arn:aws:iam::111122223333:role/CMKRole", "arn:aws:iam::444455556666:root" ]}, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": "true"}} } ]}

En la siguiente imagen se muestra un ejemplo del aspecto de esta política de claves cuando se consultacon la vista predeterminada de la consola para las políticas de claves.

67

Page 76: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPolítica de claves de ejemplo

68

Page 77: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar una política de claves

Consultar una política de clavesPuede ver la política de claves para una CMK administrada por el cliente (p. 4) de AWS KMS o una CMKadministrada por AWS (p. 4) en su cuenta con la Consola de administración de AWS o la operaciónGetKeyPolicy en la API de AWS KMS. No puede utilizar estas técnicas para ver la política de claves deuna CMK en una cuenta de AWS distinta.

Para obtener más información sobre las políticas de claves de AWS KMS, consulte Usar políticas declaves en AWS KMS (p. 57). Para obtener información acerca de cómo determinar qué usuarios y rolestienen acceso a un CMK, consulte the section called “Determinar el acceso” (p. 131).

Temas• Consultar una política de claves (console) (p. 69)• Consultar una política de claves (AWS KMS API) (p. 71)

Consultar una política de claves (console)Los usuarios autorizados pueden ver la política de claves para una CMK administrada por AWS (p. 4) ouna CMK administrada por el cliente (p. 4) en la pestaña Key policy (Política de claves) de la Consola deadministración de AWS.

Para ver la política de claves de una CMK en la Consola de administración de AWS, debe disponer de lospermisos kms:ListAliases, kms:DescribeKey y kms:GetKeyPolicy.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. Si desea ver las claves de su cuenta que AWS crea y administra por usted, en el panel de navegación,elija AWS managed keys (Claves administradas por AWS). Si desea ver las claves de su cuentaque usted crea y administra, en el panel de navegación, elija Customer managed keys (Clavesadministradas por el cliente).

4. En la lista de CMK, elija el alias o ID de clave de la CMK que desea examinar.5. Seleccione la pestaña Key policy (Política de claves).

En la sección Key policy (Política de claves), es posible que vea el documento de política de claves.Esta es la vista de política. En las instrucciones de políticas de claves, puede ver las entidadesprincipales a las que la política de claves ha dado acceso a la CMK y las acciones que puedenrealizar.

En el ejemplo siguiente se muestra la vista de política de la política de clavespredeterminada (p. 58).

69

Page 78: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar una política de claves

O bien, si ha creado la CMK en la Consola de administración de AWS, verá la vista predeterminadacon secciones para Key administrators (Administradores de claves), Key deletion (Eliminación declaves) y Key Users (Usuarios de claves). Para ver el documento de políticas de claves, elija Switch topolicy view (Cambiar a la vista de política).

En el ejemplo siguiente se muestra la vista predeterminada de la política de clavespredeterminada (p. 58).

70

Page 79: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar una política de claves

Consultar una política de claves (AWS KMS API)Para obtener la política de claves para una CMK administrada por AWS (p. 4) o una CMK administrada porel cliente (p. 4) en su cuenta de AWS, utilice la operación GetKeyPolicy en la API de AWS KMS. No puedeutilizar esta operación para ver una política de claves en una cuenta distinta.

En el ejemplo siguiente se utiliza el comando get-key-policy de la AWS Command Line Interface (AWSCLI), pero puede utilizar cualquier SDK de AWS para realizar esta solicitud.

71

Page 80: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCambiar una política de claves

Tenga en cuenta que el parámetro PolicyName es obligatorio aunque default sea su único valor válido.Además, este comando solicita la salida en texto, en lugar de en JSON, para que sea más fácil de ver.

Antes de ejecutar este comando, reemplace el ID de clave de ejemplo por uno válido de su cuenta.

$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text

La respuesta debe ser similar a la siguiente, que devuelve la política de claves predeterminada (p. 58).

{ "Version" : "2012-10-17", "Id" : "key-consolepolicy-3", "Statement" : [ { "Sid" : "Enable IAM User Permissions", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ]}

Cambiar una política de clavesPuede cambiar la política de claves de una clave maestra de cliente (CMK) en su cuenta de AWS mediantela Consola de administración de AWS o la operación PutKeyPolicy. No puede utilizar estas técnicas paracambiar la política de claves de una CMK en una cuenta de AWS distinta.

Cuando cambie una política de claves, tenga en cuenta las siguientes reglas:

• Puede ver la política de claves para una CMK administrada por AWS (p. 4) o una CMK administradapor el cliente (p. 4), pero solo puede cambiar la política de claves para una CMK administrada por elcliente. El servicio de AWS que creo la CMK en su cuenta administra y crea las políticas de las CMKadministradas por AWS.

• Puede añadir o eliminar usuarios de IAM, funciones de IAM y cuentas de AWS (usuarios raíz) en lapolítica de claves y cambiar las acciones que se permiten o deniegan para dichas entidades principales.Para obtener más información sobre las formas de especificar entidades principales y permisos en unapolítica de claves, consulte Usar políticas de claves (p. 57).

• No puede añadir grupos de IAM a una política de claves, aunque puede agregar varios usuarios deIAM. Para obtener más información, consulte Permitir que varios usuarios de IAM accedan a unaCMK (p. 74).

• Si añade cuentas de AWS externas a una política de claves, también debe usar las políticas de IAM enlas cuentas externas para conceder permisos a los usuarios, los grupos o los roles de IAM en dichascuentas. Para obtener más información, consulte Permitir a los usuarios de otras cuentas utilizar unaCMK (p. 81).

• El documento de política de claves resultante no puede superar los 32 KB (32 768 bytes).

Temas• Cómo cambiar una política de claves (p. 73)• Permitir que varios usuarios de IAM accedan a una CMK (p. 74)

72

Page 81: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCambiar una política de claves

Cómo cambiar una política de clavesPuede cambiar una política de claves de tres formas diferentes, cada una de las cuales se explica en lassiguientes secciones.

Temas• Usar la vista predeterminada de la Consola de administración de AWS (p. 73)• Usar la vista de políticas de la Consola de administración de AWS (p. 73)• Uso de la API AWS KMS (p. 73)

Usar la vista predeterminada de la Consola de administración de AWSPuede utilizar la consola para cambiar una política de claves con una interfaz gráfica denominada la vistapredeterminada.

Si estos pasos no se corresponden con lo que aparece en la consola, puede significar que la consola noha creado esta política de claves. O bien que la política de claves se ha modificado de un modo que noadmite la vista predeterminada de la consola. En ese caso, siga los pasos de Usar la vista de políticas dela Consola de administración de AWS (p. 73) o Uso de la API AWS KMS (p. 73).

1. Vea la política de claves para una CMK administrada por el cliente tal y como se indica en Consultaruna política de claves (console) (p. 69). (No puede cambiar las políticas de claves de las clavesadministradas por AWS).

2. Decida lo que desea cambiar.

• Para agregar o eliminar administradores de claves (p. 59) y para permitir o evitar que losadministradores de claves eliminen la CMK (p. 176), utilice los controles de la sección Keyadministrators (Administradores de claves) de la página. Los administradores de claves administranla CMK, incluida su activación y desactivación, estableciendo la política de claves y habilitando larotación de claves (p. 157).

• Para agregar o eliminar usuarios de claves (p. 62) y para permitir o no permitir que las cuentasde AWS externas usen la CMK, utilice los controles de la sección Key users (Usuarios de claves) dela página. Los usuarios de claves pueden usar la CMK en operaciones criptográficas (p. 11), comocifrar, descifrar, volver a cifrar y generar claves de datos.

Usar la vista de políticas de la Consola de administración de AWSPuede utilizar la consola para cambiar un documento de política de claves con la vista de políticas de laconsola.

1. Vea la política de claves para una CMK administrada por el cliente tal y como se indica en Consultaruna política de claves (console) (p. 69). (No puede cambiar las políticas de claves de las clavesadministradas por AWS).

2. En la sección Key Policy (Política de claves), elija Switch to policy view (Cambiar a la vista de política).3. Edite el documento de políticas de claves y, a continuación, elija Save changes (Guardar cambios).

Uso de la API AWS KMSPuede utilizar la operación PutKeyPolicy para cambiar la política de claves de una CMK en su cuenta deAWS. No puede utilizar esta API en una CMK en una cuenta de AWS diferente.

1. Utilice la operación GetKeyPolicy para obtener el documento de la política de claves existente y, acontinuación, guarde el documento de política de claves en un archivo. Para obtener un código deejemplo en varios lenguajes de programación, consulte Obtener una política de claves (p. 361).

73

Page 82: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizar las políticas de claves

2. Abra el documento de políticas de claves en el editor de textos que prefiera, edítelo y, a continuación,guarde el archivo.

3. Utilice la operación PutKeyPolicy para aplicar el documento de políticas de claves actualizado a laCMK. Para obtener un código de ejemplo en varios lenguajes de programación, consulte Configuraruna política de claves (p. 363).

Para obtener un ejemplo de cómo copiar una política de claves de una CMK a otra, consulte el ejemplo deGetKeyPolicy en la AWS CLI Command Reference.

Permitir que varios usuarios de IAM accedan a una CMKLos grupos de IAM no son entidades principales válidas en una política de claves. Para permitir que variosusuarios de IAM obtengan acceso a una CMK, realice una de las acciones siguientes:

• Agregue cada usuario de IAM a la política de claves. Este enfoque requiere actualizar la política declaves cada vez que cambie la lista de usuarios autorizados.

• Asegúrese de que la política de claves incluye la declaración que habilita a las políticas de IAM parapermitir el acceso a la CMK (p. 59). A continuación, cree una política de IAM que permita el accesoa la CMK y, a continuación, asocie dicha política a un grupo de IAM que contenga los usuarios deIAM autorizados. Con este enfoque, no es necesario cambiar ninguna política cuando cambie la listade usuarios autorizados. En su lugar, solo debe agregar o eliminar dichos usuarios del grupo de IAMapropiado.

Para obtener más información sobre cómo funcionan las políticas de claves de AWS KMS y las políticas deIAM de forma conjunta, consulte Solución de problemas de acceso a las claves (p. 136).

Actualizar las políticas de clavesAl usar la Consola de administración de AWS para crear una clave maestra de cliente (CMK) (p. 22),puede elegir los usuarios de IAM, las funciones de IAM y las cuentas de AWS que desea quetengan acceso a la CMK. Estos usuarios, roles y cuentas se agregan a una política de clavespredeterminada (p. 58) que controla el acceso a la CMK. En ocasiones, se actualiza la política declaves predeterminada de las nuevas CMK. Normalmente, estas actualizaciones corresponden a nuevascaracterísticas de AWS KMS.

Al crear una nueva CMK, la última versión de la política de claves predeterminada se agrega a la CMK.No obstante, las CMK existentes siguen usando la política de claves existentes—, es decir, las nuevasversiones de la política de claves predeterminada no se aplican automáticamente a las CMK existentes. Ensu lugar, la consola le avisa de que hay disponible una versión más reciente y le pide que la actualice.

Note

La consola solo le avisa cuando usa la política de claves predeterminada que estaba aplicada alcrear la CMK. Si ha modificado manualmente el documento de políticas de claves con la vista depolítica de la consola o la operación PutKeyPolicy, la consola no le avisa cuando hay disponiblesnuevos permisos.

Para obtener información sobre los permisos que se agregan a una política de claves al actualizarla,consulte Cambios en la política de claves predeterminada (p. 75). La actualización a la última versiónde la política de claves no debe provocar problemas porque solo agrega permisos, no elimina ninguno.Le recomendamos que mantenga actualizadas las políticas de claves a menos que tenga un motivoespecífico para no hacerlo.

74

Page 83: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizar las políticas de claves

Determinar si hay disponible una versión más reciente de lapolítica de claves predeterminadaPuede utilizar la Consola de administración de AWS para saber si hay una versión más reciente de lapolítica de claves predeterminada.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Elija el alias o el ID de clave de una CMK que use la política de claves predeterminada.5. Desplácese hacia abajo para acceder a la sección Key policy (Política de claves) de la página.

Cuando hay disponible una versión más reciente de la política de claves predeterminada, la consolamostrará la siguiente alerta.

Hay disponible una versión más reciente de la política de claves predeterminada. Obtenga una vistaprevia y actualice a la nueva política de claves.

Actualizar a la última versión de la política de clavespredeterminadaCuando hay disponible una versión más reciente de la política de claves predeterminada, se muestra lasiguiente alerta en la sección Key Policy (Política de claves) de la página de la consola.

Hay disponible una versión más reciente de la política de claves predeterminada. Obtenga una vista previay actualice a la nueva política de claves.

Para actualizar a la última versión de la política de claves predeterminada

1. Si ve un aviso que anuncia que hay una versión nueva de la política de claves predeterminada, elijaPreview and upgrade to the new key policy (Vista previa y actualización a la nueva política de claves).

2. Busque en el documento de políticas de claves la última versión de la política de clavespredeterminada. Para obtener más información sobre la diferencia entre la última versión y lasversiones anteriores, consulte Cambios en la política de claves predeterminada (p. 75). Después derevisar la política de claves, elija Upgrade key policy.

Cambios en la política de claves predeterminadaEn la versión actual de la política de claves predeterminada (p. 58), la declaración de losadministradores de claves contiene más permisos que en versiones anteriores. Estos permisos adicionalescorresponden a las nuevas características de AWS KMS.

Es posible que las CMK que usen una versión anterior de la política de claves predeterminada no tenganlos permisos siguientes. Al actualizar a la última versión de la política de claves predeterminada, seagregan a la declaración de administradores de claves.

kms:TagResource y kms:UntagResource

Estos permisos permiten a los administradores de claves agregar, actualizar y eliminar etiquetas de laCMK. Se agregaron a la política de claves predeterminada cuando AWS KMS publicó la característicade etiquetado (p. 47).

75

Page 84: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar políticas de IAM

kms:ScheduleKeyDeletion y kms:CancelKeyDeletion

Estos permisos permiten a los administradores de claves programar y cancelar la eliminación de laCMK. Se agregaron a la política de claves predeterminada cuando AWS KMS publicó la característicade eliminación de CMK (p. 176).

Note

Los permisos kms:ScheduleKeyDeletion y kms:CancelKeyDeletion se incluyende forma predeterminada al crear una CMK (p. 22) y al actualizar a la última versión dela política de claves predeterminada. No obstante, puede eliminarlos de la política declaves predeterminada al crear una CMK desmarcando la casilla situada junto a Allow keyadministrators to delete this key. De la misma forma, puede utilizar la página de detalles declave para eliminarlos de la política de claves predeterminada de las CMK existentes. Estoincluye las CMK cuya política de claves ha actualizado a la versión más reciente.

Usar políticas de IAM con AWS KMSPuede usar políticas de IAM junto con políticas de claves (p. 57) para controlar el acceso a sus clavesmaestras del cliente (CMK) en AWS KMS.

Todas las CMK deben tener una política de claves. Las políticas IAM son opcionales. Para utilizar unapolítica de IAM para controlar el acceso a una CMK, la política de claves de la CMK debe concederpermiso a la cuenta para usar políticas de IAM. En concreto, la política de claves debe incluir la instrucciónde política que habilita las políticas de IAM (p. 59).

IAM pueden controlar el acceso a cualquier operación de AWS KMS. A diferencia de las políticas declaves, las políticas de IAM pueden controlar el acceso a varias CMK y proporcionar permisos paralas operaciones de varios servicios de AWS relacionados. Sin embargo, las políticas de IAM sonparticularmente útiles para controlar el acceso a operaciones, como CreateKey, que no pueden controlarsemediante una política de claves porque no implican ninguna CMK en particular.

Note

En esta sección se explica cómo utilizar las políticas de IAM para controlar el acceso a lasoperaciones de AWS KMS. Para obtener información general sobre IAM, consulte la Guía delusuario de IAM.

Temas• Información general de políticas de IAM (p. 76)• Especificar las CMK en instrucciones de políticas de IAM (p. 77)• Permisos necesarios para usar la consola de AWS KMS (p. 78)• Políticas administradas (predefinidas) por AWS para AWS KMS (p. 78)• Ejemplos de políticas administradas por el cliente (p. 79)

Información general de políticas de IAMPuede las políticas de IAM de las siguientes formas:

• Asociar una política de permisos a un usuario o un grupo: puede asociar una política que permita a unusuario o grupo de usuarios de IAM llamar a operaciones de AWS KMS.

• Asociar una política de permisos a una función para federación o permisos en varias cuentas: puedeasociar una política de IAM a una función de IAM para habilitar la identidad federada, permitir lospermisos en varias cuentas o conceder permisos a las aplicaciones que se ejecutan en instancias EC2.Para obtener más información sobre los diferentes casos de uso para los roles de IAM, consulte Rolesde IAM en la Guía del usuario de IAM.

76

Page 85: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEspecificar las CMK en instrucciones de políticas de IAM

En el siguiente ejemplo se muestra una política de IAM con permisos de AWS KMS. Esta política permite alas identidades de IAM a las que está asociada obtener todas las CMK y alias.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" }}

Al igual que todas las políticas de IAM, esta política no tiene ningún elemento Principal. Cuando seasocia una política de IAM a un usuario de IAM o rol de IAM, el usuario o el usuario que ha asumido el rolobtiene los permisos especificados en la política.

Para ver una tabla con todas las acciones de API de AWS KMS y los recursos a los que se aplican,consulte la Referencia de permisos de la API de AWS KMS (p. 86).

Especificar las CMK en instrucciones de políticas deIAMAlgunas políticas de IAM controlan el acceso a operaciones de AWS KMS, como CreateKey, que noimplican una clave maestra de cliente (CMK) concreta. Sin embargo, puede especificar una o más CMKcomo recurso en una instrucción de política de IAM.

Note

Para utilizar una política de IAM para controlar el acceso a una CMK, la política de claves de laCMK debe conceder permiso a la cuenta para usar políticas de IAM. En concreto, la política declaves debe incluir la instrucción de política que habilita las políticas de IAM (p. 59).

Para especificar CMK concretas en una política de IAM, utilice el ARN de clave (p. 13) de la CMK, es decir,el nombre de recurso de Amazon (ARN) de la CMK. No puede utilizar un ID de clave (p. 13), unnombre dealias (p. 13) ni un ARN de alias (p. 13) para identificar una CMK en una instrucción de política de IAM.

Por ejemplo, la siguiente instrucción de política de IAM permite a la entidad principal llamar a lasoperaciones DescribeKey, GenerateDataKey y Decrypt en las CMK incluidas en el elemento Resource dela instrucción de política.

{ "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", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ] }}

77

Page 86: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPermisos necesarios para usar la consola de AWS KMS

Para especificar varias CMK, utilice un carácter comodín (*). Por ejemplo, la siguiente instrucción depolítica permite a la entidad principal llamar a las operaciones especificadas en cualquier CMK de la cuentade ejemplo.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ ""arn:aws:kms:*:111122223333:key/*"" ] }}

Para determinar si una operación de AWS KMS implica una CMK concreta, busque el valor CMK en lacolumna Resources (Recursos) de la tabla en the section called “Referencia de permisos de la API deAWS KMS” (p. 86).

Permisos necesarios para usar la consola de AWSKMSPara trabajar con la consola de AWS KMS, los usuarios deben tener un conjunto mínimo de permisos queles permitan trabajar con los recursos de AWS KMS en su cuenta de AWS. Además de estos permisos deAWS KMS, los usuarios también deben disponer de permisos para enumerar usuarios y funciones de IAM.Si crea una política de IAM que sea más restrictiva que el mínimo de permisos necesarios, la consola deAWS KMS no funcionará del modo esperado para los usuarios con esa política de IAM.

Para conocer los permisos mínimos necesarios para permitir a un usuario acceso de solo lectura a laconsola de AWS KMS, consulte Permitir a un usuario acceso de solo lectura a todas las CMK a través dela consola de AWS KMS (p. 79).

Para permitir que los usuarios trabajen con la consola de AWS KMS para crear y administrar las CMK,asocie la política administrada AWSKeyManagementServicePowerUser al usuario, tal como se describe enla sección siguiente.

No necesita conceder los permisos de consola mínimos para los usuarios que trabajan con la API de AWSKMS mediante los SDK de AWS o las herramientas de línea de comandos, pero sí necesita conceder aestos usuarios permiso para usar la API. Para obtener más información, consulte Referencia de permisosde la API de AWS KMS (p. 86).

Políticas administradas (predefinidas) por AWS paraAWS KMSAWS aborda muchos casos de uso comunes proporcionando políticas de IAM independientes creadas yadministradas por AWS. Se denominan políticas administradas por AWS. Las políticas administradas porAWS proporcionan los permisos necesarios para casos de uso comunes, por lo que no tiene que investigarlos permisos que se necesitan. Para obtener más información, consulte Políticas administradas de AWS enla Guía del usuario de IAM.

AWS proporciona una política administrada por AWS para AWS KMS denominadaAWSKeyManagementServicePowerUser. Esta política permite los siguientes permisos:

78

Page 87: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEjemplos de políticas administradas por el cliente

• Permite a los usuarios enumerar todas las CMK y los alias.• Permite a los usuarios recuperar información sobre cada CMK, incluidos sus identificadores, fecha de

creación, estado de rotación, política de claves y mucho más.• Permite a los usuarios crear CMK que pueden administrar o utilizar. Cuando los usuarios crean una

CMK, pueden establecer permisos en la política de claves (p. 57) de la CMK. Esto significa que losusuarios pueden crear CMK con los permisos que deseen, incluido el permiso para administrar o utilizarla CMK. La política AWSKeyManagementServicePowerUser no permite que los usuarios administren outilicen cualquier otra CMK, solo las que creen.

Ejemplos de políticas administradas por el clienteEn esta sección, encontrará ejemplos de políticas de IAM que conceden permisos para varias acciones deAWS KMS.

Important

Algunos de los permisos de las siguientes políticas solo se permiten cuando la política de clavesde la CMK también los permite. Para obtener más información, consulte Referencia de permisosde la API de AWS KMS (p. 86).

Ejemplos• Permitir a un usuario acceso de solo lectura a todas las CMK a través de la consola de AWS

KMS (p. 79)• Permitir a un usuario cifrar y descifrar con cualquier CMK en una cuenta de AWS específica (p. 80)• Permitir a un usuario cifrar y descifrar con cualquier CMK en una cuenta y región de AWS

específicas (p. 80)• Permitir a un usuario cifrar y descifrar con CMK específicas (p. 80)• Impedir a un usuario deshabilitar o eliminar cualquier CMK (p. 81)

Permitir a un usuario acceso de solo lectura a todas las CMK através de la consola de AWS KMSLa siguiente política permite a los usuarios acceso de solo lectura a la consola de AWS KMS. Es decir, losusuarios pueden utilizar la consola para ver todas las CMK, pero no pueden realizar cambios en ningunaCMK ni crear otras.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GetKeyPolicy", "kms:GetKeyRotationStatus", "kms:GetPublicKey", "kms:ListKeys", "kms:ListAliases", "kms:ListKeyPolicies", "iam:ListUsers", "iam:ListRoles" ], "Resource": "*" }}

79

Page 88: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEjemplos de políticas administradas por el cliente

Permitir a un usuario cifrar y descifrar con cualquier CMK en unacuenta de AWS específicaLa siguiente política permite a un usuario solicitar correctamente que AWS KMS cifre y descifre datos concualquier CMK de la cuenta 111122223333 de AWS.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:*:111122223333:key/*" ] }}

Permitir a un usuario cifrar y descifrar con cualquier CMK en unacuenta y región de AWS específicasLa siguiente política permite a un usuario solicitar correctamente que AWS KMS cifre y descifre datos concualquier CMK de la cuenta 111122223333 de AWS en la región EE.UU. Oeste (Oregón).

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/*" ] }}

Permitir a un usuario cifrar y descifrar con CMK específicasLa siguiente política permite a un usuario cifrar y descifrar datos con las dos CMK especificadas en elelemento Resource. Cuando especifique una CMK en una instrucción de política de IAM (p. 77), utiliceel ARN de clave de la CMK.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ]

80

Page 89: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPermitir el acceso entre cuentas a una CMK

}}

Impedir a un usuario deshabilitar o eliminar cualquier CMKLa siguiente política impide que un usuario deshabilite o elimine cualquier CMK, aunque otra política deIAM o política de claves conceda estos permisos. Una política que deniega de forma explícita los permisosanula todas las demás políticas, incluso aquellas que hayan permitido explícitamente los mismos permisos.Para obtener más información, consulte Determinación de si una solicitud está permitida o denegada en laGuía del usuario de IAM.

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:DisableKey", "kms:ScheduleKeyDeletion" ], "Resource": "*" }}

Permitir a los usuarios de otras cuentas utilizar unaCMK

Puede permitir a los usuarios o roles de IAM en una cuenta de AWS utilizar una clave maestra de cliente(CMK) de otra cuenta de AWS. Puede añadir estos permisos al crear la CMK o cambiar los permisos deuna CMK existente.

Para conceder a permiso para utilizar una CMK a los usuarios y roles de otra cuenta, debe utilizar dos tiposdiferentes de políticas:

• La política de claves de la CMK debe conceder a la cuenta externa (o a los usuarios y roles de la cuentaexterna) permiso para utilizar la CMK. La política de claves está en la cuenta propietaria de la CMK.

• Debe asociar políticas de IAM a los usuarios y roles de IAM de la cuenta externa. Estas políticas de IAMdelegan los permisos que se especifican en la política de claves.

En este caso, la política de claves determina quién puede tener acceso a la CMK. La política IAMdetermina quién tiene acceso a la CMK. Ni la política de claves ni la política de IAM son suficientes —debecambiar ambas.

Para editar la política de claves, puede utilizar la vista de políticas (p. 73) en Consola de administraciónde AWS o utilizar las operaciones CreateKey o PutKeyPolicy . Para obtener ayuda sobre la configuraciónde la política de claves al crear una CMK, consulte Crear CMK que otras cuentas pueden utilizar (p. 84).

Para obtener ayuda con la edición de políticas IAM, consulte Usar políticas de IAM con AWSKMS (p. 76).

Para ver un ejemplo que muestra cómo la política de claves y las políticas IAM se combinan para permitirel uso de una CMK en una cuenta diferente, consulte Ejemplo 2: El usuario asume un rol con permiso parautilizar una CMK en una cuenta de AWS diferente (p. 139).

Temas

81

Page 90: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPaso 1: Agregar una instrucción depolítica de claves en la cuenta local

• Paso 1: Agregar una instrucción de política de claves en la cuenta local (p. 82)• Paso 2: Agregar políticas de IAM a la cuenta externa (p. 83)• Crear CMK que otras cuentas pueden utilizar (p. 84)• Usar CMK externas con servicios de AWS (p. 86)

Paso 1: Agregar una instrucción de política de clavesen la cuenta localLa política de claves de una CMK es el principal determinante de quién puede obtener acceso a la CMKy qué operaciones puede realizar. La política de claves siempre se define en la cuenta propietaria de laCMK. A diferencia de las políticas de IAM, las políticas de claves no especifican ningún recurso. El recursoes la CMK asociada a la política de claves.

Para conceder a una cuenta externa permiso para utilizar la CMK, añada una instrucción a la política declaves que especifique la cuenta externa. En el elemento Principal de la política de claves, escriba elnombre de recurso de Amazon (ARN) de la cuenta externa.

Al especificar una cuenta externa en una política de claves, los administradores de IAM de la cuentaexterna pueden utilizar políticas de IAM para delegar esos permisos a cualquier usuario y rol de la cuentaexterna. También pueden decidir qué acciones especificadas en la política de claves pueden realizar losusuarios y roles.

Por ejemplo, suponga que desea permitir que la cuenta 444455556666 utilice una CMK simétrica en lacuenta 111122223333. Para ello, añada una instrucción de política como la del siguiente ejemplo a lapolítica de claves de la CMK de la cuenta 111122223333. Esta instrucción de política concede a la cuentaexterna, 444455556666, permiso para utilizar la CMK en operaciones criptográficas para CMK simétricas.

{ "Sid": "Allow an external account to use this CMK", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"}

En lugar de conceder permiso a la cuenta externa, puede especificar usuarios y roles externos concretosen la política de claves. Sin embargo, esos usuarios y roles de no pueden utilizar la CMK hasta que losadministradores de IAM de la cuenta externa asocien las políticas de IAM adecuadas a sus identidades.Las políticas de IAM pueden conceder permiso a todos o a un subconjunto de los usuarios y roles externosque se especifican en la política de claves. Y pueden permitir todas o un subconjunto de las accionesespecificadas en la política de claves.

Especificar identidades en una política de claves restringe los permisos que los administradores de IAMde la cuenta externa pueden proporcionar. Sin embargo, hace que la administración de políticas con doscuentas sea más compleja. Por ejemplo, suponga que necesita añadir un usuario o rol. Debe añadir dichaidentidad a la política de claves en la cuenta propietaria de la CMK y crear políticas de IAM en la cuenta dela identidad.

82

Page 91: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPaso 2: Agregar políticas de IAM a la cuenta externa

Para especificar usuarios o roles externos concretos en una política de claves, en el elemento Principal,escriba el nombre de recurso de Amazon (ARN) de un usuario o rol en la cuenta externa.

Por ejemplo, la siguiente instrucción de política de claves de ejemplo permite a ExampleRole yExampleUser de la cuenta 444455556666 utilizar una CMK en la cuenta 111122223333. Esta instrucciónde política de claves concede a la cuenta externa, 444455556666, permiso para utilizar la CMK enoperaciones criptográficas para CMK simétricas.

{ "Sid": "Allow an external account to use this CMK", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole" "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"}

Note

No establezca un asterisco (*) en la entidad principal en cualquier declaración de privacidad queofrezca permiso. Un asterisco ofrece permiso a las identidades de todas las cuentas de AWSpara utilizar el CMK, a no ser que otra declaración de privacidad lo deniegue explícitamente. Losusuarios de otras cuentas de AWS solo necesitan permisos de IAM en sus cuentas para usar elCMK.

También debe decidir qué permisos desea conceder a la cuenta externa. Para obtener una listade permisos en las CMK, consulte Permisos de la API de AWS KMS: referencia de recursos yacciones (p. 86).

Puede conceder a la cuenta externa permiso para utilizar la CMK en operaciones criptográficas (p. 11) yutilizar la CMK con servicios de AWS integrados con AWS KMS. Para ello, utilice la sección Key Users(Usuarios claves) de la Consola de administración de AWS. Para obtener más información, consulte CrearCMK que otras cuentas pueden utilizar (p. 84).

Para especificar otros permisos en las políticas de claves, edite el documento de políticas de claves. Porejemplo, es posible que desee conceder a los usuarios permiso para descifrar pero no cifrar, o permisopara ver la CMK pero no utilizarla. Para editar el documento de políticas de claves, puede utilizar lavista de políticas (p. 73) en la Consola de administración de AWS o las operaciones CreateKey oPutKeyPolicy .

Paso 2: Agregar políticas de IAM a la cuenta externaLa política de claves de la cuenta propietaria de la CMK establece el rango válido de permisos. Sinembargo, los usuarios y roles de la cuenta externa no pueden utilizar la CMK hasta que adjunte políticasde IAM que deleguen esos permisos o utilice concesiones para administrar el acceso a la CMK. Laspolíticas IAM se establecen en la cuenta externa.

Si la política de claves concede permiso a la cuenta externa, puede asociar políticas de IAM a cualquierusuario o rol de la cuenta. Sin embargo, si la política de claves concede permiso a usuarios o roles

83

Page 92: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK que otras cuentas pueden utilizar

especificados, la política de IAM solo puede conceder esos permisos a todos o a un subconjunto de losusuarios y roles especificados. Si una política de IAM concede a la CMK acceso a otros usuarios o rolesexternos, no tiene ningún efecto.

La política de claves también limita las acciones de la política de IAM. La política de IAM puede delegartodas o un subconjunto de las acciones especificadas en la política de claves. Si la política de IAMenumera acciones que no se especifican en la política de claves, esos permisos no son efectivos.

La siguiente política de IAM de ejemplo permite a la entidad principal utilizar la CMK en la cuenta111122223333 para operaciones criptográficas. Para conceder este permiso a los usuarios y roles de lacuenta 444455556666, asocie la política a los usuarios o roles de la cuenta 444455556666.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Use Of CMK In Account 111122223333", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

Tenga en cuenta los siguientes detalles sobre esta política:

• A diferencia de las políticas de claves, las instrucciones de política de IAM no contienen el elementoPrincipal. En las políticas de IAM, la entidad principal es la identidad a la que está asociada lapolítica.

• El elemento Resourcede la política de IAM identifica la CMK que la entidad principal puede utilizar.Para especificar una CMK, agregue su ARN de clave (p. 13) o un ARN de alias (p. 13) al elementoResource. El ARN de la clave, el ARN del alias y la CMK siempre están en la misma cuenta.

• Puede especificar más de una CMK en el elemento Resource. Sin embargo, si no especificadeterminadas CMK en el elemento Resource, es posible que conceda acceso de forma inadvertida amás CMK de las que pretendía.

• Para permitir al usuario externo utilizar la CMK con servicios de AWS que se integran con AWS KMS, esposible que tenga que añadir permisos a la política de claves o a la política de IAM. Para obtener másinformación, consulte Usar CMK externas con servicios de AWS (p. 86).

Para obtener más información sobre el uso de las políticas de IAM, consulte Usar políticas deIAM (p. 76).

Crear CMK que otras cuentas pueden utilizarAl utilizar la operación CreateKey para crear una CMK, puede utilizar su parámetro Policy paraespecificar una política de claves (p. 82) que conceda a una cuenta externa, o usuarios y rolesexternos, permiso para utilizar la CMK. También debe añadir políticas de IAM (p. 83) en la cuentaexterna que deleguen estos permisos a los usuarios y roles de la cuenta, incluso cuando los usuariosy roles estén especificados en la política de claves. Puede cambiar la política de claves en cualquiermomento mediante la operación PutKeyPolicy .

84

Page 93: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK que otras cuentas pueden utilizar

Al crear una CMK en la Consola de administración de AWS, también debe crear su política de claves. Alseleccionar identidades en las secciones Key Administrators (Administradores de claves) y Key Users(Usuarios de claves), AWS KMS añade declaraciones de política para esas identidades a la política declaves de la CMK.

La sección Key Users (Usuarios de claves) también le permite añadir cuentas externas como usuarios declaves.

Al escribir el ID de cuenta de una cuenta externa, AWS KMS añade dos instrucciones a la política declaves. Esta acción solo afecta a la política de claves. Los usuarios y roles de la cuenta externa no puedenutilizar la CMK hasta que se asocien políticas de IAM (p. 83) para concederles algunos o todos estospermisos.

La primera instrucción de la política concede a la cuenta externa permiso para utilizar la CMK enoperaciones criptográficas.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*"}

La segunda instrucción de la política permite a la cuenta externa crear, ver y revocar concesiones enla CMK, pero solo cuando la solicitud proviene de un servicio de AWS integrado con AWS KMS. Estospermisos permiten que otros servicios de AWS, como cifrar los datos de usuario para que utilicen la CMK.

Estos permisos están diseñados para las CMK que cifran los datos de usuario en los servicios de AWS,como Amazon WorkMail (p. 300). Estos servicios suelen utilizar concesiones para obtener los permisosque necesitan para utilizar la CMK en nombre del usuario. Para obtener más información, consulte UsarCMK externas con servicios de AWS (p. 86).

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ],

85

Page 94: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar CMK externas con servicios de AWS

"Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } }}

Si estos permisos no satisfacen sus necesidades, puede editarlos en la vista de políticas (p. 73) de laconsola o mediante la operación PutKeyPolicy . Puede especificar usuarios y roles externos concretosen lugar de conceder permiso a la cuenta externa. Puede cambiar las acciones que especifica la política.Además, puede utilizar condiciones globales y de políticas de AWS KMS para refinar los permisos.

Usar CMK externas con servicios de AWSPuede conceder a un usuario de otra cuenta permiso para utilizar su CMK con un servicio integradocon AWS KMS. Por ejemplo, un usuario de una cuenta externa puede utilizar su CMK para cifrar losobjetos en un bucket de Amazon S3 (p. 289) o para cifrar los secretos que almacenan en AWS SecretsManager (p. 278).

La política de claves debe conceder al usuario externo o a la cuenta del usuario externo permiso parautilizar la CMK. Además, debe asociar políticas de IAM a la identidad que concede al usuario permiso parautilizar el servicio de AWS.

Además, el servicio podría requerir que los usuarios tengan permisos adicionales en la política de claves.Por ejemplo, podría requerir permiso para crear, enumerar y revocar concesiones en la CMK. O podríarequerir determinadas políticas de IAM. Para obtener más información, consulte la documentación delservicio.

Por último, las listas de CMK mostradas en la Consola de administración de AWS para un serviciointegrado no incluyen las CMK en cuentas externas. Esto se aplica incluso cuando el usuario o rol tienepermiso para utilizarlos. Para utilizar la CMK de una cuenta externa, el usuario debe escribir el ID o ARNde la CMK. Para obtener más información, consulte la documentación de la consola del servicio.

Permisos de la API de AWS KMS: referencia derecursos y acciones

La tabla de acciones y recursos está diseñada para ayudarle a definir el control de acceso (p. 54) en laspolíticas de claves (p. 57) y en las políticas de IAM (p. 76). Las columnas proporcionan la siguienteinformación:

• Las operaciones de la API y acciones (permisos) muestran cada operación de la API de AWS KMS y laacción correspondiente (permiso) que permite la operación. Usted especifica acciones en un elementoAction de la política.

• Tipo de política indica si el permiso se puede utilizar en una política de claves o en un política de IAM.Cuando el tipo es política de claves, puede especificar el permiso explícitamente en la política declaves. O bien, si la política de claves contiene la declaración de política que permite las políticas deIAM (p. 59), puede especificar el permiso en una política de IAM. Cuando el tipo es política de IAM,puede especificar el permiso solo en una política de IAM.

• Recursos enumera los recursos para los que puede permitir la operación. Para especificar un recursoen una política de IAM, escriba el nombre de recurso de Amazon (ARN) en el elemento Resource.Dado que una política de claves se aplica únicamente a la CMK a la que está asociada, el valor de suelemento Resource es siempre "*".

Cada tipo de recurso se asocia a un ARN que se utiliza para representar el recurso.

86

Page 95: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

ARN de CMK

Cuando el recurso es una CMK, se representa mediante un ARN de CMK.

arn:AWS_partition_name:AWS_Region:AWS_account_ID:key/CMK_key_ID

Por ejemplo:

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890abARN de alias

Cuando el recurso es un alias, se representa mediante el ARN de alias.

arn:AWS_partition_name:AWS_region:AWS_account_ID:alias/alias_name

Por ejemplo:

arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias• Claves de condición de AWS KMS muestra las claves de condición de AWS KMS que puede utilizar

para controlar el acceso a la operación. Las condiciones se especifican en un elemento Condition dela política. Para obtener más información, consulte Claves de condición de AWS KMS (p. 99). Estacolumna incluye además las claves de condición globales de AWS que admite AWS KMS, pero no portodos los servicios de AWS.

Permisos y operaciones de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

CancelKeyDeletion

kms:CancelKeyDeletion

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

ConnectCustomKeyStore

kms:ConnectCustomKeyStore

Política de IAM * kms:CallerAccount

Política de IAM(para el alias)

Alias Ninguno (cuando se controla elacceso al alias)

CreateAlias

kms:CreateAlias

Para utilizar esta operación, elintermediario necesita permisokms:CreateAlias en dosrecursos:

• El alias (en una política deIAM)

• La CMK (en una política declaves)

Política declaves (para laCMK)

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:ViaService

CreateCustomKeyStore Política de IAM * kms:CallerAccount

87

Page 96: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

kms:CreateCustomKeyStore

CreateGrant

kms:CreateGrant

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:EncryptionContext:

kms:EncryptionContextKeys

kms:GrantConstraintType

kms:GranteePrincipal

kms:GrantIsForAWSResource

kms:GrantOperations

kms:RetiringPrincipal

kms:ViaService

CreateKey

kms:CreateKey

Política de IAM * kms:BypassPolicyLockoutSafetyCheck

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

Decrypt

kms:Decrypt

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:EncryptionAlgorithm

kms:EncryptionContext:

kms:EncryptionContextKeys

kms:ViaService

88

Page 97: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

Política de IAM(para el alias)

Alias Ninguno (cuando se controla elacceso al alias)

DeleteAlias

kms:DeleteAlias

Para utilizar esta operación, elintermediario necesita permisokms:DeleteAlias en dosrecursos:

• El alias (en una política deIAM)

• La CMK (en una política declaves)

Política declaves (para laCMK)

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

DeleteCustomKeyStore

kms:DeleteCustomKeyStore

Política de IAM * kms:CallerAccount

DeleteImportedKeyMaterial

kms:DeleteImportedKeyMaterial

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

DescribeCustomKeyStores

kms:DescribeCustomKeyStores

Política de IAM * kms:CallerAccount

DescribeKey

kms:DescribeKey

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

DisableKey

kms:DisableKey

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

89

Page 98: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

DisableKeyRotation

kms:DisableKeyRotation

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

DisconnectCustomKeyStore

kms:DisconnectCustomKeyStore

Política de IAM * kms:CallerAccount

EnableKey

kms:EnableKey

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

EnableKeyRotation

kms:EnableKeyRotation

Política declaves

CMK (solosimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

Encrypt

kms:Encrypt

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:EncryptionAlgorithm

kms:EncryptionContext:

kms:EncryptionContextKeys

kms:ViaService

90

Page 99: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

GenerateDataKey

kms:GenerateDataKey

Política declaves

CMK (solosimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:EncryptionAlgorithm

kms:EncryptionContext:

kms:EncryptionContextKeys

kms:ViaService

GenerateDataKeyPair

kms:GenerateDataKeyPair

Política declaves

CMK (solosimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:DataKeyPairSpec

kms:EncryptionAlgorithm

kms:EncryptionContext:

kms:EncryptionContextKeys

kms:ViaService

GenerateDataKeyPairWithoutPlaintext

kms:GenerateDataKeyPairWithoutPlaintext

Política declaves

CMK (solosimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:DataKeyPairSpec

kms:EncryptionAlgorithm

kms:EncryptionContext:

kms:EncryptionContextKeys

kms:ViaService

91

Page 100: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

GenerateDataKeyWithoutPlaintext

kms:GenerateDataKeyWithoutPlaintext

Política declaves

CMK (solosimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:EncryptionAlgorithm

kms:EncryptionContext:

kms:EncryptionContextKeys

kms:ViaService

GenerateRandom

kms:GenerateRandom

Política de IAM * Ninguna

GetKeyPolicy

kms:GetKeyPolicy

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

GetKeyRotationStatus

kms:GetKeyRotationStatus

Política declaves

CMK (solosimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

GetParametersForImport

kms:GetParametersForImport

Política declaves

CMK (solosimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

kms:WrappingAlgorithm

kms:WrappingKeySpec

92

Page 101: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

GetPublicKey

kms:GetPublicKey

Política declaves

CMK (soloasimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

ImportKeyMaterial

kms:ImportKeyMaterial

Política declaves

CMK (solosimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ExpirationModel

kms:ValidTo

kms:ViaService

ListAliases

kms:ListAliases

Política de IAM * Ninguna

ListGrants

kms:ListGrants

Política declaves

CMK kms:CallerAccountkms:GrantIsForAWSResource

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:ViaService

ListKeyPolicies

kms:ListKeyPolicies

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

ListKeys

kms:ListKeys

Política de IAM * Ninguna

93

Page 102: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

ListResourceTags

kms:ListResourceTags

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

ListRetirableGrants

kms:ListRetirableGrants

Política de IAM * Ninguna

PutKeyPolicy

kms:PutKeyPolicy

Política declaves

CMK kms:BypassPolicyLockoutSafetyCheck

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

ReEncrypt

kms:ReEncryptFrom

kms:ReEncryptTo

Para utilizar esta operación, elintermediario necesita permisoen dos CMK:

• kms:ReEncryptFrom en laCMK utilizada para descifrar

• kms:ReEncryptTo en la CMKutilizada para cifrar

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:EncryptionAlgorithm

kms:EncryptionContext:

kms:EncryptionContextKeys

kms:ReEncryptOnSameKey

kms:ViaService

RetireGrant

El permiso para retirar unaconcesión se especifica en laconcesión. El acceso a estaoperación no se puede controlaren una política. ConsulteRetireGrant en la AWS KeyManagement Service APIReference para obtener másinformación.

No aplicable No aplicable No aplicable

94

Page 103: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

RevokeGrant

kms:RevokeGrant

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:GrantIsForAWSResource

kms:ViaService

ScheduleKeyDeletion

kms:ScheduleKeyDeletion

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:ViaService

Sign

kms:Sign

Política declaves

CMK (soloasimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOriginkms:MessageType

kms:SigningAlgorithm

kms:ViaService

TagResource

kms:TagResource

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

aws:RequestTag (clave decondición global de AWS)

aws:TagKeys (clave decondición global de AWS)

95

Page 104: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReferencia de permisos de la API de AWS KMS

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

UntagResource

kms:UntagResource

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

aws:RequestTag (clave decondición global de AWS)

aws:TagKeys (clave decondición global de AWS)

Política de IAM(para el alias)

Alias Ninguno (cuando se controla elacceso al alias)

UpdateAlias

kms:UpdateAlias

Para utilizar esta operación, elintermediario necesita permisokms:UpdateAlias en tresrecursos:

• El alias• La CMK a la que apunta

actualmente el alias• La CMK especificada en la

solicitud UpdateAlias

Política declaves (para lasCMK)

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

UpdateCustomKeyStore

kms:UpdateCustomKeyStore

Política de IAM * kms:CallerAccount

UpdateKeyDescription

kms:UpdateKeyDescription

Política declaves

CMK kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:ViaService

96

Page 105: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar condiciones de política

Operaciones de la API yacciones (permisos)

Tipo de política Recursos (parapolíticas deIAM)

Claves de condición de AWSKMS

Verificar

kms:Verify

Política declaves

CMK (soloasimétrica)

kms:CallerAccount

kms:CustomerMasterKeySpec

kms:CustomerMasterKeyUsage

kms:KeyOrigin

kms:MessageType

kms:SigningAlgorithm

kms:ViaService

Usar condiciones de política con AWS KMSPuede especificar condiciones en las políticas de claves y las políticas de AWS Identity and AccessManagement (políticas de IAM (p. 76)) que controlan el acceso a los recursos de AWS KMS. Ladeclaración de política solo será efectiva si se cumplen las condiciones. Por ejemplo, es posible quedesee que solo entre en vigor una declaración de política después de una fecha específica. O puede quedesee que una declaración de política controle el acceso solo cuando aparezca un valor específico en unasolicitud de la API.

Para especificar condiciones, se utilizan claves de condición predefinidas en el elemento Condition dela declaración de una política con operadores de la política de condiciones de IAM. Por lo general, algunasclaves de condición se aplican a AWS, mientras que otras son específicas de AWS KMS.

Temas• Claves de condición globales de AWS (p. 97)• Claves de condición de AWS KMS (p. 99)

Claves de condición globales de AWSAWS define claves de condición globales, un conjunto de claves de condiciones de política para todos losservicios de AWS que utilizan IAM para el control de acceso. Puede utilizar claves de condición globalesen políticas de claves de AWS KMS y políticas de IAM. Por ejemplo, puede utilizar la clave de condiciónAWS:PrincipalRn para permitir el acceso a una clave maestra del cliente (CMK) solo cuando la entidadprincipal de la solicitud está representada por el nombre de recurso de Amazon (ARN) en el valor de laclave de condición.

AWS KMS admite todas las claves de condición globales de AWS excepto las siguientes:

• aws:ResourceTag• aws:SourceAccount• aws:SourceArn

Para obtener información acerca de las claves de condición globales de AWS, incluidos los tipos desolicitudes en las que están disponibles, consulte Claves de contexto de condición globales de AWSen la Guía del usuario de IAM. Para consultar ejemplos del uso de claves de condición globales en las

97

Page 106: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición globales de AWS

políticas de IAM, consulte Control del acceso a las solicitudes y Control de claves de etiquetas en la Guíadel usuario de IAM.

En los temas siguientes se proporcionan instrucciones especiales para el uso de claves de condiciónbasadas en direcciones IP y puntos de enlace de la VPC.

Temas• Usar la condición de dirección IP en políticas con permisos de AWS KMS (p. 98)• Usar condiciones de punto de enlace de la VPC en políticas con permisos de AWS KMS (p. 98)

Usar la condición de dirección IP en políticas con permisos deAWS KMSPuede utilizar AWS KMS para proteger los datos en un servicio de AWS integrado (p. 250). Pero tengacuidado al especificar los operadores de condición de dirección IP o la clave de condición aws:SourceIpen la misma declaración de política que permite o deniega el acceso a AWS KMS. Por ejemplo, la políticade AWS: deniega acceso a AWS en función de la dirección IP de origen restringe las acciones de AWS alas solicitudes realizadas desde el rango de direcciones IP especificado.

Considere esta situación:

1. Asocia una política como la mostrada en AWS: deniega acceso a AWS en función de la dirección IP deorigen a un usuario de IAM. A continuación, establece el valor de la clave de condición aws:SourceIpen el rango de direcciones IP de la empresa del usuario. Este usuario de IAM tiene otras políticasasociadas que le permiten usar Amazon EBS, Amazon EC2 y AWS KMS.

2. El usuario intenta asociar un volumen de EBS cifrado a una instancia EC2. Esta acción falla con un errorde autorización a pesar de que el usuario tiene permiso para utilizar todos los servicios pertinentes.

El paso 2 produce un error porque la solicitud enviada a AWS KMS para descifrar la clave de datos cifradadel volumen proviene de una dirección IP que está asociada a la infraestructura de Amazon EC2. Para quela solicitud se realice correctamente, debe provenir de la dirección IP del usuario que la origina. Dado quela política del paso 1 deniega explícitamente todas las solicitudes de las direcciones IP que no sean lasespecificadas, a Amazon EC2 se le deniega el permiso para descifrar la clave de datos cifrada del volumende EBS.

Además, la clave de condición aws:sourceIP no es efectiva si la solicitud procede de un punto deenlace de Amazon VPC. Para restringir las solicitudes a un punto de enlace de la VPC, incluido unpunto de enlace de la VPC de AWS KMS (p. 232), utilice las claves de condición aws:sourceVpce oaws:sourceVpc. Para obtener más información, consulte Puntos de enlace de la VPC - Control del usode los puntos de enlace en la Guía del usuario de Amazon VPC.

Usar condiciones de punto de enlace de la VPC en políticas conpermisos de AWS KMSAWS KMS es compatible con los puntos de enlace de Amazon Virtual Private Cloud (AmazonVPC) (p. 232) proporcionados por AWS PrivateLink. Puede utilizar las siguientes claves de condiciónglobales en las políticas de IAM para permitir o denegar el acceso a una determinada VPC o a undeterminado punto de enlace de la VPC. También puede utilizar estas claves de condición globalesen políticas de claves de AWS KMS (p. 236) para restringir el acceso a las CMK de AWS KMS a lassolicitudes provenientes de la VPC o del punto de enlace de la VPC.

• aws:SourceVpc limita el acceso a las solicitudes procedentes de la VPC especificada.• aws:SourceVpce limita el acceso a las solicitudes procedentes del punto de enlace de la VPC

especificado.

98

Page 107: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

Si utiliza estas claves de condición en una declaración de política de claves que permite o deniega elacceso a las CMK de AWS KMS, podría denegar el acceso de forma accidental a los servicios que utilizanAWS KMS en su nombre.

Procure evita una situación como la del ejemplo de claves de condición de dirección IP (p. 98). Sirestringe las solicitudes para una CMK a una VPC o un punto de enlace de la VPC, las llamadas a AWSKMS desde un servicio integrado, como Amazon S3 o Amazon EBS, podrían producir un error. Esto puedeocurrir incluso si la solicitud de origen procede en última instancia de la VPC o del punto de enlace de laVPC.

Claves de condición de AWS KMSAWS KMS proporciona un conjunto de claves de condición predefinidas que puede utilizar en las políticasde claves y en las políticas de IAM. Estas claves de condición son específicas de AWS KMS. Por ejemplo,puede utilizar la clave de condición kms:EncryptionContext para exigir un determinado contexto decifrado (p. 16) al controlar el acceso a una clave maestra de cliente (CMK) simétrica de AWS KMS.

Condiciones para una solicitud de operación de la API

Muchas de las claves de condición de AWS KMS controlan el acceso a una CMK en función del valor deun parámetro en la solicitud de una operación de la API. Por ejemplo, puede utilizar la clave de condiciónkms:CustomerMasterKeySpec (p. 102) en una política de IAM para permitir el uso de la operaciónCreateKey solo cuando el valor del parámetro CustomerMasterKeySpec en la solicitud CreateKey seaRSA_4096.

Este tipo de condición funciona incluso cuando el parámetro no aparece en la solicitud, comocuando se utiliza el valor predeterminado del parámetro. Por ejemplo, puede utilizar la clave decondición kms:CustomerMasterKeySpec (p. 102) para permitir a los usuarios utilizar la operaciónCreateKey solo cuando el valor del parámetro CustomerMasterKeySpec sea SYMMETRIC_DEFAULT,que es el valor predeterminado. Esta condición permite las solicitudes que tienen el parámetroCustomerMasterKeySpec con el valor SYMMETRIC_DEFAULT y las solicitudes que no tienen elparámetro CustomerMasterKeySpec.

Condiciones para CMK utilizadas en operaciones API

Algunas de las claves de condición de AWS KMS controlan el acceso a las operaciones basándoseen una propiedad de la CMK que se utiliza en la operación. Por ejemplo, puede utilizar la condiciónkms:KeyOrigin (p. 118) para permitir que las entidades principales llamen a GenerateDataKey en unaCMK solo cuando el Origin de la CMK sea AWS_KMS. Para averiguar si una clave de condición se puedeutilizar de esta manera, consulte la descripción de la clave de condición.

La operación debe ser una operación de recursos de CMK; es decir, una operación que esté autorizadapara una determinada CMK. Para identificar las operaciones de recursos de CMK, en la tabla de accionesy recursos (p. 87), busque un valor de CMK en la columna Resources para la operación. Si utiliza estetipo de clave de condición con una operación que no está autorizada para un recurso de CMK concreto,como ListKeys, el permiso no es efectivo porque la condición nunca se puede satisfacer. No existeningún recurso de CMK involucrado en la autorización de la operación ListKeys y tampoco la propiedadCustomerMasterKeySpec.

En los siguientes temas se describe cada clave de condición de AWS KMS y se incluyen instrucciones depolítica de ejemplo que muestran la sintaxis de las políticas.

Temas• kms:BypassPolicyLockoutSafetyCheck (p. 100)• kms:CallerAccount (p. 101)• kms:CustomerMasterKeySpec (p. 102)• kms:CustomerMasterKeyUsage (p. 103)

99

Page 108: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

• kms:DataKeyPairSpec (p. 104)• kms:EncryptionAlgorithm (p. 105)• kms:EncryptionContext: (p. 107)• kms:EncryptionContextKeys (p. 112)• kms:ExpirationModel (p. 114)• kms:GrantConstraintType (p. 115)• kms:GrantIsForAWSResource (p. 116)• kms:GrantOperations (p. 116)• kms:GranteePrincipal (p. 117)• kms:KeyOrigin (p. 118)• kms:MessageType (p. 119)• kms:ReEncryptOnSameKey (p. 120)• kms:RetiringPrincipal (p. 120)• kms:SigningAlgorithm (p. 121)• kms:ValidTo (p. 122)• kms:ViaService (p. 122)• kms:WrappingAlgorithm (p. 125)• kms:WrappingKeySpec (p. 126)

kms:BypassPolicyLockoutSafetyCheck

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:BypassPolicyLockoutSafetyCheckBooleano CreateKey

PutKeyPolicy

Solo políticas de IAM

Políticas de claves ypolíticas de IAM

La clave de condición kms:BypassPolicyLockoutSafetyCheck controla el acceso a las operacionesCreateKey y PutKeyPolicy en función del valor del parámetro BypassPolicyLockoutSafetyCheck dela solicitud.

En el siguiente ejemplo, la declaración de la política de IAM impide que los usuarios eludan lacomprobación de seguridad de bloqueo de la política denegándoles el permiso para crear claves CMKcuando el valor del parámetro BypassPolicyLockoutSafetyCheck de la solicitud CreateKey estrue..

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "Bool": { "kms:BypassPolicyLockoutSafetyCheck": true } } }}

100

Page 109: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

También puede utilizar la clave de condición kms:BypassPolicyLockoutSafetyCheck en una políticade IAM o en una política de claves para controlar el acceso a la operación PutKeyPolicy. En el ejemplosiguiente, la declaración de una política de claves impide que los usuarios eludan la comprobación deseguridad de bloqueo cuando se modifica la política de una CMK.

En lugar de utilizar una operación Deny explícita, esta declaración de la política utiliza Allow con Nullcondition operator para permitir únicamente el acceso cuando la solicitud no contiene el parámetroBypassPolicyLockoutSafetyCheck. Cuando no se utiliza el parámetro, el valor predeterminado esfalse. Esta declaración de la política es algo más débil y puede anularse en el caso improbable de quesea necesario eludirla.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:PutKeyPolicy", "Resource": "*", "Condition": { "Null": { "kms:BypassPolicyLockoutSafetyCheck": true } } }}

Véase también

• kms:CustomerMasterKeySpec (p. 102)• kms:KeyOrigin (p. 118)• kms:CustomerMasterKeyUsage (p. 103)

kms:CallerAccount

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:CallerAccount Cadena Todas las operacionesde AWS KMSexcepto CreateKey,GenerateRandom,ListAliases,ListKeys,ListRetirableGrantsy RetireGrant.

Solo políticas de claves

Puede utilizar esta clave de condición para permitir o denegar el acceso a todas las identidades (usuariosy roles de IAM) de una cuenta de AWS. En las políticas clave, se usa el elemento Principal paraespecificar las identidades a las que se aplica la declaración de política. La sintaxis del elementoPrincipal no proporciona una forma de especificar todas las identidades en una cuenta de AWS. Sinembargo, puede conseguir este efecto combinando esta clave de condición con un elemento Principalque especifique todas identidades de AWS.

Por ejemplo, la siguiente declaración de política demuestra cómo utilizar la clave de condiciónkms:CallerAccount. Esta declaración de política se encuentra en la política de claves de la CMKadministrada por AWS para Amazon EBS. Combina un elemento Principal que especifica todas las

101

Page 110: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

identidades de AWS con la clave de condición kms:CallerAccount para permitir el acceso de formaefectiva a todas las identidades de la cuenta 111122223333 de AWS. Contiene una clave de condición deAWS KMS adicional (kms:ViaService) para limitar más los permisos al permiso solo las solicitudes quellegan a través de Amazon EBS. Para obtener más información, consulte kms:ViaService (p. 122).

{ "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": {"AWS": "*"}, "Condition": { "StringEquals": { "kms:CallerAccount": "111122223333", "kms:ViaService": "ec2.us-west-2.amazonaws.com" } }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*"}

kms:CustomerMasterKeySpec

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:CustomerMasterKeySpecCadena CreateKey

Operaciones derecursos de CMK

Políticas de IAM

Políticas de claves ypolíticas de IAM

La clave de condición kms:CustomerMasterKeySpec controla el acceso a las operaciones en funcióndel valor de la propiedad CustomerMasterKeySpec de CMK creada por la operación o utilizada en ella.

Puede utilizar esta clave de condición en una política de IAM para controlar el acceso a la operaciónCreateKey en función del valor del parámetro CustomerMasterKeySpec en una solicitud CreateKey. Porejemplo, puede utilizar esta condición para permitir a los usuarios crear solo CMK simétricas o solo CMKcon claves RSA.

En el siguiente ejemplo la declaración de política de IAM utiliza la clave de condiciónkms:CustomerMasterKeySpec para permitir a las entidades principales crear una CMK solo cuandoCustomerMasterKeySpec en la solicitud sea RSA_4096.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:CustomerMasterKeySpec": "RSA_4096" } }

102

Page 111: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

}

También puede utilizar la clave de condición kms:CustomerMasterKeySpec para controlarel acceso a las operaciones que utilizan o administran una CMK en función de la propiedadCustomerMasterKeySpec de la CMK utilizada para la operación. La operación debe ser una operaciónde recursos de CMK; es decir, una operación que esté autorizada para una determinada CMK. Paraidentificar las operaciones de recursos de CMK, en la tabla de acciones y recursos (p. 87), busque unvalor de CMK en la columna Resources para la operación.

Por ejemplo, la siguiente política de IAM permite a las entidades principales realizar las operaciones derecursos de CMK especificadas, pero solo con las CMK simétricas de la cuenta.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:DescribeKey" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:CustomerMasterKeySpec": "SYMMETRIC_DEFAULT" } }}

Véase también

• kms:BypassPolicyLockoutSafetyCheck (p. 100)• kms:CustomerMasterKeyUsage (p. 103)• kms:DataKeyPairSpec (p. 104)• kms:KeyOrigin (p. 118)

kms:CustomerMasterKeyUsage

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:CusomterMasterKeyUsageCadena CreateKey

Operaciones derecursos de CMK

Políticas de IAM

Políticas de claves ypolíticas de IAM

La clave de condición kms:CustomerMasterKeyUsage controla el acceso a las operaciones en funcióndel valor de la propiedad KeyUsage de CMK creada por la operación o utilizada en ella.

Puede utilizar esta clave de condición para controlar el acceso a la operación CreateKey en función delvalor del parámetro KeyUsage de la solicitud. Los valores válidos para KeyUsage son ENCRYPT_DECRYPTy SIGN_VERIFY.

Por ejemplo, puede permitir que un usuario cree una CMK solo cuando KeyUsage seaENCRYPT_DECRYPT o denegar un permiso de usuario cuando KeyUsage sea SIGN_VERIFY.

103

Page 112: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

En el siguiente ejemplo la declaración de política de IAM utiliza la clave de condiciónkms:CustomerMasterKeyUsage para permitir a un usuario crear una CMK solo cuando KeyUsage seaENCRYPT_DECRYPT.

{ "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:CustomerMasterKeyUsage": "ENCRYPT_DECRYPT" } }}

También puede utilizar la clave de condición kms:CustomerMasterKeyUsage para controlar el accesoa las operaciones que utilizan o administran una CMK en función de la propiedad KeyUsage de la CMKutilizada para la operación. La operación debe ser una operación de recursos de CMK; es decir, unaoperación que esté autorizada para una determinada CMK. Para identificar las operaciones de recursosde CMK, en la tabla de acciones y recursos (p. 87), busque un valor de CMK en la columna Resourcespara la operación.

Por ejemplo, la siguiente política de IAM permite a las entidades principales realizar las operaciones derecursos de CMK especificadas, pero solo con las CMK de la cuenta que se utilizan para la firma y laverificación.

{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:DescribeKey", "kms:GetPublicKey", "kms:ScheduleKeyDeletion" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:CustomerMasterKeyUsage": "SIGN_VERIFY" } }}

Véase también

• kms:BypassPolicyLockoutSafetyCheck (p. 100)• kms:CustomerMasterKeySpec (p. 102)• kms:KeyOrigin (p. 118)

kms:DataKeyPairSpec

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:DataKeySpec Cadena GenerateDataKeyPair Políticas de claves ypolíticas de IAM

104

Page 113: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

GenerateDataKeyPairWithoutPlaintext

Puede utilizar esta clave de condición para controlar el acceso a las operaciones GenerateDataKeyPair yGenerateDataKeyPairWithoutPlaintext en función del valor del parámetro KeyPairSpec en la solicitud.Por ejemplo, puede permitir que un usuario genere solo tipos concretos de pares de claves de datos.

El siguiente ejemplo de declaración de política de claves utiliza la clave de condiciónkms:DataKeyPairSpec para permitir a un usuario utilizar la CMK para generar solo pares de claves dedatos RSA.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext" ], "Resource": "*", "Condition": { "StringLike": { "kms:DataKeyPairSpec": "RSA*" } }}

Véase también

• kms:CustomerMasterKeySpec (p. 102)• the section called “kms:EncryptionAlgorithm” (p. 105)• the section called “kms:EncryptionContext:” (p. 107)• the section called “kms:EncryptionContextKeys” (p. 112)

kms:EncryptionAlgorithm

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:EncryptionAlgorithmCadena Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de claves ypolíticas de IAM

105

Page 114: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

Puede utilizar la clave de condición kms:EncryptionAlgorithm para controlar el acceso a operacionescriptográficas en función del algoritmo de cifrado que se utiliza en la operación. Para las operacionesEncrypt, Decrypt y ReEncrypt, controla el acceso en función del valor del parámetro EncryptionAlgorithmen la solicitud. Para operaciones que generan claves de datos y pares de claves de datos, controla elacceso basado en el algoritmo de cifrado que se utiliza para cifrar la clave de datos.

Esta clave de condición no afecta a las operaciones realizadas fuera de AWS KMS, como el cifrado con laclave pública en un par de CMK asimétrica fuera de AWS KMS.

Parámetro EncryptionAlgorithm en una solicitud

Para permitir a los usuarios utilizar solo un algoritmo de cifrado determinado con una CMK, utilice unadeclaración de política con un efecto Deny y un operador de condición StringNotEquals. Por ejemplo,la siguiente declaración de política de claves de ejemplo prohíbe a las entidades principales que puedenasumir el rol ExampleRole utilizar esta CMK simétrica en las operaciones criptográficas especificadas, amenos que el algoritmo de cifrado de la solicitud sea RSAES_OAEP_SHA_256.

A diferencia de una declaración de política que permite a un usuario utilizar un algoritmo de cifradodeterminado, una declaración de política con un doble negativo como este impide que otras políticasy subvenciones para esta CMK permitan que este rol utilice otros algoritmos de cifrado. Deny en estadeclaración de política tiene prioridad sobre cualquier otra política de claves o política de IAM con un efectoAllow y tiene prioridad sobre todas las concesiones para esta CMK y sus entidades principales.

{ "Sid": "Allow only one encryption algorithm with this asymmetric CMK", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "*", "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256" } }}

Algoritmo de cifrado utilizado para la operación

También puede utilizar la clave de condición kms:EncryptionAlgorithm para controlar el acceso a lasoperaciones que generan claves de datos y pares de claves de datos. Estas operaciones sólo utilizan CMKsimétricas y el algoritmo SYMMETRIC_DEFAULT.

Por ejemplo, esta política de IAM limita sus entidades principales al cifrado simétrico. Deniega elacceso a cualquier CMK en la cuenta de ejemplo para operaciones criptográficas a menos que elalgoritmo de cifrado especificado en la solicitud o utilizado en la operación sea SYMMETRIC_DEFAULT.la adición de GenerateDataKey, GenerateDataKeyWithoutPlaintext, GenerateDataKeyPair yGenerateDataKeyPairWithoutPlaintext no tiene ningún efecto práctico inmediato porque no puede utilizaruna CMK asimétrica o un algoritmo de cifrado asimétrico para cifrado una clave de datos o cifrar la claveprivada en un par de claves de datos.

{ "Version": "2012-10-17", "Statement": {

106

Page 115: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

"Effect": "Deny", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:GenerateDataKeyPair*" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringNotEquals": { "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT" } }}

Véase también

• kms:SigningAlgorithm (p. 121)

kms:EncryptionContext:

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:EncryptionContext:Cadena CreateGrant

Encrypt

Decrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de claves ypolíticas de IAM

Puede usar el prefijo de clave de condición kms:EncryptionContext: para controlar el acceso auna CMK simétrica (p. 144) en función del contexto de cifrado de una solicitud para una operacióncriptográfica. Utilice este prefijo de clave de condición para evaluar la clave y el valor del par decontexto de cifrado. Para evaluar solo las claves de contexto de cifrado, use la clave de condiciónkms:EncryptionContextKeys (p. 112).

Un contexto de cifrado (p. 16) es un conjunto de pares de clave-valor no secretos que puede incluir enuna solicitud para cualquier operación criptográfica de AWS KMS que utiliza una CMK simétrica (Encrypt,Decrypt, GenerateDataKey, GenerateDataKeyWithoutPlaintext y ReEncrypt) y la operación CreateGrant.Al especificar un contexto de cifrado en una operación de cifrado, debe especificar el mismo contexto decifrado en la operación de descifrado. De lo contrario, se produce un error en la solicitud de descifrado.

No puede especificar un contexto de cifrado en una operación criptográfica con una CMKasimétrica (p. 144). Los algoritmos de cifrado asimétrico estándar que AWS KMS utiliza no admiten loscontextos de cifrado.

107

Page 116: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

Para utilizar el prefijo de clave de condición kms:EncryptionContext:, sustituya el marcador deposición encryption_context_key por la clave de contexto de cifrado. Sustituya el marcador deposición encryption_context_value por el valor de contexto de cifrado.

"kms:EncryptionContext:encryption_context_key": "encryption_context_value"

Por ejemplo, la siguiente clave de condición especifica un contexto de cifrado en el que la clave esAppName y el valor es ExampleApp.

"kms:EncryptionContext:AppName": "ExampleApp"

En la siguiente instrucción de política de claves de ejemplo se utiliza esta clave de condición. Dado quepueden existir varios pares de contexto de cifrado en una solicitud, el operador de condición debe incluirForAnyValue o ForAllValues.

Esta política permite a la entidad principal usar la CMK en una solicitud GenerateDataKey solo cuando almenos uno de los pares de contexto de cifrado de la solicitud es "AppName": "ExampleApp".

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } }}

Exigir varios pares de contexto de cifrado

Para exigir más de un par de contexto de cifrado, puede incluir varias instancias de la condiciónkms:EncryptionContext:. Por ejemplo, la siguiente instrucción de política de ejemplo utiliza eloperador ForAllValues para requerir los dos pares de contexto de cifrado siguientes (y no otros). Elorden en que se especifican los pares no es importante.

• "AppName": "ExampleApp"

• "FilePath": "/var/opt/secrets/"

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp", "kms:EncryptionContext:FilePath": "/var/opt/secrets/" } }}

108

Page 117: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

Uso de mayúsculas y minúsculas en las condiciones de contexto de cifrado

El contexto de cifrado que se especifica en una operación de descifrado debe coincidir exactamente,incluido el uso de mayúsculas y minúsculas, con el contexto de cifrado que se especifica en la operaciónde cifrado. Solo puede variar el orden de los pares de un contexto de cifrado con varios pares.

Sin embargo, en las condiciones de políticas, la clave de condición no distingue entre mayúsculas yminúsculas. La distinción de mayúsculas y minúsculas del valor de la condición se determina por eloperador de condición de política que utilice, como StringEquals o StringEqualsIgnoreCase.

Por tanto, la clave de condición, que consta del prefijo kms:EncryptionContext: y el valor sustitutode encryption_context_key, no distingue mayúsculas de minúsculas. Una política que utiliza estacondición no comprueba el uso de mayúsculas o minúsculas de ninguno de los elementos de la clave decondición. La distinción de mayúsculas y minúsculas del valor, es decir encryption_context_value, lodetermina el operador de la política de condición.

Por ejemplo, la siguiente instrucción de política permite la operación cuando el contexto de cifradoincluye una clave Appname, independientemente de si está en mayúsculas o minúsculas. La condiciónStringEquals requiere que ExampleApp esté en mayúsculas cuando se especifique.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:Appname": "ExampleApp" } }}

Para exigir una clave de contexto de cifrado con distinción de mayúsculas y minúsculas, use la condiciónde política kms:EncryptionContextKeys (p. 112) con un operador de condición con distinción demayúsculas y minúsculas, como StringEquals. En esta condición de política, como la clave de contextode cifrado es el valor de la condición de política, el operador de condición determina si se distingue entremayúsculas y minúsculas.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKey": "AppName" } }}

Para exigir que se compruebe el uso de mayúsculas y minúsculas en la clave y el valor del contexto decifrado, utilice las condiciones de política kms:EncryptionContextKeys y kms:EncryptionContext:a la vez en la misma declaración de política. Por ejemplo, en la siguiente instrucción de política de ejemplo,como el operador StringEquals distingue entre mayúsculas y minúsculas, tanto la clave de contexto decifrado como el valor de contexto de cifrado distinguen entre mayúsculas y minúsculas.

109

Page 118: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName", "kms:EncryptionContext:AppName": "ExampleApp" } }}

Uso de variables en una condición de contexto de cifrado

La clave y el valor de un par de contexto de cifrado deben ser cadenas literales simples. No pueden sernúmeros enteros ni objetos, ni ningún tipo que no esté totalmente resuelto. Si utiliza otro tipo, como unnúmero entero o flotante, AWS KMS lo interpretará como una cadena literal.

"encryptionContext": { "department": "10103.0"}

Sin embargo, el valor del par de la clave de condición kms:EncryptionContext: puede ser unavariable de política de IAM. Estas variables de política se resuelven en tiempo de ejecución con arregloa los valores de la solicitud. Por ejemplo, aws:CurrentTime se resuelve en la hora de la solicitud yaws:username se resuelve en el nombre descriptivo del autor de la llamada.

Puede utilizar estas variables de política para crear una declaración de política con una condición querequiera información muy específica de un contexto de cifrado, como el nombre de usuario del autor dela llamada. Como contiene una variable, puede utilizar la misma declaración de política con todos losusuarios que puedan adoptar ese rol. No tiene que escribir una instrucción de política diferente para cadausuario.

Imagine una situación en la que desea que todos los usuarios que puedan adoptar un rol utilicen la mismaCMK para cifrar y descifrar los datos. Sin embargo, solo quiere que puedan descifrar los datos que elloshan cifrado. Comience exigiendo que cada solicitud dirigida a AWS KMS incluya un contexto de cifrado enel que la clave sea user y el valor sea el nombre de usuario de AWS del autor de la llamada, como en elejemplo siguiente.

"encryptionContext": { "user": "bob"}

A continuación, para forzar la aplicación de este requisito, puede utilizar una declaración de política comola del siguiente ejemplo. Esta declaración de política concede al rol TestTeam permiso para cifrar ydescifrar datos con la CMK. Sin embargo, el permiso solo es válido cuando el contexto de cifrado de lasolicitud incluye un par "user": "<username>". Para representar el nombre de usuario, la condiciónutiliza la variable de política aws:username.

Cuando se evalúa la solicitud, la variable de condición se sustituye por el nombre de usuario del autor dela llamada. Por tanto, la condición necesita el contexto de cifrado "user": "bob" para "bob" y "user":"alice" para "alice".

{

110

Page 119: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

"Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ] "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:user": "${aws:username}" } }}

Puede utilizar una variable de política de IAM únicamente en el valor del par de la clave de condiciónkms:EncryptionContext:. No puede utilizar una variable en la clave.

También puede utilizar claves de contexto específicas del proveedor en las variables. Estas claves decontexto identifican de manera inequívoca a los usuarios que han iniciado sesión en AWS utilizando unaidentidad federada web.

Al igual que todas las variables, estas solo se pueden utilizar en la condición de políticakms:EncryptionContext:, no en el contexto de cifrado real. Y solo se pueden utilizar en el valor de lacondición, no en la clave.

Por ejemplo, la siguiente instrucción de política de clave es similar a la anterior. Sin embargo, la condiciónrequiere un contexto de cifrado en el que la clave sea sub y el valor identifique de forma inequívoca a unusuario que ha iniciado sesión en un grupo de usuarios de Amazon Cognito. Para obtener más informaciónacerca de la identificación de usuarios y roles en Amazon Cognito, consulte Roles de IAM en la Guía paradesarrolladores de Amazon Cognito.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/TestTeam" }, "Action": [ "kms:Decrypt", "kms:Encrypt" ] "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}" } }}

Véase también

• the section called “kms:EncryptionContextKeys” (p. 112)• the section called “kms:GrantConstraintType” (p. 115)

111

Page 120: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

kms:EncryptionContextKeys

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:EncryptionContextKeysCadena (lista) CreateGrant

Decrypt

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

ReEncrypt

Políticas de claves ypolíticas de IAM

Puede usar la clave de condición kms:EncryptionContextKeys para controlar el acceso a unaCMK simétrica (p. 144) en función del contexto de cifrado de una solicitud para una operacióncriptográfica. Utilice este prefijo de clave de condición para evaluar únicamente la clave de cadapar de contexto de cifrado. Para evaluar la clave y el valor, utilice el prefijo de clave de condiciónkms:EncryptionContext: (p. 107).

No puede especificar un contexto de cifrado en una operación criptográfica con una CMKasimétrica (p. 144). Los algoritmos de cifrado asimétrico estándar que AWS KMS utiliza no admiten loscontextos de cifrado.

Puede utilizar esta clave de condición para controlar el acceso según el contexto de cifrado (p. 16) enla solicitud de la API de AWS KMS. El contexto de cifrado es un conjunto de pares de clave-valor quese puede incluir en las operaciones criptográficas de AWS KMS con CMK simétricas (Encrypt, Decrypt,GenerateDataKey, GenerateDataKeyWithoutPlaintext y ReEncrypt) y la operación CreateGrant. Dado quepueden existir varios pares de contexto de cifrado en una solicitud, el operador de condición debe incluirForAnyValue o ForAllValues.

En el ejemplo siguiente, la instrucción de la política utiliza la clave de condiciónkms:EncryptionContextKeys para que una CMK solamente pueda utilizarse con las operacionesespecificadas cuando al menos uno de los pares de contexto de cifrado de la solicitud contenga la claveAppName, independientemente de su valor.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "AppName" } }

112

Page 121: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

}

Como la operación de condición StringEquals distingue mayúsculas de minúsculas, la instrucción depolítica anterior requiere la ortografía y el uso de mayúsculas y minúsculas de la clave de contextode cifrado. Sin embargo, puede utilizar un operador de condición que omita el uso de mayúsculas yminúsculas de la clave, como StringEqualsIgnoreCase.

Puede especificar varias claves de contexto de cifrado en cada condición. Por ejemplo, la siguienteinstrucción de política utiliza los operadores de condición ForAllValues y StringEquals para permitirlas operaciones especificadas únicamente cuando el contexto de cifrado de la solicitud contenga las clavesAppName y FilePath (y no otras), independientemente de sus valores. El orden de las claves en elcontexto de cifrado no es importante.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:EncryptionContextKeys": [ "AppName", "FilePath" ] } }}

También puede utilizar la clave de condición kms:EncryptionContextKeys para solicitar un contextode cifrado en las operaciones criptográficas que utilizan la CMK.

En el ejemplo siguiente, la declaración de la política de claves utiliza la clave de condiciónkms:EncryptionContextKeys con el operador Null condition operator para que solamente se puedaobtener acceso a CMK cuando la clave de condición kms:EncryptionContextKeys exista (no sea null)en la solicitud de la API. No comprueba los valores ni las claves del contexto de cifrado, solo que existe elcontexto de cifrado.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContextKeys": false } }}

Véase también

113

Page 122: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

• kms:EncryptionContext: (p. 107)• kms:GrantConstraintType (p. 115)

kms:ExpirationModel

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:ExpirationModel Cadena ImportKeyMaterial Políticas de claves ypolíticas de IAM

La clave de condición kms:ExpirationModel controla el acceso a la operación ImportKeyMaterial enfunción del valor del parámetro ExpirationModel de la solicitud.

ExpirationModel es un parámetro opcional que determina si el material de claves importado vence.Los valores válidos son KEY_MATERIAL_EXPIRES y KEY_MATERIAL_DOES_NOT_EXPIRE. El valorpredeterminado es KEY_MATERIAL_EXPIRES.

La fecha y la hora de vencimiento vienen determinadas por el valor del parámetro ValidTo. Elparámetro ValidTo es necesario a menos que el valor del parámetro ExpirationModel seaKEY_MATERIAL_DOES_NOT_EXPIRE. También puede utilizar la clave de condición kms: ValidTo (p. 122)para solicitar una fecha de vencimiento determinada como condición de acceso.

En el ejemplo siguiente, la declaración de la política utiliza la clave de condición kms:ExpirationModelpara que un usuario solamente pueda importar material de claves en una CMK cuando la solicitudcontenga el parámetro ExpirationModel y su valor sea KEY_MATERIAL_DOES_NOT_EXPIRE.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "StringEquals": { "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE" } }}

También puede utilizar la clave de condición kms:ExpirationModel para que un usuario solamentepueda importar material de claves cuando venza el material de claves, sin especificar la fecha devencimiento (p. 122) en la condición. En el ejemplo siguiente, la declaración de la política utilizala clave de condición kms:ExpirationModel con el operador Null condition operator para que unusuario solamente pueda importar material de claves cuando la solicitud no contenga un parámetroExpirationModel.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "Null": {

114

Page 123: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

"kms:ExpirationModel": true } }}

Véase también

• kms:ValidTo (p. 122)• kms:WrappingAlgorithm (p. 125)• kms:WrappingKeySpec (p. 126)

kms:GrantConstraintType

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:GrantConstraintTypeCadena CreateGrant Políticas de claves ypolíticas de IAM

Puede utilizar esta clave de condición para controlar el acceso a la operación CreateGrant según el tipo derestricción de concesión de la solicitud.

Al crear una concesión, también puede especificar una restricción de concesión para permitirlas operaciones que permite la concesión solo cuando esté presente un determinadocontexto de cifrado (p. 16). La restricción de concesión puede ser uno de estos dos tipos:EncryptionContextEquals o EncryptionContextSubset. Puede usar esta clave de condición paracomprobar que la solicitud contiene un tipo u otro.

En la siguiente declaración de política se usa la clave de condición kms:GrantConstraintType parapermitir que un usuario cree concesiones solo cuando la solicitud incluya una restricción de concesiónEncryptionContextEquals. En el ejemplo se muestra una declaración de política en una política declaves.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GrantConstraintType": "EncryptionContextEquals" } }}

Véase también

• kms:EncryptionContext: (p. 107)• kms:EncryptionContextKeys (p. 112)• kms:GrantIsForAWSResource (p. 116)• kms:GrantOperations (p. 116)• kms:GranteePrincipal (p. 117)• kms:RetiringPrincipal (p. 120)

115

Page 124: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

kms:GrantIsForAWSResource

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:GrantIsForAWSResourceBooleano CreateGrant

ListGrants

RevokeGrant

Políticas de claves ypolíticas de IAM

Permite o deniega el acceso a las operaciones CreateGrant, ListGrants o RevokeGrant cuando alguno delos servicios de AWS que están integrados con AWS KMS realiza la operación de concesión en nombredel usuario. Esta clave de condición no afecta a los permisos del usuario para realizar la operación deconcesión directamente.

Por ejemplo, la siguiente instrucción de política utiliza la clave de condiciónkms:GrantIsForAWSResource. Permite que un usuario cree concesiones en esta CMK solo cuandouno de los servicios integrados crea la concesión en nombre del usuario. No permite que el usuario creeconcesiones directamente.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } }}

Véase también

• kms:GrantConstraintType (p. 115)• kms:GrantOperations (p. 116)• kms:GranteePrincipal (p. 117)• kms:RetiringPrincipal (p. 120)

kms:GrantOperations

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:GrantOperations Cadena CreateGrant Políticas de claves ypolíticas de IAM

Puede utilizar esta clave de condición para controlar el acceso a la operación CreateGrant según lasoperaciones de concesión de la solicitud. Por ejemplo, puede permitir que un usuario cree concesionesque deleguen el permiso para cifrar pero no para descifrar.

116

Page 125: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

En la siguiente instrucción de política de ejemplo se usa la clave de condición kms:GrantOperationspara permitir que un usuario cree concesiones que deleguen el permiso para cifrar y volver a cifrar cuandoesta CMK es la de destino. En el ejemplo se muestra una instrucción de política en una política de claves.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "ReEncryptTo" ] } }}

Véase también

• kms:GrantConstraintType (p. 115)• kms:GrantIsForAWSResource (p. 116)• kms:GranteePrincipal (p. 117)• kms:RetiringPrincipal (p. 120)

kms:GranteePrincipal

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:GranteePrincipalCadena CreateGrant IAM y políticas declaves

Puede utilizar esta clave de condición para controlar el acceso a la operación CreateGrant en funcióndel valor del parámetro GranteePrincipal de la solicitud. Por ejemplo, puede establecer que un usuariosolamente pueda crear concesiones para utilizar una CMK cuando la entidad principal de la solicitudCreateGrant coincida con la entidad principal especificada en la declaración de la condición.

En el ejemplo siguiente, la declaración de la política utiliza la clave de condición kms:GranteePrincipalpara que el usuario solamente pueda crear concesiones de una CMK cuando la entidad principal delbeneficiario de la concesión sea LimitedAdminRole.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole" }

117

Page 126: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

}}

Véase también

• kms:GrantConstraintType (p. 115)• kms:GrantIsForAWSResource (p. 116)• kms:GrantOperations (p. 116)• kms:RetiringPrincipal (p. 120)

kms:KeyOrigin

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:KeyOrigin Cadena CreateKey

Operaciones derecursos de CMK

Políticas de IAM

Políticas de claves ypolíticas de IAM

La clave de condición kms:KeyOrigin controla el acceso a las operaciones en función del valor de lapropiedad Origin de CMK creada por la operación o utilizada en ella.

Puede utilizar esta clave de condición para controlar el acceso a la operación CreateKey en función delvalor del parámetro Origin de la solicitud. Los valores válidos para Origin son AWS_KMS, AWS_CLOUDHSMy EXTERNAL.

Por ejemplo, puede establecer que un usuario solamente pueda crear una CMK cuando el material declaves se genere en KMS (AWS_KMS), únicamente cuando el material de claves se genere en un clúster deAWS CloudHSM asociado con un almacén de claves personalizado (p. 189) (AWS_CLOUDHSM) o solo siel material de claves se importa (p. 162) desde un origen externo (EXTERNAL).

En el siguiente ejemplo la declaración de política utiliza la clave de condición kms:KeyOrigin parapermitir a un usuario crear una CMK solo cuando AWS KMS crea el material de claves.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateKey", "Resource": "*", "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_KMS" } }}

También puede utilizar la clave de condición kms:KeyOrigin para controlar el acceso a las operacionesque utilizan o administran una CMK en función de la propiedad Origin de la CMK utilizada para laoperación. La operación debe ser una operación de recursos de CMK; es decir, una operación que estéautorizada para una determinada CMK. Para identificar las operaciones de recursos de CMK, en la tablade acciones y recursos (p. 87), busque un valor de CMK en la columna Resources para la operación.

118

Page 127: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

Por ejemplo, la siguiente política de IAM permite a las entidades principales realizar las operaciones derecursos de CMK especificadas, pero solo con las CMK de la cuenta que se crearon en un almacén declaves personalizado.

{ "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:GenerateDataKeyPair", "kms:GenerateDataKeyPairWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": { "arn:aws:kms:us-west-2:111122223333:key/*" }, "Condition": { "StringEquals": { "kms:KeyOrigin": "AWS_CLOUDHSM" } }}

Véase también

• kms:BypassPolicyLockoutSafetyCheck (p. 100)• kms:CustomerMasterKeySpec (p. 102)• kms:CustomerMasterKeyUsage (p. 103)

kms:MessageType

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:MessageType Cadena Sign

Verify

Políticas de claves ypolíticas de IAM

La clave de condición kms:MessageType controla el acceso a las operaciones Sign y Verify en funcióndel valor del parámetro MessageType de la solicitud. Los valores válidos para MessageType son RAW yDIGEST.

Por ejemplo, la siguiente declaración de política de claves utiliza la clave de condición kms:MessageTypepara permitir a un usuario utilizar una CMK asimétrica para firmar un mensaje, pero no un resumen demensajes.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringEquals": {

119

Page 128: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

"kms:MessageType": "RAW" } }}

Véase también

• the section called “kms:SigningAlgorithm” (p. 121)

kms:ReEncryptOnSameKey

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:ReEncryptOnSameKeyBooleano ReEncrypt Políticas de claves ypolíticas de IAM

Puede utilizar esta clave de condición para controlar el acceso a la operación ReEncrypt en función desi la solicitud especifica una CMK de destino que sea la misma que la usada para el cifrado original. Porejemplo, la siguiente declaración de política utiliza la clave de condición kms:ReEncryptOnSameKey parapermitir que un usuario vuelva a cifrar únicamente cuando la CMK de destino sea la misma que se utilizópara el cifrado original. En el ejemplo se muestra una instrucción de política en una política de claves.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ReEncrypt*", "Resource": "*", "Condition": { "Bool": { "kms:ReEncryptOnSameKey": true } }}

kms:RetiringPrincipal

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:RetiringPrincipalCadena (lista) CreateGrant Políticas de claves ypolíticas de IAM

Puede utilizar esta clave de condición para controlar el acceso a la operación CreateGrant en funcióndel valor del parámetro RetiringPrincipal de la solicitud. Por ejemplo, puede establecer que un usuariosolamente pueda crear concesiones para utilizar una CMK cuando el parámetro RetiringPrincipalde la solicitud CreateGrant coincida con el parámetro RetiringPrincipal de la declaración de lacondición.

La siguiente instrucción de política de ejemplo permite a un usuario crear concesiones para la CMK. Laclave de condición kms:RetiringPrincipal restringe el permiso a las solicitudes CreateGrant en lasque la entidad principal que se va a dar de baja sea LimitedAdminRole o el usuario OpsAdmin.

120

Page 129: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:RetiringPrincipal": [ "arn:aws:iam::111122223333:role/LimitedAdminRole", "arn:aws:iam::111122223333:user/OpsAdmin" ] } }}

Véase también

• kms:GrantConstraintType (p. 115)• kms:GrantIsForAWSResource (p. 116)• kms:GrantOperations (p. 116)• kms:GranteePrincipal (p. 117)

kms:SigningAlgorithm

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:SigningAlgorithmCadena Sign

Verify

Políticas de claves ypolíticas de IAM

Puede utilizar la clave de condición kms:SigningAlgorithm para controlar el acceso a las operacionesSign y Verify en función del valor del parámetro SigningAlgorithm en la solicitud. Esta clave de condición noafecta a las operaciones realizadas fuera de AWS KMS, como la verificación de firmas con la clave públicaen un par de CMK asimétrica fuera de AWS KMS.

La siguiente política de claves de ejemplo permite a los usuarios que puedan asumir el rol testers parautilizar la CMK para firmar mensajes solo cuando el algoritmo de firma utilizado para la solicitud sea unalgoritmo RSASSA_PSS, como RSASSA_PSS_SHA512.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/testers" }, "Action": "kms:Sign", "Resource": "*", "Condition": { "StringLike": { "kms:SigningAlgorithm": "RSASSA_PSS*" } }}

Véase también

121

Page 130: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

• kms:EncryptionAlgorithm (p. 105)• the section called “kms:MessageType” (p. 119)

kms:ValidTo

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:ValidTo Marca temporal ImportKeyMaterial Políticas de claves ypolíticas de IAM

La clave de condición kms:ValidTo controla el acceso a la operación ImportKeyMaterial en función delvalor del parámetro ValidTo de la solicitud, que determina cuándo vence el material de claves importado. Elvalor se expresa en tiempo Unix.

De forma predeterminada, el parámetro ValidTo es obligatorio en las solicitudes ImportKeyMaterial.Sin embargo, si el valor del parámetro ExpirationModel es KEY_MATERIAL_DOES_NOT_EXPIRE,el parámetro ValidTo no es válido. También puede utilizar la clave de condiciónkms:ExpirationModel (p. 114) para requerir el parámetro ExpirationModel o un valor de parámetroespecífico.

La siguiente instrucción de política de ejemplo permite a un usuario importar material de claves en unaCMK. La clave de condición kms:ValidTo limita el permiso a las solicitudes ImportKeyMaterial en lasque el valor ValidTo sea menor o igual que 1546257599.0 (31 de diciembre de 2018 11:59:59 p. m.).

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:ImportKeyMaterial", "Resource": "*", "Condition": { "NumericLessThanEquals": { "kms:ValidTo": "1546257599.0" } }}

Véase también

• kms:ExpirationModel (p. 114)• kms:WrappingAlgorithm (p. 125)• kms:WrappingKeySpec (p. 126)

kms:ViaService

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:ViaService Cadena La clave de condiciónkms:ViaServicees válida para todas

Políticas de claves ypolíticas de IAM

122

Page 131: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

las operacionesde AWS KMSexcept: CreateKey,GenerateRandom,ListAliases, ListKeys,ListRetirableGrants,RetireGrant y lasoperaciones de la APIque crean y administranalmacenes de clavespersonalizados (p. 189).

La clave de condición kms:ViaService limita el uso de una clave maestra de cliente (p. 3) (CMK) deAWS KMS a las solicitudes de servicios de AWS especificados. Puede especificar uno o varios serviciosen cada clave de condición kms:ViaService.

Por ejemplo, la siguiente instrucción de una política de claves utiliza la clave de condiciónkms:ViaService para permitir que se use una CMK administrada por el cliente (p. 4) para las accionesespecificadas solo cuando la solicitud provenga de Amazon EC2 o Amazon RDS en la región EE.UU.Oeste (Oregón) en nombre de ExampleUser.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "ec2.us-west-2.amazonaws.com", "rds.us-west-2.amazonaws.com" ] } }}

También puede utilizar un clave de condición kms:ViaService para denegar permisos para usar unaCMK cuando la solicitud provenga de determinados servicios. Por ejemplo, la siguiente instrucción de unapolítica de claves utiliza una clave de condición kms:ViaService para impedir que se utilice una CMKadministrada por el cliente para las operaciones Encrypt cuando la solicitud provenga de AWS Lambdaen nombre de ExampleUser.

{ "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser"

123

Page 132: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

}, "Action": [ "kms:Encrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "lambda.us-west-2.amazonaws.com" ] } }}

Important

Cuando se utiliza la clave de condición kms:ViaService, el servicio realiza la solicitud ennombre de una entidad principal de la cuenta de AWS. Estas entidades principales deben tenerlos siguientes permisos:

• Permiso para utilizar la CMK. La entidad principal debe conceder estos permisos al serviciointegrado para que pueda utilizar la CMK administrada por el cliente en nombre de la entidadprincipal. Para obtener más información, consulte Cómo los servicios de AWS usan AWSKMS (p. 250).

• Permiso para utilizar el servicio integrado. Para obtener información sobre cómo concedera los usuarios acceso a un servicio de AWS que esté integrado con AWS KMS, consulte ladocumentación del servicio integrado.

Todas las CML administradas por AWS (p. 4) utilizan una clave de condición kms:ViaService incluidaen su documento de política de claves. Esta condición permite que solo se utilice la CMK para lassolicitudes que proceden del servicio que ha creado la CMK. Para ver la política de claves de una CMKadministrada por AWS, utilice la operación GetKeyPolicy.

La clave de condición kms:ViaService es válida en IAM y las instrucciones de políticas de clave.Los servicios que especifique deben estar integrados con AWS KMS y admitir la clave de condiciónkms:ViaService.

En la siguiente tabla se muestran los servicios de AWS que están integrados con AWS KMS, admiten lasCMK administradas por el cliente y admiten el uso de la clave de condición kms:ViaService en las CMKadministradas por el cliente. Es posible que los servicios de esta tabla no estén disponibles en todas lasregiones.

Servicios que admiten la clave de condición kms:ViaService en las CMK administradas por elcliente

Nombre del servicio Nombre de KMS ViaService

AWS Backup backup.región_AWS. amazonaws.com

Amazon Connect connect.región_AWS.amazonaws.com

AWS Database Migration Service (AWS DMS) dms.región_AWS.amazonaws.com

AWS Directory Service directoryservice.región_AWS. amazonaws.com

Amazon EC2 Systems Manager ssm.región_AWS.amazonaws.com

Amazon Elastic Block Store (Amazon EBS) ec2.región_AWS.amazonaws.com (EBS only)

Amazon Elastic File System elasticfilesystem.región_AWS.amazonaws.com

124

Page 133: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

Nombre del servicio Nombre de KMS ViaService

Amazon Elasticsearch Service es.región_AWS.amazonaws.com

Amazon FSx fsx.región_AWS. amazonaws.com

AWS Glue glue.región_AWS.amazonaws.com

Amazon Kinesis kinesis.región_AWS.amazonaws.com

Amazon Transmisión de vídeo de Kinesis kinesisvideo.región_AWS.amazonaws.com

AWS Lambda lambda.región_AWS.amazonaws.com

Amazon Lex lex.región_AWS.amazonaws.com

Amazon Managed Streaming para Apache Kafka kafka.región_AWS. amazonaws.com

Amazon Neptune rds.región_AWS.amazonaws.com

Amazon Redshift redshift.región_AWS.amazonaws.com

Amazon Relational Database Service (AmazonRDS)

rds.región_AWS.amazonaws.com

Amazon RDS Performance Insights rds.región_AWS.amazonaws.com

AWS Secrets Manager (Secrets Manager) secretsmanager.región_AWS.amazonaws.com

Amazon Simple Email Service (Amazon SES) ses.región_AWS.amazonaws.com

Amazon Simple Notification Service (Amazon SNS) sns.región_AWS. amazonaws.com

Amazon Simple Storage Service (Amazon S3) s3.región_AWS.amazonaws.com

AWS Snowball importexport.región_AWS.amazonaws.com

Amazon SQS sqs.región_AWS.amazonaws.com

Amazon WorkMail workmail.región_AWS.amazonaws.com

Amazon WorkSpaces workspaces.región_AWS.amazonaws.com

AWS X-Ray xray.región_AWS. amazonaws.com

kms:WrappingAlgorithm

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:WrappingAlgorithmCadena GetParametersForImportPolíticas de claves ypolíticas de IAM

Esta clave de condición controla el acceso a la operación GetParametersForImport en función del valor delparámetro WrappingAlgorithm de la solicitud. Puede utilizar esta condición para exigir que las entidadesprincipales usen un algoritmo para cifrar el material durante el proceso de importación. Las solicitudes dela clave pública y el token de importación necesarios no se realizan cuando especifican un algoritmo deencapsulamiento diferente.

125

Page 134: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves de condición de AWS KMS

La siguiente declaración de política de ejemplo utiliza la clave de condición kms:WrappingAlgorithmpara conceder al usuario de ejemplo permiso para llamar a la operación GetParametersForImport,pero le impide utilizar el algoritmo de encapsulamiento RSAES_OAEP_SHA_1. CuandoWrappingAlgorithm en la solicitud GetParametersForImport es RSAES_OAEP_SHA_1, se produceun error en la operación.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringNotEquals": { "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1" } }}

Véase también

• kms:ExpirationModel (p. 114)• kms:ValidTo (p. 122)• kms:WrappingKeySpec (p. 126)

kms:WrappingKeySpec

Claves de condición deAWS KMS

Tipo de condición Operaciones de la API Tipo de política

kms:WrappingKeySpec Cadena GetParametersForImportPolíticas de claves ypolíticas de IAM

Esta clave de condición controla el acceso a la operación GetParametersForImport en función del valor delparámetro WrappingKeySpec de la solicitud. Puede utilizar esta condición para exigir que las entidadesprincipales usen un determinado tipo de clave pública durante el proceso de importación. Si la solicitudespecifica un tipo de clave diferente, produce un error.

Como el único valor válido del parámetro WrappingKeySpec es RSA_2048, al impedir que los usuariosutilicen este valor, se evita que utilicen la operación GetParametersForImport.

En el ejemplo siguiente, la declaración de la política utiliza la clave de condiciónkms:WrappingAlgorithm para requerir que el parámetro WrappingKeySpec de la solicitud seaRSA_2048.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": "kms:GetParametersForImport", "Resource": "*", "Condition": { "StringEquals": { "kms:WrappingKeySpec": "RSA_2048" }

126

Page 135: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar concesiones

}}

Véase también

• kms:ExpirationModel (p. 114)• kms:ValidTo (p. 122)• kms:WrappingAlgorithm (p. 125)

Usar concesionesAWS KMS admite dos mecanismos de control de acceso basados en recursos: políticas declaves (p. 57) y concesiones. Con las concesiones puede delegar mediante programación el uso delas claves maestras de cliente (CMK) de KMS en otras entidades principales de AWS. Puede utilizarlaspara permitir el acceso, pero no para denegarlo. Como las concesiones pueden ser muy específicas yson fáciles de crear y revocar, suelen utilizarse para proporcionar permisos temporales o permisos másdetallados.

También puede utilizar las políticas de claves para permitir que otras entidades principales de AWSobtengan acceso a una CMK, pero las políticas de claves funcionan mejor para las asignaciones depermisos relativamente estáticas. Además, las políticas de claves utilizan el modelo de permisos estándarde AWS en el que los usuarios tienen o no tienen permiso para realizar una acción con un recurso. Porejemplo, los usuarios con el permiso kms:PutKeyPolicy para una CMK pueden sustituir por completo lapolítica de claves para una CMK por otra política de claves que elijan. Para permitir una administración depermisos más detallada, use concesiones.

En Trabajar con concesiones (p. 367) puede consultar ejemplos de código que muestran cómo funcionanlas concesiones.

Crear una concesiónPara crear una concesión, llame a la operación CreateGrant. Especifique una CMK, la entidad principala la que la concesión permite usar la CMK y una lista de las operaciones permitidas. La operaciónCreateGrant devuelve un ID de concesión que puede utilizar para identificar la concesión en lasoperaciones posteriores. Para personalizar la concesión, utilice los parámetros opcionales Constraintspara definir restricciones de concesión.

Por ejemplo, el siguiente comando CreateGrant crea una concesión que permite a exampleUserllamar a la operación Decrypt en la CMK simétrica (p. 144) especificada. La concesión utiliza elparámetro RetiringPrincipal para designar una entidad principal que puede retirar la concesión.También incluye una restricción de concesión que permite el permiso únicamente cuando el contexto decifrado (p. 16) de la solicitud incluye "Department": "IT".

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

Para ver la concesión, utilice la operación ListGrants.Note

El campo GranteePrincipal de la respuesta ListGrants generalmente contiene el principalbeneficiario de la concesión. Sin embargo, cuando el principal beneficiario de la concesión es

127

Page 136: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConcesiones para las CMK simétricas y asimétricas

un servicio de AWS, el campo GranteePrincipal contiene el servicio principal, que puederepresentar varios beneficiarios principales distintos.

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572216195.0, "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Operations": [ "Decrypt" ] } ]}

Cualquier usuario que tenga el permiso kms:RevokeGrant en la CMK puede revocar (eliminar) lasconcesiones.

Cualquiera de las siguientes entidades principales pueden retirar las concesiones:

• La cuenta de AWS (usuario raíz) en la que se creó la concesión• La entidad principal que se va a dar de baja en la concesión, si hay alguna• La entidad principal beneficiaria, si la concesión incluye el permiso kms:RetireGrant

Concesiones para las CMK simétricas y asimétricasPuede crear una concesión que controle el acceso a una CMK simétrica o a una CMK asimétrica. Noobstante, no puede crear una concesión que permita que una entidad principal realice una operación queno es compatible con la CMK. Si lo intenta, AWS KMS devuelve la excepción ValidationError.

CMK simétricas

Las concesiones de las CMK simétricas no pueden permitir las operaciones Sign, Verify oGetPublicKey. (Hay excepciones limitadas a esta regla para las operaciones heredadas, pero no debecrear una concesión para una operación con la que AWS KMS no sea compatible).

CMK asimétricas

Las concesiones para las CMK asimétricas no pueden permitir operaciones que generen clavesde datos o pares de claves de datos. Tampoco pueden permitir operaciones relacionadas con larotación automática de claves (p. 157), el material de claves importado (p. 162) o las CMK de losalmacenes de claves personalizadas (p. 189).

Las concesiones de las CMK con un uso de la clave de SIGN_VERIFY no pueden permitir lasoperaciones de cifrado. Las concesiones de las CMK con un uso de la clave de ENCRYPT_DECRYPTno pueden permitir las operaciones Sign o Verify.

128

Page 137: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRestricciones de concesiones

Restricciones de concesionesLas restricciones de concesiones establecen condiciones en los permisos que puede realizar la entidadprincipal del beneficiario. AWS KMS admite dos restricciones, ambas están relacionadas con el contextode cifrado (p. 16) de una solicitud para una operación criptográfica.

Note

No puede utilizar las restricciones de concesiones de contexto de cifrado en una concesiónpara una CMK asimétrica. Los algoritmos de cifrado asimétricos que AWS KMS utilizan no soncompatibles con un contexto de cifrado.

• EncryptionContextEquals especifica que la concesión solo se aplica cuando los pares de contextode cifrado de la solicitud coinciden exactamente, incluido el uso de mayúsculas y minúsculas, con lospares de contexto de cifrado de la restricción de concesión. Los pares pueden aparecer en cualquierorden, pero las claves y los valores de cada par no pueden variar.

• EncryptionContextSubset especifica que la concesión solo se aplica cuando el contexto de cifradode la solicitud incluye el contexto de cifrado especificado en la restricción de concesión. El contexto decifrado de la solicitud debe coincidir exactamente, incluido el uso de mayúsculas y minúsculas, con elcontexto de cifrado de la concesión, pero puede incluir pares adicionales de contexto de cifrado. Lospares pueden aparecer en cualquier orden, pero las claves y los valores de cada par incluido no puedenvariar.

Por ejemplo, supongamos que existe una concesión que permite las operaciones GenerateDataKey yDecrypt. La concesión incluye una restricción EncryptionContextSubset con los siguientes valores.

{"Department":"Finance","Classification":"Public"}

En este ejemplo, cualquiera de los siguientes valores de contexto de cifrado podría satisfacer la restricciónEncryptionContextSubset.

• {"Department":"Finance","Classification":"Public"}

• {"Classification":"Public","Department":"Finance"}

• {"Customer":"12345","Department":"Finance","Classification":"Public","Purpose":"Test"}

Sin embargo, los siguientes valores de contexto de cifrado no satisfarían la restricción, bien porqueestán incompletos, bien porque no incluyen una coincidencia exacta, incluido el uso de mayúsculas yminúsculas, de los pares especificados.

• {"Department":"Finance"}

• {"department":"finance","classification":"public"}

• {"Classification":"Public","Customer":"12345"}

Autorizar a CreateGrant en una política de clavesAl crear una política de claves para controlar el acceso a la operación CreateGrant, puede usar una ovarias condiciones de política para limitar el permiso. AWS KMS admite las siguientes claves de condiciónrelacionadas con las concesiones. Para obtener información detallada sobre estas claves de condición,consulte Claves de condición de AWS KMS (p. 99).

• kms:GrantConstraintType (p. 115)• kms:GrantIsForAWSResource (p. 116)

129

Page 138: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConceder el permiso a CreateGrant

• kms:GrantOperations (p. 116)• kms:GranteePrincipal (p. 117)• kms:RetiringPrincipal (p. 120)

Conceder el permiso a CreateGrantCuando una concesión incluye permiso para llamar a la operación CreateGrant, la concesión solopermite a la entidad principal beneficiaria crear concesiones que sean igual de restrictivas o más.

Por ejemplo, supongamos que existe una concesión que permite a la entidad principal beneficiaria llamara las operaciones GenerateDataKey, Decrypt y CreateGrant. La entidad principal beneficiaria puedeutilizar este permiso para crear una concesión que incluya cualquier subconjunto de las operacionesespecificadas en la concesión principal, como GenerateDataKey y Decrypt. Sin embargo, no puedeincluir otras operaciones, como ScheduleKeyDeletion o ReEncrypt.

Además, las restricciones de concesión de las concesiones secundarias deben ser igual de restrictivaso más que las de la concesión principal. Por ejemplo, la concesión secundaria puede añadir pares auna restricción EncryptionContextSubset de la concesión principal, pero no puede eliminarlos. Laconcesión secundaria puede cambiar una restricción EncryptionContextSubset por una restricciónEncryptionContextEquals, pero no al revés.

Uso de roles vinculados a servicios de AWS KMSAWS Key Management Service usa roles vinculados a servicios de AWS Identity and Access Management(IAM). Un rol vinculado a un servicio es un tipo único de rol de IAM que está vinculado directamente a AWSKMS. Los roles vinculados a un servicio están definidos por AWS KMS e incluyen todos los permisos queel servicio requiere para llamar a otros servicios de AWS en su nombre.

Con una función vinculada a servicios, resulta más sencillo configurar AWS KMS, porque no es precisoagregar los permisos necesarios manualmente. AWS KMS define los permisos de las funciones vinculadascon su propio servicio y, a menos que esté definido de otra manera, solo AWS KMS puede asumir susfunciones. Los permisos definidos incluyen la política de confianza y la política de permisos, y esa políticade permisos no se puede asociar a ninguna otra entidad de IAM.

Solo puede eliminar un rol vinculado a un servicio después de eliminar los recursos relacionados. De estaforma, se protegen los recursos de AWS KMS, ya que se evita que se puedan eliminar accidentalmentepermisos de acceso a los recursos.

Para obtener información sobre otros servicios que admiten roles vinculados a servicios, consulte Serviciosde AWS que funcionan con IAM y busque los servicios que tienen Sí en la columna Rol vinculado aservicio. Seleccione una opción Sí con un enlace para ver la documentación acerca del rol vinculado alservicio en cuestión.

Permisos de roles vinculados a un servicio paraalmacenes de claves personalizadas de AWS KMSAWS KMS utiliza un rol vinculado a un servicio llamadoAWSServiceRoleForKeyManagementServiceCustomKeyStores para ser compatible con los almacenes declaves personalizados (p. 189). Este rol vinculado a servicio concede permiso a AWS KMS para ver losclústeres de AWS CloudHSM y crear la infraestructura de red para admitir una conexión entre el almacénde claves personalizado y su clúster de AWS CloudHSM. AWS KMS crea este rol únicamente cuandose crea un almacén de claves personalizado (p. 189). No puede crear este rol vinculado a un serviciodirectamente.

130

Page 139: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDeterminar el acceso

El rol vinculado a un servicio AWSServiceRoleForKeyManagementServiceCustomKeyStores confía enque cks.kms.amazonaws.com asumirá el rol. En consecuencia, solo AWS KMS puede asumir este rolvinculado a un servicio.

Los permisos del rol están limitados a las acciones que ejecuta AWS KMS para conectar un almacén declaves personalizado con un clúster de AWS CloudHSM. No concede permisos adicionales a AWS KMS.Por ejemplo, AWS KMS no dispone de permiso para crear, administrar o eliminar los clústeres de AWSCloudHSM, los HSM o las copias de seguridad.

Para obtener más información acerca del rolAWSServiceRoleForKeyManagementServiceCustomKeyStores, incluida la lista de permisos y lasinstrucciones sobre cómo ver el rol, editar la descripción del rol, eliminar el rol y hacer que AWS KMSvuelva a crearlo, consulte Autorizar a AWS KMS para administrar AWS CloudHSM y recursos de AmazonEC2 (p. 194).

Determinar el acceso a una clave maestra decliente de AWS KMS

Para determinar el alcance máximo de quién o qué tiene acceso actualmente a una clavemaestra de cliente (CMK) en AWS KMS, debe examinar la política de claves de la CMK, todas lasconcesiones (p. 127) que se aplican a la CMK y, posiblemente, todas las políticas de AWS Identity andAccess Management (IAM). Puede hacerlo para determinar el ámbito del uso potencial de una CMK ocomo ayuda para cumplir los requisitos de conformidad o auditoría. Los siguientes temas pueden ayudarlea generar una lista completa de las entidades principales de AWS que actualmente tienen acceso a unaCMK.

Temas• Examinar la política de claves (p. 131)• Examinar las políticas de IAM (p. 133)• Examinar concesiones (p. 135)• Solución de problemas de acceso a las claves (p. 136)

Examinar la política de clavesLas políticas de claves (p. 57) son la forma principal de controlar el acceso a las claves principales decliente (CMK) en AWS KMS.

Cuando una política de claves consta de la política de claves predeterminada (p. 59) o la incluye, lapolítica de claves permite a los administradores de IAM de la cuenta utilizar políticas de IAM para controlarel acceso a la CMK. Además, si la política de claves da permiso a otra cuenta de AWS (p. 81) paraque utilice la CMK, los administradores de IAM de la cuenta externa pueden utilizar políticas de IAM paradelegar dichos permisos. Para determinar la lista completa de entidades principales que pueden obteneracceso a la CMK, examine las políticas de IAM (p. 133).

Para ver la política de claves de una CMK administrada por el cliente (p. 4) de AWS KMS o unaCMK administrada por AWS (p. 4) en su cuenta, utilice la Consola de administración de AWS o laoperación GetKeyPolicy en la API de AWS KMS. Para ver la política de claves, debe tener permisoskms:GetKeyPolicy para la CMK. Para obtener instrucciones acerca de cómo ver la política de clavespara una CMK, consulte the section called “Consultar una política de claves” (p. 69).

Examine el documento de políticas de claves y anote todas las entidades principales especificadas en elelemento Principal de cada declaración de política. Los usuarios de IAM, las roles de IAM y las cuentasde AWS en los elementos Principal son los que tienen acceso a esta CMK.

131

Page 140: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresExaminar la política de claves

Note

No establezca un asterisco (*) en la entidad principal en cualquier declaración de privacidad queofrezca permiso. Un asterisco ofrece permiso a las identidades de todas las cuentas de AWSpara utilizar el CMK, a no ser que otra declaración de privacidad lo deniegue explícitamente. Losusuarios de otras cuentas de AWS solo necesitan permisos de IAM en sus cuentas para usar elCMK.

En los siguientes ejemplos se utilizan las declaraciones de política existentes en la política de clavespredeterminada (p. 58) para demostrar cómo hacerlo.

Example Instrucción de política 1

{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*"}

En la declaración de política anterior, arn:aws:iam::111122223333:root hace referencia a la cuenta111122223333 de AWS. De forma predeterminada, una declaración de política de este tipo está presenteen el documento de políticas de claves al crear una CMK con la consola y al crear una CMK nuevamediante programación, sin proporcionar ninguna política de claves.

Un documento de políticas de claves con una declaración que permita el acceso a la cuenta de AWS(usuario raíz) habilita las políticas de IAM en la cuenta para permitir el acceso a la CMK (p. 59). Estosignifica que los usuarios y las roles de IAM de la cuenta podrían tener acceso a la CMK aunque no seindiquen explícitamente como entidades principales en el documento de políticas de claves. Examine todaslas políticas de IAM (p. 133) en todas las cuentas de AWS enumeradas como entidades principales paradeterminar si permiten el acceso a esta CMK.

Example Instrucción de política 2

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"}, "Action": [ "kms:Describe*", "kms:Put*", "kms:Create*", "kms:Update*", "kms:Enable*", "kms:Revoke*", "kms:List*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*"}

En la declaración de política anterior, arn:aws:iam::111122223333:user/KMSKeyAdmin hacereferencia al usuario de IAM denominado KMSKeyAdmin en la cuenta 111122223333 de AWS. Esteusuario puede realizar las acciones enumeradas en la declaración de política, que son las accionesadministrativas para administrar una CMK.

132

Page 141: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresExaminar las políticas de IAM

Example Instrucción de política 3

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*"}

En la instrucción de la política anterior, arn:aws:iam::111122223333:role/EncryptionApp hacereferencia al rol de IAM denominado EncryptionApp en la cuenta 111122223333 de AWS. Las entidadesprincipales que pueden asumir este rol tienen permiso para realizar las acciones enumeradas en ladeclaración de política, que son las acciones criptográficas para cifrar y descifrar datos con una CMK.

Example Instrucción de política 4

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}}

En la instrucción de la política anterior, arn:aws:iam::111122223333:role/EncryptionApp hacereferencia al rol de IAM denominada EncryptionApp en la cuenta 111122223333 de AWS. Las entidadesprincipales que pueden asumir este rol tienen permiso para realizar las acciones enumeradas en ladeclaración de política. Estas acciones, cuando se combinan con las acciones permitidas en Ejemplode declaración de política 3, son las necesarias para delegar el uso de la CMK a la mayoría de losservicios de AWS que se integran con AWS KMS (p. 250), específicamente los servicios que usanconcesiones (p. 127). El elemento Condition garantiza que la delegación solo está permitida cuando eldelegado es un servicio de AWS que se integra en AWS KMS y usa concesiones para la autorización.

Para conocer las distintas formas en las que puede especificar una entidad principal en un documento depolíticas de claves, consulte el tema relacionado con la especificación de una entidad principal en la Guíadel usuario de IAM.

Para obtener más información sobre las políticas de claves de AWS KMS, consulte Usar políticas declaves en AWS KMS (p. 57).

Examinar las políticas de IAMAdemás de la política de claves y las becas, también puede utilizar políticas de IAM junto con unapolítica de claves de CMK para permitir el acceso a una CMK. Para obtener más información sobre cómofuncionan las políticas de IAM y las políticas de claves de forma conjunta, consulte Solución de problemasde acceso a las claves (p. 136).

133

Page 142: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresExaminar las políticas de IAM

Para determinar qué entidades principales tienen acceso a una CMK a través de las políticas de IAM,puede utilizar la herramienta del simulador de políticas de IAM o puede realizar solicitudes a la API de IAM.

Formas de examinar las políticas de IAM• Examinar las políticas de IAM con el simulador de políticas de IAM (p. 134)• Examinar políticas de IAM con la API de IAM (p. 134)

Examinar las políticas de IAM con el simulador de políticas deIAMEl simulador de políticas de IAM puede ayudarle a saber qué entidades principales obtienen acceso a unaCMK de KMS mediante una política de IAM.

Para utilizar el simulador de políticas de IAM para determinar el acceso a una CMK de KMS

1. Inicie sesión en la Consola de administración de AWS y abra el simulador de políticas de IAM enhttps://policysim.aws.amazon.com/.

2. En el panel Users, Groups, and Roles, elija el usuario, grupo o rol cuyas políticas desee simular.3. (Opcional) Desactive la casilla de verificación situada junto a la política que desee omitir en la

simulación. Para simular todas las políticas, deje todas las políticas seleccionadas.4. En el panel Policy Simulator, haga lo siguiente:

a. En Select service, elija Key Management Service.b. Para simular acciones de AWS KMS específicas, en Select actions, elija las acciones que desea

simular. Para simular todas las acciones de AWS KMS, elija Select All (Seleccionar todo).5. (Opcional) El simulador de políticas simula el acceso a todas las CMK de KMS de forma

predeterminada. Para simular el acceso a una CMK de KMS específica, elija Simulation Settings(Configuraciones de simulación) y, a continuación, escriba el nombre de recurso de Amazon (ARN) dela CMK de KMS que se simulará.

6. Elija Run Simulation (Ejecutar la simulación).

Puede ver los resultados de la simulación en la sección Results. Repita los pasos del 2 al 6 por cadausuario, grupo y rol de IAM de la cuenta de AWS.

Examinar políticas de IAM con la API de IAMPuede utilizar la API de IAM para examinar políticas de IAM mediante programación. En los pasossiguientes se ofrece información general sobre cómo hacerlo:

1. Por cada cuenta de AWS enumerada como entidad principal en la política de claves deCMK (es decir, cada cuenta raíz enumerada con este formato: "Principal": {"AWS":"arn:aws:iam::111122223333:root"}), utilice las operaciones ListUsers y ListRoles de la API deIAM para recuperar una lista de todos los usuarios y roles de IAM de la cuenta.

2. Para cada usuario y rol de IAM de la lista, utilice la operación SimulatePrincipalPolicy de la API de IAMpasando los siguientes parámetros:• Para PolicySourceArn, especifique el nombre de recurso de Amazon (ARN) de un

usuario o rol de la lista. Puede especificar solo un PolicySourceArn para cada solicitudSimulatePrincipalPolicy, de modo que debe llamar a esta operación varias veces, una vez porcada usuario y función de IAM de la lista.

• Para la lista ActionNames, especifique cada acción de API de AWS KMS que se simulará.Para simular todas las acciones de la API de AWS KMS utilice kms:*. Para probar las accionesde la API de AWS KMS individuales, anteponga a cada acción de la API “kms:”, por ejemplo,

134

Page 143: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresExaminar concesiones

“kms:ListKeys”. Para obtener una lista completa de las acciones de la API de AWS KMS, consulteAcciones en la AWS Key Management Service API Reference.

• (Opcional) Para determinar si los usuarios o roles de IAM tienen acceso a determinadas CMK deKMS, use el parámetro ResourceArns para especificar una lista de los nombres de recurso deAmazon (ARN) de las CMK. Para determinar si los usuarios o las roles de IAM tienen acceso acualquier CMK, no use el parámetro ResourceArns.

IAM responde a cada solicitud SimulatePrincipalPolicy con una decisión de evaluación: allowed,explicitDeny o implicitDeny. Por cada respuesta que contenga una decisión de evaluación deltipo allowed, la respuesta incluye el nombre de la operación de API de AWS KMS específica permitida.También incluye el ARN de la CMK utilizado en la evaluación, si se ha realizado.

Examinar concesionesLas concesiones son mecanismos avanzados para especificar permisos que el usuario o un servicio deAWS integrado con AWS KMS pueden usar para especificar el modo y el momento en que se puede usaruna CMK. Las concesiones están asociadas a una CMK, y cada concesión contiene la entidad principalque recibe el permiso de usar la CMK y una lista de las operaciones permitidas. Las concesiones sonuna alternativa a la política de claves, y son útiles para casos de uso específicos. Para obtener másinformación, consulte Usar concesiones (p. 127).

Para obtener una lista de las concesiones para una CMK, utilice la operación ListGrants de AWS KMS.Puede examinar las concesiones de una CMK para determinar quién o qué tiene acceso actualmente parautilizar la CMK a través de dichas concesiones. Por ejemplo, a continuación se ofrece una representaciónJSON de una concesión que se ha obtenido del comando list-grants en la AWS CLI.

{"Grants": [{ "Operations": ["Decrypt"], "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Name": "0d8aa621-43ef-4657-b29c-3752c41dc132", "RetiringPrincipal": "arn:aws:iam::123456789012:root", "GranteePrincipal": "arn:aws:sts::111122223333:assumed-role/aws:ec2-infrastructure/i-5d476fab", "GrantId": "dc716f53c93acacf291b1540de3e5a232b76256c83b2ecb22cdefa26576a2d3e", "IssuingAccount": "arn:aws:iam::111122223333:root", "CreationDate": 1.444151834E9, "Constraints": {"EncryptionContextSubset": {"aws:ebs:id": "vol-5cccfb4e"}}}]}

Para averiguar quién o qué tiene acceso para utilizar la CMK, busque el elemento "GranteePrincipal".En el ejemplo anterior, la entidad principal beneficiaria es un usuario de rol asumido que está asociadocon la instancia EC2 i-5d476fab, que la infraestructura de EC2 usa para asociar el volumen de EBS cifradovol-5cccfb4e a la instancia. En este caso, el rol de infraestructura EC2 tiene permiso para usar la CMKporque anteriormente ha creado un volumen de EBS cifrado que está protegido por esta CMK y, después,ha asociado el volumen a una instancia EC2.

A continuación, se ofrece otro ejemplo de una representación JSON de una concesión que se ha obtenidodel comando list-grants en la AWS CLI. En el siguiente ejemplo, la entidad principal beneficiaria es otracuenta de AWS.

{"Grants": [{ "Operations": ["Encrypt"], "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Name": "", "GranteePrincipal": "arn:aws:iam::444455556666:root", "GrantId": "f271e8328717f8bde5d03f4981f06a6b3fc18bcae2da12ac38bd9186e7925d11", "IssuingAccount": "arn:aws:iam::111122223333:root", "CreationDate": 1.444151269E9

135

Page 144: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolución de problemas de acceso a las claves

}]}

Solución de problemas de acceso a las clavesAl autorizar el acceso a una clave maestra de cliente (CMK), AWS KMS evalúa lo siguiente:

• La política de claves asociada a la CMK. La política de claves siempre se define en la cuenta de AWSpropietaria de la CMK.

• Todas las políticas de IAM que están asociadas al usuario o rol de IAM que realiza la solicitud. Laspolíticas de IAM que rigen el uso de una entidad principal de una CMK siempre se definen en la cuentade AWS de la entidad principal.

• Todas las concesiones que afectan a la CMK.

AWS KMS evalúa la política de claves (p. 131) de la CMK, las políticas de IAM (p. 133) y lasconcesiones (p. 135) conjuntamente para determinar si se permite o se deniega el acceso a la CMK.Para ello, AWS KMS utiliza un proceso similar al representado en el siguiente diagrama de flujo. Elsiguiente diagrama de flujo ofrece una representación visual del proceso de evaluación de las políticas.

Este diagrama de flujo se divide en dos partes. Las partes parecen secuenciales, pero se suelen evaluar almismo tiempo.

• La autorización de uso determina si puede utilizar una CMK en función de su política de claves, suspolíticas de IAM y sus concesiones.

• La clave de confianza determina si debe confiar en una CMK que se le ha permitido utilizar. En general,puede confiar en los recursos de su cuenta de AWS. Sin embargo, puede estar tranquilo a la hora de

136

Page 145: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolución de problemas de acceso a las claves

utilizar las CMK de una cuenta de AWS diferente si una concesión o política de IAM de su cuenta lepermite utilizar la CMK.

Puede utilizar este diagrama de flujo para saber por qué se ha permitido o denegado que un intermediarioutilice una CMK. También puede utilizarlo para evaluar sus políticas y concesiones. Por ejemplo, eldiagrama de flujo muestra que se puede negar el acceso a un intermediario mediante una instrucción DENYexplícita, o por la ausencia de una instrucción ALLOW explícita, en la política de claves, la política de IAM ola concesión.

El diagrama de flujo puede explicar algunos escenarios comunes de permisos.

Ejemplos de permisos• Ejemplo 1: Se deniega el acceso al usuario a una CMK en su cuenta de AWS (p. 137)• Ejemplo 2: El usuario asume un rol con permiso para utilizar una CMK en una cuenta de AWS

diferente (p. 139)

Ejemplo 1: Se deniega el acceso al usuario a una CMK en sucuenta de AWSAlicia es una IAM usuaria de la cuenta 111122223333 de AWS. Se le ha denegado al acceso a una CMKen la misma cuenta de AWS. ¿Por qué no puede utilizar Alicia la CMK?

En este caso, se le deniega el acceso a Alicia a la CMK porque no hay ninguna política de claves, políticade IAM o concesión que proporcione los permisos necesarios. La política de claves de la CMK permite quela cuenta de AWS utilice políticas de IAM para controlar el acceso a la CMK, pero ninguna política de IAMconcede a Alicia permiso para usar la CMK.

137

Page 146: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolución de problemas de acceso a las claves

Considere las políticas relevantes para este ejemplo.

• La CMK que Alicia quiere utilizar tiene la política de claves predeterminada (p. 58). Esta políticapermite a la cuenta de AWS (p. 59) propietaria de la CMK utilizar políticas de IAM para controlar elacceso a la CMK. Esta política de claves satisface la condición ¿PERMITE la política de claves que lacuenta de los intermediarios utilice políticas de IAM para controlar el acceso a clave? del diagrama deflujo.

{ "Version" : "2012-10-17", "Id" : "key-test-1", "Statement" : [ { "Sid" : "Delegate to IAM policies", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : "kms:*", "Resource" : "*" } ]

138

Page 147: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolución de problemas de acceso a las claves

}

• Sin embargo, no hay ninguna política de claves, política de IAM ni concesión que conceda a Aliciapermiso para usar la CMK. Por lo tanto, se deniega a Alicia el permiso para utilizar la CMK.

Ejemplo 2: El usuario asume un rol con permiso para utilizar unaCMK en una cuenta de AWS diferenteRoberto es un usuario de la cuenta 1 (111122223333). Se le permite usar una CMK en la cuenta 2(444455556666) en operaciones criptográficas (p. 11). ¿Cómo es posible?

Tip

Al evaluar los permisos entre cuentas, recuerde que la política de claves se especifica en lacuenta de la CMK. La política de IAM se especifica en la cuenta del intermediario, incluso cuandoel intermediario está en una cuenta diferente.

• La política de claves de la CMK de la cuenta 2 permite que la cuenta 2 utilice políticas de IAM paracontrolar el acceso a la CMK.

• La política de claves de la CMK de la cuenta cuenta 2 permite que la cuenta 1 utilice la CMK enoperaciones criptográficas. Sin embargo, la cuenta 1 debe utilizar políticas de IAM para conceder accesoa la CMK a sus entidades principales.

• Una política de IAM de la cuenta 1 permite al rol ExampleRole utilizar la CMK de la cuenta 2 para lasoperaciones criptográficas.

• Roberto, un usuario de la cuenta 1, tiene permiso para asumir el rol ExampleRole.• Roberto confía en esta CMK, porque, aunque no se encuentre en su cuenta, una política de IAM de su

cuenta le otorga permiso explícito para utilizar esta CMK.

139

Page 148: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolución de problemas de acceso a las claves

Considere las políticas que permiten a Roberto, un usuario de la cuenta 1, utilizar la CMK de la cuenta 2.

• La política de claves para la CMK permite que la cuenta 2 (444455556666, la cuenta propietaria dela CMK) utilice políticas de IAM para controlar el acceso a la CMK. Esta política de claves permitetambién que la cuenta 1 (111122223333) utilice la CMK en operaciones criptográficas (especificado enel elemento Action de la instrucción de política). Sin embargo, ninguna persona de la cuenta 1 puedeusar la CMK de la cuenta 2 hasta que la cuenta 1 defina políticas de IAM que concedan a las entidadesprincipales acceso a la CMK.

En el diagrama de flujo, esta política de claves de la cuenta 2 satisface la condición ¿PERMITE lapolítica de claves que la cuenta de los intermediarios utilice políticas de IAM para controlar el acceso a laclave?

{ "Id": "key-policy-acct-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Permission to use IAM policies", "Effect": "Allow",

140

Page 149: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolución de problemas de acceso a las claves

"Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow account 1 to use this CMK", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": "*" } ]}

• Una política de IAM de la cuenta de AWS del intermediario (cuenta 1, 111122223333) concede al rolExampleRole de la cuenta 1 permiso para realizar operaciones criptográficas mediante la CMK de lacuenta 2 (444455556666). El elemento Action concede al rol los mismos permisos que la política declaves de la cuenta 2 concedió a la cuenta 1.

Las políticas de IAM entre cuentas como esta son eficaces solo cuando la política de claves de laCMK de la cuenta 2 concede a la cuenta 1 permiso para utilizar la CMK. Además, la cuenta 1 solopuede conceder permiso a sus entidades principales para realizar las acciones que la política de clavesconcedió a la cuenta.

En el diagrama de flujo, esto satisface la condición ¿Permite una política de IAM que el intermediariorealice esta acción?

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "arn:aws:iam::111122223333:role/ExampleRole" } "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncryptFrom", "kms:ReEncryptTo", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab" ] } ]}

141

Page 150: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolución de problemas de acceso a las claves

• El último elemento necesario es la definición del rol ExampleRole en la cuenta 1. El elementoAssumeRolePolicyDocument del rol permite a Roberto asumir el rol ExampleRole.

{ "Role": { "Arn": "arn:aws:iam::111122223333:role/ExampleRole", "CreateDate": "2019-05-16T00:09:25Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": { "Principal": { "AWS": "arn:aws:iam::111122223333:user/bob" }, "Effect": "Allow", "Action": "sts:AssumeRole" } }, "Path": "/", "RoleName": "ExampleRole", "RoleId": "AROA4KJY2TU23Y7NK62MV" }}

142

Page 151: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Usar claves simétricas y asimétricasAWS KMS protege las claves maestras de cliente (p. 3) (CMK) que usted utiliza para proteger sus datosy claves de datos. Las claves secretas se generan y utilizan únicamente en los módulos de seguridadde hardware diseñados para que nadie, incluidos los empleados de AWS, pueda acceder al material declaves en texto no cifrado.

Puede crear y administrar las CMK de la cuenta de AWS, además de la configuración de las políticasde claves (p. 57), políticas de IAM (p. 76) y concesiones (p. 127) que controlan el acceso a las CMK,habilitan y deshabilitan las CMK, crean etiquetas y alias y eliminan las CMK. Puede utilizar las CMKpara proteger los recursos de los servicios de AWS que están integrados con AWS KMS (p. 250).Además, puede auditar todas las operaciones que utilizan o administran las CMK en los registros de AWSCloudTrail (p. 318).

AWS KMS es compatible con CMK simétricas y asimétricas.

• CMK simétrica (p. 144): representa una única clave de cifrado secreta de 256 bits que AWS KMSnunca deja sin cifrar. Para utilizar la CMK simétrica, debe llamar a AWS KMS.

• CMK asimétrica (p. 144): representa un par de claves privadas y públicas relacionadas de formamatemática que puede utilizar para cifrar y descifrar o para firmar y verificar, pero no para ambasacciones. La clave privada nunca deja AWS KMS sin cifrar. Puede utilizar la clave pública en AWS KMSllamando a las operaciones de la API de AWS KMS o descargar la clave pública y utilizarla fuera deAWS KMS.

Note

AWS KMS también ofrece claves de datos (p. 5) simétricas y pares de claves de datos (p. 7) asimétricasdiseñados para su uso en una criptografía del lado del cliente fuera de AWS KMS. La clave de datossimétrica y la clave privada de un par de claves de datos asimétricas se protegen mediante una CMKsimétrica en AWS KMS.

• Clave de datos simétrica: una clave de cifrado simétrica que puede utilizar para cifrar los datos fuera deAWS KMS. Esta clave está protegida mediante una CMK simétrica en AWS KMS.

• Par de claves de datos asimétricas: un par de claves de curva elíptica (ECC) o RSA que está compuestopor una clave pública y una clave privada. Puede utilizar el par de claves de datos fuera de AWS KMSpara cifrar y descifrar datos o para firmar mensajes y verificar firmas. La clave privada está protegidamediante una simétrica en AWS KMS.

Para obtener información acerca de cómo crear y utilizar las claves de datos y los pares de claves dedatos, consulte Claves de datos (p. 5) y Pares de claves de datos (p. 7). Para aprender a limitar los tiposde pares de claves de datos que pueden generar las entidades principales de la cuenta, utilice la clave decondición kms:DataKeyPairSpec (p. 104).

En este tema se explica cómo funcionan las CMK simétricas y asimétricas, en qué difieren y cómo decidirqué tipo de CMK necesita para proteger los datos. También se explica cómo funcionan las claves de datossimétricas y los pares de claves de datos asimétricas y cómo se pueden utilizar fuera de AWS KMS.

Más información

• Para obtener una tabla que compara las operaciones de la API de AWS KMS que se aplican a cada tipode CMK, consulte the section called “Comparar las CMK simétricas y asimétricas” (p. 153).

• Para averiguar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas yasimétricas (p. 40).

143

Page 152: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAcerca de las CMK simétricas y asimétricas

• Para analizar las diferencias de la política de claves predeterminada que establece la consola de AWSKMS para las CMK simétricas y asimétricas, consulte the section called “Permite a los usuarios declaves utilizar la CMK con los servicios de AWS” (p. 65).

• Para especificar las especificaciones de clave, el uso de la clave, los algoritmos de cifrado y losalgoritmos de firma que las entidades principales de la cuenta pueden utilizar en las CMK, consulte thesection called “Claves de condición de AWS KMS” (p. 99).

• Para obtener información acerca de las que se aplican a los diferentes tipos de CMK, consulte thesection called “Cuotas de solicitud” (p. 388).

• Para aprender a firmar mensajes y verificar firmas con las CMK asimétricas, consulte Firma digital con lanueva función de claves asimétricas de AWS KMS en el Blog de seguridad de AWS.

Temas• Acerca de las CMK simétricas y asimétricas (p. 144)• Cómo elegir la configuración de la CMK (p. 145)• Consultar la configuración criptográfica de las CMK (p. 152)• Comparar las CMK simétricas y asimétricas (p. 153)

Acerca de las CMK simétricas y asimétricasEn AWS KMS, puede crear CMK simétricas y asimétricas.

Claves maestras de cliente simétricasCuando crea una clave maestra de cliente (CMK) en KMS, de forma predeterminada, obtiene una CMKsimétrica.

En AWS KMS, una CMK simétrica representa una clave de cifrado de 256 bits que nunca deja AWS KMSsin cifrar. Para utilizar una CMK simétrica, tiene que llamar a AWS KMS. Las claves simétricas se utilizanen el cifrado simétrico, donde se utiliza la misma clave para cifrar y descifrar.

A menos que la tarea requiera de forma explícita un cifrado asimétrico, las CMK simétricas, que nuncadejan AWS KMS sin cifrar, son una buena opción. Para obtener información acerca de la configuracióncriptográfica o la especificación de clave para las CMK simétricas, consulte Especificación de claveSYMMETRIC_DEFAULT (p. 148). Para obtener ayuda a la hora de crear una CMK simétrica, consulteCrear CMK simétricas (p. 22).

Para obtener ayuda para determinar si una CMK es simétrica o asimétrica, consulte Identificar CMKsimétricas y asimétricas (p. 40).

Puede utilizar una CMK simétrica en AWS KMS para cifrar, descifrar y volver a cifrar datos, generarclaves de datos y pares de claves de datos y generar cadenas de bytes aleatorias. Puede importarsu propio material de claves (p. 162) en una CMK simétrica y crear CMK simétricas en almacenesde claves personalizadas (p. 189). Para obtener una tabla en la que se comparan las operacionesque puede realizar en las CMK simétricas y asimétricas, consulte Comparación de CMK simétricas yasimétricas (p. 153).

Claves maestras asimétricas de clienteNote

Puede crear una CMK asimétrica en AWS KMS. Una CMK asimétrica representa un par de claves privadasy públicas relacionadas matemáticamente. Puede entregar la clave pública a cualquiera, aunque no sea deconfianza, pero la clave privada debe ser secreta.

144

Page 153: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo elegir la configuración de la CMK

En una CMK asimétrica, la clave privada se crea en AWS KMS y nunca deja AWS KMS sin cifrar. Parautilizar la clave privada, tiene que llamar a AWS KMS. Puede utilizar la clave pública en AWS KMSllamando a las operaciones de la API de AWS KMS. También puede descargar la clave pública (p. 50) yutilizarla fuera de AWS KMS.

Si su caso de uso requiere que los usuarios que no pueden llamar a AWS KMS realicen el cifrado fuera deAWS, las CMK asimétricas son una buena opción. Sin embargo, si crea una CMK para cifrar los datos quealmacena o administra en un servicio de AWS, utilice una CMK simétrica.

AWS KMS es compatible con dos tipos de CMK asimétricas.

• CMK de RSA : una CMK con un par de claves de RSA para cifrar y descifrar o para firmar y verificar(pero no para ambas acciones). KMS admite diferentes longitudes de claves para diferentes requisitosde seguridad.

• CMK de curva elíptica (ECC): una CMK con un par de claves de curva elíptica para firmar y verificar.KMS admite diferentes curvas utilizadas habitualmente.

Para obtener detalles técnicos acerca de los algoritmos de cifrado y firma que admite AWS KMS para lasCMK de RSA, consulte Especificaciones de clave de RSA (p. 148). Para obtener detalles técnicos acercade los algoritmos de firma que admite AWS KMS para las CMK de ECC, consulte Especificaciones declave de curva elíptica (p. 151).

Para obtener una tabla en la que se comparan las operaciones que puede realizar en las CMK simétricasy asimétricas, consulte Comparación de CMK simétricas y asimétricas (p. 153). Para obtener ayuda paradeterminar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas y asimétricas (p. 40).

Cómo elegir la configuración de la CMKEl tipo de CMK que crea varía en gran medida en función de cómo tiene pensado utilizar la CMK, losrequisitos de seguridad y los requisitos de autorización. Al crear la CMK, recuerde que la configuracióncriptográfica de la CMK, incluido el uso de la clave y la especificación de la clave, se establecen cuandocrea la CMK y no se puede cambiar. Para obtener ayuda con la creación de CMK simétricas y asimétricas,consulte the section called “Crear claves” (p. 22).

AWS KMS es compatible con dos tipos de claves de CMK: Symmetric (Simétrica) y Asymmetric(Asimétrica). Cada tipo de clave tiene asociadas opciones particulares de uso de la clave (p. 146) yespecificación de la clave (p. 147).

Utilice las siguientes directrices para determinar qué tipo de CMK necesita en función de su caso de uso.

Cifrar y descifrar datos

Utilice una CMK simétrica (p. 144) para la mayoría de los casos de uso que requieren cifrar ydescifrar datos. El algoritmo de cifrado simétrico que utiliza AWS KMS es rápido, eficaz y asegura laconfidencialidad y la autenticidad de los datos. Admite el cifrado autenticado con datos autenticadosadicionales (AAD), definidos como un contexto de cifrado (p. 16). Este tipo de CMK requiere que tantoel remitente como el destinatario de los datos cifrados tengan las credenciales válidas de AWS parallamar a AWS KMS.

Si su caso de uso requiere que los usuarios que no pueden llamar a AWS KMS realicen el cifradofuera de AWS, las CMK asimétricas (p. 144) son una buena opción. Puede distribuir la parte públicade la CMK asimétrica para permitir que estos usuarios cifren los datos. Las aplicaciones que necesitandescifrar estos datos pueden utilizar la parte privada de la CMK asimétrica en AWS KMS.

Firmar mensajes y verificar firmas

Para firmar mensajes y verificar firmas, tiene que utilizar una CMK asimétrica (p. 144). Puede utilizaruna CMK con una especificación de clave (p. 147) que representa un par de claves de RSA o un

145

Page 154: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSeleccionar el uso de la clave

par de claves de curva elíptica (ECC). La especificación de clave que seleccione la determina elalgoritmo de firma que desea utilizar. En algunos casos, los usuarios que verificarán las firmas seencuentran fuera de AWS y no pueden llamar a la operación Verify (Verificar). En ese caso, seleccioneuna especificación de clave (p. 147) asociada a un algoritmo de firma que estos usuarios puedanadmitir en sus aplicaciones locales.

Realizar el cifrado de clave pública

Para realizar el cifrado de clave pública, tiene que utilizar una CMK asimétrica (p. 144) conuna especificación de clave de RSA (p. 149). Las especificaciones de clave de curva elíptica(ECC) (p. 151) no se pueden utilizar en el cifrado de clave pública. Para cifrar los datos de AWSKMS con la clave pública de una CMK de RSA, utilice la operación Encrypt (Cifrar). También puededescargar la clave pública (p. 50) y compartirla con las partes que necesitan cifrar los datos fuera deAWS KMS.

Cuando descarga la clave pública de una CMK asimétrica, puede utilizarla fuera de AWS KMS. Noobstante, ya no está sujeto a los controles de seguridad que protegen la CMK en AWS KMS. Porejemplo, no puede utilizar las concesiones o las políticas de claves de KMS para controlar el uso de laclave pública. Tampoco puede controlar si la clave se utiliza únicamente para el cifrado y descifradomediante los algoritmos de cifrado de RSA que admite AWS KMS. Para obtener más información,consulte Consideraciones especiales para la descarga de claves públicas (p. 51).

Para descifrar los datos que se han cifrado con la clave pública fuera de AWS KMS, llame a laoperación Decrypt (Descifrar). La operación Decrypt falla si los datos se cifran con una clave públicade una CMK con un uso de la clave (p. 146) de SIGN_VERIFY. También fallará si se cifran medianteun algoritmo que KMS no admite para las CMK de RSA.

Para evitar estos errores, cualquier persona que utilice una clave pública fuera de AWS KMS debealmacenar la configuración de la clave. La consola de AWS KMS y la respuesta GetPublicKeyproporcionan la información que debe incluir cuando comparta la clave pública.

Usar con los servicios de AWS integrados

Para crear una CMK para utilizarla con un servicio de AWS que esté integrado con AWSKMS (p. 250), consulte la documentación del servicio. Todos los servicios de AWS que cifran datosen su nombre requieren una CMK simétrica (p. 144).

Además de estas consideraciones, las CMK con diferentes especificaciones de clave tienen diferentesprecios y diferentes . Para obtener información acerca de los precios de AWS KMS, consulte Preciosdel servicio de gestión de claves de AWS. Para obtener más información sobre las , consulte Cuotas desolicitud (p. 388).

Seleccionar el uso de la claveEl uso de la clave (p. 15) de una CMK determina si la CMK se utiliza para el cifrado y el descifrado o parala firma y la verificación. No se pueden elegir ambas opciones. El uso de una CMK para más de un tipo deoperaciones hace que el producto de ambas operaciones sea más vulnerable a ataques.

Como se muestra en la siguiente tabla, las CMK simétricas se pueden utilizar solo para cifrar y descifrar.Las CMK de curva elíptica (ECC) se pueden utilizar únicamente para firmar y verificar. Las decisiones deluso de la clave se realizan únicamente para las CMK de RSA.

Usos de la clave válidos para los tipos de CMK

Tipo de CMK Cifrar y descifrar Firmar y verificar

CMK simétricas

146

Page 155: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSeleccionar la especificación de clave

Tipo de CMK Cifrar y descifrar Firmar y verificar

CMK asimétricas con pares declaves de RSA

CMK asimétricas con pares declaves de ECC

En la consola de AWS KMS, primero debe seleccionar el tipo de clave (simétrica o asimétrica) y, acontinuación, para las CMK asimétricas, el uso de la clave. Si selecciona un tipo de clave simétrica, lasopciones del uso de la clave no aparecen, porque las CMK simétricas únicamente admiten el cifrado yel descifrado. El uso de la clave que selecciona determina qué especificaciones de clave (p. 147) semuestran.

Para seleccionar el uso de la clave en la consola de AWS KMS:

• Para las CMK con el material de claves de curva elíptica (ECC), seleccione Sign and verify (Firmar yverificar).

• Para las CMK con el material de claves de RSA, seleccione Encrypt and decrypt (Cifrar y descifrar) oSign and verify (Firmar y verificar).

Para determinar el uso de la clave que las entidades principales de la cuenta pueden utilizar en las CMK,utilice la clave de condición kms:CustomerMasterKeyUsage (p. 103).

Seleccionar la especificación de claveCuando crea una CMK asimétrica, selecciona su especificación de clave (p. 14). La especificaciónde clave, que es una propiedad de cada clave maestra de cliente (CMK), representa la configuracióncriptográfica de su CMK. Se selecciona la especificación de clave al crear la CMK y no se puede cambiar.Si ha seleccionado una especificación de clave errónea, elimine la CMK (p. 176) y cree una nueva.

Note

La especificación de clave determina si la CMK es simétrica o asimétrica, el tipo de material de clavesde la CMK y los algoritmos de cifrado o los algoritmos de firma que AWS KMS admite para la CMK.La especificación de clave que seleccione suele estar determinada por el caso de uso y los requisitosnormativos.

Para determinar las especificaciones de clave que las entidades principales de su cuenta pueden utilizaren las CMK, utilice la clave de condición kms:CustomerMasterKeySpec (p. 102).

AWS KMS admite las siguientes especificaciones de clave para las CMK:

• CMK simétricas (p. 148) (predeterminada; cifrado y descifrado)• SYMMETRIC_DEFAULT

• Especificaciones de clave de RSA (p. 148) (cifrado y descifrado o firma y verificación)• RSA_2048• RSA_3072• RSA_4096

• Especificaciones de clave de curva elíptica (p. 151)• Pares de claves de curva elíptica asimétricas recomendadas por NIST (firma y verificación)

• ECC_NIST_P256 (secp256r1)

147

Page 156: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSeleccionar la especificación de clave

• ECC_NIST_P384 (secp384r1)• ECC_NIST_P521 (secp521r1)

• Otros pares de claves de curva elíptica asimétricas (firma y verificación)• ECC_SECG_P256K1 (secp256k1), que se suele utilizar para las criptomonedas.

Temas

En los siguientes temas se incluye información técnica acerca de las especificaciones de clave.

• Especificación de clave de SYMMETRIC_DEFAULT (p. 148)• Especificaciones de clave de RSA (p. 148)• Especificaciones de clave de curva elíptica (p. 151)

Especificación de clave SYMMETRIC_DEFAULTLa especificación de clave predeterminada, SYMMETRIC_DEFAULT, es la especificación de clave paralas CMK simétricas. Cuando selecciona el tipo de clave Symmetric (Simétrica) en la consola de AWSKMS, esta selecciona la especificación de clave SYMMETRIC_DEFAULT. En la operación CreateKey, si noespecifica un valor CustomerMasterKeySpec, se selecciona SYMMETRIC_DEFAULT. Si no tiene unmotivo para utilizar una especificación de clave diferente, SYMMETRIC_DEFAULT es una buena opción.

El algoritmo de cifrado de las CMK simétricas también se conoce como SYMMETRIC_DEFAULT.Actualmente, esto representa un algoritmo simétrico basado en el estándar de cifrado avanzado (AES)en el modo de contador Galois (GCM) con claves de 256 bits, un estándar del sector para conseguir uncifrado seguro. El texto cifrado que este algoritmo genera admite datos autenticados adicionales (AAD),como un contexto de cifrado (p. 16), y GCM ofrece una comprobación de integridad adicional en el textocifrado. Para obtener detalles técnicos, consulte el documento técnico Detalles criptográficos de AWS KeyManagement Service.

Los datos cifrados con AES-256-GCM están protegidos ahora y en el futuro. Los criptógrafos consideranque este algoritmo es resistente a la informática cuántica. Los futuros e hipotéticos ataques de informáticacuántica a gran escala a textos cifrados creados con claves AES-GCM de 256 bits reducen la seguridadnominal de la clave a 128 bits. No obstante, este nivel de seguridad es suficiente para hacer inviables losataques de fuerza bruta en los textos cifrados de AWS KMS.

Puede utilizar una CMK simétrica en AWS KMS para cifrar, descifrar y volver a cifrar los datos y paragenerar claves de datos y pares de claves de datos. Los servicios de AWS que están integradoscon AWS KMS utilizan CMK simétricas para cifrar los datos en reposo. Puede importar su propiomaterial de claves (p. 162) en una CMK simétrica y crear CMK simétricas en almacenes de clavespersonalizadas (p. 189). Para obtener una tabla en la que se comparan las operaciones quepuede realizar en las CMK simétricas y asimétricas, consulte Comparación de CMK simétricas yasimétricas (p. 153).

Especificaciones de clave de RSACuando utiliza una especificación de clave de RSA, AWS KMS crea una CMK asimétrica con un par declaves de RSA. La clave privada nunca deja AWS KMS sin cifrar. Puede utilizar la clave pública en AWSKMS o descargarla para utilizarla fuera de AWS KMS.

Warning

Cuando cifre datos fuera de AWS KMS, asegúrese de que puede descifrar el texto cifrado. Siutiliza la clave pública de una CMK que se ha eliminado de AWS KMS, la clave pública de unaCMK configurada para firma y verificación o un algoritmo de cifrado que no es compatible con laCMK, los datos son irrecuperables.

148

Page 157: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSeleccionar la especificación de clave

En AWS KMS, puede utilizar las CMK asimétricas con pares de claves de RSA para el cifrado y eldescifrado o para la firma y la verificación, pero no para ambas acciones. Esta propiedad, conocida comouso de la clave (p. 146), se determina independientemente de la especificación de clave, pero tiene quetomar esta decisión antes de seleccionar una especificación de clave.

AWS KMS admite las siguientes especificaciones de clave de RSA para el cifrado y el descifrado o para lafirma y la verificación:

• RSA_2048• RSA_3072• RSA_4096

Las especificaciones de clave de RSA varían en la longitud de la clave de RSA en bits. La especificaciónde clave de RSA que seleccione puede estar determinada por las normas de seguridad o los requisitos dela tarea. Por regla general, utilice la clave más grande que sea práctica y asequible para la tarea. Las CMKcon diferentes especificaciones de clave de RSA tienen un precio diferente y están sujetas a diferentes .Para obtener información acerca de los precios de AWS KMS, consulte Precios del servicio de gestión declaves de AWS. Para obtener más información sobre las , consulte Cuotas de solicitud (p. 388).

Especificaciones de clave de RSA para el cifrado y el descifrado

Cuando se utiliza una CMK asimétrica de RSA para el cifrado y el descifrado, se cifra con la clave públicay se descifra con la clave privada. Cuando llama a la operación Encrypt en AWS KMS para una CMK deRSA, AWS KMS utiliza la clave pública del par de claves de RSA y el algoritmo de cifrado que especifiquepara cifrar los datos. Para descifrar el texto cifrado, llame a la operación Decrypt y especifique la mismaCMK y el mismo algoritmo de cifrado. AWS KMS utiliza la clave privada del par de claves de RSA paradescifrar los datos.

También puede descargar la clave pública y utilizarla para cifrar los datos fuera de AWS KMS. Asegúresede utilizar un algoritmo de cifrado que AWS KMS admita para las CMK de RSA. Para descifrar el textocifrado, llame a la función Decrypt con la misma CMK y el mismo algoritmo de cifrado.

AWS KMS admite dos algoritmos de cifrado para las CMK con especificaciones de clave de RSA. Estosalgoritmos, que se definen en PKCS #1 v2.2, difieren en la función hash que utilizan de forma interna. EnAWS KMS, los algoritmos RSAES_OAEP siempre utilizan la misma función hash para los fines de hash ypara la función de generación de máscaras (MGF1). Tiene que especificar un algoritmo de cifrado cuandollame a las operaciones Encrypt y Decrypt. Puede elegir un algoritmo diferente para cada solicitud.

Algoritmos de cifrado compatibles con las especificaciones de clave de RSA

Algoritmo de cifrado Descripción del algoritmo

RSAES_OAEP_SHA_1 PKCS #1 v2.2, sección 7.1. Cifrado de RSA conrelleno OAEP mediante SHA-1 para la función degeneración de máscaras MGF1 y hash, junto conuna etiqueta vacía.

RSAES_OAEP_SHA_256 PKCS #1, sección 7.1. Cifrado de RSA con rellenoOAEP mediante SHA-256 para la función degeneración de máscaras MGF1 y hash, junto conuna etiqueta vacía.

No puede configurar una CMK para utilizar un algoritmo de cifrado específico. No obstante, puede utilizarla condición de política kms:EncryptionAlgorithm (p. 105) para especificar los algoritmos de cifrado que lasentidades principales pueden utilizar con la CMK.

149

Page 158: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSeleccionar la especificación de clave

Para obtener los algoritmos de cifrado de una CMK, consulte la configuración criptográfica (p. 31) dela CMK en la consola de AWS KMS o utilice la operación DescribeKey. AWS KMS también ofrece laespecificación de clave y los algoritmos de cifrado cuando descarga la clave pública, ya sea en la consolade AWS KMS o mediante la operación GetPublicKey.

Puede elegir una especificación de clave de RSA en función de la longitud de los datos de texto no cifradoque puede cifrar en cada solicitud. En la siguiente tabla se muestra el tamaño máximo, en bytes, del textono cifrado que puede cifrar en una única llamada a la operación Encrypt. Los valores varían en función dela especificación de clave y el algoritmo de cifrado. Para realizar una comparación, puede utilizar una CMKsimétrica para cifrar hasta 4096 bytes a la vez.

Para calcular la longitud de texto no cifrado máxima en bytes para estos algoritmos, utilice la siguientefórmula: (key_size_in_bits / 8) - (2 * hash_length_in_bits/8) - 2. Por ejemplo, para RSA_2048con SHA-256, el tamaño máximo de texto no cifrado en bytes es (2048/8) - (2 * 256/8) -2 = 190.

Tamaño máximo de texto no cifrado (en bytes) en una operación de cifrado

  Algoritmo de cifrado

RSA_2048 214 190

RSA_3072 342 318

RSA_4096 470 446

Especificaciones de clave de RSA para la firma y la verificación

Cuando se utiliza una CMK asimétrica de RSA para la firma y la verificación, genera la firma para unmensaje con la clave privada y verifica la firma con la clave pública.

Cuando llama a la operación Sign en AWS KMS para una CMK asimétrica, AWS KMS utiliza la claveprivada del par de claves de RSA, el mensaje y el algoritmo de firma que especifique para generar unafirma. Para verificar la firma, llame a la operación Verify. Especifique la firma, la misma CMK, el mismomensaje y el mismo algoritmo de firma. A continuación, AWS KMS utiliza la clave pública del par de clavesde RSA para verificar la firma. También puede descargar la clave pública y utilizarla para verificar la firmafuera de AWS KMS.

AWS KMS admite los siguientes algoritmos de firma para las CMK con la especificación de clave de RSA.Tiene que especificar un algoritmo de firma cuando llame a las operaciones Sign y Verify. Puede elegir unalgoritmo diferente para cada solicitud.

Algoritmos de firma compatibles con las especificaciones de clave de RSA

Algoritmo de firma Descripción del algoritmo

RSASSA_PKCS1_V1_5_SHA_256 PKCS #1 v2.2, sección 8.2, firma de RSA conrelleno PKCS #1 v1.5 y SHA-256

RSASSA_PKCS1_V1_5_SHA_384 PKCS #1 v2.2, sección 8.2, firma de RSA conrelleno PKCS #1 v1.5 y SHA-384

RSASSA_PKCS1_V1_5_SHA_512 PKCS #1 v2.2, sección 8.2, firma de RSA conrelleno PKCS #1 v1.5 y SHA-512

RSASSA_PSS_SHA_256 PKCS #1 v2.2, sección 8.1, firma de RSA conrelleno PSS mediante SHA-256 para la funciónde generación de máscaras MGF1 y resumen demensaje, junto con una sal de 256 bits.

150

Page 159: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSeleccionar la especificación de clave

Algoritmo de firma Descripción del algoritmo

RSASSA_PSS_SHA_384 PKCS #1 v2.2, sección 8.1, firma de RSA conrelleno PSS mediante SHA-384 para la funciónde generación de máscaras MGF1 y resumen demensaje, junto con una sal de 384 bits.

RSASSA_PSS_SHA_512 PKCS #1 v2.2, sección 8.1, firma de RSA conrelleno PSS mediante SHA-512 para la funciónde generación de máscaras MGF1 y resumen demensaje, junto con una sal de 512 bits.

No puede configurar una CMK para utilizar algoritmos de firma específicos. No obstante, puede utilizarla condición de política kms:SigningAlgorithm (p. 121) para especificar los algoritmos de firma que lasentidades principales pueden utilizar con la CMK.

Para obtener los algoritmos de firma de una CMK, consulte la configuración criptográfica (p. 31) de laCMK en la consola de AWS KMS o mediante la operación DescribeKey. AWS KMS también ofrece laespecificación de clave y los algoritmos de firma cuando descarga la clave pública, ya sea en la consola deAWS KMS o mediante la operación GetPublicKey.

Especificaciones de clave de curva elíptica

Cuando utiliza una especificación de clave de curva elíptica (ECC), AWS KMS crea una CMK asimétricacon un par de claves de ECC para la firma y la verificación. La clave privada que genera la firma nuncadeja AWS KMS sin cifrar. Puede utilizar la clave pública para verificar firmas en AWS KMS o descargar laclave pública (p. 168) para utilizarla fuera de AWS KMS.

AWS KMS es compatible con las siguientes especificaciones de clave de ECC para las CMK asimétricas.

• Pares de claves de curva elíptica asimétricas recomendadas por NIST (firma y verificación)• ECC_NIST_P256 (secp256r1)• ECC_NIST_P384 (secp384r1)• ECC_NIST_P521 (secp521r1)

• Otros pares de claves de curva elíptica asimétricas (firma y verificación)• ECC_SECG_P256K1 (secp256k1), .

La especificación de clave de ECC que selecciona puede estar determinada por las normas de seguridado los requisitos de la tarea. Por regla general, utilice la curva con más puntos que sea práctica y asequiblepara la tarea.

Si va a crear una CMK asimétrica para utilizarla con criptomonedas, utilice la especificación de claveECC_SECG_P256K1. También puede utilizar esta especificación de clave para otros fines, pero esobligatoria para Bitcoin y otras criptomonedas.

Las CMK con diferentes especificaciones de clave de ECC tienen un precio diferente y están sujetasa diferentes . Para obtener información acerca de los precios de AWS KMS, consulte Precios delservicio de gestión de claves de AWS. Para obtener más información sobre las , consulte Cuotas desolicitud (p. 388).

En la siguiente tabla se muestran los algoritmos de firma que AWS KMS admite para cada especificaciónde clave de ECC. No puede configurar una CMK para utilizar algoritmos de firma específicos. No obstante,puede utilizar la condición de política kms:SigningAlgorithm (p. 121) para especificar los algoritmos defirma que las entidades principales pueden utilizar con la CMK.

151

Page 160: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar la configuración criptográfica de las CMK

Algoritmos de firma compatibles con las especificaciones de clave de ECC

Especificación de clave Algoritmo de firma Descripción del algoritmo

ECC_NIST_P256 ECDSA_SHA_256 NIST FIPS 186-4, sección 6.4,firma de ECDSA mediante lacurva que especifican la clavey SHA-256 para el resumen demensaje.

ECC_NIST_P384 ECDSA_SHA_384 NIST FIPS 186-4, sección 6.4,firma de ECDSA mediante lacurva que especifican la clavey SHA-384 para el resumen demensaje.

ECC_NIST_P521 ECDSA_SHA_512 NIST FIPS 186-4, sección 6.4,firma de ECDSA mediante lacurva que especifican la clavey SHA-512 para el resumen demensaje.

ECC_SECG_P256K1 ECDSA_SHA_256 NIST FIPS 186-4, sección 6.4,firma de ECDSA mediante lacurva que especifican la clavey SHA-256 para el resumen demensaje.

Consultar la configuración criptográfica de las CMKDespués de crear la CMK, puede ver su configuración criptográfica. No puede cambiar la configuración deuna CMK después de crearla. Si prefiere utilizar una configuración diferente, elimine la CMK y créela denuevo.

Puede encontrar la configuración criptográfica de la CMK, incluida la especificación de clave, el uso de laclave y los algoritmos de firma o cifrado compatibles, en la consola de AWS KMS o mediante la API deAWS KMS. Para obtener más información, consulte Identificar CMK simétricas y asimétricas (p. 40).

En la consola de AWS KMS, la página de detalles de cada CMK incluye la sección Cryptographicconfiguration (Configuración criptográfica), que muestra los detalles criptográficos de las CMK. Porejemplo, en la siguiente imagen se muestra la sección Cryptographic configuration (Configuracióncriptográfica) de una CMK de RSA que se utiliza para la firma y la verificación.

En la API de AWS KMS, utilice la operación DescribeKey. La estructura KeyMetadata de la respuestaincluye la configuración criptográfica de la CMK. Por ejemplo, DescribeKey devuelve la siguienterespuesta para una CMK de RSA que se utiliza para la firma y la verificación.

152

Page 161: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresComparar las CMK simétricas y asimétricas

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "", "Arn": "", "CreationDate": 1571767572.317, "Enabled": false, "Description": "", "KeyUsage": "SIGN_VERIFY", "KeyState": "Disabled", "Origin": "AWS_KMS", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "RSA_2048", "SigningAlgorithms": [ "RSASSA_PKCS1_V1_5_SHA_256", "RSASSA_PKCS1_V1_5_SHA_384", "RSASSA_PKCS1_V1_5_SHA_512", "RSASSA_PSS_SHA_256", "RSASSA_PSS_SHA_384", "RSASSA_PSS_SHA_512" ] }}

Comparar las CMK simétricas y asimétricasPuede crear y gestionar las CMK simétricas y asimétricas mediante la consola de AWS KMS y la API deAWS KMS. Sin embargo, AWS KMS admite diferentes funciones para CMK de diferentes tipos.

Por ejemplo, solo puede utilizar las CMK simétricas para generar claves de datos simétricas y pares declaves de datos asimétricas. Además, la importación del material de claves (p. 162) y la rotación declaves automática (p. 157) son compatibles únicamente con las CMK simétricas. Asimismo, solo puedecrear CMK simétricas en un almacén de claves personalizadas (p. 189).

En la siguiente tabla se enumeran las operaciones de AWS KMS que puede utilizar para crear y gestionarCMK de cada tipo. Si utiliza la operación en una CMK que no es compatible con ella, la operación falla.

Operaciones de AWS KMS con CMK simétricas y asimétricas

AWS KMS Operación de la API CMK simétricas CMKasimétricas(ENCRYPT_DECRYPT)

CMK asimétricas(SIGN_VERIFY)

CancelKeyDeletion

CreateAlias

CreateGrant

CreateKey

- Sin material de claves (Origen =EXTERNAL)

153

Page 162: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresComparar las CMK simétricas y asimétricas

AWS KMS Operación de la API CMK simétricas CMKasimétricas(ENCRYPT_DECRYPT)

CMK asimétricas(SIGN_VERIFY)

- En un almacén de clavespersonalizadas (Origen =AWS_CLOUSDHSM)

Decrypt

DeleteAlias

DeleteImportedKeyMaterial

DescribeKey

DisableKey

DisableKeyRotation

EnableKey

EnableKeyRotation

Encrypt

GenerateDataKey

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

GenerateDataKeyWithoutPlaintext

GetKeyPolicy

GetKeyRotationStatus

(KeyRotationEnabledsiempre seráfalse.)

(KeyRotationEnabledsiempre será false.)

154

Page 163: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresComparar las CMK simétricas y asimétricas

AWS KMS Operación de la API CMK simétricas CMKasimétricas(ENCRYPT_DECRYPT)

CMK asimétricas(SIGN_VERIFY)

GetParametersForImport

GetPublicKey

ImportKeyMaterial

ListAliases

ListGrants

ListKeyPolicies

ListResourceTags

ListRetirableGrants

PutKeyPolicy

ReEncrypt

RetireGrant

RevokeGrant

ScheduleKeyDeletion

Sign

TagResource

UntagResource

155

Page 164: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresComparar las CMK simétricas y asimétricas

AWS KMS Operación de la API CMK simétricas CMKasimétricas(ENCRYPT_DECRYPT)

CMK asimétricas(SIGN_VERIFY)

UpdateAlias

El CMK actual y el nuevoCMK deben ser del mismotipo (simétrico o asimétrico) ydeben tener el mismo uso declave (ENCRYPT_DECRYPT oSIGN_VERIFY).

UpdateKeyDescription

Verificar

156

Page 165: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Rotar claves maestras de clienteLas prácticas criptográficas recomendadas desaconsejan el uso generalizado de claves de cifrado. Paracrear nuevo material criptográfico para sus claves maestras de cliente (CMK) de AWS Key ManagementService (AWS KMS), puede crear nuevas CMK y, a continuación, cambiar sus aplicaciones o alias paraque utilicen estas nuevas CMK. También puede habilitar la rotación automática de claves para una CMKadministrada por el cliente (p. 4) existente.

Al habilitar la rotación automática de claves para una CMK administrada por el cliente, AWS KMS generanuevo material criptográfico para la CMK cada año. AWS KMS también guarda el material criptográficomás antiguo de la CMK a perpetuidad para que se pueda utilizar para descifrar los datos que ha cifrado.AWS KMS no elimina ningún material de claves rotado hasta que se elimina la CMK (p. 176).

La rotación de claves cambia únicamente la clave de backup, que es el material criptográfico usado en lasoperaciones de cifrado. La CMK es el mismo recurso lógico, independientemente de si la clave de backupcambie o no o de cuántas veces cambie. Las propiedades de la CMK no cambian, tal y como se muestraen la siguiente imagen.

La rotación automática de claves tiene las siguientes ventajas:

• Las propiedades de la CMK, incluido su ID de clave, ARN de clave, región, políticas y permisos, nocambian cuando se rota la clave.

• No necesita cambiar las aplicaciones ni los alias que hacen referencia al ID o ARN de la CMK.• Después de habilitar la rotación de claves, AWS KMS rota la CMK automáticamente cada año. No

necesita recordar ni programar la actualización.

Sin embargo, la rotación automática de claves no afecta a los datos que la CMK protege; Es decir, no rotalas claves de datos que ha generado la CMK ni vuelve a cifrar los datos protegidos por la CMK. Además,no mitiga el efecto de una clave de datos comprometida.

Podría optar por crear una nueva CMK y utilizarla en lugar de la CMK original. Esto tiene el mismo efectoque rotar el material de claves de una CMK existente, así que a menudo se considera una rotación manualde la clave (p. 160). La rotación manual es una buena opción si desea controlar la programación derotación de claves. También proporciona una manera de rotar las CMK que no cumplen los requisitos parala rotación automática de claves, incluidas las CMK asimétricas (p. 143), las CMK en almacenes de clavespersonalizados (p. 189) y las CMK con material de claves importado (p. 157).

Rotación de claves y precios

157

Page 166: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresFuncionamiento de la rotación automática de claves

Se podrían aplicar cargos mensuales adicionales por la rotación de CMK administradas por el cliente.Consulte los Precios de AWS Key Management Service para obtener más información. Para obtenerinformación más detallada sobre las claves de backup y la rotación, consulte el documento técnico Detallescriptográficos de KMS.

Temas• Funcionamiento de la rotación automática de claves (p. 158)• Cómo habilitar y deshabilitar la rotación automática de claves (p. 159)• Rotar manualmente las claves (p. 160)

Funcionamiento de la rotación automática de clavesLa rotación de claves en AWS KMS es una práctica criptográfica recomendada que está diseñada para sertransparente y fácil de usar. AWS KMS admite la rotación automática de claves opcional solo para las CMKadministradas por el cliente (p. 4).

• Administración de claves de backup: AWS KMS conserva todas las claves de backup de una CMK,aunque la rotación de claves está deshabilitada. Las claves de backup solo se eliminan cuando seelimina la CMK. Cuando se utiliza una CMK para el cifrado, AWS KMS utiliza la clave de backup actual.Cuando utiliza la CMK para el descifrado, AWS KMS usa la clave de backup que se utilizó para elcifrado.

• Habilitar y deshabilitar la rotación de claves. La rotación automática de claves está desactivada de formapredeterminada en las CMK administradas por el cliente. Al habilitar (o volver a habilitar) la rotaciónde claves, AWS KMS rota automáticamente la CMK 365 días después de la fecha de habilitación y,posteriormente, cada 365 días.

• CMK deshabilitadas. Mientras una CMK está deshabilitada, AWS KMS no la rota. Sin embargo, el estadode rotación de clave no cambia y no puede cambiarlo mientras la CMK esté deshabilitada. Cuando laCMK se vuelve a habilitar, si la clave de backup tiene una antigüedad superior a 365 días, AWS KMS larota de forma inmediata y, posteriormente, cada 365 días. Si la clave de backup tiene una antigüedadinferior a 365 días, AWS KMS reanuda la programación original de rotación de claves.

• CMK pendientes de eliminación. Mientras una CMK está pendiente de eliminación, AWS KMS no la rota.El estado de rotación de clave se establece en false y no puede cambiarla mientras su eliminaciónestá pendiente. Si se cancela la eliminación, se restaura el estado de rotación de clave anterior. Si laclave de backup tiene una antigüedad superior a 365 días, AWS KMS la rota de forma inmediata y,posteriormente, cada 365 días. Si la clave de backup tiene una antigüedad inferior a 365 días, AWSKMS reanuda la programación original de rotación de claves.

• CMK administradas por AWS. No puede administrar la rotación de claves para las CMK administradasporAWS (p. 4). AWS KMS rota automáticamente las CMK administradas por AWS cada tres años (1095días).

• CMK propiedad de AWS. No puede administrar la rotación de claves para las CMK propiedad de AWS.La estrategia de rotación de claves (p. 157) para un CMK propiedad de AWS se determina según elservicio de AWS que crea y administra el CMK. Para obtener más información, consulte el tema Cifradoen reposo en la guía del usuario o en la guía para desarrolladores del servicio.

• Monitorización de la rotación de claves. Cuando AWS KMS rota automáticamente el material de clavespara una CMK administrada por AWS (p. 4) o una CMK administrada por el cliente (p. 4), escribe elevento KMS CMK Rotation (Rotación de CMK de KMS) en Amazon CloudWatch Events. Puede utilizareste evento para comprobar que la CMK se ha rotado.

• Tipos de CMK no compatibles. La rotación automática de claves no es compatible en los siguientes tiposde CMK, pero puede rotar estas CMK de forma manual (p. 160).• CMK asimétricas (p. 144)• CMK en almacenes de claves personalizados. (p. 189)• CMK que han importado material claves (p. 162)

158

Page 167: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo habilitar y deshabilitar larotación automática de claves

Cómo habilitar y deshabilitar la rotación automáticade claves

Puede usar la consola de AWS KMS o la API de AWS KMS para habilitar y deshabilitar la rotaciónautomática de claves y ver el estado de rotación de cualquier CMK administrada por el cliente.

Al habilitar la rotación automática de claves, AWS KMS rota la CMK 365 días después de la fecha dehabilitación y, posteriormente, cada 365 días.

Temas• Habilitar y deshabilitar la rotación de claves (console) (p. 159)• Habilitar y deshabilitar la rotación de claves (AWS KMS API) (p. 159)

Habilitar y deshabilitar la rotación de claves (console)1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key Management

Service (AWS KMS) en https://console.aws.amazon.com/kms.2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de la

página.3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente). (No

puede habilitar o deshabilitar la rotación de claves administradas por AWS. Estas rotan cada tres añosde forma automática.)

4. Elija el alias o el ID de clave de una CMK.5. Seleccione la pestaña Key Rotation (Rotación de teclas).

La pestaña Key rotation (Rotación de claves) solo aparece en la página de detalles de las CMKsimétricas con el material de claves generado por AWS KMS (el Origin [origen] es AWS_KMS).No puede rotar de forma automática las CMK asimétricas, las CMK con material de clavesimportado (p. 162), o CMK en los almacenes de claves personalizados (p. 189). Sin embargo,puede rotarlas manualmente (p. 160).

6. Seleccione o desmarque la casilla de verificación Automatically rotate this CMK every year (Rotar estaCMK cada año de forma automática).

Note

Si una CMK está deshabilitada o pendiente de eliminación, la casilla de verificaciónAutomatically rotate this CMK every year (Rotar esta CMK cada año de forma automática)estará desmarcada y no podrá cambiarla. El estado de rotación de claves se restauraal volver a habilitar la CMK o al cancelar la eliminación. Para más detalles, consulteFuncionamiento de la rotación automática de claves (p. 158) y Estado de una clave: efectoen su CMK (p. 245).

7. Seleccione Save.

Habilitar y deshabilitar la rotación de claves (AWSKMS API)Puede utilizar la API de AWS Key Management Service (AWS KMS) para habilitar y deshabilitar la rotaciónautomática de claves y ver el estado de rotación actual de cualquier CMK administrada por el cliente. Enestos ejemplos, se utiliza la AWS Command Line Interface (AWS CLI), pero puede usar cualquier lenguajede programación admitido.

159

Page 168: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRotar manualmente las claves

La operación EnableKeyRotation activa la rotación automática de claves para la CMK especificada. Laoperación DisableKeyRotation la desactiva. Para identificar la CMK, utilice su ID de clave, ARN de clave,nombre de alias o ARN de alias. De forma predeterminada, la rotación de claves está desactivada para lasCMK administradas por el cliente.

En el siguiente ejemplo, se activa la rotación de claves en la CMK simétrica especificada y se utiliza laoperación GetKeyRotationStatus para ver el resultado. A continuación, se desactiva la rotación de claves y,de nuevo, se utiliza GetKeyRotationStatus para ver el cambio.

$ aws kms enable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

$ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "KeyRotationEnabled": true}

$ aws kms disable-key-rotation --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

$ aws kms get-key-rotation-status --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "KeyRotationEnabled": false}

Rotar manualmente las clavesEs posible que le interese crear una nueva CMK y utilizarla en sustitución de una CMK actual en lugar deactivar la rotación automática de claves. Cuando la nueva CMK tiene diferente material criptográfico quela CMK actual, el uso de la nueva CMK tiene el mismo efecto que cambiar la clave de backup de una CMKexistente. El proceso de sustitución de una CMK por otra se denomina rotación manual de claves.

Tal vez prefiera rotar las claves manualmente para poder controlar la frecuencia de rotación. También esuna buena solución para las CMK que no cumplen los requisitos para la rotación automática de claves,

160

Page 169: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRotar manualmente las claves

como las CMK asimétricas, las CMK en almacenes de claves personalizados (p. 189) y las CMK conmaterial de claves importado (p. 162).

Note

Cuando empiece a utilizar la nueva CMK, asegúrese de mantener la CMK original habilitada paraque AWS KMS pueda descifrar los datos que cifró la CMK original. Cuando se descifran datos,KMS identifica la CMK que se utilizó para cifrar los datos y utiliza la misma CMK para descifrarlos.Siempre que mantenga la CMK original y la CMK nueva habilitadas, AWS KMS podrá descifrar losdatos que se cifraron con alguna de estas CMK.

Como la nueva CMK es un recurso diferente de la CMK actual, tiene un ID de clave y un ARN diferentes.Cuando cambia las CMK, debe actualizar las referencias al ID o al ARN de la CMK en sus aplicaciones.Los alias, que asocian un nombre descriptivo a una CMK, facilitarán este proceso. Utilice un alias parahacer referencia a una CMK en sus aplicaciones. Después, cuando desee cambiar la CMK que utiliza laaplicación, cambie la CMK de destino del alias.

Para actualizar la CMK de destino de un alias, utilice la operación UpdateAlias en la API de AWS KMS. Porejemplo, este comando actualiza el alias TestCMK para apuntar hacia una nueva CMK. Como la operaciónno devuelve ningún resultado, en el ejemplo se utiliza la operación ListAliases para comprobar que el aliasestá asociado ahora a otra CMK.

$ aws kms list-aliases{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestCMK", "AliasName": "alias/TestCMK", "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab" }, ]}

$ aws kms update-alias --alias-name alias/TestCMK --target-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 $ aws kms list-aliases{ "Aliases": [ { "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/TestCMK", "AliasName": "alias/TestCMK", "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321" }, ]}

161

Page 170: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAcerca de material de claves importado

Importar material de claves en AWSKey Management Service (AWSKMS)

Una clave maestra de cliente (p. 3) (CMK) de AWS KMS es una representación lógica de una claveprincipal. Además de los identificadores de CMK (p. 12) y otros metadatos, una CMK contiene el materialde claves utilizado para cifrar y descifrar datos. Al crear una CMK (p. 22), AWS KMS genera de formapredeterminada el material de claves de dicha CMK. Pero puede crear una CMK sin material de clavesy, a continuación, importar su propio material de claves en esa CMK, una característica que se conoce amenudo como "utilice su propia clave" (BYOK, por sus siglas en inglés).

El material de claves importado solo es compatible con CMK simétricas en almacenes de claves deAWS KMS. No es compatible con CMK asimétricas (p. 144) ni con CMK de almacenes de clavespersonalizados (p. 189).

Al utilizar su material de claves importado, sigue siendo responsable del material de claves a la vez quepermite a AWS KMS que use una copia de él. Puede hacerlo por uno o varios de los motivos siguientes:

• Para demostrar que ha generado el material de claves con una fuente de entropía que cumple susrequisitos.

• Para utilizar el material de claves de su propia infraestructura con servicios de AWS y utilizar AWS KMSpara administrar el ciclo de vida de ese material de claves en AWS.

• Para establecer una fecha de vencimiento para el material de claves en AWS y para eliminarlomanualmente (p. 174), pero también para que vuelva a estar disponible en el futuro. Por el contrario,programar la eliminación de claves (p. 176) requiere un periodo de espera de 7 a 30 días, transcurridoel cual no puede recuperar la CMK eliminada.

• Para poseer la copia original del material de claves y mantenerla fuera de AWS a fin de aumentar ladurabilidad y la recuperación de desastres durante todo el ciclo de vida del material de claves.

Para obtener información sobre diferencias importantes entre las CMK con el material de clavesimportado y el material de claves generado por AWS KMS, consulte Acerca de material de clavesimportado (p. 162).

El material de claves que importe debe ser una clave de cifrado simétrica de 256 bits.

Temas

• Acerca de material de claves importado (p. 162)• Cómo importar el material de claves (p. 163)• Cómo volver a importar el material de claves (p. 164)• Cómo identificar las CMK con material de claves importado (p. 164)

Acerca de material de claves importadoAntes de decidir importar el material de claves en AWS KMS, debe entender las siguientes característicasdel material de claves importado.

162

Page 171: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo importar el material de claves

Generación de claves seguras

Es su responsabilidad generar el material de claves con una fuente de aleatoriedad que cumpla susrequisitos de seguridad.

Una clave por CMK

Al importar el material de claves en una CMK, la CMK se asocia de forma permanente a dicho material declaves. Puede volver a importar el mismo material de claves (p. 164), pero no puede importar material declaves diferente en esa CMK. Además, no puede habilitar la rotación automática de claves (p. 157) parauna CMK con material de claves importado. Sin embargo, puede rotar manualmente una CMK (p. 160) conmaterial de claves importado.

Una CMK por texto cifrado

Al cifrar los datos en una CMK de KMS, el texto cifrado no se puede descifrar con otra CMK. Esto se aplicaincluso al importar el mismo material de claves en un CMK diferente.

Disponibilidad y durabilidad

Usted es responsable de la disponibilidad y durabilidad generales del material de claves. AWS KMS se hadiseñado para mantener un alto nivel de material de claves importados de alta disponibilidad. Sin embargo,el servicio no mantiene su durabilidad al mismo nivel que el material de claves generado en su nombre.Esta diferencia es importante en los casos siguientes:

• Al configurar una fecha de vencimiento para el material de claves importado, AWS KMS lo eliminadespués de que venza. AWS KMS no elimina la CMK ni sus metadatos. No puede establecer una fechade vencimiento para el material de claves generado por AWS KMS.

• Al eliminar manualmente el material de claves importado (p. 174), AWS KMS lo elimina sin quitarla CMK ni sus metadatos. Por el contrario, programar la eliminación de claves (p. 176) requiere unperiodo de espera de 7 a 30 días, transcurrido el cual AWS KMS elimina el material de claves y todos losmetadatos de la CMK.

• En el caso improbable de que determinados errores en toda la región que afecten al servicio (comola pérdida total de energía), AWS KMS no puede restaurar automáticamente el material de clavesimportado. Sin embargo, AWS KMS puede restaurar la CMK y sus metadatos.

Para restaurar el material de claves después de eventos como estos, debe conservar una copia delmaterial de claves en un sistema que tenga bajo control. De esta manera, podrá volver a importarlo en laCMK.

Cómo importar el material de clavesEn la siguiente información general se explica cómo importar el material de claves en AWS KMS. Paraobtener más información sobre cada paso del proceso, consulte el tema correspondiente.

1. Crear una CMK simétrica sin material de claves (p. 165): para comenzar con la importación dematerial de claves, primero debe crear una CMK simétrica cuyo origen sea EXTERNAL. Esto indica queel material de claves se ha generado fuera de AWS KMS e impide que AWS KMS genere el material declaves para la CMK. En un paso posterior importará su propio material de claves en esta CMK.

2. Descargar la clave pública y el token de importación (p. 168)–: después de completar el paso 1,descargue una clave pública y un token de importación. Estos elementos protegen la importación delmaterial de claves a AWS KMS.

3. Cifrar el material de claves (p. 171)–: utilice la clave pública que ha descargado en el paso 2 paracifrar el material de claves que ha creado en su propio sistema.

163

Page 172: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo volver a importar el material de claves

4. Importar el material de claves (p. 172)–: cargue el material de claves cifrado que ha creado en el paso3 y el token de importación que ha descargado en el paso 2.

Cómo volver a importar el material de clavesSi administra una CMK con material de claves importado, es posible que tenga que reimportar el materialde claves, ya sea porque este ha caducado o porque se ha eliminado o perdido el material de claves deforma accidental.

Debe volver a importar el mismo material de claves originalmente importado en la CMK. No puede importarmaterial de claves diferente en una CMK. Por otra parte, AWS KMS no puede crear material de claves parauna CMK que se ha creado sin dicho material.

Para volver a importar material de claves nuevo o existente, utilice el mismo procedimiento que utilizó paraimportar el material de claves (p. 163) la primera vez, con las siguientes excepciones.

• Utilice una CMK existente en lugar de crear una nueva. Puede omitir el paso 1 (p. 165) delprocedimiento de importación.

• Si la CMK contiene material de claves, debe eliminar el material de claves existente (p. 174) antes devolver a importar el nuevo.

Cada vez que se importa material de claves en una CMK, es necesario descargar y utilizar una nuevaclave de encapsulamiento y un nuevo token de importación (p. 168) para la CMK. El procedimiento deencapsulamiento no afecta el contenido del material de claves, por lo que puede utilizar distintas claves deencapsulamiento (y diferentes tokens de importación) para importar el mismo material de claves.

Cómo identificar las CMK con material de clavesimportado

Cuando se crea una CMK sin material de claves, el valor de la propiedad Origin de la CMK es EXTERNALy no se puede modificar. No se puede convertir una clave que está diseñada para utilizar material declaves importado en una que utiliza el material de claves proporcionado por AWS KMS.

Puede identificar las CMK que requieren material de claves importado en la consola de AWS KMS omediante la API de AWS KMS.

Para identificar el valor de la propiedad Origin de lasCMK (console)1. Abra la consola de AWS KMS en https://console.aws.amazon.com/kms.2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de la

página.3. Utilice una de las siguientes técnicas para ver la propiedad Origin de las CMK.

• Para añadir una columna Origin (Origen) a la tabla de CMK, elija el icono Settings (Configuración)de la esquina superior derecha. Elija Origin (Origen) y Confirm (Confirmar). La columna Origin(Origen) facilita la identificación de las CMK que tienen un valor EXTERNAL para la propiedad deorigen.

164

Page 173: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPara identificar el valor de la propiedadOrigin de las CMK (AWS KMS API)

• Para buscar el valor de la propiedad Origin de una CMK determinada, elija el ID o alias de laclave de la CMK. El valor de la propiedad Origin aparece en la sección General configuration(Configuración general) de la página.

Para identificar el valor de la propiedad Origin de lasCMK (AWS KMS API)Utilice la operación DescribeKey. La respuesta incluye la propiedad Origin de la CMK, tal y como semuestra en el siguiente ejemplo.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab{ "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Origin": "EXTERNAL", "ExpirationModel": "KEY_MATERIAL_EXPIRES" "ValidTo": 1568894400.0, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333", "CreationDate": 1568289600.0, "Enabled": false, "Description": "", "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

Paso 1 de la importación de material de claves:Crear una clave maestra de cliente (CMK) de AWSKMS sin material de claves

De forma predeterminada, AWS KMS crea el material de claves automáticamente al crear una claveprincipal de cliente (CMK). Para importar su propio material de claves, comience con la creación de unaCMK sin material de claves. Estos dos tipos de CMK se diferencian por su origen. Cuando AWS KMS creael material de claves automáticamente, el origen de la CMK es AWS_KMS. Al crear una CMK sin material declaves, el origen de la CMK es EXTERNAL, lo que indica que el material se claves se ha generado fuera deAWS KMS.

Una CMK sin material de claves tiene el estado pendiente de importación y no está disponible para usarse.Para utilizarla, debe importar el material de claves como se explica más adelante. Al importar el material declaves, el estado de la clave de la CMK cambia a habilitada. Para obtener más información sobre el estadode clave, consulte Estado de una clave: efecto en su CMK (p. 245).

Puede usar la Consola de administración de AWS o la API de AWS KMS para crear una CMK sin materialde claves. Puede utilizar la API directamente efectuando solicitudes HTTP o mediante uno de los SDK deAWS o con las herramientas de línea de comandos.

165

Page 174: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear una CMK sin material de claves (console)

Temas• Crear una CMK sin material de claves (console) (p. 166)• Crear una CMK sin material de claves (AWS KMS API) (p. 167)

Crear una CMK sin material de claves (console)Puede usar la Consola de administración de AWS para crear una CMK sin material de claves. Antes dehacerlo puede configurar la consola para que muestre la columna Origin (Origen) en la lista de CMK. Lasclaves importadas tienen el valor Origin (Origen) External (Externo).

Debe crear una CMK para el material de claves importado solo una vez. Para volver a importar el mismomaterial de claves en una CMK existente, consulte Paso 2: Descargar la clave pública y el token deimportación (p. 168).

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Elija Create key.5. Seleccione Symmetric (Simétrica). No puede importar material de claves en una CMK asimétrica.6. Expanda Advanced options (Opciones avanzadas).7. En Key material origin (Origen del material de claves), elija External (Externo).

A continuación, seleccione la casilla de verificación situada junto a I understand the security,availability, and durability implications of using an imported key para indicarnos que entiende lasimplicaciones de utilizar material de claves importado. Para leer más información acerca de estasimplicaciones, consulte Acerca de material de claves importado (p. 162).

Seleccione Next (Siguiente).8. Escriba un alias y, si lo desea, una descripción para la CMK.

Seleccione Next (Siguiente).9. (Opcional). En la página Add tags (Añadir etiquetas), añada etiquetas que identifiquen o categoricen la

CMK.

Seleccione Next (Siguiente).10. En la sección Key administrators (Administradores de claves), seleccione los usuarios y roles de

IAM que pueden administrar la CMK. Para obtener más información, consulte Permite que losadministradores de claves administren la CMK (p. 59).

Note

Las políticas de IAM pueden otorgar permisos para administrar la CMK a otros usuarios yroles de IAM.

11. (Opcional) Para evitar que los usuarios y los roles de IAM seleccionados eliminen esta CMK, desactivela casilla de verificación Allow key administrators to delete this key (Permitir que los administradoresde claves eliminen esta clave) situada en la parte inferior de la página de la sección Key deletion(Eliminación de claves).

Seleccione Next (Siguiente).12. En la sección This account (Esta cuenta), seleccione los usuarios y roles de IAM de esta cuenta de

AWS que pueden usar la CMK en operaciones criptográficas (p. 11). Para obtener más información,consulte Permite a los usuarios de claves utilizar la CMK (p. 62).

166

Page 175: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear una CMK sin material de claves (AWS KMS API)

Note

Las políticas de IAM pueden otorgar permisos para usar la CMK a otros usuarios y roles deIAM.

13. (Opcional) Puede permitir que otras cuentas de AWS usen esta CMK en operaciones criptográficas.Para ello, en la parte inferior de la página de la sección Other AWS accounts (Otras cuentas de AWS)elija Add another AWS account (Añadir otra cuenta de AWS) y especifique el número de identificaciónde la cuenta de AWS de una cuenta externa. Para añadir varias cuentas externas, repita este paso.

Note

Para permitir que las entidades principales de las cuentas externas usen la CMK, losadministradores de la cuenta externa también deben crear las políticas de IAM queproporcionan estos permisos. Para obtener más información, consulte Permitir a los usuariosde otras cuentas utilizar una CMK (p. 81).

Seleccione Next (Siguiente).14. En la página Review and edit key policy (Revisar y editar la política de claves), revise y edite el

documento de política de la nueva CMK. Cuando haya terminado, seleccione Finish (Finalizar).

Si la operación se realiza correctamente, habrá creado una CMK sin material de claves. Su estadoserá Pending import (Importación pendiente). Para seguir el proceso, consulte Descargar la clavepública y el token de importación (console) (p. 169). Elija Cancel (Cancelar) para continuar con elproceso más adelante.

Siguiente: Paso 2: Descargar la clave pública y el token de importación (p. 168).

Crear una CMK sin material de claves (AWS KMSAPI)Para utilizar la API de AWS KMS para crear una CMK simétrica sin material de claves, envíe una solicitudCreateKey con el parámetro Origin configurado como EXTERNAL. El siguiente ejemplo muestra cómohacerlo con la AWS Command Line Interface (AWS CLI).

$ aws kms create-key --origin EXTERNAL

Si el comando se ejecuta correctamente, verá un resultado parecido al siguiente. El Origin de la CMK esEXTERNAL y su KeyState es PendingImport.

{ "KeyMetadata": { "Origin": "EXTERNAL", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Description": "", "Enabled": false, "KeyUsage": "ENCRYPT_DECRYPT", "KeyState": "PendingImport", "CreationDate": 1568289600.0, "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "AWSAccountId": "111122223333" "KeyManager": "CUSTOMER", "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ]

167

Page 176: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPaso 2: Descargar la clave pública y el token de importación

}}

Copie el ID de clave de la CMK del resultado del comando para usarlo en pasos posteriores y, acontinuación, vaya a Paso 2: Descargar la clave pública y el token de importación (p. 168).

Paso 2 de la importación de material de claves:Descargar la clave pública y el token de importación

Después de crear una clave maestra de cliente (CMK) simétrica sin material de claves (p. 165),descargue una clave pública y un token de importación de dicha CMK. Estos elementos son necesariospara importar el material de claves. Puede descargar ambos elementos de una sola vez usando la Consolade administración de AWS o la API de AWS KMS.

También puede descargar estos elementos cuando desee volver a importar el material de claves en unaCMK. Puede hacerlo para rotar manualmente el material de claves (p. 160), para cambiar la fecha devencimiento del material de claves o para restaurar una CMK después de que el material de claves hayavencido o se haya eliminado.

Usa la clave pública

Al importar el material de claves, no cargue el material de claves sin procesar en AWS KMS.Primero debe cifrar el material de claves con la clave pública que ha descargado en este paso y, acontinuación, cargar el material de claves cifrado a AWS KMS. Cuando AWS KMS recibe el materialde claves cifrado, utiliza la correspondiente clave privada para descifrarlo. La clave pública que recibede AWS KMS es una clave pública RSA de 2048 bits y siempre es exclusiva de su cuenta de AWS.

Uso del token de importación

El token de importación contiene metadatos para garantizar que el material de claves se importacorrectamente. Al cargar el material de claves cifrado en AWS KMS, debe cargar el mismo token deimportación que ha descargado en este paso.

Seleccionar un algoritmo de encapsulamiento

Para proteger su material de claves durante la importación, deberá cifrarlo con una clave y unalgoritmo de encapsulamiento. Normalmente, se elige un algoritmo admitido por el módulo deseguridad de hardware (HSM) o el sistema de administración de claves que protege el material declaves. Debe utilizar el esquema de cifrado RSA PKCS #1 con una de las tres opciones de relleno,representada por las opciones siguientes. Estas opciones se enumeran en orden de preferencia deAWS. Los detalles técnicos de los esquemas representados por estas opciones se explican en lasección 7 del estándar PKCS #1 versión 2.1.• RSAES_OAEP_SHA_256–: algoritmo de cifrado RSA con relleno óptimo de cifrado asimétrico

(OAEP) con la función hash SHA-256.• RSAES_OAEP_SHA_1–: algoritmo de cifrado RSA con relleno óptimo de cifrado asimétrico (OAEP)

con la función hash SHA-1.• RSAES_PKCS1_V1_5–: algoritmo de cifrado RSA con el formato de relleno definido en PKCS #1

versión 1.5.Note

Si tiene previsto probar el ejemplo de prueba de concepto Cifrar material de claves conOpenSSL (p. 171) del paso 3 (p. 171), utilice RSAES_OAEP_SHA_1.

Si el HSM o el sistema de administración de claves lo admite, recomendamos utilizarRSAES_OAEP_SHA_256 para cifrar el material de claves. Si esa opción no está disponible, debeutilizar RSAES_OAEP_SHA_1. Si ninguna de las opciones OAEP están disponibles, debe utilizar

168

Page 177: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDescargar la clave pública y eltoken de importación (console)

RSAES_PKCS1_V1_5. Para obtener información acerca de cómo cifrar el material de claves, consultela documentación del módulo de seguridad de hardware o del sistema de administración de claves queprotege el material de claves.

La clave pública y el token de importación son válidos durante 24 horas. Si no los utiliza para importarmaterial de clave en un plazo de 24 horas después de descargarlos, debe otros nuevos.

Puede usar la Consola de administración de AWS o la API de AWS KMS para descargar la clave pública yel token de importación. Puede utilizar la API directamente efectuando solicitudes HTTP o mediante uno delos SDK de AWS o con las herramientas de línea de comandos.

Temas• Descargar la clave pública y el token de importación (console) (p. 169)• Descargar la clave pública y el token de importación (AWS KMS API) (p. 170)

Descargar la clave pública y el token de importación(console)Puede usar la Consola de administración de AWS para descargar la clave pública y el token deimportación.

1. Si acaba de completar los pasos para crear una CMK sin material de claves (p. 166) y se encuentraen la página Download wrapping key and import token (Descargar la clave de encapsulamiento y eltoken de importación), pase al Step 8.

2. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

3. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

4. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).

Tip

Solo puede importar el material de claves a una CMK simétrica con un Origin (Origen) deEXTERNAL (EXTERNO). Esto indica que la CMK se ha creado sin material de claves. Paraañadir la columna Origin (Origen) a la tabla, en la esquina superior derecha de la página,

elija el icono de configuración ( ). Active Origin (Origen) y, a continuación, elija Confirm(Confirmar).

5. Elija el alias o el ID de clave de la CMK que está pendiente de importación.6. Amplíe la sección Cryptographic configuration (Configuración criptográfica) y vea sus valores.

Solo puede importar el material de claves a CMK con un Key type (Tipo de clave) de Symmetric(Simétrica) y un Origin (Origen) de EXTERNAL (EXTERNO). Para obtener información acerca decómo crear CMK con material de claves importado, consulte Importar material de claves en AWS KeyManagement Service (AWS KMS) (p. 162).

7. Amplíe la sección Key material (Material de claves) y, a continuación, elija Download wrapping key andimport token (Descargar la clave de encapsulamiento y el token de importación).

La sección Key material (Material de claves) aparece solo para las CMK simétricas que tienen un valorde Origin (Origen) de EXTERNAL (EXTERNO).

8. En Select wrapping algorithm, elija la opción que usará para cifrar el material de claves. Paraobtener más información acerca de estas opciones, consulte Seleccionar un algoritmo deencapsulamiento (p. 168).

169

Page 178: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDescargar la clave pública y el token

de importación (AWS KMS API)

Si tiene previsto probar el ejemplo de prueba de concepto Cifrar material de claves conOpenSSL (p. 171) del paso 3 (p. 171), elija RSAES_OAEP_SHA_1.

9. Elija Download wrapping key and import token y, a continuación, guarde el archivo.

Si dispone de la opción Next (Siguiente) para continuar con el proceso ahora, elija Next (Siguiente).Para continuar más adelante, elija Cancel (Cancelar). De lo contrario, elija Cancel (Cancelar) o hagaclic en la X para cerrar la ventana.

10. Descomprima el archivo .zip que ha guardado en el paso anterior (ImportParameters.zip).

La carpeta contiene los siguientes archivos:

• La clave de encapsulamiento (clave pública), en un archivo denominadowrappingKey_ID_de_clave_de_CMK_marca de tiempo (por ejemplo,wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909). Es una clavepública RSA de 2048 bits.

• El token de importación, en un archivo denominado importToken_ID_de_clave_CMK_marcade tiempo (por ejemplo, importToken_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909).

• Un archivo de texto denominado README_ID_de_clave_CMK_marca de tiempo.txt (porejemplo, README_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909.txt). Estearchivo contiene información sobre la clave de encapsulamiento (clave pública), el algoritmo deencapsulamiento que se usará para cifrar el material de claves y la fecha y hora en vencen la clavede encapsulamiento (clave pública) y el token de importación.

11. Para continuar el proceso, consulte cifrar el material de claves (p. 171).

Descargar la clave pública y el token de importación(AWS KMS API)Para usar la API de AWS KMS para descargar la clave pública y el token de importación, envíe unasolicitud GetParametersForImport que especifique la CMK para la que está descargando estos elementos.El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

Este ejemplo especifica RSAES_OAEP_SHA_1 como la opción de cifrado. Para especificar otra opción,sustituya RSAES_OAEP_SHA_1 por RSAES_OAEP_SHA_256 o RSAES_PKCS1_V1_5. Sustituya1234abcd-12ab-34cd-56ef-1234567890ab por el ID de clave de la CMK para la que descargarála clave pública y el token de importación. Puede usar el ID de clave o el nombre de recurso de Amazon(ARN) de la CMK, pero no puede usar un alias para esta operación.

Note

Si tiene previsto probar el ejemplo de prueba de concepto Cifrar material de claves conOpenSSL (p. 171) del paso 3 (p. 171), especifique RSAES_OAEP_SHA_1.

$ aws kms get-parameters-for-import --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --wrapping-algorithm RSAES_OAEP_SHA_1 \ --wrapping-key-spec RSA_2048

Si el comando se ejecuta correctamente, verá un resultado parecido al siguiente:

{ "ParametersValidTo": 1568290320.0, "PublicKey": "public key base64 encoded data", "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "ImportToken": "import token base64 encoded data"

170

Page 179: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPaso 3: Cifrar el material de claves

}

Cuando reciba este resultado, guarde la clave pública y el token de importación codificados en base64 enarchivos independientes. A continuación, descodifique en base64 cada archivo en datos binarios y guardeestos datos en archivos nuevos. De esta forma, se preparan los elementos para los pasos posteriores. Veael siguiente ejemplo.

Para preparar la clave pública y el token de importación para pasos posteriores

1. Copie los datos codificados en base64 de la clave pública (representados por datos codificadosen base64 de clave pública en el resultado de ejemplo), péguelos en un archivo nuevoy, a continuación, guarde el archivo. Asigne un nombre descriptivo al archivo, por ejemplo,PublicKey.b64.

2. Utilice OpenSSL para decodificar en base64 el contenido del archivo y guarde los datosdescodificados en un nuevo archivo. El siguiente ejemplo descodifica los datos del archivo queha guardado en el paso anterior (PublicKey.b64) y guarda el resultado en un nuevo archivodenominado PublicKey.bin.

$ openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin

Repetir estos dos pasos para el token de importación y, a continuación, vaya a Paso 3: Cifrar el material declaves (p. 171).

Paso 3 de la importación de material de claves:Cifrar el material de claves

Después de descargar la clave pública y el token de importación (p. 168), utilice la clave pública paracifrar el material de claves. El material de claves debe estar en formato binario.

Normalmente, el material de claves se cifra al exportarlo desde el módulo de seguridad de hardware (HSM)o el sistema de administración de claves. Para obtener información sobre cómo exportar el material declaves en formato binario, consulte la documentación de su HSM o sistema de administración de claves.También puede consultar la siguiente sección que proporciona una demostración de prueba de conceptocon OpenSSL.

Al cifrar el material de claves, utilice el esquema de cifrado con la opción de relleno que especificóal descargar la clave pública y el token de importación (p. 168) (RSAES_OAEP_SHA_256,RSAES_OAEP_SHA_1 o RSAES_PKCS1_V1_5).

Ejemplo: Cifrar el material de claves con OpenSSLEn el siguiente ejemplo se muestra cómo utilizar OpenSSL para generar una clave simétrica de 256 bitsy, a continuación, cifrar este material de claves para importarlo en una clave maestra de cliente (CMK) deKMS.

Important

Este ejemplo es solo una demostración de la prueba de concepto. En el caso de los sistemasde producción, utilice un método más seguro (como un HSM o un sistema de administración declaves comercial) para generar y almacenar el material de claves.El algoritmo de cifrado RSAES_OAEP_SHA_1 funciona mejor con este ejemplo. Antes deejecutar el ejemplo, asegúrese de que ha utilizado RSAES_OAEP_SHA_1 para el algoritmo de

171

Page 180: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresPaso 4: Importar el material de claves

encapsulamiento en el paso 2 (p. 168). Si es necesario, repita el paso para descargar e importarla clave pública y el token.

Para utilizar OpenSSL para generar el material de claves binarias y cifrarlo para importarlo enAWS KMS

1. Utilice el siguiente comando para generar una clave simétrica de 256 bits y guárdela en un archivodenominado PlaintextKeyMaterial.bin.

$ openssl rand -out PlaintextKeyMaterial.bin 32

2. Utilice el siguiente comando para cifrar el material de claves con la clave pública que hadescargado anteriormente (consulte Descargar la clave pública y el token de importación (AWSKMS API) (p. 170)) y guárdela en un archivo denominado EncryptedKeyMaterial.bin.Sustituya PublicKey.bin> por el nombre del archivo que contiene la clave pública.Si ha descargado la clave pública desde la consola, este archivo se denominawrappingKey_ID_de_clave_de_CMK_marca de tiempo (por ejemplo, wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909).

$ openssl rsautl -encrypt \ -in PlaintextKeyMaterial.bin \ -oaep \ -inkey PublicKey.bin \ -keyform DER \ -pubin \ -out EncryptedKeyMaterial.bin

Continúe en Paso 4: Importar el material de claves (p. 172).

Paso 4 de la importación de material de claves:Importar el material de claves

Después de cifrar el material de claves (p. 171), puede importar el material de claves para usarlo conuna clave maestra de cliente (CMK) de AWS KMS. Para importar el material de claves, debe cargar elmaterial de claves cifrado desde Paso 3: Cifrar el material de claves (p. 171) y el token de importaciónque ha descargado en Paso 2: Descargar la clave pública y el token de importación (p. 168). Debeimportar material de claves en la misma CMK que ha especificado al descargar la clave pública y el tokende importación.

Al importar material de claves, también puede especificar una hora en la que vence el material de claves.Cuando vence el material de claves, AWS KMS lo elimina y la CMK ya no se puede utilizar. Para volver ausar la CMK, debe volver a importar el material de claves.

Después de importar correctamente el material de claves, el estado de clave de la CMK cambia ahabilitado y puede utilizar la CMK.

Puede usar la Consola de administración de AWS o la API de AWS KMS para importar el material declaves. Puede utilizar la API directamente efectuando solicitudes HTTP o mediante uno de los SDK deAWS o con las herramientas de línea de comandos.

Temas• Importar material de claves (console) (p. 173)• Importar material de claves (AWS KMS API) (p. 173)

172

Page 181: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresImportar material de claves (console)

Importar material de claves (console)Puede usar la Consola de administración de AWS para importar el material de claves.

1. Si se encuentra en la página Descargar la clave de encapsulamiento y el token de importación, vaya aStep 8.

2. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

3. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

4. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).5. Elija el ID de clave o el alias de la CMK para los que ha descargado la clave pública y el token de

importación.6. Amplíe la sección Cryptographic configuration (Configuración criptográfica) y vea sus valores.

Solo puede importar el material de claves a CMK con un Key type (Tipo de clave) de Symmetric(Simétrica) y un Origin (Origen) de EXTERNAL (EXTERNO). Para obtener información sobre cómocrear CMK con material de claves importado, consulte Importar material de claves en AWS KeyManagement Service (AWS KMS) (p. 162).

7. Amplíe la sección Key material (Material de claves) y seleccione Upload key material (Cargar materialde claves).

La sección Key material (Material de claves) aparece solo para las CMK con un Key type (Tipo declave) de Symmetric (Simétrica) y un valor de Origin (Origen) de EXTERNAL (Externo).

8. En la sección Encrypted key material and import token (Token de importación y material de clavescifrado), en Wrapped key material (Material de claves integrado), seleccione Choose file (Seleccionararchivo). A continuación, especifique el archivo que contiene el material de claves encapsulado(cifrado).

9. En la sección Encrypted key material and import token (Token de importación y material de clavescifrado), en Import token (Token de importación), seleccione Choose file (Seleccionar archivo). Suba elarchivo que contenga el token de importación que ha descargado (p. 169).

10. En la sección Expiration option (Opción de vencimiento), determina si vence el material de claves.Para establecer una fecha y una hora de vencimiento, elija El material de claves caduca, y seleccioneuna fecha y una hora en el calendario.

11. Elija Finish o Upload key material.

Importar material de claves (AWS KMS API)Para utilizar la API de AWS KMS para importar el material de claves, envíe una solicitudImportKeyMaterial. El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

Este ejemplo especifica una fecha de vencimiento para el material de claves. Para importar el material declaves sin vencimiento, sustituya KEY_MATERIAL_EXPIRES por KEY_MATERIAL_DOES_NOT_EXPIRE yomita el parámetro --valid-to.

Para usar este ejemplo:

1. Sustituya 1234abcd-12ab-34cd-56ef-1234567890ab por el ID de clave de la CMK que usó cuandodescargó la clave pública y el token de importación. Para identificar la CMK, utilice su ID o ARN declave. No puede utilizar un alias para esta operación.

2. Sustituya EncryptedKeyMaterial.bin por el nombre del archivo que contiene el material de clavescifradas.

3. Sustituya ImportToken.bin por el nombre del archivo que contiene el token de importación.

173

Page 182: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEliminar el material de claves

$ aws kms import-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --encrypted-key-material fileb://EncryptedKeyMaterial.bin \ --import-token fileb://ImportToken.bin \ --expiration-model KEY_MATERIAL_EXPIRES \ --valid-to 2019-09-17T12:00:00-08:00

Eliminar el material de claves importadoAl importar el material de claves, puede especificar una fecha de vencimiento. Cuando vence el materialde claves, AWS KMS lo elimina y la clave maestra de cliente (CMK) ya no se puede utilizar. Tambiénpuede eliminar material de claves a petición. Tanto si espera a que el material de claves expire como silo elimina de forma manual, el efecto es el mismo. AWS KMS elimina el material de claves, el estado declave (p. 245) de la CMK cambia a pending import (pendiente de importación), y la CMK no se puedeusar. Para volver a usar la CMK, debe volver a importar el mismo material de claves.

La eliminación del material de claves afecta a la CMK de inmediato, pero puede invertir dicha eliminaciónsi vuelve a importar el mismo material de claves en la CMK. Por el contrario, eliminar una CMK esirreversible. Si programa la eliminación de una clave (p. 176) y expira el periodo de espera necesario,AWS KMS elimina el material de claves y todos los metadatos asociados con la CMK.

Puede usar la Consola de administración de AWS o la API de AWS KMS para eliminar el material declaves. Puede utilizar la API directamente efectuando solicitudes HTTP o mediante uno de los SDK deAWS o con las herramientas de línea de comandos.

Temas• Cómo afecta la eliminación del material de claves a los servicios de AWS integrados con AWS

KMS (p. 174)• Eliminar el material de claves (console) (p. 175)• Eliminar el material de claves (AWS KMS API) (p. 175)

Cómo afecta la eliminación del material de claves a losservicios de AWS integrados con AWS KMSCuando se elimina el material de claves, la CMK deja de poderse usar de forma inmediata. Sin embargo,las claves de datos (p. 5) que los servicios de AWS utilizan no se ven afectadas de forma inmediata.Es decir, la eliminación del material de claves podría no afectar inmediatamente a todos los datos y losrecursos de AWS protegidos por la CMK, aunque acabarán viéndose afectados.

Hay varios servicios de AWS integrados con AWS KMS para proteger sus datos. Algunos de estosservicios como, por ejemplo, Amazon EBS y Amazon Redshift, utilizan una clave maestra del cliente (p. 3)(CMK) en AWS KMS para generar una clave de datos (p. 5) y, a continuación, utilizan la clave de datospara cifrar los datos. Estas claves de datos de texto no cifrado permanecen en memoria mientras que losdatos que protegen están en uso de forma activa.

Por ejemplo, considere esta situación:

1. Crea un volumen de EBS cifrado y especifica una CMK con material de claves importado. Amazon EBSpide a AWS KMS que utilice su CMK para generar una clave de datos cifrada para el volumen. AmazonEBS almacena la clave de datos cifrada con el volumen.

2. Al asociar el volumen de EBS a una instancia EC2, Amazon EC2 pregunta AWS KMS para utilizar suCMK para descifrar la clave de datos cifrada del volumen de EBS. Amazon EC2 almacena la clave dedatos de texto no cifrado en la memoria del hipervisor y la utiliza para cifrar las operaciones de E/S de

174

Page 183: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEliminar el material de claves (console)

disco en el volumen de EBS. La clave de datos persiste en la memoria siempre que el volumen de EBSesté asociado a la instancia EC2.

3. Puede eliminar el material de claves importado desde la CMK, lo que lo hace inservible. Esto no tieneun efecto inmediato sobre la instancia EC2 ni el volumen de EBS. El motivo de ello es que Amazon EC2utiliza la clave de datos en texto no cifrado, no la CMK, para cifrar toda la E/S de disco mientras que elvolumen se asocia a la instancia. ——

4. Sin embargo, cuando el volumen de EBS cifrado se separa de la instancia EC2, Amazon EBS eliminala clave de texto no cifrado de la memoria. La próxima vez que el volumen EBS cifrado se asocia a unainstancia EC2, el accesorio devuelve un error, dado que Amazon EBS no puede utilizar la CMK paradescifrar la clave de datos cifrada del volumen. Para volver a usar el volumen de EBS, debe volver aimportar el mismo material de claves en la CMK.

Eliminar el material de claves (console)Puede usar la Consola de administración de AWS para eliminar el material de claves.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Realice una de las siguientes acciones:

• Seleccione la casilla de verificación de una CMK con material de claves importado. Elija Key actions,Delete key material.

• Elija el alias o el ID de clave de una CMK con material de claves importado. En la sección KeyMaterial (Material de claves) de la página, elija Delete key material (Eliminar material de claves).

5. Confirme que desea eliminar el material de claves y, a continuación, seleccione Delete key material.El estado de la CMK, que corresponde a su estado de la clave (p. 245), cambia a Pending import(Importación pendiente).

Eliminar el material de claves (AWS KMS API)Para utilizar la API de AWS KMS para eliminar el material de claves, envíe una solicitudDeleteImportedKeyMaterial. El siguiente ejemplo muestra cómo hacerlo con la AWS CLI.

Sustituya 1234abcd-12ab-34cd-56ef-1234567890ab por el ID de clave de la CMK cuyo material declaves desea eliminar. Puede usar el ID de clave o el ARN de la CMK, pero no puede usar un alias paraesta operación.

$ aws kms delete-imported-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

175

Page 184: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo funciona la eliminación de CMK

Eliminar las claves maestras decliente

La eliminación de una clave maestra de cliente (CMK) en AWS Key Management Service (AWS KMS) esun proceso destructivo y potencialmente peligroso. Elimina el material de claves y todos los metadatosasociados con la CMK. Esta acción es irreversible. Una vez que se elimina una CMK, ya no se puedendescifrar los datos que se habían cifrado con ella, lo que significa que no se pueden recuperar los datos.Debe eliminar una CMK solo cuando esté seguro de que ya no necesita usarla. Si no está seguro,considere la posibilidad de deshabilitar la CMK (p. 49) en lugar de eliminarla. Puede volver a habilitar unaCMK deshabilitada si necesita volver a usarla más adelante, pero no puede recuperar una CMK eliminada.

Antes de eliminar una CMK, es recomendable que averigüe cuántos textos se han cifrado con dicha clave.AWS KMS no almacena esta información ni ninguno de los textos cifrados. Para obtener esta información,debe determinar por su cuenta el uso anterior de una CMK. Para consultar orientaciones que puedan serlede ayuda, vaya a Determinar el uso anterior de una clave maestra de cliente (p. 186).

AWS KMS nunca elimina las CMK a menos que las programe explícitamente para su eliminación y venzael periodo de espera obligatorio.

Puede decidir eliminar una CMK por uno o varios de los motivos siguientes:

• Para completar el ciclo de vida de clave de las CMK que ya no necesita• Evitar los gastos generales de administración y los costos asociados con el mantenimiento de las CMK

no usadas• Para reducir el número de CMK que se contabilizan para su cuota de recursos de CMK (p. 387)

Note

Si cierra o elimina su cuenta de AWS, sus CMK dejarán de estar accesibles y no se le facturarápor ellas. No es necesario programar la eliminación de las CMK de forma independiente al cerrarla cuenta.

Temas• Cómo funciona la eliminación de claves maestras de cliente (p. 176)• Programación y cancelación de la eliminación de claves (p. 178)• Agregar el permiso para programar y cancelar la eliminación de claves (p. 181)• Crear una alarma de Amazon CloudWatch para detectar el uso de una clave maestra de cliente que

está pendiente de eliminación (p. 182)• Determinar el uso anterior de una clave maestra de cliente (p. 186)

Cómo funciona la eliminación de claves maestrasde cliente

Los usuarios autorizados eliminan las claves maestras del cliente (CMK) simétricas y asimétricas. Elprocedimiento es el mismo para ambos tipos de CMK.

176

Page 185: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEliminar las CMK asimétricas

Como la eliminación de una CMK es un proceso destructivo y potencialmente peligroso, AWS KMS imponeun periodo de espera. Para eliminar una CMK en AWS KMS, debe programar la eliminación de claves.Puede configurar el periodo de espera de un mínimo de 7 días hasta un máximo de 30 días. El periodo deespera predeterminado es de 30 días.

Durante el periodo de espera, el estado de la CMK y el estado de la clave son Pending deletion (Pendientede eliminación).

• Una CMK que está pendiente de eliminación no puede utilizarse en ninguna operacióncriptográfica (p. 11).

• AWS KMS no rota las claves de backup (p. 158) de las CMK que están pendientes de eliminación.

Una vez que finaliza el periodo de espera, AWS KMS elimina la CMK y todos los datos de AWS KMSasociados con ella, incluidos todos los alias que apuntan a ella.

Al programar la eliminación de claves, AWS KMS informa de la fecha y la hora en que finaliza el periodode espera. La fecha y la hora es, como mínimo, el número especificado de días desde la programaciónde la eliminación de claves, pero puede durar hasta 24 horas más. Por ejemplo, imagine que programala eliminación de claves y especifica un período de espera de 7 días. En ese caso, el final del periodo deespera será no antes de 7 días y no más de 8 días desde el momento de la solicitud. Puede confirmar lafecha y la hora exactas en que finaliza el periodo de espera en la Consola de administración de AWS, laAWS CLI o la API de AWS KMS.

Use el periodo de espera para asegurarse de que no necesita la CMK ahora ni en el futuro. Puedeconfigurar una alarma de Amazon CloudWatch (p. 182) que le avise si una persona o aplicación intentautilizar la CMK durante el periodo de espera. Para recuperar la CMK, puede cancelar la eliminación declaves antes de que finalice el periodo de espera. Una vez que finaliza el periodo de espera, no puedecancelar la eliminación de claves y AWS KMS elimina la CMK.

Eliminar las CMK asimétricasLos usuarios autorizados (p. 181) pueden eliminar las CMK simétricas y asimétricas. El procedimientopara programar la eliminación de estas CMK es el mismo para ambos tipos de claves. Sin embargo, debidoa que la clave pública de una CMK asimétrica se puede descargar (p. 50) y utilizar fuera de AWS KMS, laoperación plantea riesgos adicionales significativos, especialmente para las CMK asimétricas utilizadaspara el cifrado (el uso de la clave es ENCRYPT_DECRYPT).

• Cuando planifica la eliminación de una CMK, el estado de la clave de la CMK cambia a Pending deletion(Pendiente de eliminación) y la CMK no se puede utilizar en operaciones criptográficas (p. 11). Sinembargo, la eliminación de la programación no tiene ningún efecto en las claves públicas fuera de AWSKMS. Los usuarios que tengan las claves públicas pueden seguir utilizándolas para cifrar mensajes. Noreciben ninguna notificación de que se haya cambiado el estado de la clave. A menos que se cancele laeliminación, el texto cifrado creado con la clave pública no se puede descifrar.

• Las alarmas, los registros y otras estrategias que detectan los intentos de uso de la CMK que estápendiente de eliminación no pueden detectar el uso de la clave pública fuera de AWS KMS.

• Cuando se elimina la CMK, todas las acciones de AWS KMS que involucran a esa CMK fallan. Sinembargo, los usuarios que tengan las claves públicas pueden seguir utilizándolas para cifrar mensajes.Estos textos cifrados no se pueden descifrar.

Si debe eliminar una CMK asimétrica con un uso de las claves de ENCRYPT_DECRYPT, utilice las entradasdel registro de CloudTrail para determinar si la clave pública se ha descargado y compartido. Si ha sidoasí, compruebe que la clave pública no se utilice fuera de AWS KMS. Después, considere la posibilidad dedeshabilitar la CMK (p. 49) en lugar de eliminarla.

177

Page 186: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo afecta la eliminación de CMKa los servicios de AWS integrados

Cómo afecta la eliminación de claves maestras decliente a los servicios de AWS integrados con AWSKMSHay varios servicios de AWS integrados con AWS KMS para proteger sus datos. Algunos de estosservicios como, por ejemplo, Amazon EBS y Amazon Redshift, utilizan una clave maestra del cliente (p. 3)(CMK) en AWS KMS para generar una clave de datos (p. 5) y, a continuación, utilizan la clave de datospara cifrar los datos. Estas claves de datos de texto no cifrado permanecen en memoria mientras que losdatos que protegen están en uso de forma activa.

La programación de una CMK para eliminación la hace inservible, pero no impide que el servicio de AWSutilice claves de datos en memoria para cifrar y descifrar los datos. El servicio no se ve afectado hasta quetiene utilizar la CMK que está pendiente de eliminación o se ha eliminado.

Por ejemplo, considere esta situación:

1. Crea un volumen de EBS cifrado y especifica una CMK. Amazon EBS pide a AWS KMS que utilicela CMK para generar una clave de datos cifrada para el volumen. Amazon EBS almacena la clave dedatos cifrada con el volumen.

2. Al asociar el volumen de EBS a una instancia EC2, Amazon EC2 pregunta AWS KMS para utilizar suCMK para descifrar la clave de datos cifrada del volumen de EBS. Amazon EC2 almacena la clave dedatos de texto no cifrado en la memoria del hipervisor y la utiliza para cifrar las operaciones de E/S dedisco en el volumen de EBS. La clave de datos persiste en la memoria siempre que el volumen de EBSesté asociado a la instancia EC2.

3. Programa la CMK para eliminación, lo que lo hace inservible. Esta acción no tiene un efecto inmediatoen la instancia EC2 ni el volumen de EBS, ya que Amazon EC2 utiliza la clave de datos en texto nocifrado, no la CMK, para cifrar la E/S de disco en el volumen de EBS. ——

Incluso si transcurre el tiempo programado y AWS KMS elimina la CMK, no hay ningún efecto inmediatoen la instancia EC2 ni en el volumen de EBS, ya que Amazon EC2 utiliza la clave de datos en texto nocifrado, no la CMK.

4. Sin embargo, cuando el volumen de EBS cifrado se separa de la instancia EC2, Amazon EBS eliminala clave de texto no cifrado de la memoria. La próxima vez que el volumen EBS cifrado se asocia a unainstancia EC2, el accesorio devuelve un error, dado que Amazon EBS no puede utilizar la CMK paradescifrar la clave de datos cifrada del volumen.

Programación y cancelación de la eliminación declaves

Los siguientes procedimientos describen cómo programar y cancelar la eliminación de claves en AWSKMS con la Consola de administración de AWS, la AWS CLI y el AWS SDK for Java.

Warning

La eliminación de una clave maestra de cliente (CMK) en AWS KMS () es un proceso destructivoy potencialmente peligroso. Solo debe hacerlo si está seguro de que ya no necesitará la CMK yno tendrá que usarla en el futuro. Si no está seguro, debe deshabilitar la CMK (p. 49) en lugar deeliminarla.

Para poder eliminar una CMK, debe disponer de permiso para hacerlo. Si solo se basa en la política declaves para especificar los permisos de AWS KMS, es posible que deba agregar permisos adicionales para

178

Page 187: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUso de Consola de administración de AWS

poder eliminar la CMK. Para obtener información sobre la adición de estos permisos, vaya a Agregar elpermiso para programar y cancelar la eliminación de claves (p. 181).

Formas de programar y cancelar la eliminación de claves• Programación y cancelación de la eliminación de claves (console) (p. 179)• Programación y cancelación de la eliminación de claves (AWS CLI) (p. 179)• Programación y cancelación de la eliminación de claves (AWS SDK for Java) (p. 180)

Programación y cancelación de la eliminación declaves (console)Puede programar y cancelar la eliminación de claves en la Consola de administración de AWS.

Para rogramar la eliminación de claves

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Seleccione la casilla de verificación situada junto a la CMK que desea eliminar.5. Elija Key actions (Acciones de claves), Schedule key deletion (Programar la eliminación de claves).6. Lea y tenga en cuenta la advertencia y la información sobre la cancelación de la eliminación durante el

período de espera. Si decide cancelar la eliminación, elija Cancel (Cancelar).7. En Waiting period (in days) [Período de espera (en días)], indique un número de días entre 7 y 30.8. Seleccione la casilla de verificación situada junto a Confirm you want to schedule this key for deletion

in <número de días> días (Confirme que quiere programar esta clave durante <número de días>días).

9. Elija Schedule deletion.

El estado de la CMK cambia a Pending deletion (Eliminación pendiente).

Para cancelar la eliminación de claves

1. Abra la consola de AWS KMS en https://console.aws.amazon.com/kms.2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de la

página.3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Seleccione la casilla de verificación situada junto a la CMK que desea recuperar.5. Elija Key actions (Acciones de claves), Cancel key deletion (Cancelar eliminación de la clave).

El estado de la CMK cambia de Pending deletion (Eliminación pendiente) a Disabled (Deshabilitada). Parautilizar la CMK, debe habilitarla (p. 49).

Programación y cancelación de la eliminación declaves (AWS CLI)Utilice el comando aws kms schedule-key-deletion para programar la eliminación de claves desdela AWS CLI, tal y como se muestra en el siguiente ejemplo.

179

Page 188: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUso de AWS SDK for Java

$ aws kms schedule-key-deletion --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --pending-window-in-days 10

Cuando se utiliza de forma correcta, la AWS CLI devuelve una salida como la que se muestra en elejemplo siguiente:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "DeletionDate": 1442102400.0}

Utilice el comando aws kms cancel-key-deletion para cancelar la eliminación de claves desde laAWS CLI, tal y como se muestra en el siguiente ejemplo.

$ aws kms cancel-key-deletion --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

Cuando se utiliza de forma correcta, la AWS CLI devuelve una salida como la que se muestra en elejemplo siguiente:

{ "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"}

El estado de la CMK cambia de Pending Deletion a Disabled. Para utilizar la CMK, debe habilitarla (p. 49).

Programación y cancelación de la eliminación declaves (AWS SDK for Java)El siguiente ejemplo muestra cómo programar una CMK para eliminarla con AWS SDK for Java. Esteejemplo requiere que antes se haya creado una instancia de AWSKMSClient como kms

String KeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

int PendingWindowInDays = 10;

ScheduleKeyDeletionRequest scheduleKeyDeletionRequest =new ScheduleKeyDeletionRequest().withKeyId(KeyId).withPendingWindowInDays(PendingWindowInDays);kms.scheduleKeyDeletion(scheduleKeyDeletionRequest);

El siguiente ejemplo muestra cómo cancelar una eliminación de clave con AWS SDK for Java. Esteejemplo requiere que antes se haya creado una instancia de AWSKMSClient como kms

String KeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

CancelKeyDeletionRequest cancelKeyDeletionRequest =new CancelKeyDeletionRequest().withKeyId(KeyId);kms.cancelKeyDeletion(cancelKeyDeletionRequest);

El estado de la CMK cambia de Pending Deletion a Disabled. Para utilizar la CMK, debe habilitarla (p. 49).

180

Page 189: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAgregar el permiso para programary cancelar la eliminación de claves

Agregar el permiso para programar y cancelar laeliminación de claves

Si utiliza las políticas de IAM para conceder los permisos de AWS KMS, todos los usuarios y todas lasfunciones de IAM que tengan acceso de administrador de AWS ("Action": "*") o acceso completo deAWS KMS ("Action": "kms:*") ya tienen permiso para programar y cancelar la eliminación de clavesde las CMK de AWS KMS. Si solo se basa en la política de claves para habilitar los permisos de AWSKMS, debe agregar permisos adicionales para que los usuarios y las funciones de IAM eliminen las CMK.Para agregar los permisos, consulte los pasos siguientes.

Los siguientes procedimientos describen cómo agregar permisos a una política de claves usando laConsola de administración de AWS o la AWS CLI.

Formas de agregar permiso para programar y cancelar la eliminación de claves• Agregar el permiso para programar y cancelar la eliminación de claves (console) (p. 181)• Agregar el permiso para programar y cancelar la eliminación de claves (AWS CLI) (p. 181)

Agregar el permiso para programar y cancelar laeliminación de claves (console)Puede utilizar la Consola de administración de AWS para agregar permisos para programar y cancelar laeliminación de claves.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Elija el alias o el ID de clave de la CMK cuyos permisos desea cambiar.5. En la sección Key policy (Política de claves), en Key deletion (Eliminación de la clave), seleccione

Allow key administrators to delete this key (Permitir que los administradores de claves eliminen estaclave) y, a continuación, elija Save changes (Guardar cambios).

Note

Si no aparece la opción Allow key administrators to delete this key (Permitir que losadministradores de claves eliminen esta clave), probablemente significa que ha modificadoesta política de claves con la API de AWS KMS. En este caso, debe actualizar el documentode políticas de claves manualmente. Agregue los permisos kms:ScheduleKeyDeletion ykms:CancelKeyDeletion a la declaración de administradores de claves ("Sid": "Allowaccess for Key Administrators") en la política de claves y, a continuación, elija SaveChanges (Guardar cambios).

Agregar el permiso para programar y cancelar laeliminación de claves (AWS CLI)Puede utilizar la AWS Command Line Interface para agregar permisos para programar y cancelar laeliminación de claves.

181

Page 190: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear una alarma de Amazon CloudWatch

Para agregar permiso para programar y cancelar la eliminación de claves

1. Utilice el comando aws kms get-key-policy para recuperar la política de claves existente y, acontinuación, guarde el documento de políticas en un archivo.

2. Abra el documento de políticas en el editor de textos que prefiera, agregue los permisoskms:ScheduleKeyDeletion y kms:CancelKeyDeletion a la declaración de política que concedepermisos a los administradores de claves (por ejemplo, la declaración de política con "Sid":"Allow access for Key Administrators"). A continuación, guarde el archivo. El siguienteejemplo muestra una declaración de política con estos dos permisos:

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*"}

3. Utilice el comando aws kms put-key-policy para aplicar la política de claves a la CMK.

Crear una alarma de Amazon CloudWatch paradetectar el uso de una clave maestra de cliente queestá pendiente de eliminación

Puede combinar las características de AWS CloudTrail, Amazon CloudWatch Logs y Amazon SimpleNotification Service (Amazon SNS) que le notifican si alguien de su cuenta intenta utilizar una CMK queestá pendiente de eliminación en una operación criptográfica. Si recibe esta notificación, puede cancelar laeliminación de la CMK y reconsiderar su decisión de eliminarla.

Los siguientes procedimientos explican cómo recibir una notificación cuando una solicitud de la APIde AWS KMS que genera el mensaje de error “Key ARN is pending deletion” se escribe enlos archivos de registro de CloudTrail. Este mensaje de error indica que una persona o aplicación haintentado utilizar la CMK en una operación criptográfica (Encrypt, Decrypt, GenerateDataKey,GenerateDataKeyWithoutPlaintext y ReEncrypt). Debido a que la notificación está vinculadaal mensaje de error, no se activa cuando se utilizan operaciones de las API permitidas en las CMK queestán pendientes de eliminación, como por ejemplo ListKeys, CancelKeyDeletion y PutKeyPolicy.Para ver una lista de las operaciones de API de AWS KMS que devuelven este mensaje de error, consulteEstado de una clave: efecto en su CMK (p. 245).

El correo electrónico de notificación que recibe no muestra la CMK o la operación criptográfica. Puedeencontrar esa información en su registro de CloudTrail (p. 318). En lugar de ello, el correo electrónicoinforma de que el estado de la alarma ha cambiado de OK (Correcto) a Alarm (Alarma). Para obtener más

182

Page 191: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRequisitos para una alarma de CloudWatch

información acerca de las alarmas de CloudWatch y los cambios de estado, consulte Creación de alarmasde Amazon CloudWatch en la Guía del usuario de Amazon CloudWatch.

Warning

Esta alarma de Amazon CloudWatch no puede detectar el uso de la clave pública de unaCMK asimétrica fuera de AWS KMS. Para obtener información detallada acerca de los riesgosespeciales de la eliminación de las CMK asimétricas utilizadas para la criptografía de clavepública, incluida la creación de textos cifrados que no se pueden descifrar, consulte Eliminar lasCMK asimétricas (p. 177).

Temas• Requisitos para una alarma de CloudWatch (p. 183)• Crear la alarma de CloudWatch (p. 183)

Requisitos para una alarma de CloudWatchAntes de crear una alarma de CloudWatch, debe crear un registro de seguimiento de AWS CloudTrail yconfigurar CloudTrail para enviar archivos de registro de CloudTrail a Amazon CloudWatch Logs.

1. Crear un registro de seguimiento de CloudTrail.

CloudTrail se habilita automáticamente en su cuenta de AWS si crea la cuenta. Sin embargo, paramantener un registro continuo de los eventos de la cuenta, incluidos los eventos de AWS KMS cree unregistro de seguimiento.

2. Configure CloudTrail para que entregue los archivos de registro a CloudWatch Logs.

Configure la entrega de sus archivos de registro de CloudTrail a CloudWatch Logs. Esto permite aCloudWatch Logs monitorear los registros de solicitudes de API de AWS KMS que intenten usar unaCMK que está pendiente de eliminación.

Crear la alarma de CloudWatchPara recibir una notificación cuando las solicitudes de API de AWS KMS intenten usar una CMK que estápendiente de eliminación en una operación criptográfica, cree una alarma de CloudWatch y configure lasnotificaciones.

Para crear una alarma de CloudWatch que monitoree los intentos de usar una CMK de KMS queestá pendiente de eliminación

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

2. Utilice el selector de región en la esquina superior derecha para elegir las región de AWS que deseemonitorear.

3. En el panel de navegación izquierdo, elija Logs.4. En la lista Log Groups (Grupos de registros), elija el botón de opciones que aparece junto a su grupo

de registros. A continuación, elija Create Metric Filter.5. En Filter Pattern, escriba o pegue lo siguiente:

{ $.eventSource = kms* && $.errorMessage = "* is pending deletion."}

Elija Assign Metric.6. En la página Create Metric Filter and Assign a Metric, haga lo siguiente:

183

Page 192: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear la alarma de CloudWatch

a. En Metric Namespace (Espacio de nombres de métrica), escriba CloudTrailLogMetrics.b. En Nombre de métrica, escriba KMSKeyPendingDeletionErrorCount.c. Elija Show advanced metric settings (Mostrar configuración avanzada de métricas) y para Metric

Value (Valor métrico), escriba 1, si este no es el valor actual.d. Elija Create Filter.

7. En el cuadro de filtro, elija Create Alarm.8. En la ventana Create Alarm, haga lo siguiente:

a. En la sección Alarm Threshold (Umbral de alarma); en Nombre, escribaKMSKeyPendingDeletionErrorAlarm. También puede añadir una descripción opcional.

b. Después de Whenever (Siempre que), para is (es), elija >= y, a continuación, escriba 1.c. Para 1 out of n datapoints (1 de n puntos de datos), si es necesario, escriba 1.d. En la sección Additional settings (Configuración adicional), para Treat missing data as (Tratar los

datos que faltan como), elija good (not breaching threshold) (correctos (dentro del umbral)).e. En la sección Actions (Acciones), para Send notification to (Enviar notificación a), realice una de

las siguientes acciones:

• Para utilizar un nuevo tema de Amazon SNS, elija New list (Nueva lista) y, a continuación,escriba un nuevo nombre de tema como KMSAlert. En Email list: (Lista de correo electrónico):,escriba al menos una dirección de correo electrónico. Puede escribir varias direcciones decorreo electrónico separándolas con comas.

• Para utilizar un tema de Amazon SNS existente, elija el nombre del tema que desea usar.f. Elija Create Alarm.

184

Page 193: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear la alarma de CloudWatch

9. Si ha elegido enviar notificaciones a una dirección de correo electrónico, abra el mensaje decorreo electrónico que reciba de [email protected] con el asunto "AWS Notification -Subscription Confirmation". Confirme la dirección de correo electrónico eligiendo en el enlace Confirmsubscription del mensaje de correo electrónico.

Note

No recibirá notificaciones por correo electrónico hasta después de haber confirmado sudirección.

Después de realizar este procedimiento, recibirá una notificación cada vez que esta alarma de CloudWatchcambie al estado ALARM. Si recibe una notificación para esta alarma, puede significar que alguien o algotodavía tiene que utilizar esta CMK. En ese caso, debe cancelar la eliminación de la CMK (p. 178) paradarse más tiempo para determinar si realmente desea eliminarla.

185

Page 194: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDeterminar el uso anterior de una CMK

Determinar el uso anterior de una clave maestra decliente

Antes de eliminar una clave maestra de cliente (CMK), es recomendable que averigüe cuántos textos sehan cifrado con dicha clave. AWS KMS no almacena esta información ni ninguno de los textos cifrados.Para obtener esta información, debe determinar por su cuenta el uso anterior de una CMK. Saber cómose ha usado una CMK anteriormente puede ayudarle a decidir si la necesitará en el futuro. Las siguientesorientaciones pueden ayudarle a determinar el uso anterior de una CMK.

Warning

Estas estrategias para determinar el uso anterior y real son efectivas solo para los usuarios deAWS y las operaciones de AWS KMS. No pueden detectar el uso de la clave pública de unaCMK asimétrica fuera de AWS KMS. Para obtener información detallada acerca de los riesgosespeciales de la eliminación de las CMK asimétricas utilizadas para la criptografía de clavepública, incluida la creación de textos cifrados que no se pueden descifrar, consulte Eliminar lasCMK asimétricas (p. 177).

Temas• Examinar los permisos de CMK para determinar el ámbito de uso potencial (p. 186)• Examinar los registros de AWS CloudTrail para determinar el uso real (p. 186)

Examinar los permisos de CMK para determinar elámbito de uso potencialDeterminar quién o qué tiene acceso actualmente a una clave maestra de cliente (CMK) puede ayudarle adeterminar el alcance de uso de la CMK y si sigue siendo necesaria. Para obtener información sobre cómodeterminar quién o qué tiene acceso actualmente a una CMK, vaya a Determinar el acceso a una clavemaestra de cliente de AWS KMS (p. 131).

Examinar los registros de AWS CloudTrail paradeterminar el uso realAWS KMS se integra en AWS CloudTrail, por lo que toda la actividad de la API de AWS KMS se guarda enlos archivos de registro de CloudTrail. Si ha activado CloudTrail en la región donde se encuentra la clavemaestra de cliente (CMK), puede examinar los archivos de registro de CloudTrail para ver el historial de laactividad de la API de AWS KMS de una determinada CMK y también su historial de uso. Puede utilizar elhistorial de uso de una CMK como ayuda para determinar si la sigue necesitando o no.

En los siguientes ejemplos se muestran las entradas de registro de CloudTrail que se generan cuando seusa una CMK de KMS para proteger un objeto almacenado en Amazon Simple Storage Service (AmazonS3). En este ejemplo, el objeto se cargar en Amazon S3 mediante el cifrado en el servidor con clavesadministradas por AWS KMS (SSE-KMS) (p. 289). Al cargar un objeto en Amazon S3 con SSE-KMS,especifique la CMK de KMS que se usará para proteger el objeto. Amazon S3 utiliza la operación de AWSKMS GenerateDataKey para solicitar una clave de datos única para el objeto y este evento de solicitudse registra en CloudTrail con una entrada similar a la siguiente:

{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AROACKCEVSQ6C2EXAMPLE:example-user",

186

Page 195: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresExaminar los registros de AWS

CloudTrail para determinar el uso real

"arn": "arn:aws:sts::111122223333:assumed-role/Admins/example-user", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2015-09-10T23:12:48Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admins", "accountId": "111122223333", "userName": "Admins" } }, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-09-10T23:58:18Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": {"aws:s3:arn": "arn:aws:s3:::example_bucket/example_object"}, "keySpec": "AES_256", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "cea04450-5817-11e5-85aa-97ce46071236", "eventID": "80721262-21a5-49b9-8b63-28740e7ce9c9", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Cuando posteriormente descargue este objeto de Amazon S3, Amazon S3 envía una solicitud Decrypta AWS KMS para descifrar la clave de datos del objeto mediante la CMK especificada. De este modo, losarchivos de registro de CloudTrail incluyen una entrada similar a la siguiente:

{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AROACKCEVSQ6C2EXAMPLE:example-user", "arn": "arn:aws:sts::111122223333:assumed-role/Admins/example-user", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2015-09-10T23:12:48Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admins", "accountId": "111122223333", "userName": "Admins"

187

Page 196: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresExaminar los registros de AWS

CloudTrail para determinar el uso real

} }, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-09-10T23:58:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": {"aws:s3:arn": "arn:aws:s3:::example_bucket/example_object"}}, "responseElements": null, "requestID": "db750745-5817-11e5-93a6-5b87e27d91a0", "eventID": "ae551b19-8a09-4cfc-a249-205ddba330e3", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

CloudTrail registra toda la actividad de la API de AWS KMS. Al evaluar estas entradas de registro,puede determinar el uso anterior de una determinada CMK y esto puede ayudarle a determinar si deseaeliminarla.

Para ver más ejemplos de cómo aparece la actividad de la API de AWS KMS en los archivos de registro deCloudTrail vaya a Registrar llamadas a la API de AWS KMS con AWS CloudTrail (p. 318). Para obtenermás información acerca de CloudTrail, visite AWS CloudTrail User Guide.

188

Page 197: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Usar un almacén de clavespersonalizado

AWS KMS admite almacenes de claves personalizados (p. 191) respaldados por clústeres de AWSCloudHSM. Al crear una clave maestra de cliente (p. 3) (CMK) de AWS KMS en un almacén de clavespersonalizado, AWS KMS genera y almacena material de claves no extraíbles para la CMK en un clústerde AWS CloudHSM de su propiedad y que también administra. Al utilizar una CMK en un almacén declaves personalizado, las operaciones criptográficas (p. 217) se realizan en los HSM del clúster. Estacaracterística combina la comodidad y la integración generalizada de AWS KMS con el control añadido deun clúster de AWS CloudHSM en su cuenta de AWS.

AWS KMS proporciona soporte total de la consola y de la API para crear, usar y administrar almacenes declaves personalizados. Al crear CMK en un almacén de claves personalizado, puede usarlas de igual modoque haría con cualquier CMK. Por ejemplo, puede usar las CMK para generar claves de datos y para cifrardatos. También puede usar las CMK de su almacén de claves personalizado con servicios de AWS queadmiten las CMK administradas por el cliente.

¿Necesito un almacén de claves personalizado?

Para la mayoría de usuarios, el almacén de claves de AWS KMS predeterminado, protegido por móduloscriptográficos validados por FIPS 140-2, cumple sus requisitos de seguridad. No es necesario añadir unacapa extra de responsabilidad de mantenimiento o una dependencia de un servicio adicional.

Sin embargo, puede plantearse crear un almacén de claves personalizado si su organización cumplealguno de los siguientes requisitos:

• El material de claves no puede almacenarse en un entorno compartido.• El material de claves debe ser compatible en varias regiones de AWS.• El material de claves debe estar sujeto a una ruta de auditoría secundaria e independiente.• Los HSM que generan y almacenan el material de claves deben tener el certificado FIPS 140-2 nivel 3.

¿Cómo funcionan los almacenes de claves personalizados?

Cada almacén de claves personalizado está asociado a un clúster de AWS CloudHSM de su cuenta deAWS. Al conectar el almacén de claves personalizado a su clúster, AWS KMS crea la infraestructura dered para dar soporte a la conexión. Luego se registra en el cliente AWS CloudHSM de la clave en el clústercon las credenciales de un usuario de criptografía dedicado (p. 192) en el clúster.

Cree y administre los almacenes de claves personalizados en AWS KMS y los clústeres de HSM en AWSCloudHSM. Al crear claves maestras de cliente (CMK) en un almacén de claves personalizado de AWSKMS, puede ver y administrar las CMK en AWS KMS. Pero también puede ver y administrar su material declaves en AWS CloudHSM, de igual modo que haría con otras claves en el clúster.

189

Page 198: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Puede crear CMK simétricas (p. 211) con material de claves generado por AWS KMS en su almacén declaves personalizado. Puede utilizar las mismas técnicas para ver y administrar las CMK de su almacénde claves personalizado que utiliza para las CMK del almacén de claves de AWS KMS. Puede controlarel acceso con políticas de claves y de IAM, crear etiquetas y alias, habilitar y deshabilitar las CMK yprogramar la eliminación de claves. Puede utilizar las CMK para operaciones criptográficas (p. 217) yusarlas con servicios de AWS que se integran con AWS KMS.

Además, puede controlar por completo el clúster de AWS CloudHSM, incluida la creación y la eliminaciónde los HSM y la administración de copias de seguridad. Puede utilizar el cliente de AWS CloudHSM ylas bibliotecas de software respaldadas para ver, auditar y administrar el material de claves de sus CMK.Mientras el almacén de claves personalizado esté desconectado, AWS KMS no podrá acceder a él y losusuarios no podrán usar las CMK del almacén de claves personalizado en operaciones criptográficas. Estacapa de control añadida convierte a los almacenes de claves personalizados en una solución potente paralas organizaciones que la necesitan.

¿Por dónde empiezo?

Para crear y administrar un almacén de claves personalizado deberá usar las características de AWS KMSy de AWS CloudHSM.

1. Comience por AWS CloudHSM. Cree un clúster de AWS CloudHSM activo o seleccione uno existente.El clúster debe tener al menos dos HSM activos en distintas zonas de disponibilidad. A continuación,cree una cuenta de usuario de criptografía (CU) dedicado (p. 192) en dicho clúster para AWS KMS.

2. En AWS KMS, cree un almacén de claves personalizado (p. 196) que esté asociado al clústerde AWS CloudHSM que ha seleccionado. AWS KMS proporciona una interfaz de administracióncompleta (p. 200) que le permite crear, ver, editar y eliminar sus almacenes de claves personalizados.

3. Cuando esté preparado para utilizar su almacén de claves personalizado, conéctelo al clúster de AWSCloudHSM asociado (p. 204). AWS KMS crea la infraestructura de red necesaria para respaldar laconexión. A continuación, se registra en el clúster con las credenciales de la cuenta de usuario decriptografía dedicado para que pueda generar y administrar material de claves en el clúster.

4. Ahora, puede crear CMK simétricas en su almacén de claves personalizado (p. 211). Únicamentedebe especificar el almacén de claves personalizado al crear la CMK.

Si se queda bloqueado en algún momento, puede buscar ayuda en el tema Resolver problemas deun almacén de claves personalizado (p. 223). Si su pregunta no tiene respuesta, utilice el enlace decomentarios en la parte inferior de cada página de esta guía o escriba en el Foro de debate de AWS KeyManagement Service.

190

Page 199: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores¿Qué es un almacén de claves personalizado?

Cuotas

No hay cuotas de recursos para el número de almacenes de claves personalizadas en una cuenta o regiónde AWS. Sin embargo, existen cuotas en relación con el número de clústeres de AWS CloudHSM en cadaregión de AWS y cuotas de solicitud (p. 388) en la tasa de operaciones criptográficas al usar las CMK encada almacén de claves personalizadas.

Regiones

AWS KMS admite almacenes de claves personalizadas en todas las regiones de AWS en las que esténdisponibles AWS KMS y AWS CloudHSMPara ver una lista de regiones de AWS compatibles con cadaservicio, consulte Cuotas y puntos de enlace de AWS Key Management Service y Cuotas y puntos deenlace de AWS CloudHSM en la Referencia general de Amazon Web Services..

Características no admitidas

Los almacenes de claves personalizados no admiten CMK asimétricas (p. 143), pares de claves de datosasimétricos (p. 7) ni CMK con material de claves importado (p. 162), y no se puede habilitar la rotaciónautomática de claves (p. 157) en una CMK de un almacén de claves personalizado.

Temas• ¿Qué es un almacén de claves personalizado? (p. 191)• Controlar el acceso al almacén de claves personalizado (p. 193)• Crear un almacén de claves personalizado (p. 196)• Administrar un almacén de claves personalizado (p. 200)• Administrar CMK en un almacén de claves personalizado (p. 211)• Resolver problemas de un almacén de claves personalizado (p. 223)

¿Qué es un almacén de claves personalizado?En este tema se explican algunos de los conceptos empleados en los almacenes de claves personalizadosde AWS KMS.

Temas• Almacén de claves personalizado de AWS KMS (p. 191)• Clúster de AWS CloudHSM (p. 192)• Usuario de criptografía de kmsuser (p. 192)• Las CMK en un almacén de claves personalizado (p. 193)

Almacén de claves personalizado de AWS KMSUn almacén de claves es una ubicación segura para almacenar claves criptográficas. El almacén declaves predeterminado en AWS KMS también admite métodos para generar y administrar las clavesque almacena. De forma predeterminada, las claves maestras de cliente (CMK) que ha creado en AWSKMS se generan en y están protegidas por módulos de seguridad de hardware (HSM) que son móduloscriptográficos validados mediante FIPS 140-2. Las CMK nunca salen de los módulos sin cifrar.

Sin embargo, si precisa más control de los HSM, puede crear un almacén de claves personalizadorespaldado por los HSM FIPS 140-2 nivel 3 en un clúster de AWS CloudHSM que es de su propiedad yque administra.

191

Page 200: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClúster de AWS CloudHSM

Un almacén de claves personalizado es un recurso de AWS KMS asociado a un clúster de AWSCloudHSM. Al crear una CMK de AWS KMS en el almacén de claves personalizado, AWS KMS generauna clave simétrica Advanced Encryption Standard (AES) de 256 bits, persistente y no exportable en elclúster de AWS CloudHSM asociado. Este material de claves nunca sale de los HSM sin cifrar. Al utilizaruna CMK en un almacén de claves personalizado, las operaciones criptográficas se realizan en los HSMdel clúster.

Los almacenes de claves personalizadas combinan la interfaz de administración de claves amplia ycómoda de AWS KMS con controles adicionales proporcionados por un clúster de AWS CloudHSM en sucuenta de AWS. Esta característica integrada le permite crear, administrar y usar CMK en AWS KMS a lavez que controla por completo los HSM que almacenan su material de claves, incluida la administración declústers, HSM y copias de seguridad. Puede usar la consola de AWS KMS y las API para administrar unalmacén de claves personalizado y sus CMK. También puede utilizar la consola de AWS CloudHSM, lasAPI, el software de cliente y las bibliotecas de software asociadas para administrar el clúster asociado.

Puede ver y administrar (p. 200) su almacén de claves personalizado, editar sus propiedades (p. 202)y conectar y desconectarlo (p. 204) de su clúster de AWS CloudHSM asociado. Si tiene que eliminarun almacén de claves personalizado (p. 209), primero deberá eliminar los CMK del almacén de clavespersonalizado programando su eliminación y esperando a que venza el período de gracia. Al eliminar elalmacén de claves personalizado desaparece el recurso de AWS KMS, pero no afecta a su clúster de AWSCloudHSM.

Clúster de AWS CloudHSMCada almacén de claves personalizado de AWS KMS está asociado a un clúster de AWS CloudHSM.Al crear una clave maestra de cliente (CMK) en el almacén de claves personalizado, AWS KMS crea sumaterial de claves en el clúster asociado. Al utilizar una CMK en el almacén de claves personalizado, laoperación criptográfica se realizan en el clúster asociado.

Cada clúster de AWS CloudHSM solo puede asociarse a un almacén de claves personalizado. El clústerque elija no podrá asociarse con ningún otro almacén de claves personalizado o compartir un historialde copias de seguridad con un clúster asociado. El clúster debe inicializarse y estar activo, y estar en lamisma cuenta y región de AWS que el almacén de claves personalizado de AWS KMS. Puede crear unclúster nuevo o utilizar uno existente. AWS KMS no requiere un uso exclusivo del clúster. Para crear lasCMK en el almacén de claves personalizado, su clúster asociado debe incluir al menos dos HSM activos.El resto de operaciones solo precisan un HSM.

Debe especificar el clúster al crear el almacén de claves personalizado y no lo puede cambiar. Sinembargo, puede sustituir cualquier clúster que comparta un historial de copias de seguridad con el clústeroriginal. De este modo podrá eliminar el clúster, en caso necesario, y reemplazarlo por uno creado a partirde una de sus copias de seguridad. Mantendrá todo el control del clúster de AWS CloudHSM asociado, porlo que podrá administrar usuarios y claves, crear y eliminar HSM, y usar y administrar copias de seguridad.

Cuando esté listo para usar el almacén de claves personalizado, deberá conectarlo a su clúster de AWSCloudHSM asociado. Puede conectar y desconectar su almacén de claves personalizado (p. 204) encualquier momento. Cuando el almacén de claves personalizado está conectado, se pueden crear y utilizarsus CMK. Cuando está desconectado, puede ver y administrar el almacén de claves personalizado ysus CMK. Pero no podrá crear CMK nuevas ni usar las CMK en el almacén de claves personalizado enoperaciones criptográficas.

Usuario de criptografía de kmsuserPara crear y administrar material de claves en un clúster de AWS CloudHSM asociado en su nombre,AWS KMS usa un usuario de criptografía (CU) de AWS CloudHSM en un clúster llamado kmsuser. El CUkmsuser es una cuenta de CU estándar que se sincroniza de forma automática con todos los HSM delclúster y se guarda en copias de seguridad del clúster.

192

Page 201: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresLas CMK en un almacén de claves personalizado

Antes de crear el almacén de claves, cree una cuenta de CU kmsuser (p. 196) en el clúster de AWSCloudHSM con el comando createUser en cloudhsm_mgmt_util. Luego, cuando cree el almacén de clavespersonalizado (p. 196), deberá proporcionar la contraseña de la cuenta de kmsuser a AWS KMS. Alconectar el almacén de claves personalizado (p. 204), AWS KMS inicia sesión en el clúster con el CUkmsuser y rota su contraseña.

AWS KMS conserva la sesión como kmsuser mientras el almacén de claves personalizado estéconectado. No debería usar esta cuenta de CU para otros fines. Sin embargo, conservará elcontrol total de la cuenta del CU kmsuser. Podrá buscar los identificadores (p. 221) de las clavespropiedad de kmsuser en todo momento. Si es necesario, puede desconectar el almacén de clavespersonalizado (p. 204), cambiar la contraseña de kmsuser, iniciar sesión en el clúster comokmsuser (p. 229), y ver y administrar las claves propiedad de kmsuser.

Para obtener instrucciones sobre cómo crear la cuenta del CU kmsuser, consulte Crear el usuario decriptografía kmsuser (p. 196).

Las CMK en un almacén de claves personalizadoPuede utilizar la Consola de administración de AWS o la API de AWS KMS para crear una clave maestrade cliente (p. 3) (CMK) en un almacén de claves personalizado. Utilice la misma técnica que utilizaríaen cualquier CMK de AWS KMS. La única diferencia es que debe identificar el almacén de clavespersonalizado y especificar que el origen del material de claves es el clúster de AWS CloudHSM.

Al crear una CMK en un almacén de claves personalizado (p. 211), AWS KMS crea una CMK enAWS KMS y genera una clave de backup simétrica Advanced Encryption Standard (AES) de 256 bits,persistente y no exportable en su clúster asociado. Aunque AWS CloudHSM es compatible con clavessimétricas y asimétricas de distintos tipos, AWS KMS y los almacenes de claves personalizados soloadmiten claves simétricas AES.

Puede ver las CMK en un almacén de claves personalizado en la consola de AWS KMS y usar lasopciones de la consola para visualizar el ID del almacén de claves personalizado. También puede usar laoperación DescribeKey para buscar el ID del almacén de claves personalizado y el ID del clúster de AWSCloudHSM.

Las CMK de un almacén de claves personalizado funcionan igual que las CMK de AWS KMS. Los usuariosautorizados necesitan los permisos para usar y administrar las CMK. Utilice los mismos procedimientosde consola y operaciones de API para ver y administrar las CMK en un almacén de claves personalizado.Puede habilitar y deshabilitar CMK, crear y usar etiquetas y alias, y configurar y cambiar las políticas declaves y de IAM. También puede usar las CMK de un almacén de claves personalizado en operacionescriptográficas y usarlas con servicios de AWS integrados (p. 250) que admiten el uso de las CMKadministradas por el cliente. Sin embargo, no puede habilitar la rotación de claves automática (p. 157) niimportar material de claves (p. 162) a una CMK de un almacén de claves personalizado.

Puede usar el mismo proceso para programar la eliminación (p. 222) de una CMK de un almacén declaves personalizado. Cuando finaliza el periodo de espera, AWS KMS elimina la CMK de KMS. Y seesfuerza por eliminar el material de claves para la CMK del clúster de AWS CloudHSM asociado. Sinembargo, es posible que deba eliminar el material de claves huérfano (p. 227) manualmente del clúster yde sus copias de seguridad.

Controlar el acceso al almacén de clavespersonalizado

Utilice las políticas de IAM para controlar el acceso al almacén de claves personalizado de AWS KMS yal clúster de AWS CloudHSM. Puede usar las políticas de IAM y las políticas de claves para controlar el

193

Page 202: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutorizar a supervisores y usuarios

del almacén de claves personalizado

acceso a las claves maestras de cliente en su almacén de claves personalizado. Le recomendamos queúnicamente otorgue a los usuarios, grupos y roles los permisos necesarios para las tareas que es probableque se vayan a realizar.

Temas• Autorizar a supervisores y usuarios del almacén de claves personalizado (p. 194)• Autorizar a AWS KMS para administrar AWS CloudHSM y recursos de Amazon EC2 (p. 194)

Autorizar a supervisores y usuarios del almacén declaves personalizadoAl diseñar el almacén de claves personalizado, asegúrese de que las entidades principales que usany administran el almacén dispongan únicamente de los premisos que necesitan. En la siguiente listase describen los permisos mínimos necesarios para los supervisores y usuarios del almacén de clavespersonalizado.

• Las entidades principales que crean y administran el almacén de claves personalizado requieren elsiguiente permiso para utilizar las operaciones de API del almacén de claves personalizado.• cloudhsm:DescribeClusters

• kms:CreateCustomKeyStore

• kms:ConnectCustomKeyStore

• kms:DisconnectCustomKeyStore

• kms:UpdateCustomKeyStore

• kms:DeleteCustomKeyStore

• kms:DescribeCustomKeyStores

• iam:CreateServiceLinkedRole

• Las entidades principales que crean y administran el clúster de AWS CloudHSM asociado al almacénde claves personalizado requieren permiso para crear e inicializar un clúster de AWS CloudHSM.Este permiso también les permite crear o utilizar una nube virtual privada, crear subredes y crear unainstancia Amazon EC2. También es posible que deban crear y eliminar HSM, y administrar copias deseguridad. Para obtener una lista de los permisos necesarios, consulte Restricción de los permisos deusuario a lo estrictamente necesario para AWS CloudHSM en la AWS CloudHSM User Guide.

• Las entidades principales que crean y administran las claves maestras de cliente (CMK) del almacén declaves personalizado necesitan los mismos permisos que aquellas que crean y administran las CMK enAWS KMS. Por ejemplo, estas entidades necesitan una política de IAM con el permiso kms:CreateKey.No requieren otros permisos. La política de claves predeterminada (p. 58) para las CMK en un almacénde claves personalizado es idéntica a la política de claves predeterminada para las CMK de AWS KMS.

• Las entidades principales que usan las CMK en el almacén de claves personalizado para operacionescriptográficas (p. 217) requieren permiso para realizar la operación criptográfica con la CMK, porejemplo, kms:Decrypt. Puede proporcionar estos permisos en una política de IAM o en una políticade claves. Sin embargo, no necesitan más permisos para utilizar una CMK en un almacén de clavespersonalizado.

Autorizar a AWS KMS para administrar AWSCloudHSM y recursos de Amazon EC2Para dar soporte a los almacenes de claves personalizados, AWS KMS necesita permiso paraobtener información de los clústeres de AWS CloudHSM. También necesita permiso para crearla infraestructura de red que conecta el almacén de claves personalizado con su clúster de

194

Page 203: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutorizar a AWS KMS para administrar

AWS CloudHSM y recursos de Amazon EC2

AWS CloudHSM. Para obtener estos permisos, AWS KMS crea el rol vinculado a un servicioAWSServiceRoleForKeyManagementServiceCustomKeyStores en la cuenta de AWS. Los usuarios quecrean almacenes de claves personalizados deben tener el permiso iam:CreateServiceLinkedRoleque les permite crear roles vinculados a un servicio.

Temas• Acerca del rol vinculado a un servicio de AWS KMS (p. 195)• Crear el rol vinculado a un servicio (p. 195)• Editar la descripción del rol vinculado a un servicio (p. 196)• Eliminar el rol vinculado a un servicio (p. 196)

Acerca del rol vinculado a un servicio de AWS KMSUn rol vinculado a un servicio es un rol de IAM que otorga permiso a un servicio de AWS para llamara otros servicios de AWS en su nombre. Se ha diseñado para facilitar el uso de las características demúltiples servicios de AWS integrados sin tener que crear ni actualizar políticas de IAM complejas.

Para los almacenes de claves personalizados AWS KMS crea el rol vinculado a unservicio AWSServiceRoleForKeyManagementServiceCustomKeyStores con la políticaAWSKeyManagementServiceCustomKeyStoresServiceRolePolicy. Esta política concede los siguientespermisos al rol:

• cloudhsm:DescribeClusters• ec2:AuthorizeSecurityGroupIngress• ec2:CreateNetworkInterface• ec2:CreateSecurityGroup• ec2:DeleteSecurityGroup• ec2:DescribeSecurityGroups• ec2:RevokeSecurityGroupEgress

Debido a que el rol vinculado a servicio AWSServiceRoleForKeyManagementServiceCustomKeyStoressolo confía en cks.kms.amazonaws.com, AWS KMS únicamente puede asumir este rol vinculado aservicio. Este rol está limitado a las operaciones que necesita AWS KMS para ver los clústeres de AWSCloudHSM y para conectar un almacén de claves personalizado con su clúster de AWS CloudHSMasociado. No concede permisos adicionales a AWS KMS. Por ejemplo, AWS KMS no dispone de permisopara crear, administrar o eliminar los clústeres de AWS CloudHSM, los HSM o las copias de seguridad.

Regiones

De igual modo que la característica de los almacenes de claves personalizadas, el rolAWSServiceRoleForKeyManagementServiceCustomKeyStores es compatible en todas las regiones deAWS en las que estén disponibles AWS KMS y AWS CloudHSMPara ver una lista de regiones de AWScompatibles con cada servicio, consulte Cuotas y puntos de enlace de AWS Key Management Service yCuotas y puntos de enlace de AWS CloudHSM en la Referencia general de Amazon Web Services..

Para obtener más información sobre cómo utilizan los servicios de AWS los roles vinculados a servicios,consulte Usar roles vinculados a servicios en la Guía del usuario de IAM.

Crear el rol vinculado a un servicioAWS KMS crea el rol vinculado a un servicioAWSServiceRoleForKeyManagementServiceCustomKeyStores de forma automática en la cuenta de AWS

195

Page 204: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear un almacén de claves personalizado

al crear un almacén de claves personalizado, si el rol no existe aún. No puede crear o volver a crear esterol vinculado a un servicio directamente.

Editar la descripción del rol vinculado a un servicioNo puede editar el nombre del rol o las instrucciones de la política en el rol vinculado a un servicioAWSServiceRoleForKeyManagementServiceCustomKeyStores, aunque sí puede editar la descripción delrol. Para obtener instrucciones, consulte Editar un rol vinculado a un servicio en la Guía del usuario deIAM.

Eliminar el rol vinculado a un servicioAWS KMS no elimina el rol vinculado a servicioAWSServiceRoleForKeyManagementServiceCustomKeyStores de la cuenta de AWS. Si ha eliminadotodos los almacenes de claves personalizados (p. 209) y no tiene previsto crear nuevos, ya no necesitaráeste rol vinculado a servicio. AWS KMS no asume este rol ni utiliza sus permisos a menos que tengaalmacenes de claves personalizados activos. Sin embargo, actualmente no existe ningún procedimientopara eliminar el rol vinculado a servicio AWSServiceRoleForKeyManagementServiceCustomKeyStores.

Crear un almacén de claves personalizadoPuede crear uno o varios almacenes de claves personalizados (p. 191) en la cuenta. Cada almacén declaves personalizado está asociado a un clúster de AWS CloudHSM en la misma región de AWS. Antes decrear un almacén de claves personalizado, cumplir los requisitos previos (p. 196). A continuación, antesde usar el almacén de claves personalizado, deberá conectarlo (p. 204) a su clúster de AWS CloudHSM.

Tip

No tiene que conectar el almacén de claves personalizado inmediatamente. Puede dejarlodesconectado hasta que lo necesite. Sin embargo, para comprobar que se ha configuradocorrectamente, debería conectarlo (p. 204), ver su estado de conexión (p. 200) y, acontinuación, desconectarlo (p. 204).

Temas• Cumplir los requisitos previos (p. 196)• Crear un almacén de claves personalizado (consola) (p. 198)• Crear un almacén de claves personalizado (API) (p. 199)

Cumplir los requisitos previosCada almacén de claves personalizado de AWS KMS está respaldado por un clúster de AWS CloudHSM.Para crear en un almacén de claves personalizado, especifique un clúster de AWS CloudHSM activo queno esté asociado a otro almacén de claves personalizado. También deberá crear un usuario de criptografía(CU) dedicado en los HSM del clúster que AWS KMS podrá utilizar para crear y administrar claves en sunombre.

Antes de crear un almacén de claves personalizado, haga lo siguiente:

Seleccionar un clúster de AWS CloudHSM

Cada almacén de claves personalizado está asociado a exactamente un clúster de AWSCloudHSM (p. 192). Al crear una clave maestra personalizada (p. 3) (CMK) en el almacén de clavespersonalizado, AWS KMS crea los metadatos de la CMK, como el ID y el nombre de recurso de

196

Page 205: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCumplir los requisitos previos

Amazon (ARN), en AWS KMS. A continuación, crea el material de claves en los HSM del clústerasociado. Puede crear un clúster de AWS CloudHSM nuevo o utilizar uno existente. AWS KMS norequiere acceso exclusivo al clúster.

El clúster de AWS CloudHSM que seleccione estará asociado de forma permanente al almacén declaves personalizado. Después de crear un almacén de claves personalizado, puede cambiar el ID delclúster (p. 202) asociado, pero el clúster que especifique debe compartir un historial de copias deseguridad con el clúster original. Para usar un clúster sin relación, debe crear un almacén de clavespersonalizado nuevo.

El clúster de AWS CloudHSM que seleccione debe tener las siguientes características:• El clúster debe estar activo.

Debe crear el clúster, inicializarlo, instalar el software del cliente de AWS CloudHSM para suplataforma y, a continuación, activarlo. Si desea leer instrucciones detalladas, consulte la secciónIntroducción de la AWS CloudHSM User Guide.

• El clúster debe estar en la misma cuenta y región que el almacén de claves personalizado de AWSKMS. No puede asociar un almacén de claves personalizado en una región con un clúster en otraregión. Para crear una infraestructura clave de varias regiones, debe crear almacenes de claves yclústeres en cada región.

• El clúster no puede estar asociado con otro almacén de claves personalizado de la cuenta. Cadaalmacén de claves personalizado debe estar asociado a un clúster de AWS CloudHSM distinto.No puede especificar un clúster que ya esté asociado a un almacén de claves personalizado o aun clúster que comparte historial de copias de seguridad con un clúster asociado. Los clústers quecomparten un historial de copias de seguridad deben tener el mismo certificado del clúster. Para verel certificado de un clúster, utilice la consola de AWS CloudHSM o la operación DescribeClusters.

• El clúster debe configurarse con subredes privadas en al menos dos zonas de disponibilidad dela región. Puesto que AWS CloudHSM no es compatible en todas las zonas de disponibilidad, lerecomendamos que cree subredes privadas en todas las zonas de disponibilidad de la región. Nopuede volver a configurar las subredes para un clúster existente, pero puede crear un clúster a partirde una copia de seguridad con subredes distintas en la configuración del clúster.

Important

Después de crear el almacén de claves personalizado, no elimine ninguna de lassubredes privadas configuradas para su clúster de AWS CloudHSM. Si AWS KMSno puede encontrar todas las subredes de la configuración del clúster, los intentos deconectarse al almacén de claves personalizado (p. 204) producen el error de conexiónSUBNET_NOT_FOUND. Para obtener más información, consulte Cómo arreglar un error deconexión (p. 224).

• El grupo de seguridad para el clúster (cloudhsm-cluster:<cluster-id>-sg) debe incluir las reglasentrantes y salientes que permiten el tráfico TCP en los puertos 2223-2225. El origen de las reglasde entrada y el destino de las reglas de salida deben coincidir con el ID del grupo de seguridad.Estas reglas se establecen de forma predeterminada al crear el clúster. No las elimine ni las cambie.

• El clúster debe tener al menos dos HSM activos en distintas zonas de disponibilidad. Para verificarel número de HSM, utilice la consola de AWS CloudHSM o la operación DescribeClusters. Si esnecesario, puede añadir un HSM.

Buscar el certificado de anclaje de confianza

Al crear un almacén de claves personalizado, deberá cargar un certificado de anclaje de confianzapara el clúster de AWS CloudHSM en AWS KMS. AWS KMS necesita dicho certificado para conectarel almacén de claves personalizado al clúster.

Cada clúster de AWS CloudHSM activo tiene un certificado de anclaje de confianza. Al inicializar elclúster, se genera el certificado. Guárdelo en el archivo customerCA.crt y cópielo en alojamientosque se conecten con el clúster.

197

Page 206: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear un almacén de claves personalizado (consola)

Crear el usuario de criptografía kmsuser para AWS KMS

Para administrar el almacén de claves personalizado, AWS KMS inicia sesión en la cuenta delkmsuser usuario de criptografía (p. 192) (CU) en el clúster seleccionado. Antes de crear unalmacén de claves personalizado, debe crear el CU kmsuser. A continuación, cree el almacén declaves personalizado y proporcione una contraseña para kmsuser en AWS KMS. AWS KMS rota lacontraseña de kmsuser cuando conecte el almacén de claves personalizado a su clúster de AWSCloudHSM asociado.

Important

No especifique la opción 2FA al crear el CU kmsuser. Si lo hace, AWS KMS no podrá iniciarsesión y el almacén de claves personalizado no podrá conectarse a su clúster de AWSCloudHSM. Después de especificar 2FA, ya no podrá deshacer dicha acción. En su lugar,deberá eliminar el CU y crearlo de nuevo.

Para crear el CU kmsuser, use el siguiente procedimiento.

1. Inicie cloudhsm_mgmt_util tal como se describe en la sección Prepararse para ejecutarcloudhsm_mgmt_util de la AWS CloudHSM User Guide.

2. Utilice el comandocreateUser en cloudhsm_mgmt_util para crear un CU llamado kmsuser. Lacontraseña debe contener entre 7 y 32 caracteres alfanuméricos, distingue entre mayúsculas yminúsculas, y no puede tener caracteres especiales.

Por ejemplo, el siguiente comando de ejemplo crea un CU kmsuser con una contraseñakmsPswd.

aws-cloudhsm> createUser CU kmsuser kmsPswd

Crear un almacén de claves personalizado (consola)Al crear un almacén de claves personalizado (p. 191) en la Consola de administración de AWS, puedeañadir y crear los requisitos previos (p. 196) como parte del flujo de trabajo. Sin embargo, el proceso esmás rápido si los compila previamente.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Custom key stores (Almacenes de claves personalizadas).4. Seleccione Create key store (Crear almacén de claves).5. Escriba un nombre fácil de recordar para el almacén de claves personalizado. Este nombre debe ser

exclusivo de la cuenta.6. Seleccione un clúster de AWS CloudHSM (p. 192) para el almacén de claves personalizado. O para

crear un clúster de AWS CloudHSM nuevo, elija el enlace Create an AWS CloudHSM cluster (Crear unclúster de AWS CloudHSM).

El clúster debe cumplir los requisitos (p. 196) de asociación con un almacén de clavespersonalizado. El menú muestra los almacenes de claves personalizados de la cuenta y la región noasociados todavía con un almacén de claves personalizado.

7. Elija Upload file (Cargar archivo) y cargue el certificado de anclaje de confianza para el clúster deAWS CloudHSM que elija. Este es el archivo customerCA.crt que creó al inicializar el clúster.

8. Escriba la contraseña del kmsuser usuario de criptografía (p. 192) (CU) que creó en el clústerseleccionado.

198

Page 207: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear un almacén de claves personalizado (API)

9. Seleccione Create.

Si el proceso se ejecuta correctamente, el nuevo almacén de claves personalizado aparecerá en la listade almacenes de claves personalizados de la cuenta y la región. Si el procedimiento da error, apareceráun mensaje de error donde se describe el problema y se explica cómo resolverlo. Si necesita más ayuda,consulte Resolver problemas de un almacén de claves personalizado (p. 223).

A continuación: los nuevos almacenes de claves personalizados no se conectan de forma automática.Antes de crear claves maestras de cliente (CMK) en el almacén de claves personalizado, debe conectar elalmacén de claves personalizado (p. 204) a su clúster de AWS CloudHSM asociado.

Crear un almacén de claves personalizado (API)La operación CreateCustomKeyStore crea un nuevo almacén de claves personalizado (p. 191) asociadoa un clúster de AWS CloudHSM de la cuenta y la región. En estos ejemplos se utiliza la AWS CommandLine Interface (AWS CLI), pero puede usar cualquier lenguaje de programación admitido.

La operación CreateCustomKeyStore requiere los siguientes valores de parámetro.

• CustomKeyStoreName: nombre fácil de recordar para el almacén de claves personalizado que esexclusivo de la cuenta. –

• CloudHsmClusterId: ID del clúster que cumple los requisitos (p. 196) de asociación con un almacén declaves personalizado.–

• KeyStorePassword: contraseña de la cuenta del CU kmsuser en el clúster especificado.–• TrustAnchorCertificate: contenido del archivo customerCA.crt creado al inicializar el clúster. –

En el siguiente ejemplo se usa un ID de clúster ficticio. Antes de ejecutar el comando, reemplácelo por unID de clúster válido.

$ aws kms create-custom-key-store --custom-key-store-name ExampleKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate <certificate-goes-here>

Si utiliza la AWS CLI, puede especificar un archivo de certificado de anclaje de confianza en lugar de sucontenido. En el siguiente ejemplo, el archivo customerCA.crt se encuentra en el directorio raíz.

$ aws kms create-custom-key-store --custom-key-store-name ExampleKeyStore \ --cloud-hsm-cluster-id cluster-1a23b4cdefg \ --key-store-password kmsPswd \ --trust-anchor-certificate file://customerCA.crt

Si la operación se ejecuta correctamente, CreateCustomKeyStore devolverá el ID del almacén declaves personalizado, tal y como se muestra en la siguiente respuesta de ejemplo.

{ "CustomKeyStoreId": cks-1234567890abcdef0}

Si la operación falla, corrija el error que indica la excepción e inténtelo de nuevo. Para obtener ayudaadicional, consulte Resolver problemas de un almacén de claves personalizado (p. 223).

A continuación, para usar el almacén de claves personalizado, conéctelo a su clúster de AWSCloudHSM (p. 204).

199

Page 208: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAdministrar un almacén de claves personalizado

Administrar un almacén de claves personalizadoPuede administrar un almacén de claves personalizado desde la Consola de administración de AWS y laAPI de AWS KMS. Por ejemplo, puede ver un almacén de claves personalizado, editar sus propiedades,conectarlo y desconectarlo de su clúster de AWS CloudHSM asociado y eliminar el almacén de clavespersonalizado.

Temas• Consultar un almacén de claves personalizado (p. 200)• Editar la configuración del almacén de claves personalizado (p. 202)• Conectar y desconectar un almacén de claves personalizado (p. 204)• Eliminar un almacén de claves personalizado (p. 209)

Consultar un almacén de claves personalizadoPuede ver los almacenes de claves personalizados de cada cuenta y región con la Consola deadministración de AWS o la API de AWS KMS.

Para obtener ayuda para ver las CMK en el almacén de claves personalizado, consulte Consultar las CMKen un almacén de claves personalizado (p. 216).

Temas• Consultar un almacén de claves personalizado (consola) (p. 200)• Consultar un almacén de claves personalizado (API) (p. 201)

Consultar un almacén de claves personalizado (consola)Al consultar los almacenes de claves personalizados en la Consola de administración de AWS, verá lasiguiente:

• El nombre del almacén de claves personalizado• El ID del clúster de AWS CloudHSM asociado• El número de HSM en el clúster• El estado actual de la conexión

El estado de conexión Disconnected (Desconectado) indica que el almacén de claves personalizadoes nuevo y que no se ha conectado nunca, o que se ha desconectado de su clúster de AWSCloudHSM (p. 204) de forma intencionada. Sin embargo, si los intentos de usar una CMK en un almacénde claves personalizado no son fructíferos, puede deberse a un problema con el almacén de clavespersonalizado o su clúster de AWS CloudHSM. Para obtener ayuda, consulte Cómo arreglar una CMK queproduce error (p. 224).

Para ver los almacenes de claves personalizados de una cuenta y región determinados, use el siguienteprocedimiento.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Custom key stores (Almacenes de claves personalizadas).

200

Page 209: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar un almacén de claves personalizado

Para personalizar la pantalla, haga clic en el icono de engranaje que aparece por debajo del botón Createkey store (Crear almacén de claves).

Consultar un almacén de claves personalizado (API)Para ver los almacenes de claves personalizados, use la operación DescribeCustomKeyStores. De formapredeterminada, esta operación devuelve los almacenes de claves personalizados de la cuenta y región.Pero puede usar el parámetro CustomKeyStoreId o CustomKeyStoreName (pero no ambos) paralimitar el resultado de un almacén de claves personalizado determinado. El resultado consta de un ID ynombre del almacén de claves personalizado, el ID del clúster de AWS CloudHSM asociado y el estadode conexión. Si el estado de conexión indica un error, el resultado también incluirá un código de error quedescribe el motivo del error.

En los ejemplos de esta sección se utiliza la AWS Command Line Interface (AWS CLI), pero puede usarcualquier lenguaje de programación compatible.

Por ejemplo, el siguiente comando devuelve todos los almacenes de claves personalizados de la cuentay la región. Puede usar los parámetros Limit y Marker para desplazarse por los almacenes de clavespersonalizados del resultado.

$ aws kms describe-custom-key-stores

El siguiente comando de ejemplo usa el parámetro CustomKeyStoreName para obtener únicamenteel almacén de claves personalizado con el nombre fácil de recordar ExampleKeyStore. Puede usar elparámetro CustomKeyStoreName o CustomKeyStoreId (pero no ambos) en cada comando.

El siguiente resultado de ejemplo muestra un almacén de claves personalizado conectado a su clúster deAWS CloudHSM. El elemento ConnectionState se corresponde con el campo Status de la consola.

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore{ "CustomKeyStores": [ { "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionState": "CONNECTED", "CreationDate": "1.499288695918E9", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate appears here>" } ]}

Un ConnectionState Disconnected indica que no se ha conectado nunca un almacén de clavespersonalizado o que se ha desconectado de su clúster de AWS CloudHSM (p. 204) de formaintencionada. Sin embargo, si los intentos de usar una CMK en un almacén de claves personalizado noson fructíferos, puede deberse a un problema con el almacén de claves personalizado o su clúster de AWSCloudHSM. Para obtener ayuda, consulte Cómo arreglar una CMK que produce error (p. 224).

Si el ConnectionState del almacén de claves personalizado es FAILED, la respuestaDescribeCustomKeyStores incluirá un elemento ConnectionErrorCode que explica el motivo delerror.

Por ejemplo, en el resultado siguiente, el valor INVALID_CREDENTIALS indica que la conexión delalmacén de claves personalizado ha fallado porque la contraseña de kmsuser no es válida (p. 226).Para obtener ayuda con esto y los errores de conexión, consulte Resolver problemas de un almacén declaves personalizado (p. 223).

201

Page 210: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEditar la configuración del almacén de claves personalizado

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ { "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "INVALID_CREDENTIALS" "ConnectionState": "FAILED", "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CreationDate": "1.499288695918E9", "TrustAnchorCertificate": "<certificate appears here>" } ]}

Editar la configuración del almacén de clavespersonalizadoPuede modificar la configuración de un almacén de claves personalizado (p. 191) existente. El almacénde claves personalizado debe estar desconectado de su clúster de AWS CloudHSM.

Para editar la configuración del almacén de claves personalizado:

1. Desconecte el almacén de claves personalizado (p. 204) de su clúster de AWS CloudHSM. Mientrasel almacén de claves personalizado esté desconectado, no podrá crear claves maestras de cliente (p. 3)(CMK) en el almacén de claves personalizado y no podrá usar las CMK que contiene para operacionescriptográficas (p. 217).

2. Edite una o más de las configuraciones del almacén de claves personalizado.3. Vuelva a conectar el almacén de claves personalizado (p. 204) a su clúster de AWS CloudHSM.

Puede editar la siguiente configuración en un almacén de claves personalizado:

El nombre fácil de recordar del almacén de claves personalizado.

Escriba un nuevo nombre fácil de recordar. El nuevo nombre debe ser exclusivo de su cuenta deAWS.

El ID del clúster de AWS CloudHSM asociado.

Edite este valor para sustituir un clúster de AWS CloudHSM relacionado por el original. Puede utilizaresta característica para reparar un almacén de claves personalizado si se daña o elimina su clúster deAWS CloudHSM.

Especifique un clúster de AWS CloudHSM que comparta un historial de copias de seguridadcon el clúster original y cumpla los requisitos (p. 196) de asociación con un almacén de clavespersonalizado, incluidos dos HSM activos en zonas de disponibilidad distintas. Los clústers quecomparten un historial de copias de seguridad deben tener el mismo certificado del clúster. Para verel certificado de un clúster, utilice la operación DescribeClusters. No puede usar la característicade edición para asociar el almacén de claves personalizado con un clúster de AWS CloudHSM sinrelación.

La contraseña actual del kmsuser usuario de criptografía (p. 192) (CU).

Le indica a AWS KMS la contraseña actual del CU kmsuser en el clúster de AWS CloudHSM. Estaacción no cambia la contraseña del CU kmsuser en el clúster de AWS CloudHSM.

Si cambia la contraseña del CU kmsuser en el clúster de AWS CloudHSM, use esta característicapara comunicarle a AWS KMS la nueva contraseña de kmsuser. De lo contrario, AWS KMS no podrá

202

Page 211: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEditar la configuración del almacén de claves personalizado

iniciar sesión en el clúster y todos los intentos de conexión del almacén de claves personalizado alclúster darán error.

Temas• Editar un almacén de claves personalizado (consola) (p. 203)• Editar un almacén de claves personalizado (API) (p. 203)

Editar un almacén de claves personalizado (consola)Al editar un almacén de claves personalizado, puede cambiar cualquiera de los valores configurables.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Custom key stores (Almacenes de claves personalizadas).4. Elija el almacén de claves personalizado que quiere editar.5. Si el valor de la columna Status (Estado) no es DISCONNECTED (DESCONECTADO), deberá

desconectar el almacén de claves personalizado antes de editarlo. En el menú Key store actions(Acciones del almacén de claves), seleccione Disconnect custom key store (Desconectar almacén declaves personalizado).

6. En el menú Key store actions (Acciones del almacén de claves), seleccione Edit custom key storesettings (Editar la configuración del almacén de claves personalizado).

7. Realice una o más de las siguientes acciones.

• Escriba un nuevo nombre fácil de recordar para el almacén de claves personalizado.• Escriba el ID del clúster de un clúster de AWS CloudHSM relacionado.• Escriba la contraseña actual del usuario de criptografía kmsuser en el clúster de AWS CloudHSM

asociado.8. Seleccione Save.

Si el procedimiento se ejecuta correctamente, aparecerá un mensaje donde se describe laconfiguración que ha editado. Si el procedimiento da error, aparecerá un mensaje de error dondese describe el problema y se explica cómo resolverlo. Si necesita más ayuda, consulte Resolverproblemas de un almacén de claves personalizado (p. 223).

9. Vuelva a conectar el almacén de claves personalizado. (p. 204)

Para utilizar el almacén de claves personalizado deberá volverse a conectar al mismo tras editarlo.Puede dejar el almacén de claves personalizado desconectado. Pero mientras esté desconectado, nopodrá crear las CMK en el almacén de claves personalizado ni usar las CMK del almacén de clavespersonalizado en operaciones criptográficas (p. 217).

Editar un almacén de claves personalizado (API)Para modificar las propiedades de un almacén de claves personalizado, utilice la operaciónUpdateCustomKeyStore. Puede cambiar varias propiedades de un almacén de claves personalizado en elmismo comando. Si la operación se realiza correctamente, AWS KMS devuelve una respuesta HTTP 200 yun objeto JSON sin propiedades.

En los ejemplos de esta sección se utiliza la AWS Command Line Interface (AWS CLI), pero puede usarcualquier lenguaje de programación compatible.

203

Page 212: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConectar y desconectar un

almacén de claves personalizado

Empiece por usar DisconnectCustomKeyStore para desconectar el almacén de clavespersonalizado (p. 204) de AWS KMS. Reemplace el ID del almacén de claves personalizado de ejemplo,cks-1234567890abcdef0, por un ID real.

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

En el primer ejemplo se usa UpdateCustomKeyStore para cambiar el nombre fácil de recordar del almacénde claves personalizado por DevelopmentKeys. El comando utiliza el parámetro CustomKeyStoreIdpara especificar el almacén de claves personalizado y CustomKeyStoreName para especificar el nuevonombre del almacén de claves personalizado.

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --new-custom-key-store-name DevelopmentKeys

El siguiente ejemplo cambia el clúster asociado con el almacén de claves personalizado por otra copiade seguridad del mismo clúster. El comando utiliza el parámetro CustomKeyStoreId para identificar elalmacén de claves personalizado y el parámetro CloudHsmClusterId para especificar el nuevo ID delclúster.

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --cloud-hsm-cluster-id cluster-1a23b4cdefg

El siguiente ejemplo indica a AWS KMS que la contraseña actual de kmsuser es ExamplePassword. Elcomando utiliza el parámetro CustomKeyStoreId para identificar el almacén de claves personalizado y elparámetro KeyStorePassword para especificar la contraseña actual.

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --key-store-password ExamplePassword

El comando final vuelve a conectar el almacén de claves personalizado a AWS KMS. Puede dejar elalmacén de claves personalizado desconectado, pero deberá conectarlo antes de crear CMK nuevas opara utilizar las CMK existentes para operaciones criptográficas (p. 217). Reemplace el ID del almacénde claves personalizado de ejemplo por un ID real.

$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

Conectar y desconectar un almacén de clavespersonalizadoLos nuevos almacenes de claves personalizados no están conectados. Antes de crear y utilizar clavesmaestras de cliente (CMK) en el almacén de claves personalizado, debe conectar el almacén de clavespersonalizado a su clúster de AWS CloudHSM asociado. Puede conectar y desconectar su almacén declaves personalizado en cualquier momento y ver su estado de conexión (p. 200).

No es obligatorio conectar el almacén de claves personalizado. Puede dejar un almacén de clavespersonalizado desconectado de forma indefinida y conectarlo únicamente cuando tenga que usarlo.Sin embargo, le recomendamos que compruebe la conexión de forma periódica para verificar que laconfiguración es correcta y que se puede conectar.

Note

Los almacenes de claves personalizados solo tienen el estado DISCONNECTED si el almacén declaves nunca se ha conectado o lo ha desconectado explícitamente. Si el estado del almacén de

204

Page 213: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConectar y desconectar un

almacén de claves personalizado

claves personalizadas es CONNECTED, pero experimenta problemas para utilizarlo, asegúresede que su clúster de AWS CloudHSM asociado esté activo y de que contenga como mínimo unHSM activo. Si desea ayuda con los errores de conexión, consulte the section called “Resolverproblemas de un almacén de claves personalizado” (p. 223).

Conexión de un almacén de claves personalizado

Al conectar un almacén de claves personalizado, AWS KMS busca el clúster de AWS CloudHSMasociado, lo conecta al clúster, inicia sesión en el cliente de AWS CloudHSM como usuario de criptografíakmsuser (p. 192) (CU) y rota la contraseña de kmsuser. AWS KMS mantiene iniciadaa la sesión en elcliente de AWS CloudHSM mientras el almacén de claves personalizado esté conectado.

Para establecer la conexión, AWS KMS crea un grupo de seguridad llamado kms-<custom key storeID> en la nube virtual privada (VPC) del clúster. El grupo de seguridad tiene una única regla que permiteel tráfico de entrada desde el grupo de seguridad del clúster. AWS KMS también crea una interfaz de redelástica (ENI) en cada zona de disponibilidad de la subred privada para el clúster. AWS KMS añade lasENI al grupo de seguridad kms-<cluster ID> y al grupo de seguridad del clúster. La descripción decada ENI es KMS managed ENI for cluster <cluster-ID>.

El proceso de conexión puede tardar bastante en completarse, unos 20 minutos.

Antes de conectar el almacén de claves personalizado, compruebe que cumple los requisitos.

• Su clúster de AWS CloudHSM asociado debe incluir al menos un HSM activo. Para encontrar el númerode HSM activos en el clúster, consulte el clúster en la consola de AWS CloudHSM o use la operaciónDescribeClusters. Si es necesario, puede añadir un HSM.

• El clúster debe tener una cuenta usuario de criptografía kmsuser (p. 198) (CU), pero ese CU no sepuede registrar en el clúster cuando conecta el almacén de claves personalizadas. Para obtener ayudacon el cierre de sesión, consulte Cómo cerrar sesión y volver a conectar (p. 230).

• El estado de conexión del almacén de claves personalizado no puede ser DISCONNECTINGni FAILED. Puede ver el estado de conexión (p. 200) en la consola o utilizando la operaciónDescribeCustomKeyStores. Si el estado de conexión es FAILED, desconecte el almacén de clavespersonalizado y conéctelo de nuevo.

Cuando el almacén de claves personalizado esté conectado, puede crear las CMK en él (p. 211) y usarlas CMK existentes en operaciones criptográficas (p. 217).

Desconexión de un almacén de claves personalizado

Al desconectar un almacén de claves personalizado, AWS KMS inicia sesión en el cliente de AWSCloudHSM, se desconecta del clúster de AWS CloudHSM asociado y elimina la infraestructura de redcreada para respaldar la conexión.

Mientras el almacén de claves personalizado esté desconectado, podrá administrar el almacén declaves personalizado y sus claves maestras de cliente (CMK) pero no podrá crear ni usar las CMK en elalmacén de claves personalizado. El estado del almacén de claves es DISCONNECTED y el estado declave (p. 245) de las CMK en el almacén de claves personalizado es Unavailable, a menos que seaPendingDeletion. Puede volver a conectar el almacén de claves personalizado en cualquier momento.

Note

Mientras el almacén de claves personalizado esté desconectado, fallarán todos los intentos decrear claves maestras de cliente (CMK) en el almacén de claves personalizado o de usar CMKexistentes en operaciones criptográficas. Esta acción puede impedir que los usuarios almaceneninformación confidencial o que accedan a esta.

Para realizar una mejor estimación del efecto de desconectar el almacén de claves, identifique lasCMK (p. 219) en el almacén de claves personalizado y determine su uso en el pasado (p. 186).

205

Page 214: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConectar y desconectar un

almacén de claves personalizado

Puede desconectar el almacén de claves personalizado por los motivos siguientes:

• Para rotar la contraseña kmsuser. AWS KMS cambia la contraseña de kmsuser cada vez que seconecta al clúster de AWS CloudHSM. Para forzar la rotación de contraseñas, desconecte y vuelva aconectar.

• Para auditar el material de claves para las CMK en el clúster de AWS CloudHSM. Al desconectar elalmacén de claves personalizado, AWS KMS cierra la sesión de la cuenta del kmsuser usuario decriptografía (p. 192) en el cliente de AWS CloudHSM. Esto le permite iniciar sesión en el clúster con elCU kmsuser y auditar y administrar el material de claves para la CMK.

• Para deshabilitar de inmediato las CMK en un almacén de claves personalizado. Puede deshabilitary volver a habilitar las CMK (p. 49) en un almacén de claves personalizado utilizando la Consola deadministración de AWS o la operación DisableKey. Estas operaciones se completan rápidamente, peroactúan en una CMK cada vez. La desconexión inmediata cambia el estado de clave de todas las CMKde la clave personalizada a Unavailable, lo que evita que se utilicen en operaciones criptográficas.

• Para reparar un error en la conexión. Si el intento de conexión al almacén de claves personalizado falla(el estado de la conexión del almacén de claves personalizado es FAILED), deberá desconectar elalmacén de claves personalizado antes de intentar conectarlo de nuevo.

Temas• Conectar un almacén de claves personalizado (consola) (p. 206)• Conectar un almacén de claves personalizado (API) (p. 207)• Desconectar un almacén de claves personalizado (consola) (p. 208)• Desconectar un almacén de claves personalizado (API) (p. 208)

Conectar un almacén de claves personalizado (consola)Para conectar un almacén de claves personalizado en la Consola de administración de AWS, primerodeberá seleccionarlo en la página Custom key stores (Almacenes de claves personalizados). El procesopuede tardar 20 minutos en completarse.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Custom key stores (Almacenes de claves personalizadas).4. Elija el almacén de claves personalizado que quiere conectar.5. Si el estado del almacén de claves personalizado es FAILED (ERROR), deberá desconectar el

almacén de claves personalizado (p. 208) antes de conectarlo.6. En el menú Key store actions (Acciones del almacén de claves), seleccione Connect custom key store

(Conectar almacén de claves personalizado).

AWS KMS empieza el proceso de conexión del almacén de claves personalizado. Encuentra el clústerdel AWS CloudHSM asociado, genera la infraestructura de red necesaria, se conecta a él, inicia sesiónen el clúster de AWS CloudHSM con el CU kmsuser y rota la contraseña kmsuser. Cuando la operaciónfinalizada, el estado de conexión cambia a CONNECTED (CONECTADO).

Si la operación falla, aparecerá un mensaje de error que describe el motivo del error. Antes de intentarconectarse de nuevo, vea el estado de conexión (p. 200) del almacén de claves personalizado. Sies FAILED (ERROR), deberá desconectar el almacén de claves personalizado (p. 208) antes deconectarlo de nuevo. Si necesita más ayuda, consulte Resolver problemas de un almacén de clavespersonalizado (p. 223).

206

Page 215: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConectar y desconectar un

almacén de claves personalizado

Siguiente: Crear CMK en un almacén de claves personalizado (p. 211).

Conectar un almacén de claves personalizado (API)Para conectar un almacén de claves personalizado desconectado, use la operaciónConnectCustomKeyStore. El clúster de AWS CloudHSM asociado debe incluir al menos un HSM activo ysu estado de conexión no puede ser FAILED.

El proceso de conexión puede tardar bastante en completarse, unos 20 minutos. A menos que elerror sea rápido, la operación devuelve una respuesta HTTP 200 y un objeto JSON sin propiedades.Sin embargo, esta respuesta inicial no indica que la conexión se haya realizado correctamente.Para determinar el estado de conexión de un almacén de claves personalizado, utilice la operaciónDescribeCustomKeyStores.

En los ejemplos de esta sección se utiliza la AWS Command Line Interface (AWS CLI), pero puede usarcualquier lenguaje de programación compatible.

Para identificar el almacén de claves personalizado, use el ID del almacén de claves personalizado.Puede buscar el ID en la página Custom key stores (Almacenes de claves personalizados) en la consolao utilizando la operación DescribeCustomKeyStores. Antes de ejecutar este ejemplo, reemplace el ID deejemplo por uno válido.

$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

Para verificar que el almacén de claves personalizado está conectado, utilice la operaciónDescribeCustomKeyStores. De forma predeterminada, esta operación devuelve los almacenes declaves personalizados de su cuenta y región. Pero puede usar el parámetro CustomKeyStoreId oCustomKeyStoreName (pero no ambos) para limitar la respuesta a almacenes de claves personalizadosdeterminados. El valor ConnectionState de CONNECTED indica que el almacén de claves personalizadoestá conectado a su clúster de AWS CloudHSM.

$ aws kms describe-custom-key stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ],}

Si el valor ConnectionState da error, el elemento ConnectionErrorCode indicará el motivo del error.En este caso, AWS KMS no ha encontrado ningún clúster de AWS CloudHSM en la cuenta con el ID declúster cluster-1a23b4cdefg. Si ha eliminado el clúster, puede restaurarlo a partir de una copia deseguridad del clúster original y, a continuación, editar el ID del clúster (p. 202) para el almacén de clavespersonalizado.

$ aws kms describe-custom-key stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED"

207

Page 216: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConectar y desconectar un

almacén de claves personalizado

"ConnectionErrorCode": "CLUSTER_NOT_FOUND" ],}

Siguiente: Crear CMK en un almacén de claves personalizado (p. 211).

Desconectar un almacén de claves personalizado (consola)Para desconectar un almacén de claves personalizado conectado en la Consola de administraciónde AWS, primero deberá seleccionarlo en la página Custom Key Stores (Almacenes de clavespersonalizados).

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Custom key stores (Almacenes de claves personalizadas).4. Elija el almacén de claves personalizado que quiere desconectar.5. En el menú Key store actions (Acciones del almacén de claves), seleccione Disconnect custom key

store (Desconectar almacén de claves personalizado).

Cuando la operación finalizada, el estado de conexión cambia de DISCONNECTING(DESCONECTANDO) a DISCONNECTED (DESCONECTADO). Si la operación da error, aparecerá unmensaje de error donde se describe el problema y se explica cómo resolverlo. Si necesita más ayuda,consulte Resolver problemas de un almacén de claves personalizado (p. 223).

Desconectar un almacén de claves personalizado (API)Para desconectar un almacén de claves personalizado conectado, use la operaciónDisconnectCustomKeyStore. Si la operación se realiza correctamente, AWS KMS devuelve una respuestaHTTP 200 y un objeto JSON sin propiedades.

En los ejemplos de esta sección se utiliza la AWS Command Line Interface (AWS CLI), pero puede usarcualquier lenguaje de programación compatible.

Este ejemplo desconecta un almacén de claves personalizado. Antes de ejecutar este ejemplo, reemplaceel ID de ejemplo por uno válido.

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

Para verificar que el almacén de claves personalizado está desconectado, utilice la operaciónDescribeCustomKeyStores. De forma predeterminada, esta operación devuelve los almacenes declaves personalizados de su cuenta y región. Pero puede usar el parámetro CustomKeyStoreId oCustomKeyStoreName (pero no ambos) para limitar la respuesta a almacenes de claves personalizadosdeterminados. El valor ConnectionState de DISCONNECTED indica que el almacén de clavespersonalizado no está conectado a su clúster de AWS CloudHSM.

$ aws kms describe-custom-key stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionState": "DISCONNECTED", "CreationDate": "1.499288695918E9", "CustomKeyStoreId": "cks-1234567890abcdef0",

208

Page 217: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEliminar un almacén de claves personalizado

"CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>" ],}

Eliminar un almacén de claves personalizadoAl eliminar un almacén de claves personalizado, AWS KMS elimina todos los metadatos del almacén declaves personalizado de KMS, incluida información sobre su asociación con un clúster de AWS CloudHSM.Esta operación no afecta al clúster de AWS CloudHSM, sus HSM o sus usuarios. Puede crear un nuevoalmacén de claves personalizado asociado a un clúster determinado, pero no se puede deshacer laoperación de eliminación.

Solo puede eliminar un almacén de claves personalizado desconectado de AWS KMS y no incluye clavesmaestras de cliente (CMK). Antes de eliminar un almacén de claves personalizado, haga lo siguiente.

• Compruebe que no necesitará nunca utilizar ninguna de las CMK del almacén de claves para ningunaoperación criptográfica (p. 217). A continuación, programe la eliminación (p. 222) de todas lasCMK del almacén de claves. Para obtener ayuda para buscar las CMK en un almacén de clavespersonalizado, consulte Buscar las CMK en un almacén de claves personalizado (p. 219).

• Confirme que se han eliminado todas las CMK. Para ver las CMK de un almacén de clavespersonalizado, consulte Consultar las CMK en un almacén de claves personalizado (p. 216).

• Desconecte el almacén de claves personalizado (p. 204) de AWS KMS.

En lugar de eliminar el almacén de claves personalizado, plantéese desconectarlo (p. 204) del clúster deAWS CloudHSM que tiene asociado. Mientras un almacén de claves personalizado esté desconectado,puede administrarlo, así como sus claves maestras de cliente (CMK). Pero no puede crear ni usar CMKen el almacén de claves personalizado. Puede volver a conectar el almacén de claves personalizado encualquier momento.

Si ha eliminado todos los almacenes de claves personalizados de todas las regiones de su cuenta de AWSy no tiene previsto crear ninguno más, debería eliminar el rol vinculado a un servicio (p. 194) que utilizaAWS KMS para los almacenes de claves personalizados.

Temas• Eliminar un almacén de claves personalizado (consola) (p. 209)• Eliminar un almacén de claves personalizado (API) (p. 210)

Eliminar un almacén de claves personalizado (consola)Para eliminar un almacén de claves personalizado en la Consola de administración de AWS, primerodeberá seleccionarlo en la página Almacenes de claves personalizados.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Custom key stores (Almacenes de claves personalizadas).4. Busque la fila que representa el almacén de claves personalizado que quiere eliminar. Si el estado del

almacén de claves personalizado no es DISCONNECTED (DESCONECTADO), deberá desconectar elalmacén de claves personalizado (p. 204) antes de eliminar el almacén de claves personalizado.

5. En el menú Key store actions (Acciones del almacén de claves), seleccione Delete custom key store(Eliminar almacén de claves personalizado).

209

Page 218: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEliminar un almacén de claves personalizado

Cuando la operación finalice, aparecerá un mensaje de confirmación y el almacén de claves personalizadoya no aparecerá en la lista de almacenes de claves personalizados. Si la operación da error, apareceráun mensaje de error donde se describe el problema y se explica cómo resolverlo. Si necesita más ayuda,consulte Resolver problemas de un almacén de claves personalizado (p. 223).

Eliminar un almacén de claves personalizado (API)Para eliminar un almacén de claves personalizado, use la operación DeleteCustomKeyStore. Si laoperación se realiza correctamente, AWS KMS devuelve una respuesta HTTP 200 y un objeto JSON sinpropiedades.

Para empezar, compruebe que el almacén de claves personalizado no contiene claves maestrasde cliente (CMK)de AWS KMS. No puede eliminar un almacén de claves de cliente que contengaCMK. El primer comando de ejemplo usa ListKeys y DescribeKey para buscar las claves maestras decliente de AWS KMS en el almacén de claves personalizado con el ID del almacén de claves ficticiocks-1234567890abcdef0. En ese caso, el comando no devuelve ninguna CMK. Si lo hace, use laoperación ScheduleKeyDeletion para programar la eliminación de cada CMK.

Bash

for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text) ; do aws kms describe-key --key-id $key | grep '"CustomKeyStoreId": "cks-1234567890abcdef0"' --context 100; done

PowerShell

PS C:\> (Get-KMSKeyList).KeyArn | foreach {Get-KMSKey -KeyId $_} | where CustomKeyStoreId -eq 'cks-1234567890abcdef0'

A continuación, desconecte el almacén de claves personalizado. Este comando de ejemplo usa laoperación DisconnectCustomKeyStore para desconectar el almacén de claves personalizado de suclúster de AWS CloudHSM. Antes de ejecutar este comando, reemplace el ID del almacén de clavespersonalizado de ejemplo por uno válido.

Bash

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

PowerShell

PS C:\> Disconnect-KMSCustomKeyStore -CustomKeyStoreId cks-1234567890abcdef0

Después de desconectar el almacén de claves personalizado, puede usar la operaciónDeleteCustomKeyStore para eliminarlo.

Bash

$ aws kms delete-custom-key-store --custom-key-store-id cks-1234567890abcdef0

PowerShell

PS C:\> Remove-KMSCustomKeyStore -CustomKeyStoreId cks-1234567890abcdef0

210

Page 219: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAdministrar CMK en un almacén de claves personalizado

Administrar CMK en un almacén de clavespersonalizado

Puede crear, administrar, usar y programar la eliminación de claves maestras de cliente (CMK) en unalmacén de claves personalizado. Los procedimientos son muy similares a los que seguiría con las CMKen AWS KMS. La única diferencia es que debe especificar un almacén de claves personalizado al crear laCMK. A continuación, AWS KMS crea un material de claves no extraíble para la CMK en el clúster de AWSCloudHSM que está asociado al almacén de claves personalizado. Al utilizar una CMK en un almacén declaves personalizado, las operaciones criptográficas (p. 217) se realizan en los HSM del clúster.

Note

Los almacenes de claves personalizados de AWS KMS solo admiten claves simétricas. AunqueAWS CloudHSM admite claves asimétricas, no puede crear CMK asimétricas ni pares de clavesde datos asimétricos en un almacén de claves personalizado.No se puede importar material de claves (p. 162) a una CMK en un almacén de clavespersonalizado. AWS KMS genera el material de claves para la CMK en el clúster de AWSCloudHSM.

Además de los procedimientos tratados en esta sección, puede hacer lo siguiente con las CMK en unalmacén de claves personalizado:

• Utilizar políticas de claves, políticas de IAM y concesiones para autorizar el acceso (p. 53) a la CMK.• Asignar etiquetas (p. 47) a las CMK y crear alias (p. 376) que hagan referencia a las CMK.• Use las CMK en operaciones criptográficas (p. 11), incluido cifrar, descifrar, volver a cifrar y generar

claves de datos.• Usar las CMK con servicios de AWS que se integran con AWS KMS (p. 250) y que admiten las CMK

administradas por el cliente.• Realice un seguimiento del uso de la CMK en los registros de AWS CloudTrail (p. 318) y las

herramientas de monitorización de Amazon CloudWatch (p. 311).

Sin embargo, no puede importar material de claves a una CMK de un almacén de claves personalizado.

Temas• Crear CMK en un almacén de claves personalizado (p. 211)• Consultar las CMK en un almacén de claves personalizado (p. 216)• Usar las CMK en un almacén de claves personalizado (p. 217)• Buscar las CMK y material de claves (p. 218)• Programar la eliminación de CMK de un almacén de claves personalizado (p. 222)

Crear CMK en un almacén de claves personalizadoDespués de crear un almacén de claves personalizado, puede crear claves maestras de cliente (p. 3)(CMK) en su almacén de claves. Deben ser CMK simétricas (p. 144) con el material de claves que AWSKMS genera. No puede crear CMK asimétricas (p. 144) ni CMK con material de claves importado (p. 162),y no puede utilizar CMK simétricas en un almacén de claves personalizado para generar pares de clavesde datos asimétricos.

Use y administre las CMK de su almacén de claves personalizado de la misma manera que usa yadministra cualquier CMK de AWS KMS. Por ejemplo, puede hacer lo siguiente:

211

Page 220: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK en un almacén de claves personalizado

• Use las CMK para las operaciones criptográficas (p. 11).• Establecer políticas de claves y de IAM en las CMK.• Crear alias que estén asociados con las CMK.• Asociar etiquetas a las CMK.• Habilitar y deshabilitar las CMK.• Programar la eliminación de las CMK.

Para crear una CMK en un almacén de claves personalizado, dicho almacén debe estar conectado a suclúster de AWS CloudHSM asociado (p. 204) y el clúster debe contener al menos dos HSM activos enzonas de disponibilidad distintas. Para buscar el estado de conexión y el número de HSM, consulte lapágina de almacenes de claves personalizados (p. 200) en la Consola de administración de AWS. Alutilizar operaciones de API, use la operación DescribeCustomKeyStores para verificar que el almacén declaves personalizado esté conectado. Use la operación DescribeClusters de AWS CloudHSM para obtenerel número de HSM activos en el clúster y sus zonas de disponibilidad.

Al crear una CMK en su almacén de claves personalizado, AWS KMS crea la CMK en AWS KMS. Perocrea el material de claves para la CMK en el clúster de AWS CloudHSM asociado. En concreto, AWSKMS inicia sesión en el clúster con el kmsuser CU que creó (p. 196). A continuación crea una clavesimétrica Advanced Encryption Standard (AES) de 256 bits, no extraíble y persistente en el clúster. AWSKMS establece el valor del atributo de la etiqueta de claves, que solo es visible en el clúster, en el nombrede recurso de Amazon (ARN) de la CMK.

Cuando el comando se ejecuta correctamente, el estado de clave (p. 245) de la nueva CMK es Enabledy su origen es AWS_CLOUDHSM. No se puede cambiar el origen de ninguna CMK después de crearla. Al veruna CMK en un almacén de claves personalizadas en la consola o mediante la operación DescribeKey,puede ver las propiedades habituales, como el ID de clave, el estado de clave y la fecha de creación. Perotambién puede ver el ID del almacén de claves personalizado y (de forma opcional) el ID del clúster deAWS CloudHSM. Para obtener más información, consulte Consultar las CMK en un almacén de clavespersonalizado (p. 216).

Si intenta crear una CMK en su almacén de claves personalizado sin éxito, utilice el mensaje deerror para ayudar a determinar la causa. Puede indicar que el almacén de claves personalizadono esté conectado (CustomKeyStoreInvalidStateException) o que el clúster deAWS CloudHSM asociado no tiene los dos HSM activos necesarios para esta operación(CloudHsmClusterInvalidConfigurationException). Para obtener ayuda, consulte Resolverproblemas de un almacén de claves personalizado (p. 223).

Temas• Crear una CMK en un almacén de claves personalizado (consola) (p. 212)• Crear una CMK en un almacén de claves personalizado (API) (p. 214)

Crear una CMK en un almacén de claves personalizado (consola)Utilice el siguiente procedimiento para crear una clave maestra de cliente (CMK) en un almacén de clavespersonalizado.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Elija Create key.5. Seleccione Symmetric (Simétrica).

212

Page 221: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK en un almacén de claves personalizado

No puede crear una CMK asimétrica en un almacén de claves personalizadas.6. Elija Advanced options (Opciones avanzadas).7. En Key material origin (Origen del material de claves), elija Custom key store (CloudHSM) [Almacén

de claves personalizado (CloudHSM)].8. Seleccione Next (Siguiente).9. Seleccione un almacén de claves personalizado para la nueva CMK. Para crear un almacén de claves

personalizado, elija Create custom key store (Crear almacén de claves personalizado).

El almacén de claves personalizado que seleccione debe tener el estado CONNECTED(CONECTADO). El clúster de AWS CloudHSM que tiene asociado debe estar activo y tener al menosdos HSM activos en distintas zonas de disponibilidad.

Para obtener ayuda para conectarse a un almacén de claves personalizado, consulte Conectar ydesconectar un almacén de claves personalizado (p. 204). Para obtener ayuda para añadir HSM,consulte Agregar un HSM en la AWS CloudHSM User Guide.

10. Seleccione Next (Siguiente).11. Escriba un alias y, si lo desea, una descripción para la CMK.12. (Opcional). En la página Add Tags (Añadir etiquetas), añada etiquetas que identifiquen o categoricen

la CMK.

Cuando se agregan etiquetas a los recursos de AWS, AWS genera un informe de asignación decostos con el uso y los costos agregados por etiquetas. Para obtener más información acerca deletiquetado de CMK, consulte Etiquetar claves (p. 47).

13. Seleccione Next (Siguiente).14. En la sección Key administrators (Administradores de claves), seleccione los usuarios y roles de

IAM que pueden administrar la CMK. Para obtener más información, consulte Permite que losadministradores de claves administren la CMK (p. 59).

Note

Las políticas de IAM pueden otorgar permisos para usar la CMK a otros usuarios y roles deIAM.

15. (Opcional) Para evitar que estos administradores de claves eliminen esta CMK, desactive la casillaAllow key administrators to delete this key (Permitir que los administradores de claves eliminen estaclave) situada en la parte inferior de la página.

16. Elija Next (Siguiente).17. En la sección This account (Esta cuenta), seleccione los usuarios y roles de IAM de esta cuenta de

AWS que pueden usar la CMK en operaciones criptográficas (p. 11). Para obtener más información,consulte Permite a los usuarios de claves utilizar la CMK (p. 62).

Note

Las políticas de IAM pueden otorgar permisos para usar la CMK a otros usuarios y roles deIAM.

18. (Opcional) Puede permitir que otras cuentas de AWS usen esta CMK en operaciones criptográficas.Para ello, en la parte inferior de la página de la sección Other AWS accounts (Otras cuentas de AWS)elija Add another AWS account (Añadir otra cuenta de AWS) y especifique el número de identificaciónde la cuenta de AWS de una cuenta externa. Para añadir varias cuentas externas, repita este paso.

Note

Los administradores de las otras cuentas de AWS también deben permitir el acceso a la CMKmediante la creación de políticas de IAM para sus usuarios. Para obtener más información,consulte Permitir a los usuarios de otras cuentas utilizar una CMK (p. 81).

19. Seleccione Next (Siguiente).

213

Page 222: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK en un almacén de claves personalizado

20. En la página Review and edit key policy (Revisar y editar la política de claves), revise y edite eldocumento de política de la nueva CMK. Cuando haya terminado, seleccione Finish (Finalizar).

Si el procedimiento se realiza correctamente, la pantalla mostrará la nueva CMK en el almacén de clavespersonalizado de su elección. Al elegir el nombre o alias de la nueva CMK, su pantalla de detalle mostraráel origen de la CMK (CloudHSM), el nombre y el ID del almacén de claves personalizado, y el ID del clústerde AWS CloudHSM. Si el procedimiento falla, aparecerá un mensaje de error que describe el motivo delerror.

Tip

Para facilitar la identificación de CMK en un almacén de claves personalizado, en la páginaCustomer managed keys (Claves administradas por el cliente) añada la columna Custom keystore ID (ID del almacén de claves personalizado). Haga clic en el icono de engranaje en laesquina superior derecha y, a continuación, seleccione Custom key store ID (ID del almacén declaves personalizado).

Crear una CMK en un almacén de claves personalizado (API)Para crear una nueva clave maestra de cliente (p. 3) (CMK) en su almacén de claves personalizado, utilicela operación CreateKey. Use el parámetro CustomKeyStoreId para identificar su almacén de clavespersonalizado y en el valor Origin especifique AWS_CLOUDHSM.

Es posible que también desee utilizar el parámetro Policy para especificar una política de claves. Puedecambiar la política de claves (PutKeyPolicy) y añadir elementos opcionales como, por ejemplo, unadescripción y etiquetas en cualquier momento.

En los ejemplos de esta sección se utiliza la AWS Command Line Interface (AWS CLI), pero puede usarcualquier lenguaje de programación compatible.

El siguiente ejemplo empieza con una llamada a la operación DescribeCustomKeyStores para verificar queel almacén de claves personalizado está conectado al clúster de AWS CloudHSM que tiene asociado. Deforma predeterminada, esta operación devuelve los almacenes de claves personalizados de su cuenta yregión. Para describir únicamente un almacén de claves personalizado determinado, utilice el parámetroCustomKeyStoreId o CustomKeyStoreName (pero no ambos).

Antes de ejecutar este comando, reemplace el ID del almacén de claves personalizado de ejemplo por unID válido.

$ aws kms describe-custom-key stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ],}

El siguiente comando de ejemplo utiliza la operación DescribeClusters para verificar que el clúster de AWSCloudHSM asociado a ExampleKeyStore (cluster-1a23b4cdefg) tiene al menos dos HSM activos. Si elclúster tiene menos de dos HSM, la operación CreateKey dará error.

$ aws cloudhsmv2 describe-clusters{ "Clusters": [

214

Page 223: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear CMK en un almacén de claves personalizado

{ "SubnetMapping": { ... }, "CreateTimestamp": 1507133412.351, "ClusterId": "cluster-1a23b4cdefg", "SecurityGroup": "sg-865af2fb", "HsmType": "hsm1.medium", "VpcId": "vpc-1a2b3c4d", "BackupPolicy": "DEFAULT", "Certificates": { "ClusterCertificate": "-----BEGIN CERTIFICATE-----\...\n-----END CERTIFICATE-----\n" }, "Hsms": [ { "AvailabilityZone": "us-west-2a", "EniIp": "10.0.1.11", "ClusterId": "cluster-1a23b4cdefg", "EniId": "eni-ea8647e1", "StateMessage": "HSM created.", "SubnetId": "subnet-a6b10bd1", "HsmId": "hsm-abcdefghijk", "State": "ACTIVE" }, { "AvailabilityZone": "us-west-2b", "EniIp": "10.0.0.2", "ClusterId": "cluster-1a23b4cdefg", "EniId": "eni-ea8647e1", "StateMessage": "HSM created.", "SubnetId": "subnet-b6b10bd2", "HsmId": "hsm-zyxwvutsrqp", "State": "ACTIVE" }, ], "State": "ACTIVE" } ]}

Este comando de ejemplo usa la operación CreateKey para crear un CMK en el almacén de clavespersonalizado. Para crear un CMK en un almacén de claves personalizado, debe proporcionar el ID delnombre del almacén de claves personalizado y en el valor Origin especificar AWS_CLOUDHSM.

La respuesta contiene los ID del almacén de claves personalizado y el clúster de AWS CloudHSM.

Antes de ejecutar este comando, reemplace el ID del almacén de claves personalizado de ejemplo por unID válido.

$ aws kms create-key --origin AWS_CLOUDHSM --custom-key-store-id cks-1234567890abcdef0{ "KeyMetadata": { "AWSAccountId": "111122223333", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1.499288695918E9, "Description": "Example key", "Enabled": true, "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_CLOUDHSM" "CloudHsmClusterId": "cluster-1a23b4cdefg",

215

Page 224: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar las CMK en un almacén de claves personalizado

"CustomKeyStoreId": "cks-1234567890abcdef0" "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

Consultar las CMK en un almacén de clavespersonalizadoPara ver las claves maestras de cliente (CMK) en un almacén de claves personalizado, use las mismastécnicas que utilizaría para ver las claves administradas por el cliente (p. 3) de AWS KMS. Para conocerla información básica, consulte Consultar claves (p. 28). Para identificar las claves de su clúster de AWSCloudHSM que actúa como material de claves para su CMK, consulte Buscar las CMK y material declaves (p. 218).

En la Consola de administración de AWS, las CMK del almacén de claves personalizado se muestran juntocon todas las CMK administradas por el cliente de su región y cuenta de AWS.

Sin embargo, los siguientes valores son específicos de las CMK de un almacén de claves personalizado.

• El nombre y el ID del almacén de claves personalizado que almacena la CMK.• El ID clúster de AWS CloudHSM asociado que contiene su material de claves.• Un valor Origin de CloudHSM en la Consola de administración de AWS o de AWS_CLOUDHSM en las

respuestas de la API.• El valor del estado de clave (p. 245) puede ser Unavailable. Para ayudar a resolver el estado,

consulte Cómo arreglar las CMK no disponibles (p. 223).

Para ver las CMK de un almacén de claves personalizado (consola)

1. Abra la consola de AWS KMS en https://console.aws.amazon.com/kms.2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de la

página.3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. En la esquina superior derecha, seleccione el icono de engranaje, elija Custom key store ID (ID del

almacén de claves personalizado) y Origin (Origen), y, por último, Confirm (Confirmar).5. Para identificar las CMK en cualquier almacén de claves personalizado, busque las CMK con el valor

Origin (Origen) establecido en AWS_CLOUDHSM. Para identificar las CMK en un almacén de clavespersonalizado determinado, consulte los valores de la columna Custom key store ID (ID del almacénde claves personalizado).

6. Elija el alias o el ID de clave de una CMK en un almacén de claves personalizado.

Esta página muestra información detallada sobre la CMK, incluido su nombre de recurso de Amazon(ARN), su política claves y sus etiquetas.

7. Amplíe la Cryptographic configuration (configuración criptográfica).

Esta sección incluye información acerca del clúster y el almacén de claves personalizado de la CMK.

Para ver las CMK en un almacén de claves personalizado (API)

Use las mismas operaciones de API de AWS KMS para ver las CMK en un almacén de clavespersonalizado que utilizaría para cualquier CMK, incluidas las operaciones ListKeys, DescribeKey y

216

Page 225: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar las CMK en un almacén de claves personalizado

GetKeyPolicy. Por ejemplo, la siguiente operación de describe-key en la AWS CLI muestra los camposespeciales de una CMK en un almacén de claves personalizado. Antes de ejecutar un comando de estetipo, reemplace el ID de la CMK de ejemplo por un valor válido.

$ aws kms describe-key --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

{ "KeyMetadata": { "AWSAccountId": "111122223333", "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1537582718.431, "Enabled": true, "KeyManager": "CUSTOMER", "KeyState": "Enabled", "KeyUsage": "ENCRYPT_DECRYPT", "Origin": "AWS_CLOUDHSM", "CloudHsmClusterId": "cluster-1a23b4cdefg", "CustomKeyStoreId": "cks-1234567890abcdef0", "Description": "CMK in custom key store" "CustomerMasterKeySpec": "SYMMETRIC_DEFAULT", "EncryptionAlgorithms": [ "SYMMETRIC_DEFAULT" ] }}

Para obtener información sobre cómo buscar las CMK en un almacén de claves personalizado o cómoidentificar las claves en el clúster de AWS CloudHSM que actúa como material de claves para la CMK,consulteBuscar las CMK y material de claves (p. 218).

Usar las CMK en un almacén de claves personalizadoDespués de crear una CMK simétrica en un almacén de claves personalizado (p. 211), puede usarla paralas siguientes operaciones criptográficas:

• Encrypt• Decrypt• GenerateDataKey• GenerateDataKeyWithoutPlaintext• ReEncrypt

Las CMK asimétricas y los pares de claves de datos asimétricos no se admiten en un almacén de clavespersonalizado. Por consiguiente, no puede utilizar las operaciones específicas de las CMK asimétricas:Sign, Verify y GetPublicKey. Además, las operaciones que generan pares de claves de datos asimétricos,GenerateDataKeyPair y GenerateDataKeyPairWithoutPlaintext, no se admiten en un almacén de clavespersonalizado.

Cuando utilice la CMK en una solicitud, identifíquela por su ID o alias. No es necesario especificar elalmacén de claves personalizado ni el clúster de AWS CloudHSM. La respuesta incluye los mismoscampos que se devuelven para cualquier CMK simétrica.

Sin embargo, cuando se utiliza una CMK en un almacén de claves personalizado, la operacióncriptográfica se realiza completamente dentro del clúster de AWS CloudHSM asociado con el almacén declaves personalizado. La operación utiliza el material de claves del clúster asociado con la CMK elegida.

Para ello, se deben cumplir las siguientes condiciones.

217

Page 226: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresBuscar las CMK y material de claves

• El estado de clave (p. 245) de la CMK debe ser Enabled. Para buscar el estado de clave, use elcampo Status (Estado) en la Consola de administración de AWS (p. 216) o el campo KeyState en larespuesta DescribeKey.

• El almacén de claves personalizado debe estar conectado a su clúster de AWS CloudHSM. Su Status(Estado) en la Consola de administración de AWS (p. 200) o el ConnectionState en la respuestaDescribeCustomKeyStores debe ser CONNECTED.

• El clúster de AWS CloudHSM asociado al almacén de claves personalizado debe incluir al menosun HSM activo. Para encontrar el número de HSM activos en el clúster, use la consola de AWSKMS (p. 200), la consola de AWS CloudHSM o la operación DescribeClusters.

• El clúster de AWS CloudHSM debe incluir el material de claves para la CMK. Si se ha eliminado elmaterial de claves del clúster, o se ha creado un HSM a partir de una copia de seguridad que no incluíael material de claves, la operación criptográfica dará error.

Si no se cumplen estas condiciones, la operación criptográfica dará error y AWS KMS devolverá unaexcepción KMSInvalidStateException. Normalmente, bastará con que vuelva a conectar el almacénde claves personalizado (p. 204). Para obtener ayuda adicional, consulte Cómo arreglar una CMK queproduce error (p. 224).

Cuando utilice las CMK en un almacén de claves personalizadas, tenga en cuenta que las CMK decada almacén de claves personalizadas comparten una cuota por segundo (p. 390) en las solicitudesde operaciones criptográficas. Si supera la cuota, AWS KMS devuelve una ThrottlingException.Si el clúster de AWS CloudHSM que está asociado al almacén de claves personalizadas procesanumerosos comandos, incluidos los no relacionados con el almacén de claves personalizadas, esposible que obtenga una excepción ThrottlingException a un velocidad aún inferior. Si recibe unaexcepción ThrottlingException para cualquier solicitud, baje la velocidad de solicitud e intenteejecutar los comandos de nuevo. Para obtener información detallada sobre la cuotas de solicitud paraoperaciones criptográficas en un almacén de claves personalizadas, consulte Cuotas del almacén declaves personalizado (p. 390).

Buscar las CMK y material de clavesSi administra un almacén de claves personalizado, es posible que tenga que identificar las CMK en cadaalmacén de claves personalizado. Por ejemplo, es probable que deba realizar algunas de las siguientestareas.

• Realizar el seguimiento de las CMK en un almacén de claves personalizado en registros de AWSCloudTrail.

• Predecir qué efecto tendrá sobre las CMK el desconectar un almacén de claves personalizado.• Programar la eliminación de CMK antes de eliminar un almacén de claves personalizado.

Además, debería identificar las claves de su clúster de AWS CloudHSM que actúa como material de clavespara sus CMK. Aunque AWS KMS administra las CMK y su material de claves, sigue controlando y esresponsable de la administración de su clúster de AWS CloudHSM, sus HSM y las copias de seguridad, ylas claves en los HSM. Es probable que deba identificar las claves para poder auditar el material de claves,protegerlo de ser eliminado por error o eliminarlo de los HSM y de las copias de seguridad del clúster traseliminar la CMK.

Todo el material de claves para las CMK en su almacén de claves personalizado es propiedad delkmsuser usuario de criptografía (p. 192) (CU). AWS KMS establece el atributo de la etiqueta de claves,que solo puede verse en AWS CloudHSM, en el nombre de recurso de Amazon (ARN) de la CMK.

Para buscar las CMK y el material de claves, puede utilizar cualquiera de las técnicas siguientes.

• Buscar las CMK en un almacén de claves personalizado (p. 219): cómo identificar las CMK en uno otodos los almacenes de claves personalizados.

218

Page 227: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresBuscar las CMK y material de claves

• Buscar todas las claves para un almacén de claves personalizado (p. 220): cómo buscar todaslas claves en el clúster que actúan como material de claves para las CMK en su almacén de clavespersonalizado.

• Buscar la clave para una CMK (p. 221): cómo buscar la clave en el clúster que actúa como material declaves para una CMK determinada en su almacén de claves personalizado.

• Buscar la CMK para una clave (p. 221): cómo buscar la CMK de una clave determinada en el clúster.

Buscar las CMK en un almacén de claves personalizadoSi administra un almacén de claves personalizado, es posible que tenga que identificar las CMK en cadaalmacén de claves personalizado. Puede utilizar esta información para realizar el seguimiento de lasoperaciones de las CMK en registros de AWS CloudTrail, predecir qué efecto tendrá sobre las CMK ladesconexión de un almacén de claves personalizado o programar la eliminación de las CMK antes deeliminar un almacén de claves personalizado.

Para buscar las CMK en un almacén de claves personalizado (consola)

Para buscar las CMK en un almacén de claves personalizado determinado, en la página CustomerManaged Keys (Claves administradas por el cliente) consulte los valores de los campos Custom Key StoreName (Nombre del almacén de claves personalizado) o Custom Key Store ID (ID del almacén de clavespersonalizado). Para identificar las CMK en cualquier almacén de claves personalizado, busque las CMKcon el valor Origin (Origen) establecido en CloudHSM. Para añadir columnas opcionales a la pantalla, elijael icono de engranaje en la esquina superior derecha de la página.

Para buscar las CMK en un almacén de claves personalizado (API)

Para buscar las CMK en un almacén de claves personalizado, utilice las operaciones ListKeys yDescribeKey y, a continuación, filtre por el valor CustomKeyStoreId. Antes de ejecutar los ejemplos,reemplace los valores ficticios del ID del almacén de claves personalizado por un ID válido.

Bash

Para buscar las CMK en un almacén de claves personalizado, recopile todas las CMK de la cuenta yla región. A continuación, filtre el ID del almacén de claves personalizado.

for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text) ; do aws kms describe-key --key-id $key | grep '"CustomKeyStoreId": "cks-1234567890abcdef0"' --context 100; done

Para obtener una CMK en un almacén de claves personalizado en la cuenta y región, busque valoresCustomKeyStoreId que empiecen por cks-.

for key in $(aws kms list-keys --query 'Keys[*].KeyId' --output text) ; do aws kms describe-key --key-id $key | grep '"CustomKeyStoreId": "cks-"' --context 100; done

PowerShell

Para buscar las CMK en un almacén de claves personalizado determinado, use los cmdlets Get-KmsKeyList Get-KmsKey para obtener todas las CMK de la cuenta y la región. A continuación, filtre elID del almacén de claves personalizado.

PS C:\> (Get-KMSKeyList).KeyArn | foreach {Get-KMSKey -KeyId $_} | where CustomKeyStoreId -eq 'cks-1234567890abcdef0'

219

Page 228: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresBuscar las CMK y material de claves

Para obtener las CMK en cualquier almacén de claves personalizado de la cuenta y región, use eloperador de comparación -like. Todos los identificadores del almacén de claves personalizadoempiezan por cks-.

PS C:\> (Get-KMSKeyList).KeyArn | foreach {Get-KMSKey -KeyId $_} | where CustomKeyStoreId -like 'cks*'

Buscar todas las claves para un almacén de clavespersonalizadoPuede identificar las claves en el clúster de AWS CloudHSM que actúan como material de claves parasu almacén de claves personalizado. Para ello, use el comando findAllKeys en cloudhsm_mgmt_util parabuscar los identificadores de todas las claves que posee o comparte kmsuser. A menos que haya iniciadosesión como kmsuser y haya creado claves fuera de AWS KMS, todas las claves que posee kmsuserrepresentan material de claves para las CMK de AWS KMS.

Cualquier responsable de criptografía del clúster puede ejecutar este comando sin desconectar el almacénde claves personalizado.

1. Inicie cloudhsm_mgmt_util utilizando el procedimiento descrito en el tema Prepararse para ejecutarcloudhsm_mgmt_util.

2. Inicie sesión en cloudhsm_mgmt_util con la cuenta del responsable de criptografía (CO).3. Use el comando listUsers para buscar el ID del usuario de criptografía kmsuser.

En este ejemplo, kmsuser tiene el ID de usuario 3.

aws-cloudhsm> listUsersUsers on server 0(10.0.0.1):Number of users found:3

User Id User Type User Name MofnPubKey LoginFailureCnt 2FA 1 PCO admin NO 0 NO 2 AU app_user NO 0 NO 3 CU kmsuser NO 0 NO

4. Use el comando findAllKeys para buscar los identificadores de todas las claves que posee o compartekmsuser. Reemplace el ID de usuario de ejemplo por el ID de usuario real kmsuser en el clúster.

El resultado del ejemplo muestra que kmsuser es propietario de claves con los identificadores declaves 8, 9 y 262162 en ambos HSM del clúster.

aws-cloudhsm> findAllKeys 3 0Keys on server 0(10.0.0.1):Number of keys found 3number of keys matched from start index 0::68,9,262162findAllKeys success on server 0(10.0.0.1)

Keys on server 1(10.0.0.2):Number of keys found 6number of keys matched from start index 0::68,9,262162findAllKeys success on server 1(10.0.0.2)

220

Page 229: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresBuscar las CMK y material de claves

Buscar la CMK para una claveSi conoce el identificador de claves de una clave propiedad de kmsuser en el clúster, puede utilizar laetiqueta de claves para identificar la CMK asociada en su almacén de claves personalizado.

Cuando AWS KMS crea el material de claves para una CMK en su clúster de AWS CloudHSM, esteescribe el nombre de recurso de Amazon (ARN) de la CMK en la etiqueta de la clave. A menos quehaya cambiado el valor de la etiqueta, puede utilizar el comando getAttribute en key_mgmt_util ocloudhsm_mgmt_util para asociar la clave con su CMK.

Para ejecutar este procedimiento, debe desconectar temporalmente el almacén de claves personalizadopara poder iniciar sesión como el CU kmsuser.

Note

Mientras el almacén de claves personalizado esté desconectado, fallarán todos los intentos decrear claves maestras de cliente (CMK) en el almacén de claves personalizado o de usar CMKexistentes en operaciones criptográficas. Esta acción puede impedir que los usuarios almaceneninformación confidencial o que accedan a esta.

1. Desconecte el almacén de claves personalizado, si no lo está todavía, e inicie sesión enkey_mgmt_util como kmsuser, tal como se explica en Cómo desconectar e iniciar sesión (p. 229).

2. Use el comando getAttribute en key_mgmt_util o cloudhsm_mgmt_util para obtener el atributo dela etiqueta (OBJ_ATTR_LABEL, atributo 3) para un identificador de claves determinado.

Por ejemplo, este comando utiliza getAttribute en cloudhsm_mgmt_util para obtener el atributode la etiqueta (atributo 3) de la clave con el identificador de claves 262162. El resultado muestraque la clave 262162 actúa como material de claves para la CMK con el ARN arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. Antes de ejecutareste comando, reemplace el identificador de claves de ejemplo por uno válido.

Para obtener una lista de los atributos de clave, use el comando listAttributes o consulte el temaReferencia de los atributos de claves en la AWS CloudHSM User Guide.

aws-cloudhsm> getAttribute 262162 3

Attribute Value on server 0(10.0.1.10):OBJ_ATTR_LABELarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Attribute Value on server 1(10.0.1.12):OBJ_ATTR_EXTRACTABLEarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

3. Cierre la sesión de key_mgmt_util o cloudhsm_mgmt_util y vuelva a conectar el almacén de clavespersonalizado tal como se explica en Cómo cerrar sesión y volver a conectar (p. 230).

Buscar la clave para una CMKPuede utilizar el ID de una CMK en un almacén de claves personalizado para identificar la clave del clústerque actúa como su material de claves. A continuación, puede usar su clave para identificar la clave enotros comandos del cliente AWS CloudHSM.

Cuando AWS KMS crea el material de claves para una CMK en su clúster de AWS CloudHSM, esteescribe el nombre de recurso de Amazon (ARN) de la CMK en la etiqueta de la clave. A menos quehaya cambiado el valor de la etiqueta, puede usar el comando findKey en key_mgmt_util para obtenerel identificador de claves del material de claves para la CMK. Para ejecutar este procedimiento, debe

221

Page 230: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresProgramar la eliminación de CMK deun almacén de claves personalizado

desconectar temporalmente el almacén de claves personalizado para poder iniciar sesión como el CUkmsuser.

Note

Mientras el almacén de claves personalizado esté desconectado, fallarán todos los intentos decrear claves maestras de cliente (CMK) en el almacén de claves personalizado o de usar CMKexistentes en operaciones criptográficas. Esta acción puede impedir que los usuarios almaceneninformación confidencial o que accedan a esta.

1. Desconecte el almacén de claves personalizado, si no lo está todavía, e inicie sesión enkey_mgmt_util como kmsuser, tal como se explica en Cómo desconectar e iniciar sesión (p. 229).

2. Use el comando findKey en key_mgmt_util para buscar una clave con una etiqueta que coincida con elARN de la CMK de su almacén de claves personalizado. Reemplace el ARN de la CMK de ejemplo enel valor del parámetro -l (L en minúscula por "label") por un ARN de la CMK válido.

Por ejemplo, este comando encuentra la clave con una etiqueta quecoincide con el ARN de la CMK de ejemplo arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. El resultado delejemplo muestra que la clave con el identificador 262162 tiene el ARN de la CMK especificado en suetiqueta. Ahora puede utilizar este identificador de claves en otros comandos key_mgmt_util.

Command: findKey -l arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890abTotal number of keys present 1

number of keys matched from start index 0::1262162

Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS

3. Cierre la sesión de key_mgmt_util y vuelva a conectar el almacén de claves personalizado tal como seexplica en Cómo cerrar sesión y volver a conectar (p. 230).

Programar la eliminación de CMK de un almacén declaves personalizadoSi está seguro de que no necesitará una clave maestra de cliente (CMK) para ninguna operacióncriptográfica, puede programar la eliminación de la CMK (p. 176). Puede usar el mismo procedimiento queutilizaría para programar la eliminación de una CMK de AWS KMS. Además, debe mantener el almacén declaves personalizado conectado para que AWS KMS pueda eliminar el material de claves correspondientedel clúster de AWS CloudHSM asociado cuando venza el período de espera.

Warning

Eliminar una CMK es una operación destructiva y potencialmente peligrosa que evita querecupere todos los datos cifrados con la CMK. Antes de programar la eliminación de la CMK,revise el uso que ha hecho en el pasado (p. 186) de la CMK y cree una alarma de AmazonCloudWatch (p. 182) que le avise cuando alguien intente usar la CMK mientras esté pendiente deeliminación. Es preferible, siempre que sea posible, deshabilitar la CMK (p. 49) a eliminarla.

Si programa la eliminación de una CMK de un almacén de claves personalizado, su estado declave (p. 245) cambiará a Pending deletion (Eliminación pendiente). La CMK conservará el estadoPending deletion (Eliminación pendiente) durante todo el período de espera, incluso si la CMK deja de

222

Page 231: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresResolver problemas de un almacén de claves personalizado

estar disponible porque ha desconectado el almacén de claves personalizado (p. 204). Esto permitecancelar la eliminación de la CMK en cualquier momento durante el período de espera.

Cuando finaliza el periodo de espera, AWS KMS elimina la CMK de AWS KMS. AWS KMS hará lo posiblepor eliminar el material de claves del clúster de AWS CloudHSM asociado. Si AWS KMS no puede eliminarel material de claves, como, por ejemplo, cuando el almacén de claves está desconectado de AWS KMS,es probable que tenga que eliminar el material de claves huérfano (p. 227) manualmente del clúster.

AWS KMS no elimina el material de claves de las copias de seguridad del clúster. Incluso si elimina laCMK de AWS KMS y borra su material de claves de su clúster de AWS CloudHSM, los clústers creadosa partir de copias de seguridad podrían incluir material de claves eliminado. Para eliminar el material declaves de forma permanente, consulte la fecha de creación (p. 216) de la CMK. A continuación, eliminetodas las copias de seguridad del clúster que puedan contener el material de claves.

Resolver problemas de un almacén de clavespersonalizado

Los almacenes de claves personalizados están diseñados para ofrecer disponibilidad y larga duración. Sinembargo, pueden surgir algunas condiciones de error que deberá reparar para mantener su almacén declaves personalizado operativo.

Temas• Cómo arreglar las CMK no disponibles (p. 223)• Cómo arreglar una CMK que produce error (p. 224)• Cómo arreglar un error de conexión (p. 224)• Cómo arreglar las credenciales de kmsuser no válidas (p. 226)• Cómo eliminar material de claves huérfano (p. 227)• Cómo recuperar el material de claves eliminado de una CMK (p. 228)• Cómo iniciar sesión como kmsuser (p. 229)

Cómo arreglar las CMK no disponiblesEl estado de la clave (p. 245) de las claves maestra de cliente (CMK) en un almacén de clavespersonalizado suele ser Enabled. De igual modo que todas las CMK, el estado cambia al deshabilitar lasCMK en un almacén de claves personalizado o al programar su eliminación. Sin embargo, a diferenciade otras CMK, las CMK de un almacén de claves personalizado también pueden tener el estado de laclave (p. 245) Unavailable.

El estado Unavailable indica que la CMK está en un almacén de claves personalizado que se hadesconectado de su clúster de AWS CloudHSM (p. 204) de forma intencionada y que los intentos deconectarlo de nuevo han fallado. Mientras una CMK no esté disponible, puede consultarla y administrarla,pero no puede usarla en operaciones criptográficas (p. 217).

Para buscar el estado de la clave de una CMK en la página Customer managed keys (Clavesadministradas por el cliente) consulte el campo Status (Estado) de la CMK. O utilice la operaciónDescribeKey y consulte el elemento KeyState en la respuesta. Para obtener más información, consulteConsultar claves (p. 28).

Las CMK en un almacén de claves personalizado desconectado tendrá el estado de la claveUnavailable o PendingDeletion. Las CMK programadas para su eliminación de un almacén declaves personalizado tienen el estado Pending Deletion, incluso si el almacén de claves personalizado

223

Page 232: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo arreglar una CMK que produce error

está desconectado de su clúster de AWS CloudHSM. Esto permite cancelar la eliminación programada dela clave sin volver a conectar el almacén de claves personalizado.

Para arreglar una CMK no disponible, vuelva a conectar el almacén de claves personalizado (p. 204).Después de volver a conectar el almacén de claves personalizado, el estado de las CMK en el almacénde claves personalizado se restaura automáticamente al estado anterior, como Enabled o Disabled.Las CMK pendientes de eliminación seguirán teniendo el estado PendingDeletion. Sin embargo, si elproblema persiste, habilitar y deshabilitar una CMK no disponible (p. 49) no cambia su estado. La acciónde habilitar o deshabilitar solo será efectiva cuando la clave esté disponible.

Si desea ayuda con las conexiones que dan error, consulte Cómo arreglar un error de conexión (p. 224).

Cómo arreglar una CMK que produce errorLos problemas para crear y utilizar CMK en almacenes de claves personalizados pueden deberse a unproblema con el almacén de claves personalizado, su clúster de AWS CloudHSM asociado, la CMK o sumaterial de claves.

Cuando un almacén de claves personalizado se desconecta de su clúster de AWS CloudHSM, elestado de las CMK en el almacén de claves personalizado es Unavailable. Todas las solicitudespara crear CMK en un almacén de claves personalizado desconectado devuelven una excepciónCustomKeyStoreInvalidStateException. Todas las solicitudes para cifrar, descifrar, volver a cifraro generar claves de datos devuelve una excepción KMSInvalidStateException. Para solucionar elproblema, vuelva a conectar el almacén de claves personalizado (p. 204).

Sin embargo, los intentos de usar una CMK de un almacén de claves personalizado en operacionescriptográficas (p. 217) pueden no ser fructíferos incluso cuando el estado es Enabled y el estadode conexión del almacén de claves personalizado es Connected. Esto puede deberse a una de lassiguientes condiciones.

• Puede que se haya eliminado el material de claves para la CMK del clúster de AWS CloudHSMasociado. Para investigar, busque el identificador de claves (p. 216) del material de claves para unaCMK y, si es necesario, intente recuperar el material de claves (p. 228).

• Se han eliminado todos los HSM del clúster de AWS CloudHSM asociado al almacén de clavespersonalizado. Para utilizar una CMK en un almacén de claves personalizado en una operacióncriptográfica, su clúster de AWS CloudHSM debe contener al menos un HSM activo. Para verificar elnúmero y el estado de los HSM en un clúster de AWS CloudHSM, use la consola de AWS CloudHSM ola operación DescribeClusters. Para añadir un HSM al clúster, utilice la consola de AWS CloudHSM o laoperación CreateHsm.

• Se ha eliminado el clúster de AWS CloudHSM asociado al almacén de claves personalizado. Pararesolver el problema, cree un clúster a partir de una copia de seguridad relacionada con el clústeroriginal, como una copia de seguridad de un clúster original o una copia de seguridad utilizada paracrear el clúster original. A continuación, edite el ID del clúster (p. 202) en la configuración del almacénde claves personalizado. Para obtener instrucciones, consulte Cómo recuperar el material de claveseliminado de una CMK (p. 228).

Cómo arreglar un error de conexiónSi intenta conectar un almacén de claves personalizado (p. 204) a su clúster de AWS CloudHSM,pero la operación falla, el estado de conexión del almacén de claves personalizado cambiará aFAILED. Para averiguar el estado de un almacén de claves personalizado, consulte la columna Status(Estado) del almacén de claves personalizado en la Consola de administración de AWS o el elementoConnectionState de la respuesta DescribeCustomKeyStores.

Algunos intentos de conexión producen un error rápidamente debido a errores de configuración del clústerdetectados fácilmente. En este caso, el valor de Status (Estado) o ConnectionState sigue siendo

224

Page 233: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo arreglar un error de conexión

DISCONNECTED. Estos errores devuelven un mensaje de error o unaexcepción que explica por qué elintento produjo un error. Revise la descripción de la excepción y los requisitos del clúster (p. 196),solucione el problema, actualice el almacén de claves personalizado (p. 202), si es necesario, e intenteconectarse de nuevo.

Cuando el estado de la conexión es FAILED, ejecute la operaciónDescribeCustomKeyStores y consulte elelemento ConnectionErrorCode en la respuesta.

Note

Si el estado de conexión de un almacén de claves personalizado es FAILED, deberá desconectarel almacén de claves personalizado (p. 204) antes de conectarlo de nuevo. No puede conectarun almacén de claves personalizado que tenga el estado de conexión FAILED.

• CLUSTER_NOT_FOUND indica que AWS KMS no ha encontrado ningún clúster de AWS CloudHSM conel ID de clúster especificado. Esto puede deberse a que se ha proporcionado un ID de clúster erróneo auna operación de API o que se ha eliminado el clúster y no se ha reemplazado. Para resolver este error,compruebe el ID del clúster mediante la consola de AWS CloudHSM o la operación DescribeClusters.Si se ha eliminado el clúster, cree un clúster a partir de una copia de seguridad reciente del original. Acontinuación, desconecte el almacén de claves personalizado (p. 204), edite la configuración del IDdel clúster del almacén de claves personalizado (p. 202) y vuelva a conectar el almacén de clavespersonalizado (p. 204) al clúster.

• INSUFFICIENT_CLOUDHSM_HSMS indica que el clúster de AWS CloudHSM asociado no contieneningún HSM. Para conectarse, el clúster debe tener al menos un HSM. Para averiguar el número deHSM del clúster, utilice la operación DescribeClusters. Para solucionar este error, añada al menos unHSM al clúster. Si añade diversos HSM, recomendamos crearlos en diferentes zonas de disponibilidad.

• INTERNAL_ERROR indica que AWS KMS pudo completar la solicitud debido a un error interno. Intenterealizar de nuevo la solicitud. Para las solicitudesConnectCustomKeyStore, desconecte el almacén declaves personalizado antes de intentar conectarse de nuevo.

• INVALID_CREDENTIALS indica que AWS KMS no puede iniciar sesión en el clúster de AWS CloudHSMporque no se ha introducido la contraseña de la cuenta kmsuser correcta. Si desea ayuda parasolucionar este error, consulte Cómo arreglar las credenciales de kmsuser no válidas (p. 226).

• NETWORK_ERRORS suele hacer referencia a problemas temporales de red. Antes de intentar conectarsede nuevo, desconecte el almacén de claves personalizado (p. 204) e intente conectarlo de nuevo.

• SUBNET_NOT_FOUND indica que se ha eliminado al menos una subred de la configuración del clúster deAWS CloudHSM. Si AWS KMS no puede encontrar todas las subredes de la configuración del clúster, seproducirá un error al intentar conectar el almacén de claves personalizado al clúster de AWS CloudHSM.

Para corregir este error, cree un clúster a partir de una copia de seguridad reciente del mismoclúster de AWS CloudHSM. (Este proceso crea una nueva configuración de clúster con una VPC ysubredes privadas). Compruebe que el nuevo clúster cumple los requisitos de un almacén de clavespersonalizado (p. 196) y anote el nuevo ID del clúster. A continuación, para asociar el clúster nuevocon el almacén de claves personalizado, desconecte el almacén de claves personalizado (p. 204),cambie el ID del clúster (p. 202) del almacén de claves personalizado por el ID del clúster nuevo eintente conectarse de nuevo.

Tip

Para evitar restablecer la contraseña kmsuser (p. 226), utilice la copia de seguridad másreciente del clúster de AWS CloudHSM.

• USER_LOCKED_OUT indica que la cuenta del usuario de criptografía (CU) kmsuser (p. 192) estábloqueada del clúster de AWS CloudHSM asociado porque se han realizado demasiados intentosfallidos de introducción de contraseña. Si desea ayuda para solucionar este error, consulte Cómoarreglar las credenciales de kmsuser no válidas (p. 226).

Para solucionar este error, desconecte el almacén de claves personalizado (p. 204) y use el comandochangePswd en cloudhsm_mgmt_util para cambiar la contraseña de la cuenta de kmsuser. A

225

Page 234: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo arreglar las credenciales de kmsuser no válidas

continuación, edite la configuración de la contraseña de kmsuser (p. 202) para el almacén de clavespersonalizado e intente conectarlo de nuevo. Para obtener ayuda, utilice el procedimiento descrito en eltema Cómo arreglar las credenciales de kmsuser no válidas (p. 226).

• USER_LOGGED_IN indica que la cuenta del CU kmsuser ha iniciado sesión en el clúster de AWSCloudHSM asociado. Esto impide a AWS KMS rotar la contraseña de la cuenta kmsuser e iniciar sesiónen el clúster. Para corregir este error, cierre la sesión del CU kmsuser del clúster. Si ha cambiadola contraseña de kmsuser para iniciar sesión en el clúster, también debe actualizar el valor de lacontraseña del almacén de claves para el almacén de claves personalizadas. Para obtener ayuda,consulte Cómo cerrar sesión y volver a conectar (p. 230).

• USER_NOT_FOUND indica que AWS KMS no puede encontrar una cuenta del CU kmsuser en el clústerde AWS CloudHSM asociado. Para corregir este error, cree una cuenta del CU kmsuser (p. 198) enel clúster y, a continuación, actualice el valor de contraseña del almacén de claves (p. 202) para elalmacén de claves personalizadas. Para obtener ayuda, consulte Cómo arreglar las credenciales dekmsuser no válidas (p. 226).

Cómo arreglar las credenciales de kmsuser noválidasAl conectar un almacén de claves personalizado (p. 204), AWS KMS inicia sesión en el clúster de AWSCloudHSM asociado como kmsuserusuario de criptografía (p. 192) (CU). Conserva la sesión hasta quese desconecte el almacén de claves personalizado. La respuesta DescribeCustomKeyStores muestra elConnectionState FAILED y ConnectionErrorCode muestra el valor INVALID_CREDENTIALS, talcomo aparece en el siguiente ejemplo.

Si desconectar el almacén de claves personalizado y cambia la contraseña de kmsuser, AWS KMS nopodrá iniciar sesión en el clúster de AWS CloudHSM con las credenciales de la cuenta del CU kmsuser.En consecuencia, todos los intentos de conectar el almacén de claves personalizado darán error. Larespuesta DescribeCustomKeyStores muestra un ConnectionState de FAILED y un valor deConnectionErrorCode de INVALID_CREDENTIALS, como se muestra en el siguiente ejemplo.

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore{ "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg", "ConnectionErrorCode": "INVALID_CREDENTIALS" "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" ],}

Además, después de 5 intentos de iniciar sesión en el clúster con una contraseña incorrecta, AWSCloudHSM bloquea la cuenta del usuario. Para iniciar sesión en el clúster, deberá cambiar la contraseñade la cuenta.

Si AWS KMS recibe una respuesta de bloqueo al intentar iniciar sesión en el clúster como CUkmsuser, la solicitud para conectar el almacén de claves personalizado dará error. La respuestaDescribeCustomKeyStores incluye el ConnectionState FAILED y ConnectionErrorCode el valorUSER_LOCKED_OUT, tal como aparece en el siguiente ejemplo.

$ aws kms describe-custom-key-stores --custom-key-store-name ExampleKeyStore{ "CustomKeyStores": [ "CloudHsmClusterId": "cluster-1a23b4cdefg",

226

Page 235: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo eliminar material de claves huérfano

"ConnectionErrorCode": "USER_LOCKED_OUT" "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "FAILED" ],}

Para reparar cualquiera de estas condiciones use el procedimiento siguiente.

1. Desconecte el almacén de claves personalizado (p. 204).2. Ejecute la operación DescribeCustomKeyStores y consulte el valor del elemento

ConnectionErrorCode en la respuesta.

• Si el valor de ConnectionErrorCode es INVALID_CREDENTIALS, determine la contraseñaactual para la cuenta de kmsuser. Si es necesario, use el comando changePswd encloudhsm_mgmt_util para establecer la contraseña con un valor conocido.

• Si el valor de ConnectionErrorCode es USER_LOCKED_OUT, deberá usar el comandochangePswd en cloudhsm_mgmt_util para modificar la contraseña de kmsuser.

3. Edite la configuración de la contraseña de kmsuser (p. 202) para que coincida con la contraseña dekmsuser del clúster. Esta acción le dice a AWS KMS qué contraseña debe usar para iniciar sesión enel clúster. No cambia la contraseña de kmsuser en el clúster.

4. Conecte el almacén de claves personalizado (p. 204).

Cómo eliminar material de claves huérfanoDespués de programar la eliminación de una CMK del almacén de claves personalizado es probable quedeba eliminar manualmente el material de claves correspondiente del clúster asociado.

Al crear una CMK en un almacén de claves personalizado, AWS KMS crea los metadatos de la CMK enAWS KMS y genera el material de claves en el clúster de AWS CloudHSM asociado. Al programar unaeliminación de una CMK en un almacén de claves personalizado, AWS KMS elimina los metadatos de laCMK una vez pasado el período de espera. A continuación, AWS KMS hará todo lo posible por eliminarel material de claves correspondiente del clúster. AWS KMS no intenta eliminar material de claves de lascopias de seguridad del clúster.

Si AWS KMS no puede eliminar el material de claves, como, por ejemplo, cuando el almacén de clavesestá desconectado, AWS KMS escribe una entrada en los registros de AWS CloudTrail. La entradacontiene el ID de la CMK, el ID del clúster de AWS CloudHSM y el identificador de claves del material declaves.

Para eliminar el material de claves del clúster de AWS CloudHSM asociado, siga un procedimiento similaral siguiente. En este ejemplo se usa la AWS CLI y las herramientas de línea de comandos de AWSCloudHSM, pero puede usar la Consola de administración de AWS en lugar de la CLI.

1. Desconecte el almacén de claves personalizado, si no lo está todavía, e inicie sesión enkey_mgmt_util, tal como se explica en Cómo desconectar e iniciar sesión (p. 229).

2. Utilice el comando deleteKey de key_mgmt_util para eliminar una clave de los HSM del clúster.

Por ejemplo, este comando elimina la clave 262162 de los HSM del clúster. El identificador de clavesaparece en la entrada de registro de CloudTrail.

Command: deleteKey -k 262162

Cfm3DeleteKey returned: 0x00 : HSM Return: SUCCESS

227

Page 236: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo recuperar el material de claves eliminado de una CMK

Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 2 and err state 0x00000000 : HSM Return: SUCCESS

3. Cierre la sesión de key_mgmt_util y vuelva a conectar el almacén de claves personalizado tal como sedescribe en Cómo cerrar sesión y volver a conectar (p. 230).

Cómo recuperar el material de claves eliminado deuna CMKSi se elimina el material de claves de una clave maestra de cliente, la CMK no podrá utilizarse y todo eltexto cifrado con la CMK no podrá descifrarse. Esto puede ocurrir si el material de claves de una CMK enun almacén de claves personalizado se elimina del clúster de AWS CloudHSM asociado. Sin embargo, elmaterial de claves se puede recuperar.

Al crear una clave maestra de cliente (CMK) en un almacén de claves personalizado, AWS KMS iniciasesión en el clúster de AWS CloudHSM asociado y crea el material de claves para la CMK. Tambiéncambia la contraseña por un valor que solo conoce él y mantiene la sesión abierta mientras el almacén declaves personalizado esté conectado. Dado que solo puede eliminar la clave su propietario, es decir, el CUque creó la clave, es poco probable que la clave se elimine de los HSM por accidente.

Sin embargo, si el material de claves para una CMK se borra de los HSM en un clúster, el estado dela CMK podría cambiar a UNAVAILABLE. Si intenta usar la CMK para una operación criptográfica, laoperación da error con una excepción KMSInvalidStateException. Y lo que es más importante, todos losdatos cifrados con la CMK no pueden descifrarse.

Puede recuperar el material de claves eliminado, bajo determinadas circunstancias, creando un clúster apartir de una copia de seguridad que contenga el material de claves. Esta estrategia funciona únicamentesi se creó al menos una copia de seguridad mientras existió la clave y antes de que se eliminara.

Utilice el siguiente proceso para recuperar el material de claves.

1. Busque una copia de seguridad del clúster que incluya el material de claves. La copia de seguridadtambién debe incluir todos los usuarios y claves necesarios para respaldar el clúster y sus datoscifrados.

Utilice la operación DescribeBackups para elaborar una lista de las copias de seguridad de un clúster. Acontinuación, use la marca temporal de la copia de seguridad para seleccionar una copia de seguridad.Para limitar el resultado al clúster asociado con el almacén de claves personalizado, utilice el parámetroFilters, tal como se muestra en el siguiente ejemplo.

$ aws cloudhsmv2 describe-backups --filters clusterIds=<cluster ID>{ "Backups": [ { "ClusterId": "cluster-1a23b4cdefg", "BackupId": "backup-9g87f6edcba", "CreateTimestamp": 1536667238.328, "BackupState": "READY" }, ... ]}

2. Crear un clúster a partir de la copia de seguridad seleccionada. Compruebe que la copia de seguridadcontiene la clave eliminada y otros usuarios y claves necesarios para el clúster.

3. Desconecte el almacén de claves personalizado (p. 204) para poder editar sus propiedades.

228

Page 237: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo iniciar sesión como kmsuser

4. Edite el ID del clúster (p. 202) del almacén de claves personalizado. Escriba el ID del clúster creado apartir de la copia de seguridad. Puesto que el clúster comparte un historial de copias de seguridad conel clúster original, el nuevo ID del clúster debería ser válido.

5. Vuelva a conectar el almacén de claves personalizado (p. 204).

Cómo iniciar sesión como kmsuserPara crear y administrar el material de claves en el clúster de AWS CloudHSM asociado para el almacénde claves personalizado, AWS KMS usa la cuenta del usuario de criptografía (CU) kmsuser (p. 192).Cree la cuenta del CU kmsuser (p. 196) en el clúster y proporcione la contraseña a AWS KMS al crearel almacén de claves personalizado.

En general, AWS KMS administra la cuenta de kmsuser. Sin embargo, para algunas tareas, deberádesconectar el almacén de claves personalizado, iniciar sesión en el clúster con el CU kmsuser y utilizarcloudhsm_mgmt_util y las herramientas de línea de comandos key_mgmt_util.

Note

Mientras el almacén de claves personalizado esté desconectado, fallarán todos los intentos decrear claves maestras de cliente (CMK) en el almacén de claves personalizado o de usar CMKexistentes en operaciones criptográficas. Esta acción puede impedir que los usuarios almaceneninformación confidencial o que accedan a esta.

En este tema se explica cómo desconectar el almacén de claves personalizado e iniciar sesiónen (p. 229) como kmsuser, ejecutar la herramienta de línea de comandos de AWS CloudHSM y cerrarsesión y volver a conectar el almacén de claves personalizado (p. 230).

Temas• Cómo desconectar e iniciar sesión (p. 229)• Cómo cerrar sesión y volver a conectar (p. 230)

Cómo desconectar e iniciar sesiónSiga el siguiente procedimiento cada vez que deba iniciar sesión en un clúster asociado con el CUkmsuser.

1. Desconecte el almacén de claves personalizado, si no lo está ya. Puede usar la Consola deadministración de AWS o la API de AWS KMS.

Mientras la clave de cliente esté conectada, AWS KMS conserva la sesión como kmsuser. Esto evitaque inicie sesión como kmsuser o que cambie la contraseña de kmsuser.

Por ejemplo, este comando usa DisconnectCustomKeyStore para desconectar un almacén de clavesde ejemplo. Reemplace el ID del almacén de claves personalizado de ejemplo por uno válido.

$ aws kms disconnect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

2. Inicie cloudhsm_mgmt_util. Utilice el procedimiento que se describe en la sección Prepararse paraejecutar cloudhsm_mgmt_util de la AWS CloudHSM User Guide.

3. Inicie sesión en cloudhsm_mgmt_util en el clúster de AWS CloudHSM como responsable decriptografía (CO).

Por ejemplo, este comando inicia sesión como un CO denominado admin. Reemplace el nombre deusuario y la contraseña del CO de ejemplo por valores válidos.

aws-cloudhsm>loginHSM CO admin <password>

229

Page 238: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo iniciar sesión como kmsuser

loginHSM success on server 0(10.0.2.9)loginHSM success on server 1(10.0.3.11)loginHSM success on server 2(10.0.1.12)

4. Use el comando changePswd para cambiar la contraseña de la cuenta de kmsuser por una queconozca. (AWS KMS rota la contraseña cuando conecta el almacén de claves personalizado). Lacontraseña debe contener entre 7 y 32 caracteres alfanuméricos, distingue entre mayúsculas yminúsculas, y no puede tener caracteres especiales.

Por ejemplo, este comando cambia la contraseña de kmsuser a tempPassword.

aws-cloudhsm>changePswd CU kmsuser tempPassword

*************************CAUTION********************************This is a CRITICAL operation, should be done on all nodes in thecluster. Cav server does NOT synchronize these changes with thenodes on which this operation is not executed or failed, pleaseensure this operation is executed on all nodes in the cluster.****************************************************************

Do you want to continue(y/n)?yChanging password for kmsuser(CU) on 3 nodes

5. Inicie sesión en key_mgmt_util o cloudhsm_mgmt_util como kmsuser y use la contraseña que haestablecido. Para obtener instrucciones detalladas, consulte Introducción a cloudhsm_mgmt_util eIntroducción a key_mgmt_util. La herramienta que use dependerá de su tarea.

Por ejemplo, este comando inicia sesión en key_mgmt_util.

Command: loginHSM -u CU -s kmsuser -p tempPasswordCfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Error StatusNode id 0 and err state 0x00000000 : HSM Return: SUCCESSNode id 1 and err state 0x00000000 : HSM Return: SUCCESSNode id 2 and err state 0x00000000 : HSM Return: SUCCESS

Cómo cerrar sesión y volver a conectar1. Realice la tarea y, a continuación, cierre la sesión de la herramienta de línea de comandos. Si no

cierra la sesión, los intentos de volver a conectar al almacén de claves personalizado darán error.

Command: logoutHSMCfm3LogoutHSM returned: 0x00 : HSM Return: SUCCESS

Cluster Error StatusNode id 0 and err state 0x00000000 : HSM Return: SUCCESSNode id 1 and err state 0x00000000 : HSM Return: SUCCESS

2. Edite la configuración de la contraseña de kmsuser (p. 202) para el almacén de clavespersonalizado.

Esto le indica a AWS KMS la contraseña actual para el kmsuser en el clúster. Si se salta este paso,AWS KMS no podrá iniciar sesión en el clúster como kmsuser y todos los intentos para volver aconectar el almacén de claves personalizado darán error. Puede usar la Consola de administración deAWS o el parámetro KeyStorePassword de la operación UpdateCustomKeyStore.

Por ejemplo, este comando le indica a AWS KMS que la contraseña actual es tempPassword.Reemplace la contraseña de ejemplo por una real.

230

Page 239: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo iniciar sesión como kmsuser

$ aws kms update-custom-key-store --custom-key-store-id cks-1234567890abcdef0 --key-store-password tempPassword

3. Vuelva a conectar el almacén de claves personalizado a AWS KMS. Reemplace el ID del almacén declaves personalizado de ejemplo por uno válido. Durante el proceso de conexión, AWS KMS cambia lacontraseña de kmsuser por un valor que solo conoce él.

La operación ConnectCustomKeyStore devuelve un resultado rápidamente, pero el proceso deconexión puede tardar un rato. La respuesta inicial no indica que el proceso de conexión se hayarealizado correctamente.

$ aws kms connect-custom-key-store --custom-key-store-id cks-1234567890abcdef0

4. Para verificar que el almacén de claves personalizado está conectado, utilice la operaciónDescribeCustomKeyStores. Reemplace el ID del almacén de claves personalizado de ejemplo por unoválido.

En este ejemplo, el campo del estado de la conexión muestra que ahora el almacén de clavespersonalizado está conectado.

$ aws kms describe-custom-key-stores --custom-key-store-id cks-1234567890abcdef0{ "CustomKeyStores": [ "CustomKeyStoreId": "cks-1234567890abcdef0", "CustomKeyStoreName": "ExampleKeyStore", "CloudHsmClusterId": "cluster-1a23b4cdefg", "TrustAnchorCertificate": "<certificate string appears here>", "CreationDate": "1.499288695918E9", "ConnectionState": "CONNECTED" ],}

231

Page 240: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Conectar con AWS KMS a través deun punto de enlace de la VPC

Puede conectarse directamente con AWS KMS mediante un punto de enlace privado de una VPC en lugarde conectarse a través de Internet. Cuando se utiliza un punto de enlace de la VPC, la comunicación entrela VPC y AWS KMS se realiza en su totalidad dentro de la red de AWS.

AWS KMS admite puntos de enlace de interfaz de Amazon Virtual Private Cloud (Amazon VPC)proporcionados por https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html#what-is-privatelink. Cada punto de enlace de la VPC está representado por una o varias Interfaces de red elásticas(ENI) con direcciones IP privadas en las subredes de la VPC.

El punto de enlace de interfaz de la VPC conecta directamente la VPC con AWS KMS sin necesidad degateway de Internet, dispositivos NAT, conexiones de VPN ni conexiones de AWS Direct Connect. Lasinstancias de la VPC no necesitan direcciones IP públicas para comunicarse con AWS KMS.

Puede especificar el punto de enlace de la VPC mediante operaciones de la API de AWS KMS ycomandos de la AWS CLI. Por ejemplo, el siguiente comando utiliza el parámetro endpoint-url paraespecificar un punto de enlace de la VPC en un comando de AWS CLI para AWS KMS.

$ aws kms list-keys --endpoint-url https://-dfm9tr04.kms.us-east-1.vpce.amazonaws.com

Si utiliza los servidores de nombres de dominio predeterminados (AmazonProvidedDNS) y habilita losnombres de host DNS privados para el punto de enlace de la VPC, no necesita especificar la URL delpunto de enlace. AWS rellena el servidor de nombres de VPC con datos de zona privada; por lo que elpunto de enlace público de KMS (https://kms.<region>.amazonaws.com) se resuelve en el puntode enlace de la VPC privada. Para habilitar esta característica cuando utiliza sus propios servidores denombres, reenvíe las solicitudes para el dominio de KMS al servidor de nombres de VPC.

También puede utilizar logs de AWS CloudTrail para auditar el uso de las claves de KMS a través delpunto de enlace de la VPC. Además, puede utilizar las condiciones de las políticas de IAM y de clavespara denegar el acceso a las solicitudes que no procedan de una VPC o un punto de enlace de la VPCespecíficos.

Note

Actúe con precaución al crear políticas de IAM y de claves basadas en el punto de enlace de laVPC. Si una declaración de política requiere que las solicitudes procedan de una VPC o un puntode enlace de la VPC determinados, las solicitudes de los servicios de AWS integrados que utilicenla CMK en su nombre podrían producir un error. Para obtener ayuda, consulte Usar condicionesde punto de enlace de la VPC en políticas con permisos de AWS KMS (p. 98).

Regiones de AWS compatibles

AWS KMS admite puntos de enlace de la VPC en todas las regiones de AWS en las que estén disponiblesAmazon VPC y AWS KMS.

Temas• Crear un punto de enlace de la VPC de AWS KMS (p. 233)

232

Page 241: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear un punto de enlace de la VPC

• Conectar con un punto de enlace de la VPC de AWS KMS (p. 236)• Utilizar un punto de enlace de la VPC en una instrucción de política (p. 236)• Auditar el uso de CMK para la VPC (p. 238)

Crear un punto de enlace de la VPC de AWS KMSPara crear un punto de enlace de interfaz en la VPC, utilice el servicio de punto de enlace de la VPC deKMS de cada región. Puede crear un punto de enlace de la VPC en la Consola de administración de AWSo mediante la AWS CLI o la API de Amazon EC2.

Temas• Crear un punto de enlace de la VPC de AWS KMS (consola de la VPC) (p. 233)• Crear un punto de enlace de la VPC de AWS KMS (AWS CLI) (p. 234)

Crear un punto de enlace de la VPC de AWS KMS(consola de la VPC)1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon VPC en https://

console.aws.amazon.com/vpc/.2. En la barra de navegación, utilice el selector de regiones para elegir la región.3. En el panel de navegación, elija Endpoints. En el panel principal, elija Create Endpoint.4. En Service category, elija AWS services.5. En la lista Service Name, elija la entrada para el punto de enlace de interfaz de AWS KMS de

la región. Por ejemplo, en la región EE.UU. Este (Norte de Virginia), el nombre de la entrada escom.amazonaws.us-east-1.kms.

6. En VPC, seleccione una VPC. El punto de enlace se crea en la VPC seleccionada.7. En Subnets, elija una subred de cada zona de disponibilidad que desee incluir.

El punto de enlace de la VPC puede abarcar varias zonas de disponibilidad. Se creará una interfazde red elástica (ENI) para el punto de enlace de la VPC en cada una de las subredes seleccionadas.Cada ENI tiene un nombre de host DNS y una dirección IP privada.

8. En este paso, puede habilitar un nombre de host DNS privado para el punto de enlace de la VPC. Siselecciona la opción Enable Private DNS Name, el nombre de host de DNS estándar de AWS KMS(https://kms.<region>.amazonaws.com) se resuelve en el punto de enlace de la VPC.

Esta opción facilita el uso del punto de enlace de la VPC. La CLI y los SDK de AWS KMS utilizan elnombre de host DNS de AWS KMS estándar de forma predeterminada, por lo que no es necesarioespecificar la URL del punto de enlace de la VPC en las aplicaciones y los comandos.

Esta característica solo funciona cuando los atributos enableDnsHostnames y enableDnsSupportde la VPC se establecen en true. Para definir estos atributos, actualice la compatibilidad de DNSpara la VPC.

Para habilitar un nombre de host DNS privado, en Enable Private DNS Name, seleccione Enable forthis endpoint.

9. En Security group, seleccione o cree un grupo de seguridad.

Puede utilizar grupos de seguridad para controlar el acceso al punto de conexión, de forma similar acomo lo haría con un firewall.

233

Page 242: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear un punto de enlace de laVPC de AWS KMS (AWS CLI)

10. Elija Create endpoint.

Los resultados muestran el punto de enlace de la VPC, incluidos el ID de este y los nombres de DNS quese utilizan para conectarse al punto de enlace de la VPC (p. 236).

También puede utilizar las herramientas de Amazon VPC para ver y administrar el punto de enlace,incluyendo la modificación de sus propiedades, su eliminación y la creación de una notificación para elpunto de enlace. Para obtener instrucciones, consulte Puntos de enlace de la VPC de tipo interfaz.

Crear un punto de enlace de la VPC de AWS KMS(AWS CLI)Puede utilizar el comando create-vpc-endpoint en la AWS CLI para crear un punto de enlace de la VPCque se conecte con AWS KMS.

Asegúrese de utilizar interface como tipo de punto de enlace de la VPC y un valor de nombre deservicio que incluya kms y la región donde esté ubicada la VPC.

El comando no incluye el parámetro PrivateDnsNames, ya que su valor predeterminado es true. Paradesactivar esta opción, puede incluir el parámetro con el valor false. Los nombres de DNS privadossolo están disponibles si los atributos enableDnsHostnames y enableDnsSupport de la VPC se hanestablecido en true. Para establecer estos atributos, utilice la operación ModifyVpcAttribute.

234

Page 243: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear un punto de enlace de laVPC de AWS KMS (AWS CLI)

En el siguiente diagrama se muestra la sintaxis del comando.

aws ec2 create-vpc-endpoint --vpc-id <vpc id> \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.<region>.kms \ --subnet-ids <subnet id> \ --security-group-id <security group id>

Por ejemplo, este comando crea un punto de enlace de la VPC en la VPC con el ID , que se encuentra enla región us-east-1. Especifica un solo ID de subred para representar las zonas de disponibilidad, peroes posible especificar varios. También es obligatorio el ID del grupo de seguridad.

La salida incluye el ID del punto de enlace de la VPC y los nombres de DNS que se utilizan paraconectarse al nuevo punto de enlace de la VPC.

$ aws ec2 create-vpc-endpoint --vpc-id \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.us-west-1.kms \ --subnet-ids \ --security-group-id sg-1a2b3c4d

{ "VpcEndpoint": { "PolicyDocument": "{\n \"Statement\": [\n {\n \"Action\": \"*\", \n \"Effect\": \"Allow\", \n \"Principal\": \"*\", \n \"Resource\": \"*\"\n }\n ]\n}", "VpcId": "", "NetworkInterfaceIds": [ "eni-bf8aa46b" ], "SubnetIds": [ "" ], "PrivateDnsEnabled": true, "State": "pending", "ServiceName": "com.amazonaws.us-east-1.kms", "RouteTableIds": [], "Groups": [ { "GroupName": "default", "GroupId": "sg-1a2b3c4d" } ], "VpcEndpointId": "", "VpcEndpointType": "Interface", "CreationTimestamp": "2017-09-05T20:14:41.240Z", "DnsEntries": [ { "HostedZoneId": "Z7HUB22UULQXV", "DnsName": "-dfm9tr04.kms.us-east-1.vpce.amazonaws.com" }, { "HostedZoneId": "Z7HUB22UULQXV", "DnsName": "-dfm9tr04-us-east-1a.kms.us-east-1.vpce.amazonaws.com" }, { "HostedZoneId": "Z1K56Z6FNPJRR", "DnsName": "kms.us-east-1.amazonaws.com" } ] }}

235

Page 244: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConectar con un punto de enlace de la VPC

Conectar con un punto de enlace de la VPC deAWS KMS

Puede conectarse con AWS KMS a través del punto de enlace de la VPC mediante la AWS CLI o un SDKde AWS. Para especificar el punto de enlace de la VPC, utilice su nombre de DNS.

Por ejemplo, este comando list-keys utiliza el parámetro endpoint-url para especificar el punto deenlace de la VPC. Para utilizar un comando de este tipo, sustituya el ID del punto de enlace de la VPC delejemplo por uno de su cuenta.

aws kms list-keys --endpoint-url https://-dfm9tr04.kms.us-east-1.vpce.amazonaws.com

Si ha habilitado los nombres de host privados al crear el punto de enlace de la VPC, no es necesario queespecifique la URL de este en los comandos de la CLI ni en la configuración de la aplicación. El nombrede host de DNS estándar de AWS KMS (https://kms.<region>.amazonaws.com) se resuelve en el puntode enlace de la VPC. La AWS CLI y los SDK utilizan este nombre de host de forma predeterminada, por loque puede empezar a utilizar el punto de enlace de la VPC sin necesidad de cambiar nada en los scripts nien la aplicación.

Para utilizar nombres de host privados, los parámetros enableDnsHostnames y enableDnsSupportde la VPC deben tener el valor true. Para establecer estos atributos, utilice la operaciónModifyVpcAttribute.

Utilizar un punto de enlace de la VPC en unainstrucción de política

Puede usar las políticas de IAM y las políticas de claves de AWS KMS para controlar el acceso a susclaves maestras del cliente (CMK) de AWS KMS. También puede utilizar claves de condición globales pararestringir estas políticas en función del punto de enlace de la VPC o la VPC de la solicitud.

• Utilice la clave de condición aws:sourceVpce para conceder o restringir el acceso a una CMK de AWSKMS en función del punto de enlace de la VPC.

• Utilice la clave de condición aws:sourceVpc para conceder o restringir el acceso a una CMK de AWSKMS en función de la VPC que aloja el punto de enlace privado.

Note

Actúe con precaución al crear políticas de IAM y de claves basadas en el punto de enlace de laVPC. Si una declaración de política requiere que las solicitudes procedan de una VPC o un puntode enlace de la VPC determinados, las solicitudes de los servicios de AWS integrados que utilicenla CMK en su nombre podrían producir un error. Para obtener ayuda, consulte Usar condicionesde punto de enlace de la VPC en políticas con permisos de AWS KMS (p. 98).Además, la clave de condición aws:sourceIP no es efectiva si la solicitud procede de un puntode enlace de Amazon VPC. Para restringir las solicitudes a un punto de enlace de la VPC, utilicelas claves de condición aws:sourceVpce o aws:sourceVpc. Para obtener más información,consulte Puntos de conexión de la VPC - Control del uso de los puntos de conexión en la Guía delusuario de Amazon VPC.

Por ejemplo, la siguiente política de claves de ejemplo permite a un usuario realizar operaciones de cifradocon una CMK solo cuando la solicitud llega a través del punto de enlace de la VPC especificado.

236

Page 245: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUtilizar un punto de enlace de la

VPC en una instrucción de política

Cuando un usuario realiza una solicitud a AWS KMS, el ID del punto de enlace de la VPC de la solicitud secompara con el valor de la clave de condición aws:sourceVpce de la política. Si no coinciden, la solicitudse deniega.

Para utilizar una política como esta, sustituya el ID de la cuenta de AWS del marcador de posición y los IDdel punto de enlace de la VPC por valores válidos para su cuenta.

{ "Id": "example-key-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM user permissions", "Effect": "Allow", "Principal": {"AWS":["111122223333"]}, "Action": ["kms:*"], "Resource": "*" }, { "Sid": "Restrict usage to my VPC endpoint", "Effect": "Deny", "Principal": "*", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "" } } }

]}

También puede utilizar la clave de condición aws:sourceVpc para restringir el acceso a las CMK enfunción de la VPC en la que reside el punto de enlace.

La siguiente política de claves de ejemplo permite comandos que administran la CMK solo cuandoproceden de vpc-12345678. Además, permite comandos que utilizan la CMK para operacionescriptográficas únicamente si proceden de vpc-2b2b2b2b. Podría utilizar una política como esta en casode que una aplicación se ejecute en una VPC, pero utiliza una segunda VPC aislada para funciones deadministración.

Para utilizar una política como esta, sustituya el ID de la cuenta de AWS del marcador de posición y los IDdel punto de enlace de la VPC por valores válidos para su cuenta.

{ "Id": "example-key-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow administrative actions from vpc-12345678", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Create*","kms:Enable*","kms:Put*","kms:Update*", "kms:Revoke*","kms:Disable*","kms:Delete*",

237

Page 246: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAuditar el uso de CMK para la VPC

"kms:TagResource", "kms:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "Allow key usage from vpc-2b2b2b2b", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "Allow read actions from everywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Describe*","kms:List*","kms:Get*" ], "Resource": "*", } ]}

Auditar el uso de CMK para la VPCCuando una solicitud a AWS KMS utiliza un punto de enlace de la VPC, el ID de este aparece en laentrada de log de AWS CloudTrail (p. 318) que registra la solicitud. Puede utilizar el ID del punto deenlace para auditar el uso del punto de enlace de la VPC de AWS KMS.

Por ejemplo, esta entrada de log de ejemplo registra una solicitud GenerateDataKey que ha utilizado elpunto de enlace de la VPC. El campo vpcEndpointId aparece al final de la entrada de log.

{ "eventVersion":"1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "111122223333", "userName": "Alice" }, "eventTime":"2018-01-16T05:46:57Z", "eventSource":"kms.amazonaws.com", "eventName":"GenerateDataKey", "awsRegion":"eu-west-1", "sourceIPAddress":"172.01.01.001", "userAgent":"aws-cli/1.14.23 Python/2.7.12 Linux/4.9.75-25.55.amzn1.x86_64 botocore/1.8.27",

238

Page 247: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAuditar el uso de CMK para la VPC

"requestParameters":{ "keyId":"", "numberOfBytes":128 }, "responseElements":null, "requestID":"a9fff0bf-fa80-11e7-a13c-afcabff2f04c", "eventID":"77274901-88bc-4e3f-9bb6-acf1c16f6a7c", "readOnly":true, "resources":[{ "ARN":"arn:aws:kms:eu-west-1:111122223333:key/", "accountId":"111122223333", "type":"AWS::KMS::Key" }], "eventType":"AwsApiCall", "recipientAccountId":"111122223333", "vpcEndpointId": ""}

239

Page 248: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Usar el cifrado TLS híbridopostcuántico con AWS KMS

AWS Key Management Service (AWS KMS) ahora admite una opción de intercambio híbrido postcuánticode claves para el protocolo de cifrado de red Seguridad de capa de transporte (TLS). Puede utilizar estaopción de TLS cuando se conecte a los puntos de enlace de la API de KMS. Estamos ofreciendo estacaracterística antes de que se estandaricen los algoritmos postcuánticos para que pueda comenzara probar el efecto de estos protocolos de intercambio de claves en las llamadas a AWS KMS. Estascaracterísticas opcionales de intercambio híbrido postcuántico de claves son al menos tan seguras como elcifrado TLS que utilizamos hoy en día y es muy probable que aporten beneficios de seguridad adicionales.Sin embargo, afectan a la latencia y a la velocidad si las comparamos con los protocolos clásicos deintercambio de claves que se utilizan hoy en día.

Los datos que envía a AWS Key Management Service (AWS KMS) están protegidos en tránsito por elcifrado proporcionado por una conexión TLS (Seguridad de capa de transporte). Los conjuntos de cifradoclásicos que AWS KMS admite para las sesiones de TLS convierten en inviables los ataques de fuerzabruta en los mecanismos de intercambio de claves con la tecnología actual. Sin embargo, si la informáticacuántica a gran escala tiene efectos prácticos en el futuro, los conjuntos de cifrado clásicos utilizados enlos mecanismos de intercambio de claves TLS serán susceptibles a estos ataques. Si va a desarrollaraplicaciones que dependen de la confidencialidad a largo plazo de los datos transmitidos a través de unaconexión TLS, debe considerar un plan para migrar a la criptografía postcuántica antes de que los equiposcuánticos a gran escala estén disponibles para su uso. AWS está trabajando para prepararse para estefuturo y queremos que usted también esté bien preparado.

Para proteger los datos cifrados hoy frente a posibles ataques futuros, AWS trabaja con la comunidadcriptográfica en el desarrollo de algoritmos resistentes a la informática cuántica o postcuánticos. Hemosimplementado conjuntos de cifrado de intercambio híbrido postcuántico de claves en los puntos de enlacede AWS KMS. Estos conjuntos de cifrado híbridos, que combinan elementos clásicos y postcuánticos,garantizan que su conexión TLS sea al menos tan segura como con los conjuntos clásicos de cifrado.

Estos conjuntos de cifrado híbridos están disponibles para su uso en las cargas de trabajo de producciónen la mayoría de las regiones de AWS (p. 241). Sin embargo, dado que las características derendimiento y los requisitos de ancho de banda de los conjuntos de cifrado híbridos son diferentes de losmecanismos clásicos de intercambio de claves, le recomendamos que los pruebe en las llamadas a la APIde AWS KMS (p. 244) en condiciones diferentes.

Comentarios

Como siempre, agradecemos sus comentarios y su participación en nuestros repositorios de códigoabierto. Nos gustaría especialmente saber cómo interactúa su infraestructura con esta nueva variante deltráfico TLS.

• Para proporcionar comentarios sobre este tema, utilice el enlace Comentarios situado en la esquinainferior derecha de esta página. También puede abrir una incidencia o crear una solicitud de extracciónen el repositorio aws-kms-developer-docs de GitHub.

• Estamos desarrollando estos conjuntos de cifrado híbridos en código abierto en el repositorio s2n deGitHub. Para proporcionar comentarios sobre la usabilidad de los conjuntos de cifrado, o para compartirnuevas condiciones o resultados de pruebas, abra una incidencia en el repositorio s2n.

• Vamos a crear ejemplos de código sobre el uso de TLS híbrido postcuántico con AWS KMS en elrepositorio de GitHub aws-kms-pq-tls-example. Para hacer preguntas o compartir ideas acerca de cómo

240

Page 249: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAcerca del cifrado TLS postcuántico

configurar su cliente HTTP o el cliente de AWS KMS para utilizar los conjuntos de cifrado híbridos, abrauna incidencia en el repositorio aws-kms-pq-tls-example.

Regiones de AWS admitidas

El cifrado TLS postcuántico para AWS KMS está disponible en todas las regiones de AWS excepto enAWS GovCloud (EE.UU. Este), AWS GovCloud (EE.UU. Oeste), China (Pekín) y China (Ningxia).

Para ver una lista de puntos de enlace de AWS KMS de cada región de AWS, consulte Cuotas y puntosde enlace de AWS Key Management Service en la Referencia general de Amazon Web Services. Paraobtener información sobre los puntos de enlace de FIPS, consulte Puntos de enlace de servicio de AWS enla Referencia general de Amazon Web Services..

Acerca del intercambio de claves postcuánticohíbrido en TLS

AWS KMS admite conjuntos de cifrado de intercambio híbrido postcuántico de claves. Puede utilizar AWSSDK para Java 2.x y el runtime común de AWS para configurar un cliente HTTP y usar estos conjuntosde cifrado. A partir de ese momento, cada vez que se conecte a un punto de enlace de AWS KMS con sucliente HTTP, se utilizarán los conjuntos de cifrado híbridos.

Este cliente HTTP utiliza s2n, que es una implementación de código abierto del protocolo TLS. s2n incluyeel módulo pq-crypto, que contiene implementaciones de algoritmos híbridos postcuánticos para el cifradoen tránsito.

Los conjuntos de cifrado híbridos de s2n se implementan solo para el intercambio de claves, no para elcifrado directo de datos. Durante el intercambio de claves, el cliente y el servidor calculan la clave queutilizarán para cifrar y descifrar los datos en la red.

Los algoritmos que usa s2n son una combinación de Elliptic Curve Diffie-Hellman (ECDH), un algoritmoclásico de intercambio de claves que se utiliza actualmente en TLS, y Bit Flipping Key Encapsulation(BIKE), una propuesta de algoritmo postcuántico. Este mecanismo utiliza cada uno de los algoritmos deforma independiente para generar una clave. Luego combina las dos claves criptográficamente. Con s2n,puede configurar un cliente HTTP con una preferencia de cifrado que coloque ECDH con BIKE en primerlugar en la lista de preferencias. Los algoritmos clásicos de intercambio de claves se incluyen en la lista depreferencias para garantizar la compatibilidad, pero están en una posición inferior en esta lista.

Si la investigación en curso revela que el algoritmo BIKE carece de la seguridad postcuántica prevista, laclave híbrida seguirá siendo al menos tan segura como la clave ECDH actualmente en uso. El InstitutoNacional de Estándares y Tecnología (NIST) aún no ha estandarizado los algoritmos postcuánticos.Todavía están evaluando los enfoques de los candidatos. Hasta que termine ese proceso, recomendamosusar algoritmos híbridos, en lugar de usar solo algoritmos postcuánticos.

Usar el cifrado TLS híbrido postcuántico con AWSKMS

Puede usar el cifrado TLS híbrido postcuántico para sus llamadas a AWS KMS. Cuando configure elentorno de prueba del cliente HTTP, tenga en cuenta la siguiente información:

Cifrado en tránsito

241

Page 250: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo configurarlo

Los conjuntos de cifrado híbridos de s2n se utilizan únicamente para el cifrado en tránsito. Protegen losdatos mientras viajan desde su cliente hasta el punto de enlace de AWS KMS. AWS KMS no utiliza estosconjuntos de cifrado para cifrar datos con claves maestras del cliente (CMK).

En lugar de ello, cuando AWS KMS cifra sus datos con CMK, utiliza criptografía simétrica con claves de256 bits y el algoritmo Advanced Encryption Standard in Galois Counter Mode (AES-GCM), que ya esresistente a la informática cuántica. Los futuros e hipotéticos ataques de informática cuántica a gran escalaa textos cifrados creados con claves AES-GCM de 256 bits reducen la seguridad nominal de la clave a 128bits. Este nivel de seguridad es suficiente para hacer inviables los ataques de fuerza bruta contra textoscifrados de AWS KMS.

Sistemas compatibles

El uso de los conjuntos de cifrado híbridos de s2n solo se admite actualmente en sistemas Linux. Además,estos conjuntos de cifrado solo se admiten en los SDK compatibles con el runtime común de AWS, comoAWS SDK para Java 2.x. Para ver un ejemplo, consulte Cómo configurar el cifrado TLS postcuánticohíbrido (p. 242).

Puntos de enlace de AWS KMS

Cuando utilice los conjuntos de cifrado híbridos, use el punto de enlace de AWS KMS estándar. Losconjuntos de cifrado híbridos de s2n no son compatibles con los puntos de enlace validados por FIPS140-2 de AWS KMS. Los algoritmos postcuánticos no están permitidos en un módulo criptográficovalidado.

Cuando configura un cliente HTTP con la preferencia de cifrado híbrido postcuántico en s2n, losmecanismos de cifrado postcuántico son los primeros en la lista de preferencias de cifrado. Sin embargo,la lista de preferencias incluye los cifrados clásicos no híbridos en una posición inferior en el orden deprioridad por motivos de compatibilidad. Si fuera a utilizar esta preferencia de cifrado con un punto deenlace validado por FIPS 140-2 de AWS KMS, s2n negocia un cifrado de intercambio de claves clásico nohíbrido.

Para ver una lista de puntos de enlace de AWS KMS de cada región de AWS, consulte Cuotas y puntosde enlace de AWS Key Management Service en la Referencia general de Amazon Web Services. Paraobtener información sobre los puntos de enlace de FIPS, consulte Puntos de enlace de servicio de AWS enla Referencia general de Amazon Web Services.

Rendimiento previsto

Nuestras primeras pruebas de referencia muestran que los conjuntos de cifrado híbridos de s2n son máslentos que los conjuntos de cifrado TLS clásicos. El efecto varía según el perfil de red, la velocidad de laCPU, el número de núcleos y la frecuencia de llamadas. Para obtener los resultados de las pruebas derendimiento, consulte Post-quantum TLS now supported in AWS KMS.

Cómo configurar el cifrado TLS postcuántico híbridoEn este procedimiento, se obtiene la rama aws-crt-dev-preview (vista previa para desarrolladores) deAWS SDK para Java 2.x de su repositorio de GitHub. A continuación, se crea un cliente del runtime comúnde AWS y se añada el runtime común de AWS a las dependencias. A continuación, puede configurar uncliente HTTP que utilice la preferencia de cifrado híbrido postcuántico y crear un cliente de AWS KMS queutilice el cliente HTTP.

Para ver ejemplos completos y funcionales de cómo configurar y usar el cifrado TLS híbrido postcuánticocon AWS KMS, consulte el repositorio aws-kms-pq-tls-example.

1. Clone la rama de vista previa para desarrolladores (aws-crt-dev-preview) de AWS SDK paraJava 2.x.

242

Page 251: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo configurarlo

AWS SDK para Java 2.x se está desarrollando en el repositorio aws-sdk-java-v2 de GitHub.

Note

La rama aws-crt-dev-preview es una versión beta. El uso que haga de esta bibliotecaestá sujeto a la sección 1.10 ("Participación en servicios beta") de las Condiciones de serviciode AWS.

$ git clone [email protected]:aws/aws-sdk-java-v2.git --branch aws-crt-dev-preview

2. Instale y cree el JAR del cliente del runtime común de AWS (aws-crt-client).

$ cd aws-sdk-java-v2$ mvn install -Pquick

3. Añada el cliente del runtime común de AWS a sus dependencias de Maven. Le recomendamos queutilice la última versión disponible.

Por ejemplo, esta instrucción añade la versión 2.10.7-SNAPSHOT del cliente del runtime común deAWS a sus dependencias de Maven.

<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> <version>2.10.7-SNAPSHOT</version></dependency>

4. Para habilitar los conjuntos de cifrado híbrido postcuántico, añada AWS SDK para Java 2.x a suproyecto e inícielo. A continuación, habilite los conjuntos de cifrado híbridos como se muestra en elsiguiente ejemplo.

Este código garantiza que esté trabajando en un sistema compatible con el conjunto decifrado híbrido. A continuación, el código crea un cliente HTTP con la preferencia de cifradoTLS_CIPHER_KMS_PQ_TLSv1_0_2019_06, que da prioridad al conjunto de cifrado híbrido ECDHcon BIKE. Por último, crea un cliente de AWS KMS que utiliza el cliente HTTP para la transmisión dedatos.

Este código utiliza el cliente asincrónico de AWS KMS, KmsAsyncClient, que llama a AWS KMS deforma asíncrona. Para obtener información acerca de este cliente, consulte KmsAsyncClient Javadoc.

Una vez completado este código, las solicitudes de la API de AWS KMS en el cliente de AWS KMSasincrónico utilizan el conjunto de cifrado híbrido de TLS.

// Check platform supportif(!TLS_CIPHER_KMS_PQ_TLSv1_0_2019_06.isSupported()){ throw new RuntimeException("Hybrid post-quantum cipher suites are not supported on this platform");}

// Configure HTTP client SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder() .tlsCipherPreference(TLS_CIPHER_KMS_PQ_TLSv1_0_2019_06) .build();

// Create the KMS async clientKmsAsyncClient kmsAsync = KmsAsyncClient.builder() .httpClient(awsCrtHttpClient) .build();

5. Pruebe sus llamadas a KMS con cifrado TLS postcuántico.

243

Page 252: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCómo probarlo

Cuando llama a operaciones de la API de AWS KMS en el cliente de AWS KMS configurado, susllamadas se transmiten al punto de enlace de AWS KMS mediante TLS híbrido postcuántico. Paraprobar la configuración, ejecute una llamada a la API de KMS sencilla, como ListKeys.

ListKeysReponse keys = kmsAsync.listKeys().get();

Probar el cifrado TLS postcuántico híbrido con AWSKMS

Considere la posibilidad de ejecutar las siguientes pruebas con conjuntos de cifrado híbridos en lasaplicaciones que llaman a AWS KMS.

• Ejecute pruebas de carga y pruebas de rendimiento. Los conjuntos de cifrado híbridos funcionan demanera diferente que los algoritmos tradicionales de intercambio de claves. Es posible que tenga queajustar los tiempos de espera de conexión para permitir tiempos de negociación más prolongados. Si laejecución se realiza dentro de una función AWS Lambda, amplíe la configuración del tiempo de esperade ejecución.

• Intente conectarse desde diferentes ubicaciones. En función de la ruta de red que tome la solicitud, esposible que descubra que hosts intermedios, proxies o firewalls con inspección profunda de paquetes(DPI) bloquean la solicitud. Esto podría dar lugar a que se utilicen los nuevos conjuntos de cifrado en laparte ClientHello del protocolo TLS o a mensajes de intercambio de claves más grandes. Si le resultadifícil resolver estos problemas, trabaje con su equipo de seguridad o con los administradores de TI paraactualizar la configuración pertinente y desbloquear los nuevos conjuntos de cifrado TLS.

Obtenga más información sobre el cifrado TLSpostcuántico en AWS KMS

Para obtener más información acerca del uso de TLS híbrido poscuántico en AWS KMS, consulte lossiguientes recursos.

• Para obtener más información sobre el uso de conjuntos de cifrado TLS híbridos postcuánticos con AWSKMS, incluidos datos de rendimiento, consulte Post-quantum TLS now supported in AWS KMS.

• Para obtener información acerca de AWS SDK para Java 2.x, consulte Guía para desarrolladores deAWS SDK para Java 2.x y la entrada de blog AWS SDK para Java 2.x released.

• Para obtener información acerca de s2n, consulte Introducing s2n, a New Open Source TLSImplementation y Using s2n.

• Para obtener información sobre el proyecto de criptografía postcuántica del Instituto Nacional deEstándares y Tecnología (NIST), consulte Post-Quantum Cryptography.

• Para obtener información técnica acerca del uso del intercambio híbrido postcuántico de claves en TLS,consulte Hybrid Post-Quantum Key Encapsulation Methods (PQ KEM) for Transport Layer Security 1.2(TLS).

244

Page 253: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

Estado de una clave: efecto en suCMK

Las claves maestras de cliente (CMK) siempre están en uno de los siguientes estados: Enabled,Disabled, PendingImport, PendingDeletion o Unavailable.

En la siguiente tabla se muestra si se puede esperar que las operaciones de API de AWS KMS que seejecutan en una CMK en cada estado se realicen correctamente (✓), generen un error (X) o se realicencorrectamente solo en determinadas condiciones (?). El resultado a menudo difiere en el caso de las CMKcon material de claves importado.

Las CMK simétricas pueden tener el estado Enabled, Disabled, PendingImport, PendingDeletiono Unavailable. Las CMK asimétricas pueden estar en el estado de claves Enabled, Disabled oPendingDeletion.

El estado Unavailable se aplica solo a una CMK de un almacén de claves personalizadas (p. 189).Una CMK en un almacén de claves personalizadas tiene el estado Unavailable cuando el almacén declaves personalizadas se desconecta de forma intencionada de su clúster de AWS CloudHSM. Puede ver yadministrar las CMK no disponibles, pero no puede usarlas en operaciones criptográficas.

Las siguientes operaciones de API no aparecen en la tabla, ya que no utilizan una CMK existente.

• ConnectCustomKeyStore• CreateCustomKeyStore• CreateKey• DeleteCustomKeyStore• DescribeCustomKeyStores• DisconnectCustomKeyStore• GenerateRandom• UpdateCustomKeyStore

API Habilitado Deshabilitada Importaciónpendiente

Eliminaciónpendiente

No disponible

CancelKeyDeletion

[4] [4] [4] [4], [13]

CreateAlias

[3]

CreateGrant

[1] [5] [2] o [3]

245

Page 254: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

API Habilitado Deshabilitada Importaciónpendiente

Eliminaciónpendiente

No disponible

Decrypt

[1] [5] [2] o [3] [11]

DeleteAlias

DeleteImportedKeyMaterial

[9] [9] (sin efecto) [9] [9]

DescribeKey

DisableKey

[5] [3] [12]

DisableKeyRotation

[7] [1] o [7] [6] [3] o [7] [7]

EnableKey

[5] [3] [12]

EnableKeyRotation

[7] [1] o [7] [6] [3] o [7] [7]

Encrypt

[1] [5] [2] o [3] [11]

GenerateDataKey

[1] [5] [2] o [3] [11]

GenerateDataKeyPair

[1] [5] [2] o [3] [11]

246

Page 255: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

API Habilitado Deshabilitada Importaciónpendiente

Eliminaciónpendiente

No disponible

GenerateDataKeyPairWithoutPlaintext

[1] [5] [2] o [3] [11]

GenerateDataKeyWithoutPlaintext

[1] [5] [2] o [3] [11]

GetKeyPolicy

GetKeyRotationStatus

[7] [7] [6] [7] [7]

GetParametersForImport

[9] [9] [8] o [9] [9]

GetPublicKey

[1]

N/A

[2] o [3]

N/A

ImportKeyMaterial

[9] [9] [8] o [9] [9]

ListAliases

ListGrants

ListKeyPolicies

ListKeys

ListResourceTags

ListRetirableGrants

PutKeyPolicy

247

Page 256: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

API Habilitado Deshabilitada Importaciónpendiente

Eliminaciónpendiente

No disponible

ReEncrypt

[1] [5] [2] o [3] [11]

RetireGrant

RevokeGrant

ScheduleKeyDeletion

[3]

Sign

[1]

N/A

[2] o [3]

N/A

TagResource

[3]

UnTagResource

[3]

UpdateAlias

[10]

UpdateKeyDescription

[3]

Verificar

[1]

N/A

[2] o [3]

N/A

Detalles de la tabla

• [1] DisabledException: <CMK ARN> is disabled.• [2] DisabledException: <CMK ARN> is pending deletion.• [3] KMSInvalidStateException: <CMK ARN> is pending deletion.

248

Page 257: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladores

• [4] KMSInvalidStateException: <CMK ARN> is not pending deletion.• [5] KMSInvalidStateException: <CMK ARN> is pending import.• [6] UnsupportedOperationException: <CMK ARN> origin is EXTERNAL which is notvalid for this operation.

• [7] Si la CMK tiene material de claves importado o está en un almacén de claves personalizado:UnsupportedOperationException.

• [8] Si la CMK tiene material de claves importado: KMSInvalidStateException.• [9] Si la CMK no puede tener o no tiene material de claves importado:UnsupportedOperationException.

• [10] Si la CMK de origen está pendiente de eliminación, el comando se ejecuta satisfactoriamente.Si la CMK de destino está pendiente de eliminación, el comando genera el error:KMSInvalidStateException : <CMK ARN> is pending deletion.

• [11] KMSInvalidStateException: <CMK ARN> is unavailable. No puede realizar estaoperación en una CMK no disponible.

• [12] La operación se ha realizado correctamente pero el estado de la CMK no cambiará hasta que estédisponible.

• [13] Mientras una CMK en el almacén de claves personalizado esté pendiente de eliminación, su estadode clave seguirá siendo PendingDeletion incluso si la CMK no está disponible. Esto permite cancelarla eliminación de la CMK en cualquier momento durante el período de espera.

249

Page 258: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAWS CloudTrail

Cómo los servicios de AWS usanAWS KMS

Muchos servicios de AWS utilizan AWS KMS para admitir el cifrado de los datos. Cuando un serviciode AWS se integra con AWS KMS, puede utilizar las claves principales del cliente (CMK) en su cuentapara proteger los datos que el servicio recibe, almacena o administra automáticamente. Para ver la listacompleta de los servicios de AWS que están integrados con AWS KMS, consulte Integración con losservicios de AWS.

En los siguientes temas se explica en detalle cómo determinados servicios usan AWS KMS, incluidas lasCMK que admiten, cómo administran las claves de datos, los permisos que necesitan y cómo realizar elseguimiento del uso que hace cada servicio de las CMK de su cuenta.

Important

Los servicios de AWS que se integran con AWS KMS utilizan CMK simétricas para cifrarsus datos. Estos servicios no admiten cifrado con CMK asimétricas. Para obtener ayudapara determinar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas yasimétricas (p. 40).

Cómo AWS CloudTrail usa AWS KMSPuede utilizar AWS CloudTrail para registrar las llamadas a la API de AWS y otra actividad de su cuenta deAWS y para guardar la información registrada en los archivos de registro en un bucket de Amazon SimpleStorage Service (Amazon S3) de su elección. De forma predeterminada, los archivos de registro que envíaCloudTrail a su bucket de S3 se cifran con el cifrado en el servidor con claves de cifrado administradaspor Amazon S3 (SSE-S3). Pero, en su lugar, puede elegir utilizar el cifrado en el servidor con clavesadministradas por AWS KMS (SSE-KMS). Para obtener información sobre cómo cifrar los archivos deregistro de CloudTrail con AWS KMS, consulte Cifrado de archivos de registro de CloudTrail con clavesadministradas por AWS KMS (SSE-KMS) en la AWS CloudTrail User Guide.

Important

AWS CloudTrail y Amazon S3 solo admiten claves maestras de cliente (CMK) simétricas (p. 144).No puede usar una CMK asimétrica (p. 144) para cifrar sus registros de CloudTrail. Para obtenerayuda para determinar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricasy asimétricas (p. 40).

Temas• Conocer cuándo se usa su CMK (p. 250)• Conocer la frecuencia con que se usa su CMK (p. 254)

Conocer cuándo se usa su CMKEl cifrado de los archivos de registro de CloudTrail con AWS KMS se basa en la característica de AmazonS3 denominada cifrado en el servidor con claves administradas por AWS KMS (SSE-KMS). Para obtenermás información sobre SSE-KMS, consulte Cómo Amazon Simple Storage Service (Amazon S3) usa AWSKMS (p. 289) en esta guía o Proteger los datos utilizando cifrado en el servidor con claves administradaspor AWS KMS (SSE-KMS) en la Guía para desarrolladores de Amazon Simple Storage Service.

250

Page 259: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConocer cuándo se usa su CMK

Al configurar AWS CloudTrail para utilizar SSE-KMS para cifrar los archivos de registro, CloudTrail yAmazon S3 usan la clave maestra de cliente (CMK) de KMS al realizar determinadas acciones con esosservicios. En las secciones siguientes se explica cuándo y cómo dichos servicios pueden utilizar su CMK yse proporciona información adicional que puede utilizar para validar esta explicación.

Acciones que provocan que CloudTrail y Amazon S3 usen su CMK• Configure CloudTrail para cifrar los archivos de registro con la clave maestra de cliente

(CMK) (p. 251)• CloudTrail guarda un archivo de registro en su bucket de S3 (p. 252)• Obtenga un archivo de registro cifrado del bucket de S3 (p. 253)

Configure CloudTrail para cifrar los archivos de registro con laclave maestra de cliente (CMK)Al actualizar la configuración de CloudTrail para utilizar una CMK, CloudTrail envía una solicitudGenerateDataKey a AWS KMS para comprobar que la CMK existe y que CloudTrail tiene permiso parautilizarla para el cifrado. CloudTrail no utiliza la clave de datos resultante.

La solicitud GenerateDataKey incluye la siguiente información para el contexto de cifrado (p. 16):

• El nombre de recurso de Amazon (ARN) del registro de seguimiento de CloudTrail• El ARN del bucket de S3 y la ruta donde se entregan los archivos de registro de CloudTrail

La solicitud GenerateDataKey genera una entrada en los registros de CloudTrail similar al ejemplo

siguiente. Cuando aparece una entrada de registro como esta, se puede determinar que CloudTrail ( )

ha llamado a la operación de AWS KMS ( ) GenerateDataKey ( ) para un registro de seguimiento

específico ( ). AWS KMS ha creado la clave de datos con una CMK específica ( ).

Note

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE",

"arn": "arn:aws:iam::086441151436:user/AWSCloudTrail", "accountId": "086441151436", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "AWSCloudTrail", "sessionContext": {"attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T21:15:33Z" }}, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-11-11T21:15:33Z",

"eventSource": "kms.amazonaws.com",

"eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": {

251

Page 260: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConocer cuándo se usa su CMK

"keyId": "arn:aws:kms:us-west-2:111122223333:alias/ExampleAliasForCloudTrailCMK", "encryptionContext": {

"aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/" }, "keySpec": "AES_256" }, "responseElements": null, "requestID": "581f1f11-88b9-11e5-9c9c-595a1fb59ac0", "eventID": "3cdb2457-c035-4890-93b6-181832b9e766", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-

west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333"}

CloudTrail guarda un archivo de registro en su bucket de S3Cada vez que CloudTrail guarda un archivo de registro en un bucket de S3, Amazon S3 envía una solicitudGenerateDataKey a AWS KMS en nombre de CloudTrail. En respuesta a esta solicitud, AWS KMSgenera una clave de datos única y, a continuación, envía a Amazon S3 dos copias de la clave de datos,una en texto no cifrado y otra cifrada con la CMK especificada. Amazon S3 utiliza la clave de datos detexto no cifrado para cifrar el archivo de registro de CloudTrail y, a continuación, elimina la clave de datosde texto no cifrado de la memoria tan pronto como sea posible después de utilizarla. Amazon S3 almacenala clave de datos cifrada como metadatos con el archivo de registro de CloudTrail cifrado.

La solicitud GenerateDataKey incluye la siguiente información para el contexto de cifrado (p. 16):

• El nombre de recurso de Amazon (ARN) del registro de seguimiento de CloudTrail• El ARN del objeto de S3 (el archivo de registro de CloudTrail)

Cada solicitud GenerateDataKey genera una entrada en los registros de CloudTrail similar al ejemplo

siguiente. Cuando aparece una entrada de registro como esta, se puede determinar que CloudTrail ( )

ha llamado a la operación de AWS KMS ( ) GenerateDataKey ( ) para un registro de seguimiento

específico ( ) para proteger un archivo de registro específico ( ). AWS KMS ha creado la clave de

datos con la CMK especificada ( ), mostrada dos veces en la misma entrada de registro.Note

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "AROACKCEVSQ6C2EXAMPLE:i-34755b85",

"arn": "arn:aws:sts::086441151436:assumed-role/AWSCloudTrail/i-34755b85", "accountId": "086441151436", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T20:45:25Z"

252

Page 261: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConocer cuándo se usa su CMK

}, "sessionIssuer": { "type": "Role", "principalId": "AROACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::086441151436:role/AWSCloudTrail", "accountId": "086441151436", "userName": "AWSCloudTrail" } }, "invokedBy": "internal.amazonaws.com" }, "eventTime": "2015-11-11T21:15:58Z",

"eventSource": "kms.amazonaws.com",

"eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": {

"aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/CloudTrail/us-west-2/2015/11/11/111122223333_CloudTrail_us-

west-2_20151111T2115Z_7JREEBimdK8d2nC9.json.gz" }, "keyId": "arn:aws:kms:us-

west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "keySpec": "AES_256" }, "responseElements": null, "requestID": "66f3f74a-88b9-11e5-b7fb-63d925c72ffe", "eventID": "7738554f-92ab-4e27-83e3-03354b1aa898", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-

west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsServiceEvent", "recipientAccountId": "111122223333"}

Obtenga un archivo de registro cifrado del bucket de S3Cada vez que usted obtiene un archivo de registro de CloudTrail cifrado del bucket de S3, Amazon S3envía una solicitud Decrypt a AWS KMS en su nombre para descifrar la clave de datos cifrada del archivode registro. En respuesta a esta solicitud, AWS KMS utiliza su CMK para descifrar la clave de datos y, acontinuación, envía la clave de datos en texto no cifrado a Amazon S3. Amazon S3 utiliza la clave de datosde texto no cifrado para descifrar el archivo de registro de CloudTrail y, a continuación, elimina la clave dedatos de texto no cifrado de la memoria tan pronto como sea posible después de utilizarla.

La solicitud Decrypt incluye la siguiente información para el contexto de cifrado (p. 16):

• El nombre de recurso de Amazon (ARN) del registro de seguimiento de CloudTrail• El ARN del objeto de S3 (el archivo de registro de CloudTrail)

Cada solicitud Decrypt genera una entrada en los registros de CloudTrail similar al ejemplo siguiente.Cuando aparece una entrada de registro como esta, se puede determinar que un usuario de IAM en su

253

Page 262: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConocer la frecuencia con que se usa su CMK

cuenta de AWS ( ) ha llamado a la operación de AWS KMS ( ) Decrypt ( ) para un registro de

seguimiento específico ( ) y un archivo de registro específico ( ). AWS KMS ha descifrado la clave

de datos con una CMK específica ( ).

Note

You might need to scroll to the right to see some of the callouts in the following example log entry.

{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE",

"arn": "arn:aws:iam::111122223333:user/cloudtrail-admin", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "cloudtrail-admin", "sessionContext": {"attributes": { "mfaAuthenticated": "false", "creationDate": "2015-11-11T20:48:04Z" }}, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2015-11-11T21:20:52Z",

"eventSource": "kms.amazonaws.com",

"eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "internal.amazonaws.com", "userAgent": "internal.amazonaws.com", "requestParameters": { "encryptionContext": {

"aws:cloudtrail:arn": "arn:aws:cloudtrail:us-west-2:111122223333:trail/Default", "aws:s3:arn": "arn:aws:s3:::example-bucket-for-CT-logs/AWSLogs/111122223333/CloudTrail/us-west-2/2015/11/11/111122223333_CloudTrail_us-

west-2_20151111T2115Z_7JREEBimdK8d2nC9.json.gz" } }, "responseElements": null, "requestID": "16a0590a-88ba-11e5-b406-436f15c3ac01", "eventID": "9525bee7-5145-42b0-bed5-ab7196a16daa", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-

west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333" }], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Conocer la frecuencia con que se usa su CMKPara predecir los costos y comprender mejor su factura de AWS, es posible que tenga que saber conqué frecuencia CloudTrail utiliza su CMK. AWS KMS cobra por todas las solicitudes de API al servicioque superen la capa gratuita. Para saber los cargos exactos, consulte Precios de AWS Key ManagementService.

254

Page 263: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon DynamoDB

Cuando cifra los archivos de registro de CloudTrail con claves administradas por AWS KMS (SSE-KMS),cada vez que CloudTrail guarda un archivo de registro en su bucket de S3 (p. 252), se genera unasolicitud de la API de AWS KMS. Normalmente, CloudTrail guarda un archivo de registro en su bucket deS3 cada cinco minutos, lo que genera aproximadamente 288 solicitudes de API de AWS KMS por día,región y cuenta de AWS. Por ejemplo:

• Si habilita esta característica en dos regiones de una sola cuenta de AWS, se pueden produciraproximadamente 576 solicitudes de API de AWS KMS al día (2 x 288).

• Si habilita esta característica en dos regiones de cada de las tres cuentas de AWS, se pueden produciraproximadamente 1.728 solicitudes de API de AWS KMS al día (6 x 288).

Estos números representan solo las llamadas a AWS KMS que se derivan de las solicitudes PUT. Nocuentan las llamadas de descifrado a AWS KMS que se derivan de las solicitudes GET cuando obtiene unarchivo de registro cifrado de su bucket de S3.

Cómo Amazon DynamoDB usa AWS KMSAmazon DynamoDB es un servicio de base de datos NoSQL totalmente administrado y escalable.DynamoDB se integra con AWS Key Management Service (AWS KMS) para permitir la característica decifrado en reposo del lado del servidor.

Con el cifrado en reposo, DynamoDB cifra de forma transparente todos los datos de los clientes en una deDynamoDB, incluida su clave principal y los índices secundarios locales y globales, siempre que la tabla sealmacene en el disco. (Si la tabla tiene una clave de ordenación, algunas de las claves de ordenación quemarcan los límites del intervalo se almacenan en texto no cifrado en los metadatos de la tabla). Cuandoobtiene acceso a la tabla, DynamoDB descifra los datos de la tabla de forma transparente. No es necesarioque cambie sus aplicaciones para utilizar o administrar tablas cifradas.

El cifrado en reposo protege también las secuencias de DynamoDB, las tablas globales y las copias deseguridad siempre que estos objetos se guardan en un soporte duradero. Las instrucciones acerca de lastablas de este tema se aplican también a estos objetos.

Todas las tablas de DynamoDB están cifradas. No existe la opción de habilitar o deshabilitar el cifradopara tablas nuevas o existentes. De forma predeterminada, todas las tablas están cifradas con una clavemaestra del cliente propiedad de AWS (p. 5) (CMK) en la cuenta del servicio DynamoDB. Sin embargo,puede seleccionar una opción para cifrar algunas o todas las tablas con una CMK administrada por elcliente (p. 4) o la CMK administrada por AWS (p. 4) para DynamoDB en su cuenta.

Note

Antes de noviembre de 2018, el cifrado en reposo era una característica opcional que solo admitíala CMK administrada por AWS para DynamoDB. Si ha activado el cifrado en reposo en alguna delas tablas de DynamoDB, estas tablas seguirán estando cifradas con la CMK administrada porAWS, a menos que use la Consola de administración de AWS o la operación UpdateTable paracambiar a una CMK administrada por el cliente o a una CMK propiedad de AWS.

Cifrado en el lado del cliente para DynamoDBAdemás del cifrado en reposo, que es una característica de cifrado en el lado del servidor, AWS ofreceel cliente de cifrado de Amazon DynamoDB. Esta biblioteca de cifrado del lado del cliente le permiteproteger los datos de la tabla antes de enviarlos a DynamoDB. Con el cifrado en el servidor, los datos secifran en tránsito a través de una conexión HTTPS, se descifran en el punto de enlace de DynamoDB y,a continuación, se vuelven a cifran antes de almacenarse en DynamoDB. El cifrado del lado del clienteproporciona protección integral para sus datos desde su origen al almacenamiento en DynamoDB.

255

Page 264: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar las CMK y las claves de datos

Puede utilizar el Cliente de cifrado de DynamoDB junto con el cifrado en reposo. Para ayudarle a decidir siesta estrategia es adecuada para sus datos de DynamoDB, consulte ¿Cifrado en el lado del cliente o en ellado del servidor? en la Guía para desarrolladores de Cliente de cifrado de Amazon DynamoDB.

Temas• Usar las CMK y las claves de datos (p. 256)• Autorizar el uso de la CMK (p. 258)• Contexto de cifrado de DynamoDB (p. 261)• Monitorear la interacción de DynamoDB con AWS KMS (p. 262)

Usar las CMK y las claves de datosLa característica de cifrado en reposo de DynamoDB utiliza una clave maestra del cliente (CMK) deAWS KMS y una jerarquía de claves de datos para proteger los datos de la tabla. DynamoDB utiliza lamisma jerarquía de claves para proteger las secuencias de DynamoDB, las tablas globales y las copias deseguridad cuando se escriben en soportes duraderos.

Clave maestra de cliente (CMK)

El cifrado en reposo protege las tablas de DynamoDB con una clave maestra del cliente (CMK) deAWS KMS. De forma predeterminada, utiliza una CMK propiedad de AWS (p. 5), una clave multitenantque se crea y administra en una cuenta de servicio de DynamoDB. Sin embargo, DynamoDB escompatible con una opción para cifrar algunas o todas las tablas con unas CMK administradas por elcliente (p. 4) o la CMK administrada por AWS (p. 4) para DynamoDB (aws/dynamodb) en su cuentade AWS. Puede seleccionar la CMK para una tabla al crear o actualizar la tabla, y puede seleccionaruna opción diferente para cada tabla.

Important

DynamoDB solo admite CMK simétricas (p. 144). No puede utilizar una CMKasimétrica (p. 144) para cifrar las tablas de DynamoDB. Para obtener ayuda paradeterminar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas yasimétricas (p. 40).

Puede elegir su CMK en la consola de DynamoDB o mediante la API de DynamoDB. Al seleccionaruna CMK para una tabla, los índices secundarios locales y globales, las trasmisiones y las copias deseguridad se cifran con la misma CMK. Sin embargo, no se puede usar una CMK administrada porel cliente para cifrar réplicas de tablas globales de DynamoDB. Para cifrar réplicas, utilice una CMKpropiedad de AWS o una CMK administrada por AWS.

Puede cambiar la CMK de una tabla en cualquier momento, ya sea en la consola de DynamoDB outilizando la operación UpdateTable. El proceso de cambio de teclas es perfecto y no precisa tiempode inactividad ni degradación del servicio.

Utilice una CMK administrada por el cliente para obtener las siguientes características:• Puede crear y administrar la CMK, incluida la configuración de las políticas de claves (p. 57),

políticas de IAM (p. 76) y concesiones (p. 127) para controlar el acceso a la CMK. Puede habilitary deshabilitar (p. 49) la CMK, habilitar y deshabilitar la rotación de claves automática (p. 157) yeliminar la CMK (p. 176) cuando ya no esté en uso.

• Puede utilizar una CMK administrada por el cliente con material de claves importado (p. 162) ouna CMK administrada por el cliente en un almacén de claves personalizado (p. 189) que tenga yadministre.

• Puede auditar el cifrado y descifrado de la tabla de DynamoDB examinando las llamadas de la APIde DynamoDB a AWS KMS en los registros de AWS CloudTrail (p. 262).

Utilice la CMK administrada por AWS si necesita alguna de las siguientes características:

256

Page 265: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar las CMK y las claves de datos

• Puede ver la CMK (p. 28) y ver su política de claves (p. 69). (La política de claves no se puedemodificar).

• Puede auditar el cifrado y descifrado de la tabla de DynamoDB examinando las llamadas de la APIde DynamoDB a AWS KMS en los registros de AWS CloudTrail (p. 262).

Sin embargo, la CMK propiedad de AWS es gratuita y su uso no se contabiliza en las cuotas derecursos o solicitudes de AWS KMS (p. 386). Las CMK administradas por el cliente y las CMKadministradas por AWS generan cargos por cada llamada a la API y se aplican cuotas de AWS KMS aestas CMK.

Claves de tabla

DynamoDB utiliza la CMK de la tabla para generar y cifrar una clave de datos única (p. 5) para latabla, denominada clave de tabla. La clave de tabla se mantiene durante toda la vida útil de la tabla decifrado.

La tabla se utiliza como clave de cifrado de claves. DynamoDB utiliza esta clave de tabla para protegerlas claves de cifrado de datos que se utilizan para cifrar los datos de la tabla. DynamoDB genera unaclave de cifrado de datos única para cada estructura subyacente de una tabla, pero varios elementosde la tabla pueden protegerse con la misma clave de cifrado de datos.

La primera vez que obtiene acceso a una tabla cifrada, DynamoDB envía una solicitud a AWS KMSpara utilizar la CMK para descifrar la clave de tabla. A continuación, utiliza la clave de tabla de textosin cifrar para descifrar las claves de cifrado de datos y utiliza las claves de cifrado de datos de textosin cifrar para descifrar los datos de la tabla.

DynamoDB genera, utiliza y almacena la clave de la tabla y las claves de cifrado de datos fuera deAWS KMS. Protege todas las claves con cifrado Advanced Encryption Standard (AES) y claves decifrado de 256 bits. A continuación, almacena las claves cifradas con los datos cifrados para que esténdisponibles para descifrar los datos de la tabla bajo demanda.

Si cambia la CMK de su tabla, DynamoDB genera una nueva clave de tabla. A continuación, utiliza lanueva clave de tabla para volver a cifrar las claves de cifrado de los datos.

Almacenamiento en caché de las claves de tabla

Para evitar llamar a AWS KMS para cada operación de DynamoDB, DynamoDB almacena en lamemoria caché las claves de tabla de texto sin cifrar. Si DynamoDB recibe una solicitud de la clavede tabla almacenada en caché tras cinco minutos de inactividad, envía una nueva solicitud a AWSKMS para descifrar la clave de tabla. Esta llamada capturará los cambios realizados en las políticas

257

Page 266: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutorizar el uso de la CMK

de acceso de la CMK en AWS KMS o AWS Identity and Access Management (IAM) desde la últimasolicitud para descifrar la clave de tabla.

Autorizar el uso de la CMKSi utiliza una CMK administrada por el cliente (p. 4) o la CMK administrada por AWS (p. 4) en su cuentapara proteger su tabla de DynamoDB, las políticas en esa CMK deben conceder a DynamoDB permisopara utilizarla en su nombre. El contexto de autorización de la CMK administrada por AWS para incluye supolítica de claves y concede a ese delegado los permisos para utilizarla.

Tiene control total sobre las políticas y concesiones de una CMK administrada por el cliente. Como la CMKadministrada por AWS está en su cuenta, puede ver sus políticas y concesiones. Sin embargo, como estáadministrada por AWS, no puede cambiar las políticas.

DynamoDB no necesita autorización adicional para utilizar la CMK propiedad de AWS (p. 3)predeterminada para proteger las tablas de DynamoDB de su cuenta de AWS.

Temas• Política de claves de CMK administrada por AWS (p. 258)• Política de claves de CMK administrada por el cliente (p. 259)• Usar concesiones para autorizar a DynamoDB (p. 261)

Política de claves de CMK administrada por AWSCuando DynamoDB utiliza la clave administrada por AWS (p. 4) para DynamoDB (aws/dynamodb) enoperaciones criptográficas, lo hace en nombre del usuario que obtiene acceso al recurso de DynamoDB.La política de claves de la CMK administrada por AWS concede a todos los usuarios de la cuentapermiso para utilizar la CMK administrada por AWS para las operaciones especificadas. Sin embargo,el permiso solo se concede cuando DynamoDB realiza la solicitud en nombre del usuario. La condiciónViaService (p. 122) de la política de claves no permite que ningún usuario pueda utilizar la CMKadministrada por AWS, a menos que la solicitud se origine con el servicio DynamoDB.

Esta política de claves, como las políticas de todas las claves administradas por AWS, la establece AWS.No puede cambiarla, pero puede verla en cualquier momento. Para obtener más información, consulteConsultar una política de claves (p. 69).

Las instrucciones de política en la política de claves tienen el siguiente efecto:

• Permitir a los usuarios de la cuenta utilizar la CMK administrada por AWS para DynamoDB enoperaciones criptográficas cuando la solicitud proviene de DynamoDB en su nombre. La política tambiénpermite a los usuarios crear concesiones (p. 261) para la CMK.

• Permite al usuario raíz de la cuenta de AWS ver las propiedades de la CMK administrada por AWSpara DynamoDB y revocar la concesión que permite a DynamoDB utilizar la CMK. DynamoDB utilizaconcesiones (p. 261) para las operaciones de mantenimiento continuo.

• Permite a DynamoDB realizar operaciones de solo lectura para buscar la CMK administrada por AWSpara DynamoDB en su cuenta.

{ "Version" : "2012-10-17", "Id" : "auto-dynamodb-1", "Statement" : [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect" : "Allow",

258

Page 267: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutorizar el uso de la CMK

"Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:CallerAccount" : "111122223333", "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" }, { "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly", "Effect" : "Allow", "Principal" : { "Service" : "dynamodb.amazonaws.com" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource" : "*" } ]}

Política de claves de CMK administrada por el clienteCuando selecciona una CMK administrada por el cliente (p. 4) para proteger una tabla de DynamoDB,DynamoDB obtiene permiso para utilizar la CMK en nombre de la entidad principal que realiza la selección.Esa entidad principal, un usuario o rol, debe tener los permisos en la CMK que precisa DynamoDB.Puede proporcionar estos permisos en una política de claves (p. 57), una política de IAM (p. 76) o unaconcesión (p. 127).

Como mínimo, DynamoDB precisa los siguientes permisos en una CMK administrada por el cliente:

• kms:Encrypt• kms:Decrypt• kms:ReEncrypt* (para kms:ReEncryptFrom y kms:ReEncryptTo)• kms:GenerateDataKey* (para kms:GenerateDataKey y kms:GenerateDataKeyWithoutPlaintext)• kms:DescribeKey• kms:CreateGrant

Por ejemplo, la política de claves de ejemplo siguiente proporciona solo los permisos necesarios. Lapolítica tiene las siguientes consecuencias:

• Permite a DynamoDB utilizar la CMK en operaciones criptográficas y crear concesiones, pero solocuando actúa en nombre de las entidades principales de la cuenta que tienen permiso para usarDynamoDB. Si las entidades principales especificadas en la declaración de política no tienen permisopara utilizar DynamoDB, la llamada falla, incluso cuando proviene del servicio de DynamoDB.

• La clave de condición kms:ViaService (p. 122) permite los permisos solo cuando la solicitud provienede DynamoDB en nombre de las entidades principales enumeradas en la declaración de política. Estas

259

Page 268: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutorizar el uso de la CMK

entidades principales no pueden llamar a estas operaciones directamente. Tenga en cuenta que elvalor kms:ViaService, dynamodb.*.amazonaws.com, tiene un asterisco (*) en la posición Región.DynamoDB precisa el permiso para ser independiente de cualquier región de AWS en particular paraque pueda realizar llamadas entre regiones para ser compatible con tablas globales de DynamoDB.

• Proporciona a los administradores de la CMK (usuarios que pueden asumir el rol de db-team) accesode solo lectura a la CMK y permiso para revocar las concesiones, incluidas las concesiones que precisaDynamoDB (p. 261) para proteger la tabla.

• Proporciona a DynamoDB acceso de solo lectura a la CMK. En este caso, DynamoDB puede llamar aestas operaciones directamente. No tiene que actuar en nombre de una entidad principal de la cuenta.

Antes de utilizar una política de claves de ejemplo, sustituya las entidades principales de ejemplo por lasentidades principales reales de su cuenta de AWS.

{ "Id": "key-policy-dynamodb", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB" "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "dynamodb.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the CMK and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" }, { "Sid": "Allow DynamoDB to get information about the CMK", "Effect": "Allow", "Principal": { "Service":["dynamodb.amazonaws.com"] }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*" ],

260

Page 269: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado de DynamoDB

"Resource": "*" } ]}

Usar concesiones para autorizar a DynamoDBAdemás de las políticas de claves, DynamoDB utiliza concesiones para establecer permisos en una CMKadministrada por el cliente o la CMK administrada por AWS para DynamoDB (aws/dynamodb). Paraver las concesiones de una CMK en su cuenta, utilice la operación ListGrants. DynamoDB no necesitaconcesiones, o cualquier permiso adicional, para utilizar la CMK propiedad de AWS (p. 5) para proteger sutabla.

DynamoDB utiliza los permisos de concesión cuando realiza el mantenimiento del sistema en segundoplano y en tareas de protección de datos continuas. También utiliza las concesiones para generar lasclaves de la tabla (p. 256).

Cada concesión es específica de una tabla. Si la cuenta incluye varias tablas cifradas con la misma CMK,habrá una concesión de cada tipo para cada tabla. La concesión está limitada por el contexto de cifradode DynamoDB (p. 261), que incluye el nombre de la tabla y el ID de la cuenta de AWS e incluye permisopara retirar la concesión si ya no se necesita.

Para crear las concesiones, DynamoDB debe tener permiso para llamar a CreateGrant en nombre delusuario que creó la tabla cifrada. Para las CMK administradas por AWS, DynamoDB obtiene el permisokms:CreateGrant de la política de claves (p. 258), que permite a los usuarios de la cuenta llamar aCreateGrant solo en la CMK cuando DynamoDB realiza la solicitud en nombre de un usuarios autorizado.

La política de claves también puede permitir a la cuenta revocar la concesión en la CMK. No obstante, sirevoca la concesión en una tabla cifrada activa, DynamoDB no podrá proteger y mantener la tabla.

Contexto de cifrado de DynamoDBUn contexto de cifrado (p. 16) es un conjunto de pares de clave-valor que contienen datos no secretosarbitrarios. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vinculacriptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasarel mismo contexto de cifrado.

DynamoDB utiliza el mismo contexto de cifrado en todas las operaciones criptográficas de AWS KMS. Siutiliza una CMK administrada por el cliente (p. 4) o una CMK administrada por AWS (p. 4) para protegerla tabla de DynamoDB, puede utilizar el contexto de cifrado para identificar el uso de la CMK en losregistros de auditoría. También aparece en texto sin formato en registros, como AWS CloudTrail y AmazonCloudWatch Logs.

El contexto de cifrado también se puede utilizar como una condición para la autorización en las políticasy concesiones. DynamoDB utiliza el contexto de cifrado para restringir las concesiones (p. 261) quepermiten el acceso a la CMK administrada por el cliente o la CMK administrada por AWS en su cuenta yregión.

En sus solicitudes a AWS KMS, DynamoDB utiliza un contexto de cifrado con dos pares de clave–valor.

"encryptionContextSubset": { "aws:dynamodb:tableName": "Books" "aws:dynamodb:subscriberId": "111122223333"}

• Tabla: el primer par de clave–valor identifica la tabla que está cifrando DynamoDB. La clave esaws:dynamodb:tableName. El valor es el nombre de la tabla.

261

Page 270: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMonitorear la interacción de DynamoDB con AWS KMS

"aws:dynamodb:tableName": "<table-name>"

Por ejemplo:

"aws:dynamodb:tableName": "Books"

• Cuenta: el segundo par de clave–valor identifica la cuenta de AWS. La clave esaws:dynamodb:subscriberId. El valor es el ID de la cuenta.

"aws:dynamodb:subscriberId": "<account-id>"

Por ejemplo:

"aws:dynamodb:subscriberId": "111122223333"

Monitorear la interacción de DynamoDB con AWSKMSSi utiliza una CMK administrada por el cliente (p. 4) o una CMK administrada por AWS (p. 4) para protegerlas tablas de DynamoDB, puede utilizar los registros de AWS CloudTrail para realizar un seguimiento delas solicitudes que DynamoDB envía a AWS KMS en su nombre.

Las solicitudes GenerateDataKey, Decrypt y CreateGrant se explican en esta sección. Además,DynamoDB utiliza una operaciónDescribeKey para determinar si la CMK que ha seleccionado existe en lacuenta y región. También utiliza una operación RetireGrant para quitar una concesión cuando se eliminauna tabla.

GenerateDataKey

Al habilitar el cifrado en reposo en una tabla, DynamoDB crea una clave de tabla única. Envía unasolicitud GenerateDataKey a AWS KMS que especifica la CMK de la tabla.

El evento que registra la operación GenerateDataKey es similar al siguiente evento de ejemplo.El usuario es la cuenta del servicio DynamoDB. Los parámetros incluyen el nombre de recurso deAmazon (ARN) de la CMK, un especificador de clave que requiere una clave de 256 bits y el contextode cifrado (p. 261) que identifica la tabla y la cuenta de AWS.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:17Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" },

262

Page 271: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMonitorear la interacción de DynamoDB con AWS KMS

"keySpec": "AES_256", "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, "responseElements": null, "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190", "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad"}

Decrypt

Cuando accede a una tabla de DynamoDB cifrada, DynamoDB necesita descifrar la clave de la tablade manera que pueda descifrar las claves que hay debajo en la jerarquía. A continuación, descifra losdatos de la tabla. Para descifrar la clave de tabla, DynamoDB envía una solicitud Decrypt para AWSKMS que especifica la CMK de la tabla.

El evento que registra la operación Decrypt es similar al siguiente evento de ejemplo. El usuario es elprincipal en su cuenta de AWS que está accediendo a la tabla. Los parámetros incluyen la clave de latabla cifrada (como blob de texto cifrado) y el contexto de cifrado (p. 261) que identifica la tabla y lacuenta de AWS. AWS KMS obtiene el ID de la CMK del texto cifrado.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T16:42:15Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDT3HGFQZX4RY6RU", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T16:42:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": {

263

Page 272: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMonitorear la interacción de DynamoDB con AWS KMS

"encryptionContext": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "responseElements": null, "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5", "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

CreateGrant

Cuando utiliza una CMK administrada por el cliente (p. 4) o una CMK administrada por AWS (p. 4)para proteger la tabla de DynamoDB, DynamoDB utiliza concesiones (p. 261) para permitir alservicio realizar tareas continuas de protección y mantenimiento de datos y de durabilidad. Estasconcesiones no son obligatorias en las CMK propiedad de AWS (p. 5).

Las concesiones que crea DynamoDB son específicas de una tabla. El principal en la solicitudCreateGrant es el usuario que creó la tabla.

El evento que registra la operación CreateGrant es similar al siguiente evento de ejemplo. Losparámetros incluyen el nombre de recurso de Amazon (ARN) de la CMK de la tabla, la entidadprincipal beneficiaria, la entidad principal que retira la concesión (el servicio de DynamoDB) y lasoperaciones que cubre la concesión. También incluye una restricción que requiere que toda operaciónde cifrado utilice el contexto de cifrado (p. 261) especificado.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T00:12:02Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:15Z",

264

Page 273: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon Elastic Block Store (Amazon EBS)

"eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "constraints": { "encryptionContextSubset": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ] }, "responseElements": { "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" }, "requestID": "2192b82a-111c-11e8-a528-f398979205d8", "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", "readOnly": false, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Cómo Amazon Elastic Block Store (Amazon EBS)usa AWS KMS

En este tema, se describe en detalle cómo Amazon Elastic Block Store (Amazon EBS) utiliza AWS KMSpara cifrar volúmenes e instantáneas. Para obtener instrucciones básicas sobre el cifrado de volúmenes deAmazon EBS, consulte Cifrado de Amazon EBS.

Temas• Cifrado de Amazon EBS (p. 266)• Usar las CMK y las claves de datos (p. 266)• Contexto de cifrado de Amazon EBS (p. 266)• Detectar errores de Amazon EBS (p. 267)• Usar AWS CloudFormation para crear volúmenes de Amazon EBS cifrados (p. 267)

265

Page 274: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrado de Amazon EBS

Cifrado de Amazon EBSCuando se asocia un volumen de Amazon EBS cifrado a un tipo de instancia Amazon Elastic ComputeCloud (Amazon EC2) compatible, se cifran los datos que están en reposo en el volumen, la E/S de disco ylas instantáneas creadas a partir del volumen. El cifrado se produce en los servidores que alojan instanciasAmazon EC2.

Esta característica es compatible con todos los tipos de volúmenes de Amazon EBS. A los volúmenescifrados se obtiene acceso del mismo modo que a otros volúmenes; el cifrado y el descifrado se gestionande forma transparente y no requieren ninguna acción de su parte, la instancia EC2 o su aplicación. Lasinstantáneas de los volúmenes cifrados se cifran automáticamente y los volúmenes que se crean a partirde las instantáneas cifradas también se cifran de forma automática.

El estado de cifrado de un volumen de EBS se determina al crear el volumen. No puede cambiar el estadode cifrado de un volumen existente. Sin embargo, puede migrar datos entre volúmenes cifrados y nocifrados, y aplicar un nuevo estado de cifrado al copiar una instantánea.

Usar las CMK y las claves de datosAl crear un volumen de Amazon EBS cifrado, debe especificar una clave maestra de cliente (CMK) deAWS KMS. De forma predeterminada, Amazon EBS usa la CMK administrada por AWS (p. 4) de AmazonEBS en su cuenta. Sin embargo, puede especificar una CMK administrada por el cliente (p. 4).

Important

Amazon EBS solo admite CMK simétricas (p. 144). No se puede utilizar una CMKasimétrica (p. 144) para cifrar un volumen de Amazon EBS. Para obtener ayuda para determinarsi una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas y asimétricas (p. 40).

Amazon EBS utiliza la CMK que especifique para generar una clave de datos única para cada volumen.Esta almacena una copia cifrada de la clave de datos con el volumen. A continuación, al asociar elvolumen a una instancia Amazon EC2, Amazon EBS usa la clave de datos para cifrar toda la E/S del discodel volumen.

A continuación se explica cómo Amazon EBS utiliza su CMK:

1. Cuando se crea un volumen de EBS cifrado, Amazon EBS envía una solicitudGenerateDataKeyWithoutPlaintext a AWS KMS, en la que se especifica la CMK que se ha elegido parael cifrado del volumen de EBS.

2. AWS KMS genera una nueva clave de datos, la cifra según la CMK especificada y, a continuación,envía la clave de datos cifrada a Amazon EBS para que se almacene con los metadatos del volumen.

3. Cuando se asocia el volumen cifrado a una instancia EC2, Amazon EC2 envía la clave de datos cifradaa AWS KMS con una solicitud Decrypt.

4. AWS KMS descifra la clave de datos cifrada y, a continuación, envía la clave de datos (texto no cifrado)descifrada a Amazon EC2.

5. Amazon EC2 utiliza la clave de datos de texto no cifrado en la memoria del hipervisor para cifrar lasoperaciones de E/S de disco en el volumen de EBS. La clave de datos de texto no cifrado persiste en lamemoria siempre que el volumen de EBS esté asociado a la instancia EC2.

Contexto de cifrado de Amazon EBSEn sus solicitudes GenerateDataKeyWithoutPlaintext y Decrypt a AWS KMS, Amazon EBS usa uncontexto de cifrado con un par de nombre-valor que identifica el volumen o la instantánea en la solicitud. Elnombre en el contexto de cifrado no varía.

266

Page 275: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDetectar errores de Amazon EBS

Un contexto de cifrado (p. 16) es un conjunto de pares de clave-valor que contienen datos no secretosarbitrarios. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vinculacriptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasarel mismo contexto de cifrado.

Para todos los volúmenes y para las instantáneas cifradas creadas con la operación CreateSnapshotde Amazon EBS, Amazon EBS usa el ID del volumen como valor de contexto de cifrado. En el camporequestParameters de una entrada de registro de CloudTrail, el contexto de cifrado es similar alsiguiente:

"encryptionContext": { "aws:ebs:id": "vol-0cfb133e847d28be9"}

Para las instantáneas cifradas creadas con la operación CopySnapshot de Amazon EC2, Amazon EBSusa el ID de la instantánea como valor de contexto de cifrado. En el campo requestParameters de unaentrada de registro de CloudTrail, el contexto de cifrado es similar al siguiente:

"encryptionContext": { "aws:ebs:id": "snap-069a655b568de654f"}

Detectar errores de Amazon EBSPara crear un volumen de EBS cifrado o asociarlo a una instancia EC2, Amazon EBS y la infraestructurade Amazon EC2 deben poder usar la CMK especificada para el cifrado del volumen de EBS. Cuando laCMK no se puede usar (por ejemplo, cuando el estado de clave (p. 245) no está Enabled), el volumen nose crea ni se asocia.

En este caso, Amazon EBS envía un evento a Amazon CloudWatch Events para notificarle el error. ConEventos de CloudWatch puede establecer reglas que activen acciones automáticas en respuesta a estoseventos. Para obtener más información, consulte Eventos de Amazon CloudWatch para Amazon EBS en laGuía del usuario de Amazon EC2 para instancias de Linux, especialmente las secciones siguientes:

• Clave de cifrado no válida al asociar o volver a asociar un volumen• Clave de cifrado no válida al crear el volumen

Para solucionar estos errores, compruebe que esté habilitada la CMK que ha especificado para el cifradodel volumen de EBS. Para ello, primero consulte la CMK (p. 28) para determinar su estado de clave actual(la columna Status de la Consola de administración de AWS). A continuación, consulte la información deuno estos enlaces:

• Si el estado de clave de la CMK está deshabilitado, habilítelo (p. 49).• Si el estado de clave de la CMK es pendiente de importación, importe el material de claves (p. 163).• Si el estado de clave de la CMK es pendiente de eliminación, cancele la eliminación de la clave (p. 178).

Usar AWS CloudFormation para crear volúmenes deAmazon EBS cifradosPuede usar AWS CloudFormation para crear volúmenes de Amazon EBS cifrados. Para obtener másinformación, consulte AWS::EC2::Volume en la Guía del usuario de AWS CloudFormation.

267

Page 276: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon Elastic Transcoder

Cómo Amazon Elastic Transcoder usa AWS KMSPuede utilizar Amazon Elastic Transcoder para convertir archivos multimedia almacenados en un bucketde Amazon S3 en formatos que necesiten los reproductores de consumo. Los archivos tanto de entradacomo de salida pueden cifrarse y descifrarse. En las secciones siguientes se explica cómo se usa AWSKMS tanto ambos procesos.

Temas• Cifrado del archivo de entrada (p. 268)• Descifrado del archivo de entrada (p. 269)• Cifrado del archivo de salida (p. 269)• Protección de contenido HLS (p. 271)• Contexto de cifrado de Elastic Transcoder (p. 271)

Cifrado del archivo de entradaPara poder usar Elastic Transcoder, debe crear un bucket de Amazon S3 y cargar un archivo multimediaen él. Puede cifrar el archivo antes de cargarlo mediante el cifrado AES en el cliente o después de cargarlomediante el cifrado en el servidor de Amazon S3.

Si elige el cifrado en el cliente mediante AES, es responsable de cifrar el archivo antes de cargarlo enAmazon S3, y debe proporcionar a Elastic Transcoder acceso a la clave de cifrado. Para ello, use unaclave maestra del cliente (p. 3) (CMK) de AWS KMS simétrica (p. 144) para proteger la clave de cifradoAES que ha usado para cifrar el archivo multimedia.

Si se decide por el cifrado en el servidor, permite a Amazon S3 que realice todas las tareas de cifrado ydescifrado de archivos en su nombre. Puede configurar Amazon S3 para que use una de las tres clavesmaestras distintas para proteger la clave de datos única empleada para cifrar su archivo:

• La clave maestra de Amazon S3, una clave que AWS posee y administra• La CMK administrada por AWS (p. 4) para Amazon S3, una clave maestra que pertenece a su cuenta,

pero que administra AWS• Cualquier CMK administrada por el cliente (p. 4) simétrica (p. 144) que cree utilizando AWS KMS

Important

Para el cifrado del lado del cliente y del lado del servidor, Elastic Transcoder solo admite CMKsimétricas (p. 144). No puede utilizar una CMK asimétrica (p. 144) para cifrar sus archivos deElastic Transcoder. Para obtener ayuda para determinar si una CMK es simétrica o asimétrica,consulte Identificar CMK simétricas y asimétricas (p. 40).

Puede solicitar el cifrado y la clave maestra que desee mediante la consola de Amazon S3 o las API deAmazon S3 correspondientes. Para obtener más información sobre cómo realiza Amazon S3 el cifrado,consulte Protección de datos mediante cifrado en la Guía para desarrolladores de Amazon Simple StorageService.

Al proteger su archivo de entrada con la CMK administrada por AWS para Amazon S3 de su cuenta o unaCMK administrada por el cliente, Amazon S3 y AWS KMS interactúan de la siguiente manera:

1. Amazon S3 solicita una clave de datos en texto no cifrado y una copia de la clave de datos cifrada conla CMK especificada.

268

Page 277: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDescifrado del archivo de entrada

2. AWS KMS crea una clave de datos, la cifra con la CMK especificada y, a continuación, envía la clave dedatos en texto no cifrado y la clave de datos cifrada a Amazon S3.

3. Amazon S3 usa la clave de datos en texto no cifrado para cifrar el archivo multimedia y, a continuación,almacena el archivo en el bucket de Amazon S3 especificado.

4. Amazon S3 almacena la clave de datos cifrada junto con el archivo multimedia cifrado.

Descifrado del archivo de entradaSi elige el cifrado en el servidor de Amazon S3 para cifrar el archivo de entrada, Elastic Transcoder nodescifra el archivo. En su lugar, Elastic Transcoder se basa en Amazon S3 para realizar el descifrado enfunción de la configuración que especifique al crear un trabajo y una canalización.

Está disponible la siguiente combinación de configuraciones.

Modo de cifrado clave AWS KMS Significado

S3 Predeterminado Amazon S3 crea y administralas claves usadas para cifrar ydescifrar el archivo multimedia.El proceso es opaco para elusuario.

S3-AWS-KMS Predeterminado Amazon S3 utiliza una clavede datos cifrada por la CMKadministrada por AWSpredeterminada para AmazonS3 en su cuenta para cifrar elarchivo multimedia.

S3-AWS-KMS Personalizado (con ARN) Amazon S3 utiliza una clavede datos cifrada por la CMKadministrada por el clienteespecificada para cifrar el archivomultimedia.

Cuando se especifica S3-AWS-KMS, Amazon S3 y AWS KMS colaboran de la siguiente manera pararealizar el descifrado.

1. Amazon S3 envía la clave de datos cifrada a AWS KMS.2. AWS KMS descifra la clave de datos mediante la CMK apropiada y, a continuación, envía la clave de

datos en texto no cifrado a Amazon S3.3. Amazon S3 usa la clave de datos en texto no cifrado para descifrar el texto cifrado.

Si elige el cifrado en el cliente mediante una clave AES, Elastic Transcoder recupera el archivo codificadodel bucket de Amazon S3 y lo descifra. Elastic Transcoder utiliza la CMK que haya especificado al crearla canalización para descifrar la clave AES y, a continuación, usa la clave AES para descifrar el archivomultimedia.

Cifrado del archivo de salidaElastic Transcoder cifra el archivo de salida en función de cómo se especifique la configuración de cifradoal crear un trabajo y una canalización. Están disponibles las siguientes opciones.

269

Page 278: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrado del archivo de salida

Modo de cifrado clave AWS KMS Significado

S3 Predeterminado Amazon S3 crea y administralas claves usadas para cifrar elarchivo de salida.

S3-AWS-KMS Predeterminado Amazon S3 utiliza una clave dedatos creada por AWS KMS ycifrada por la CMK administradapor AWS para Amazon S3 en sucuenta.

S3-AWS-KMS Personalizado (con ARN) Amazon S3 utiliza una clavede datos cifrada mediante laCMK administrada por el clienteespecificada por el ARN paracifrar el archivo multimedia.

AES- Predeterminado Elastic Transcoder usa laCMK administrada por AWSpara Amazon S3 en sucuenta para descifrar la claveAES especificada que haproporcionado y usa dicha clavepara cifrar el archivo de salida.

AES- Personalizado (con ARN) Elastic Transcoder usa laCMK administrada por elcliente y especificada por elARN para descifrar la claveAES especificada que haproporcionado y usa dicha clavepara cifrar el archivo de salida.

Al especificar que se utilice la CMK administrada por AWS para Amazon S3 de su cuenta o una CMKadministrada por el cliente para cifrar el archivo de salida, Amazon S3 y AWS KMS interactúan de lasiguiente manera:

1. Amazon S3 solicita una clave de datos en texto no cifrado y una copia de la clave de datos cifrada conla CMK especificada.

2. AWS KMS crea una clave de datos, la cifra con la CMK y envía la clave de datos en texto no cifrado y laclave de datos cifrada a Amazon S3.

3. Amazon S3 cifra el archivo multimedia con la clave de datos y lo almacena en el bucket de Amazon S3especificado.

4. Amazon S3 almacena la clave de datos cifrada junto con el archivo multimedia cifrado.

Al especificar que la clave AES proporcionada se usará para cifrar el archivo de salida, la clave AES sedebe cifrar con una CMK en AWS KMS. Elastic Transcoder, AWS KMS y el usuario interactúan de lasiguiente forma:

1. El usuario cifra la clave AES llamando a la operación Encrypt en la API de AWS KMS. AWS KMScifra la clave mediante la CMK especificada. Puede especificar qué CMK se usará cuando se cree lacanalización.

2. El usuario especifica el archivo que contiene la clave AES cifrada al crear el trabajo de ElasticTranscoder.

270

Page 279: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresProtección de contenido HLS

3. Elastic Transcoder descifra la clave llamando a la operación Decrypt de la API de AWS KMS, pasandola clave cifrada como texto cifrado.

4. Elastic Transcoder usa la clave AES descifrada para cifrar el archivo multimedia de salida y, acontinuación, elimina la clave AES descifrada de la memoria. Solo la copia cifrada originalmente definidaen el trabajo se guarda en el disco.

5. Puede descargar el archivo de salida cifrado y descifrarlo localmente mediante la clave AES original queha definido.

Important

AWS nunca almacena las claves de cifrado privadas. Por lo tanto, es importante que administresus claves de forma segura. Si las pierde, no podrá descifrar los datos.

Protección de contenido HLSHTTP Live Streaming (HLS) es un protocolo de transmisión flexible. Elastic Transcoder admite HLSmediante la división del archivo de entrada en archivos individuales más pequeños denominadossegmentos multimedia. Un conjunto de segmentos multimedia individuales correspondientes contienenel mismo material codificado a distintas velocidades de bits, lo que permite que el reproductor seleccionela secuencia que mejor se adapte al ancho de banda disponible. Elastic Transcoder también crea listasde reproducción que contienen los metadatos de los distintos segmentos que están disponibles paratransmitir.

Al habilitar la protección de contenido HLS, cada segmento multimedia se cifra con una clave de cifradoAES-128. Cuando se visualiza el contenido, el reproductor descarga la clave y descifra los segmentosmultimedia durante el proceso de reproducción.

Se usan dos tipos de claves: una CMK de AWS KMS y una clave de datos. Debe crear una CMK parausarla en el cifrado y descifrado de la clave de datos. Elastic Transcoder utiliza la clave de datos paracifrar y descifrar los segmentos multimedia. La clave de datos debe ser AES-128. Todas las variaciones ysegmentos del mismo contenido se cifran con la misma clave de datos. Puede proporcionar una clave dedatos o dejar que Elastic Transcoder la cree automáticamente.

La CMK se puede utilizar para cifrar la clave de datos en los puntos siguientes:

• Si proporciona su propia clave de datos, deberá cifrarla antes de pasarla a Elastic Transcoder.• Si solicita que Elastic Transcoder genere la clave de datos, Elastic Transcoder cifrará la clave de datos

automáticamente.

La CMK se puede utilizar para descifrar la clave de datos en los puntos siguientes:

• Elastic Transcoder descifra la clave de datos proporcionada cuando necesita usarla para cifrar el archivode salida o para descifrar el archivo de entrada.

• Descifra una clave de datos generada por Elastic Transcoder y la usa para descifrar los archivos desalida.

Para obtener más información, consulte Protección de contenido HLS en la Amazon Elastic TranscoderDeveloper Guide.

Contexto de cifrado de Elastic TranscoderUn contexto de cifrado (p. 16) es un conjunto de pares de clave-valor que contienen datos no secretosarbitrarios. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vincula

271

Page 280: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon EMR

criptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasarel mismo contexto de cifrado.

Elastic Transcoder utiliza el mismo contexto de cifrado en todas las solicitudes a la API de AWS KMS parala generación de claves de datos, el cifrado y el descifrado.

"service" : "elastictranscoder.amazonaws.com"

El cifrado de contexto se escribe en los registros de CloudTrail para ayudarle a entender cómo se usóuna determinada CMK de AWS KMS. En el campo requestParameters de un archivo de registro deCloudTrail, el contexto de cifrado es similar al siguiente:

"encryptionContext": { "service" : "elastictranscoder.amazonaws.com"}

Para obtener más información sobre cómo configurar los trabajos de Elastic Transcoder para usar una delas opciones de cifrado admitidas, consulte Opciones de cifrado de datos en la Amazon Elastic TranscoderDeveloper Guide.

Cómo Amazon EMR usa AWS KMSCuando utilice un clúster de Amazon EMR, puede configurarlo para cifrar los datos en reposo antes deguardarlos en una ubicación de almacenamiento persistente. Puede cifrar los datos en reposo en elsistema de archivos EMR (EMRFS), en los volúmenes de almacenamiento de nodos del clúster o enambos. Para cifrar los datos en reposo, puede utilizar una clave maestra de cliente (CMK) en AWS KMS.En los siguientes temas se explica cómo un clúster Amazon EMR una CMK para cifrar los datos en reposo.

Important

Amazon EMR solo admite CMK simétricas (p. 144). No se puede utilizar una CMKasimétrica (p. 144) para cifrar datos en reposo en un clúster de Amazon EMR. Para obtener ayudapara determinar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas yasimétricas (p. 40).

Los clústeres de Amazon EMR también cifran los datos en tránsito, lo que significa el clúster los cifra antesde enviarlos a través de la red. No puede utilizar una CMK para cifrar los datos en tránsito. Para obtenermás información, consulte Cifrado de datos en tránsito en la Guía de administración de Amazon EMR.

Para obtener más información sobre todas las opciones de cifrado disponibles en Amazon EMR, consulteOpciones de cifrado en la Guía de administración de Amazon EMR.

Temas• Cifrar datos en el sistema de archivos EMR (EMRFS) (p. 272)• Cifrar datos en los volúmenes de almacenamiento de los nodos de clúster (p. 274)• Contexto de cifrado (p. 275)

Cifrar datos en el sistema de archivos EMR (EMRFS)Los clústeres de Amazon EMR usan dos sistemas de archivos distribuidos:

• Hadoop Distributed File System (HDFS). El cifrado HDFS no utiliza una CMK en AWS KMS.

272

Page 281: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrar datos en el sistema de archivos EMR (EMRFS)

• Sistema de archivos EMR (EMRFS). EMRFS es una implementación de HDFS que permite a losclústeres de Amazon EMR almacenen datos en Amazon Simple Storage Service (Amazon S3). EMRFSadmite cuatro opciones de cifrado, dos de las cuales utilizan una CMK de AWS KMS. Para obtener másinformación acerca de las cuatro opciones de cifrado de EMRFS, consulte Opciones de cifrado en laGuía de administración de Amazon EMR.

Las dos opciones de cifrado de EMRFS que utilizan una CMK usan las siguientes características de cifradoque ofrece Amazon S3:

• Cifrado en el servidor con claves administradas por AWS KMS (SSE-KMS). Con SSE-KMS, el clústerde Amazon EMR envía datos a Amazon S3 y, a continuación, Amazon S3 utiliza una CMK para cifrarlosantes de guardarlos en un bucket de S3. Para obtener más información sobre cómo funciona, consulteProceso de cifrar datos en EMRFS con SSE-KMS (p. 273).

• Cifrado del lado del cliente con claves administradas por AWS KMS (CSE-KMS). Con CSE-KMS, elclúster de Amazon EMR utiliza una CMK para cifrar los datos antes de enviarlos a Amazon S3 paraalmacenarlos. Para obtener más información sobre cómo funciona, consulte Proceso de cifrar datos enEMRFS con CSE-KMS (p. 274).

Al configurar un clúster de Amazon EMR para cifrar datos en EMRFS con SSE-KMS o CSE-KMS, elijala CMK en AWS KMS que desee que usen Amazon S3 o el clúster de Amazon EMR. Con SSE-KMS,puede elegir la CMK administrada por AWS para Amazon S3 con el alias aws/s3 o una CMK simétricaadministrada por el cliente que haya creado. Con CSE-KMS, debe elegir una CMK simétrica administradapor el cliente que cree. Si elige una CMK administrada por el cliente, debe asegurarse de que el clústerde Amazon EMR tiene permiso para utilizarla. Para obtener más información, consulte Uso de clavesmaestras de cliente (CMK) de AWS KMS para cifrado en la Guía de administración de Amazon EMR.

En el caso de SSE-KMS y CSE-KMS, la CMK que elija será la clave maestra de un flujo de trabajo decifrado de sobres (p. 15). Los datos se cifran con una clave de cifrado de datos única (o clave de datos)y esta clave de datos se cifra con la CMK en AWS KMS. Los datos cifrados y una copia cifrada de suclave de datos se almacenan juntos como un solo objeto cifrado en un bucket de S3. Para obtener másinformación sobre cómo funciona, consulte los siguientes temas.

Temas• Proceso de cifrar datos en EMRFS con SSE-KMS (p. 273)• Proceso de cifrar datos en EMRFS con CSE-KMS (p. 274)

Proceso de cifrar datos en EMRFS con SSE-KMSAl configurar un clúster de Amazon EMR para usar SSE-KMS, el proceso de cifrado funciona del siguientemodo:

1. El clúster envía datos a Amazon S3 para almacenarlos en un bucket de S3.2. Amazon S3 envía una solicitud GenerateDataKey a AWS KMS, en la que se especifica el ID de clave de

la CMK que se ha elegido al configurar el clúster para utilizar SSE-KMS. La solicitud incluye el contextode cifrado; para obtener más información, consulte Contexto de cifrado (p. 275).

3. AWS KMS genera una clave de cifrado de datos (clave de datos) única y, a continuación, envía doscopias de esta clave de datos a Amazon S3. Una copia está sin cifrar (texto no cifrado) y la otra se cifracon la CMK.

4. Amazon S3 utiliza la clave de datos de texto no cifrado para cifrar los datos que ha recibido en el paso1 y, a continuación, elimina la clave de datos de texto no cifrado de la memoria tan pronto como seaposible después de utilizarla.

5. Amazon S3 almacena los datos cifrados y la copia cifrada de la clave de datos como un solo objetocifrado en un bucket de S3.

273

Page 282: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrar datos en los volúmenes de

almacenamiento de los nodos de clúster

El proceso de descifrado funciona de la siguiente manera:

1. El clúster solicita un objeto de datos cifrado de un bucket de S3.2. Amazon S3 extrae la clave de datos cifrada del objeto de S3 y, a continuación, se la envía a AWS KMS

con una solicitud Decrypt. La solicitud incluye un contexto de cifrado (p. 16).3. AWS KMS descifra la clave de datos cifrada con la misma CMK que se utilizó para cifrarla y, a

continuación, envía la clave de datos descifrada (texto no cifrado) a Amazon S3.4. Amazon S3 utiliza la clave de datos de texto no cifrado para descifrar los datos cifrados y, a

continuación, elimina la clave de datos de texto no cifrado de la memoria tan pronto como sea posibledespués de utilizarla.

5. Amazon S3 envía los datos descifrados al clúster.

Proceso de cifrar datos en EMRFS con CSE-KMSAl configurar un clúster de Amazon EMR para usar CSE-KMS, el proceso de cifrado funciona del siguientemodo:

1. Cuando está preparado para almacenar datos en Amazon S3, el clúster envía una solicitudGenerateDataKey a AWS KMS, en la que se especifica el ID de clave de la CMK que se ha elegido alconfigurar el clúster para utilizar CSE-KMS. La solicitud incluye el contexto de cifrado; para obtener másinformación, consulte Contexto de cifrado (p. 275).

2. AWS KMS genera una clave de cifrado de datos (clave de datos) única y, a continuación, envía doscopias de esta clave de datos al clúster. Una copia está sin cifrar (texto no cifrado) y la otra se cifra conla CMK.

3. El clúster utiliza la clave de datos de texto no cifrado para cifrar los datos y, a continuación, elimina laclave de datos de texto no cifrado de la memoria tan pronto como sea posible después de utilizarla.

4. El clúster combina los datos cifrados y la copia cifrada de la clave de datos en un solo objeto cifrado.5. El clúster envía el cifrado objeto a Amazon S3 para almacenarlo.

El proceso de descifrado funciona de la siguiente manera:

1. El clúster solicita el objeto de datos cifrado de un bucket de S3.2. Amazon S3 envía el cifrado objeto al clúster.3. El clúster extrae la clave de datos cifrada del objeto cifrado y, a continuación, se la envía a AWS KMS

con una solicitud Decrypt. La solicitud incluye el contexto de cifrado (p. 16).4. AWS KMS descifra la clave de datos cifrada con la misma CMK que se utilizó para cifrarla y, a

continuación, envía la clave de datos descifrada (texto no cifrado) al clúster.5. El clúster utiliza la clave de datos de texto no cifrado para descifrar los datos cifrados y, a continuación,

elimina la clave de datos de texto no cifrado de la memoria tan pronto como sea posible después deutilizarla.

Cifrar datos en los volúmenes de almacenamiento delos nodos de clústerUn clúster de Amazon EMR es una colección de instancias Amazon Elastic Compute Cloud (AmazonEC2). Cada instancia del clúster se denomina un nodo de clúster o nodo. Cada nodo puede tener dos tiposde volúmenes de almacenamiento: volúmenes de almacén de instancias y volúmenes de Amazon ElasticBlock Store (Amazon EBS). Puede configurar el clúster para utilizar la Configuración de clave unificada deLinux (LUKS) para cifrar ambos tipos de volúmenes de almacenamiento en los nodos (pero no el volumende arranque de cada nodo). Se denomina cifrado de disco local.

274

Page 283: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado

Al habilitar el cifrado de disco local para un clúster, puede cifrar la clave maestra LUKS con una CMK enAWS KMS. Debe elegir una CMK personalizada que haya creado; no puede utilizar una CMK administradapor AWS. Si elige una CMK personalizada, debe asegurarse de que el clúster de Amazon EMR tienepermiso para utilizarla. Para obtener más información, consulte Uso de claves maestras de cliente (CMK)de AWS KMS para cifrado en la Guía de administración de Amazon EMR.

Si habilita el cifrado del disco local mediante una CMK, el proceso de cifrado funciona del siguiente modo:

1. Cuando se lanza cada nodo de clúster, envía una solicitud GenerateDataKey a AWS KMS, en la que seespecifica el ID de clave de la CMK que se ha elegido al habilitar el cifrado de disco local para el clúster.

2. AWS KMS genera una clave de cifrado de datos (clave de datos) única y, a continuación, envía doscopias de esta clave de datos al nodo. Una copia está sin cifrar (texto no cifrado) y la otra se cifra con laCMK.

3. El nodo utiliza una versión de la codificación de base64 de la clave de datos de texto no cifrado como lacontraseña que protege la clave maestra de LUKS. El nodo guarda la copia cifrada de la clave de datosen su volumen de arranque.

4. Si el nodo se reinicia, el nodo reiniciado envía la clave de datos cifrada a AWS KMS con una solicitudDecrypt.

5. AWS KMS descifra la clave de datos cifrada con la misma CMK que se utilizó para cifrarla y, acontinuación, envía la clave de datos descifrada (texto no cifrado) al nodo.

6. El nodo utiliza la versión de la codificación de base64 de la clave de datos de texto no cifrado como lacontraseña para desbloquear la clave maestra de LUKS.

Contexto de cifradoCada servicio de AWS que está integrado con AWS KMS puede especificar el contexto de cifrado (p. 16)cuando utiliza AWS KMS para generar claves de datos o para cifrar o descifrar datos. El contexto decifrado consta de información autenticada adicional que usa AWS KMS para comprobar la integridad de losdatos. Cuando un servicio especifica el contexto de cifrado para una operación de cifrado, debe especificarel mismo contexto de cifrado para la operación de descifrado correspondiente; de lo contrario, el descifradono se realizará correctamente. El contexto de cifrado también se escribe en los archivos de registro deAWS CloudTrail, lo que puede ayudarle a entender por qué se ha usado una determinada CMK.

En la siguiente sección se explica el contexto de cifrado que se utiliza en cada situación de cifrado deAmazon EMR que utiliza una CMK.

Contexto de cifrado para el cifrado de EMRFS con SSE-KMSCon SSE-KMS, el clúster de Amazon EMR envía datos a Amazon S3 y, a continuación, Amazon S3utiliza una CMK para cifrarlos antes de guardarlos en un bucket de S3. En este caso, Amazon S3 utilizael nombre de recurso de Amazon (ARN) del objeto de S3 como contexto de cifrado con cada solicitudGenerateDataKey y Decrypt que envía a AWS KMS. El siguiente ejemplo muestra una representaciónJSON del contexto de cifrado que usa Amazon S3.

{ "aws:s3:arn" : "arn:aws:s3:::S3_bucket_name/S3_object_key" }

Contexto de cifrado para el cifrado de EMRFS con CSE-KMSCon CSE-KMS, el clúster de Amazon EMR utiliza una CMK para cifrar los datos antes de enviarlos aAmazon S3 para almacenarlos. En este caso, el clúster utiliza el nombre de recurso de Amazon (ARN) dela CMK como contexto de cifrado con cada solicitud GenerateDataKey y Decrypt que envía a AWS KMS.El siguiente ejemplo muestra una representación JSON del contexto de cifrado que usa el clúster.

275

Page 284: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon Redshift

{ "kms_cmk_id" : "arn:aws:kms:us-east-2:111122223333:key/0987ab65-43cd-21ef-09ab-87654321cdef" }

Contexto de cifrado para el cifrado de disco local con LUKSCuando un clúster de Amazon EMR utiliza el cifrado de disco local con LUKS, los nodos del clúster noespecifican el contexto de cifrado con las solicitudes GenerateDataKey y Decrypt que envían a AWS KMS.

Cómo Amazon Redshift usa AWS KMSEn este tema se explica cómo Amazon Redshift utiliza AWS KMS para cifrar los datos.

Temas• Cifrado de Amazon Redshift (p. 276)• Contexto de cifrado (p. 277)

Cifrado de Amazon RedshiftUn almacén de datos de Amazon Redshift es una colección de recursos informáticos denominados nodos,que están organizados en un grupo llamado clúster. Cada clúster ejecuta un motor Amazon Redshift ycontiene una o más bases de datos.

Amazon Redshift usa una arquitectura de cuatro niveles basada en claves para el cifrado. La arquitecturaconsta de claves de cifrado de datos, una clave de base de datos, una clave de clúster y una clavemaestra.

Las claves de cifrado de datos cifran los bloques de datos del clúster. A cada bloque de datos se le asignauna clave AES-256 generada aleatoriamente. Estas claves se cifran mediante la clave de base de datosdel clúster.

La clave de base de datos cifra las claves de cifrado de datos del clúster. La clave de base de datos esuna clave AES-256 generada aleatoriamente. Se almacena en disco en una red diferente del clúster deAmazon Redshift y se pasa al clúster a través de un canal seguro.

La clave del clúster cifra la clave de base de datos del clúster de Amazon Redshift. Puede usar AWS KMS,AWS CloudHSM o un módulo de seguridad por hardware (HSM) externo para administrar la clave delclúster. Consulte la documentación sobre cifrado de base de datos de Amazon Redshift para obtener másinformación.

La clave maestra cifra la clave del clúster. Puede utilizar una clave maestra del cliente (p. 3) (CMK) deAWS KMS como clave maestra para Amazon Redshift. Puede solicitar el cifrado marcando la casillacorrespondiente en la consola de Amazon Redshift. Puede especificar una CMK administrada por elcliente (p. 4) para usarla seleccionando una en la lista que aparece debajo del cuadro de cifrado. Sino especifica una CMK administrada por el cliente, Amazon Redshift utiliza la CMK administrada porAWS (p. 4) para Amazon Redshift en su cuenta.

Important

Amazon Redshift solo admite CMK simétricas. No se puede utilizar una CMK asimétricacomo clave maestra en un flujo de trabajo de Amazon Redshift cifrado. Para obtener ayudapara determinar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas yasimétricas (p. 40).

276

Page 285: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado

Contexto de cifradoCada servicio que está integrado con AWS KMS especifica un contexto de cifrado (p. 16) cuando sesolicitan claves de datos, cifrado y descifrado. El contexto de cifrado es información autenticada adicional(AAD) que usa AWS KMS para comprobar la integridad de los datos. Es decir, cuando se especifica uncontexto de cifrado para una operación de cifrado, el servicio también lo especifica en la operación dedescifrado; de lo contrario, el descifrado no se realizará correctamente. Amazon Redshift utiliza el ID declúster y la hora de creación del contexto de cifrado. En el campo requestParameters de un archivo deregistro de CloudTrail, el contexto de cifrado será similar a este.

"encryptionContext": { "aws:redshift:arn": "arn:aws:redshift:region:account_ID:cluster:cluster_name", "aws:redshift:createtime": "20150206T1832Z"},

Puede buscar el nombre del clúster en sus registros de CloudTrail para saber qué operaciones se hanllevado a cabo con una clave maestra de cliente (CMK). Las operaciones incluyen el cifrado del clúster, eldescifrado del clúster y la generación de claves de datos.

Cómo Amazon Relational Database Service(Amazon RDS) usa AWS KMS

Puede utilizar Amazon Relational Database Service (Amazon RDS) para configurar, operar y escalar unabase de datos relacional en la nube. También puede elegir cifrar los datos almacenados en su instancia debase de datos de Amazon RDS con una clave maestra de cliente (p. 3) (CMK) en AWS KMS. Para obtenerinformación acerca de cómo cifrar sus recursos de Amazon RDS en una CMK de AWS KMS, consulteCifrado de recursos de Amazon RDS en la Guía del usuario de Amazon RDS.

Important

Amazon RDS solo admite CMK simétricas (p. 144). No se puede utilizar una CMKasimétrica (p. 144) para cifrar datos en una base de datos de Amazon RDS. Para obtener ayudapara determinar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas yasimétricas (p. 40).

Amazon RDS se basa en el cifrado de Amazon Elastic Block Store (Amazon EBS) para proporcionarcifrado de disco completo para los volúmenes de base de datos. Para obtener más información sobrecómo Amazon EBS usa AWS KMS para cifrar los volúmenes, consulte Cómo Amazon Elastic Block Store(Amazon EBS) usa AWS KMS (p. 265).

Al crear una instancia de base de datos cifrada con Amazon RDS, Amazon RDS crea un volumen de EBScifrado en su nombre para almacenar la base de datos. Los datos almacenados en reposo en el volumen,las instantáneas de base de datos, las copias de seguridad automatizadas y las réplicas de lectura secifran con la CMK de KMS especificada al crear la instancia de base de datos.

Contexto de cifrado de Amazon RDSCuando Amazon RDS utiliza la CMK de KMS o cuando Amazon EBS la usa en nombre de Amazon RDS,el servicio especifica un contexto de cifrado (p. 16). El contexto de cifrado es la información autenticadaadicional (ADD) que AWS KMS usa para garantizar la integridad de los datos. Cuando se especifica uncontexto de cifrado para una operación de cifrado, el servicio debe especificar el mismo contexto de cifradopara la operación de descifrado. De lo contrario, el descifrado produce un error. El contexto de cifrado

277

Page 286: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAWS Secrets Manager

también se escribe en los registros de AWS CloudTrail para ayudarle a entender por qué se usó unadeterminada CMK. Sus registros de CloudTrail pueden contener numerosas entradas que describen eluso de una CMK, pero el contexto de cifrado de cada entrada de registro puede ayudarle a determinar elmotivo de ese uso concreto.

Como mínimo, Amazon RDS siempre usa el ID de la instancia de base de datos para el contexto decifrado, como en el siguiente ejemplo con formato JSON:

{ "aws:rds:db-id": "db-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }

Este contexto de cifrado puede ayudarle a identificar la instancia de base de datos para que se ha utilizadosu CMK.

Cuando su CMK se usa para una determinada instancia de base de datos y un volumen de EBSespecífico, tanto el ID de instancia de base de datos como el ID de volumen de EBS se usan para elcontexto, como en el siguiente ejemplo con formato JSON:

{ "aws:rds:db-id": "db-BRG7VYS3SVIFQW7234EJQOM5RQ", "aws:ebs:id": "vol-ad8c6542"}

Cómo AWS Secrets Manager usa AWS KMSAWS Secrets Manager es un servicio de AWS que cifra y almacena secretos, los descifra de maneratransparente y los devuelve en texto sin cifrar. Se ha diseñado especialmente para almacenar secretos deaplicación, como, por ejemplo, credenciales de inicio de sesión, que cambian periódicamente y no debencodificarse de forma rígida o almacenarse en texto sin formato en la aplicación. En lugar de credencialesde codificación rígida o búsquedas de tabla, la aplicación llama a Secrets Manager.

Secrets Manager también admite características que rotan periódicamente los secretos asociados conbases de datos de uso común. Siempre cifra secretos recién rotados antes de que se almacenen.

Secrets Manager se integra con AWS Key Management Service (AWS KMS) para cifrar todas lasversiones de cada secreto con una clave de cifrado de datos (p. 5) única que esté protegida mediante unaclave maestra de cliente (p. 3) (CMK) de AWS KMS. Esta integración protege sus secretos bajo claves decifrado que nunca dejan AWS KMS sin cifrar. También permite establecer permisos personalizados en laclave maestra y auditar las operaciones que generan, cifran y descifran las claves de datos que protegensus secretos.

Temas• Proteger el valor del secreto (p. 278)• Cifrar y descifrar secretos (p. 279)• Usar la CMK de AWS KMS (p. 281)• Autorizar el uso de la CMK (p. 282)• Contexto de cifrado de Secrets Manager (p. 283)• Monitorear la interacción de Secrets Manager con AWS KMS (p. 284)

Proteger el valor del secretoPara proteger un secreto, Secrets Manager cifra el valor del secreto en un secreto.

278

Page 287: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrar y descifrar secretos

En Secrets Manager, un secreto se compone de un valor del secreto, también conocido como textode secreto protegido o datos de secreto cifrados, así como los metadatos y la información de versiónasociados. El valor del secreto puede ser una cadena o datos binarios de hasta 65 536 bytes, peronormalmente es un conjunto de pares de nombre-valor que componen la información de acceso a unservidor o base de datos.

Secrets Manager siempre cifra todo el valor del secreto antes de que almacene el secreto. Descifra el valordel secreto de forma transparente siempre que obtenga o cambie el valor del secreto. No existe la opciónde habilitar o deshabilitar el cifrado. Para cifrar y descifrar el valor del secreto, Secrets Manager utilizaAWS KMS.

Cifrar y descifrar secretosPara proteger secretos, Secrets Manager utiliza el cifrado de sobres (p. 15) con claves maestras decliente (p. 3) (CMK) de AWS KMS y claves de datos (p. 5).

Secrets Manager utiliza una clave de datos única para proteger cada valor del secreto. Siempre quecambia el valor del secreto en un secreto, Secrets Manager genera una nueva clave de datos paraprotegerlo. La clave de datos se cifra con una CMK de AWS KMS y se almacenan en los metadatos delsecreto, tal y como se muestra en la siguiente imagen. Para descifrar el secreto, Secrets Manager primerodebe descifrar la clave de datos cifrada con la CMK en AWS KMS.

Una CMK de AWS KMS para cada secretoCada secreto se asocia con una clave maestra de cliente (p. 3) (CMK) administrada por AWS o porel cliente. Las CMK administradas por el cliente permiten a los usuarios autorizados controlar elacceso (p. 53) a la CMK a través de políticas y concesiones, administrar la rotación automática (p. 157) yutilizar material de claves importadas (p. 162).

Important

Secrets Manager solo admite CMK simétricas (p. 144). No puede usar una CMKasimétrica (p. 144) para cifrar los secretos. Para obtener ayuda para determinar si una CMK essimétrica o asimétrica, consulte Identificar CMK simétricas y asimétricas (p. 40).

Cuando se crea un nuevo secreto, puede especificar cualquier CMK simétrica administrada por el clienteen la cuenta y la región o la CMK administrada por AWS para Secrets Manager, aws/secretsmanager.

279

Page 288: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrar y descifrar secretos

Si no especifica una CMK o selecciona el valor predeterminado de la consola, DefaultEncryptionKey,Secrets Manager crea la aws/secretsmanager CMK, si no existe y la asocia con el secreto. Puedeutilizar la misma CMK o CMK diferentes para cada secreto de su cuenta.

Puede cambiar la CMK de un secreto en cualquier momento, ya sea en la consola de Secrets Manager outilizando la operación UpdateSecret. Al cambiar la CMK, Secrets Manager no vuelve a cifrar el valor delsecreto existente en la nueva CMK. Sin embargo, la próxima vez que cambie el valor del secreto, SecretsManager lo cifra bajo la nueva CMK.

Para buscar la CMK asociada con un secreto, utilice las operaciones ListSecrets o DescribeSecret.Cuando el secreto está asociado a la CMK administrada por AWS para Secrets Manager (aws/secretsmanager), estas operaciones no devuelven un identificador de CMK.

Secrets Manager no utiliza la CMK para cifrar directamente el valor del secreto. En su lugar, utiliza la CMKpara generar y cifrar una clave de datos única y utiliza la clave de datos para cifrar el valor del secreto.

Clave de datos única para cada valor del secretoCada vez que cree o cambie el valor del secreto en un secreto, Secrets Manager utiliza la CMK asociadacon el secreto para generar y cifrar una clave de datos (p. 5) simétrica Advanced Encryption Standard(AES) de 256 bits. Secrets Manager utiliza la clave de datos de texto no cifrado para cifrar el valor delsecreto fuera de AWS KMS y, a continuación, esta la elimina de la memoria. Almacena la copia cifrada dela clave de datos en los metadatos del secreto.

El valor del secreto se protege, en última instancia, mediante la CMK, que nunca deja AWS KMS sin cifrar.Antes de que Secrets Manager pueda descifrar el secreto, debe pedir a AWS KMS que descifre la clave dedatos cifrada.

Cifrar un valor de secretoPara cifrar el valor de secreto en un secreto, Secrets Manager utiliza el siguiente proceso.

1. Secrets Manager llama a la operación GenerateDataKey de AWS KMS con el ID de la CMK para elsecreto y una solicitud de una clave simétrica de AES de 256 bits. AWS KMS devuelve una clave dedatos de texto no cifrado y una copia de dicha clave de datos cifrada con la CMK.

2. Secrets Manager utiliza la clave de datos de texto no cifrado y el algoritmo de Advanced EncryptionStandard (AES) para cifrar el valor del secreto fuera de AWS KMS. Elimina la clave de texto no cifradode la memoria lo antes posible tras utilizarla.

3. Secrets Manager almacena la clave de datos cifrada en los metadatos del secreto por lo que estádisponible para descifrar el valor del secreto. Sin embargo, ninguna de las API de Secrets Managerdevuelve el secreto cifrado o la clave de datos cifrada.

Descifrar un valor de secretoPara descifrar un valor de secreto cifrado, Secrets Manager primero debe descifrar la clave de datoscifrada. Dado que la clave de datos se cifra bajo la CMK para el secreto en AWS KMS, Secrets Managerdebe realizar una solicitud a AWS KMS.

Para descifrar un valor de secreto cifrado:

1. Secrets Manager llama a la operación Decrypt de AWS KMS y pasa la clave de datos cifrada.2. AWS KMS usa la CMK del secreto para descifrar la clave de datos. Devuelve la clave de datos de texto

no cifrado.3. Secrets Manager usa la clave de datos en texto no cifrado para descifrar el valor del secreto. A

continuación, elimina la clave de datos de la memoria lo antes posible.

280

Page 289: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar la CMK de AWS KMS

Usar la CMK de AWS KMSSecrets Manager utiliza la clave maestra de cliente (p. 3) (CMK) asociada con un secreto para generaruna clave de datos para cada valor de secreto. También utiliza la CMK para descifrar esa clave de datosque necesita para descifrar la clave del secreto cifrada. Puede hacer un seguimiento de las solicitudes yrespuestas en eventos de AWS CloudTrail, Amazon CloudWatch Logs (p. 284) y pistas de auditoría.

Las siguientes operaciones de Secrets Manager activan una solicitud para utilizar su CMK de AWS KMS.

GenerateDataKey

Secrets Manager llama a la operación GenerateDataKey de AWS KMS en respuesta a las siguientesoperaciones de Secrets Manager.• CreateSecret: si el nuevo secreto incluye un valor de secreto, Secrets Manager solicita una nueva

clave de datos para cifrarlo.• PutSecretValue: Secrets Manager solicita una nueva clave de datos para cifrar el valor del secreto

especificado.• UpdateSecret: si la actualización cambia el valor del secreto, Secrets Manager solicita una nueva

clave de datos para cifrar el valor del secreto nuevo.

Note

La operación RotateSecret no llama a GenerateDataKey, ya que no cambia el valordel secreto. Sin embargo, si la función Lambda que RotateSecret invoca cambiael valor del secreto, su llamada a la operación PutSecretValue activa una solicitudGenerateDataKey.

Decrypt

Para descifrar un valor del secreto cifrado, Secrets Manager llama a la operación Decrypt de AWSKMS para descifrar la clave de datos cifrada en el secreto. A continuación, usa la clave de datos entexto no cifrado para descifrar el valor del secreto cifrado.

Secrets Manager llama a la operación Decrypt en respuesta a las siguientes operaciones de SecretsManager.• GetSecretValue: Secrets Manager descifra el valor del secreto antes de devolvérselo al

intermediario.• PutSecretValue y UpdateSecret: la mayoría de las solicitudes PutSecretValue y UpdateSecret

no activan una operación Decrypt. Sin embargo, cuando una solicitud PutSecretValue oUpdateSecret intenta cambiar el valor del secreto en una versión existente de un secreto, SecretsManager descifra el valor del secreto existente y lo compara con el valor del secreto en la solicitudpara confirmar que son iguales. Esta acción garantiza que las operaciones de Secrets Manager sonidempotentes.

Validar el acceso a la CMK

Al establecer o cambiar la CMK asociada con el secreto, Secrets Manager llama a las operacionesGenerateDataKey y Decrypt con la CMK especificada. Estas llamadas confirman que elintermediario tiene permiso para utilizar la CMK para esta operación. Secrets Manager descarta losresultados de estas operaciones; no las utiliza en ninguna operación criptográfica.

Puede identificar estas llamadas de validación, ya que el valor del contexto de cifrado (p. 283) de laclave SecretVersionId en estas solicitudes es RequestToValidateKeyAccess.

Note

En el pasado, las llamadas de validación de Secrets Manager no incluían un contexto decifrado. Es posible encontrar llamadas sin contexto de cifrado en los registros de AWSCloudTrail anteriores.

281

Page 290: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutorizar el uso de la CMK

Autorizar el uso de la CMKCuando Secrets Manager utiliza una clave maestra de cliente (p. 3) (CMK) en las operacionescriptográficas, actúa en nombre del usuario que está creando o modificando el valor del secreto en elsecreto.

Para utilizar la clave maestra de cliente (CMK) de AWS KMS para un secreto en su nombre, el usuariodebe contar con los siguientes permisos. Puede especificar estos permisos necesarios en una política deIAM o política de claves.

• kms:GenerateDataKey• kms:Decrypt

Para permitir la CMK para utilizarse solo para solicitudes que se originen en SecretsManager, puede utilizar la clave de condición kms:ViaService (p. 122) con el valorsecretsmanager.<region>.amazonaws.com.

También puede utilizar las claves o valores en el contexto de cifrado (p. 283) como condición para utilizarla CMK para operaciones criptográficas. Por ejemplo, puede utilizar un operador de condición de cadenaen un documento de IAM o de políticas de claves, o bien utilizar una restricción de concesión en unaconcesión.

Política de claves de la CMK administrada por AWSLa política de claves para la CMK administrada por AWS para Secrets Manager da a los usuarios permisopara utilizar la CMK solo para las operaciones especificadas solo cuando Secrets Manager realizala solicitud en nombre del usuario. La política de claves no permite a ningún usuario utilizar la CMKdirectamente.

El servicio establece esta política de claves, como las políticas de todas las claves administradas porAWS (p. 3). No puede cambiar la política de claves, pero puede verla en cualquier momento. Para obtenermás información, consulte Consultar una política de claves (p. 69).

Las instrucciones de política en la política de claves tienen los siguientes efectos:

• Permitir a los usuarios de la cuenta utilizar CMK para operaciones criptográficas solo cuando la solicitudproviene de Secrets Manager en su nombre. La clave de condición kms:ViaService aplica estarestricción.

• Permite a la cuenta de AWS crear políticas de IAM que permiten a los usuarios ver propiedades de CMKy revocar concesiones.

• Aunque Secrets Manager no utiliza concesiones para obtener acceso a la CMK, la política tambiénpermite a Secrets Manager crear concesiones (p. 127) para la CMK en nombre del usuario y permiteque la cuenta revoque cualquier concesión que permita a Secrets Manager utilizar la CMK. Estos son loselementos estándar del documento de políticas para una CMK administrada por AWS.

A continuación se muestra una política de claves para un ejemplo de CMK administrada por AWS paraSecrets Manager.

{ "Version" : "2012-10-17", "Id" : "auto-secretsmanager-1", "Statement" : [ { "Sid" : "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager",

282

Page 291: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado de Secrets Manager

"Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "secretsmanager.us-west-2.amazonaws.com", "kms:CallerAccount" : "111122223333" } } },{ "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" } ]}

Contexto de cifrado de Secrets ManagerUn contexto de cifrado (p. 16) es un conjunto de pares de clave-valor que contienen datos no secretosarbitrarios. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vinculacriptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasarel mismo contexto de cifrado.

En sus solicitudes GenerateDataKey y Decrypt a AWS KMS, Secrets Manager utiliza un contexto decifrado con dos pares de nombre–valor que identifican el secreto y su versión, tal y como se muestra enel siguiente ejemplo. Los nombres no varían, pero los valores de contexto de cifrado combinado serándiferentes para cada valor de secreto.

"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"}

Puede utilizar el contexto de cifrado para identificar esta operación criptográfica en los registros deauditoría, como AWS CloudTrail y Amazon CloudWatch Logs, y como una condición para la autorizaciónde las políticas y concesiones.

El contexto de cifrado de Secrets Manager se compone de dos pares de nombre-valor.

• SecretARN: el primer par de nombre–valor identifica el secreto. La clave es SecretARN. El valor es elNombre de recurso de Amazon (ARN) del secreto.

"SecretARN": "ARN of an Secrets Manager secret"

Por ejemplo, si el ARN del secreto fuera arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3, el contexto de cifrado incluiría el siguientepar.

"SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3"

283

Page 292: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMonitorear la interacción de

Secrets Manager con AWS KMS

• SecretVersionId: el segundo par de nombre-valor identifica la versión del secreto. La clave esSecretVersionId. El valor es el ID de la versión.

"SecretVersionId": "<version-id>"

Por ejemplo, si el ID de versión del secreto fuera EXAMPLE1-90ab-cdef-fedc-ba987SECRET1, elcontexto de cifrado incluiría el siguiente par.

"SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"

Al establecer o cambiar la CMK de un secreto, Secrets Manager envía solicitudes GenerateDataKey yDecrypt a AWS KMS para comprobar que el intermediario tiene permiso para utilizar la CMK para estasoperaciones. Descarta las respuestas; no las utiliza en el valor del secreto.

En estos solicitudes de validación, el valor de SecretARN es el ARN real del secreto, pero el valorSecretVersionId es RequestToValidateKeyAccess, tal y como se muestra en el siguiente ejemplode contexto de cifrado. Este valor especial le ayudará a identificar las solicitudes de validación en losregistros y las pistas de auditoría.

"encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "RequestToValidateKeyAccess"}

Note

En el pasado, las solicitudes de validación de Secrets Manager no incluían un contexto decifrado. Es posible encontrar llamadas sin contexto de cifrado en los registros de AWS CloudTrailanteriores.

Monitorear la interacción de Secrets Manager conAWS KMSPuede utilizar AWS CloudTrail y Amazon CloudWatch Logs para realizar un seguimiento de las solicitudesque Secrets Manager envía a AWS KMS en su nombre.

GenerateDataKey

Al crear o cambiar (p. 281) el valor del secreto en un secreto, Secrets Manager envía una solicitudGenerateDataKey a AWS KMS que especifica la CMK para el secreto.

El evento que registra la operación GenerateDataKey es similar al siguiente evento de ejemplo.La solicitud la invoca secretsmanager.amazonaws.com. Los parámetros incluyen el nombre derecurso de Amazon (ARN) de la CMK para el secreto, un especificador de clave que requiere unaclave de 256 bits y el contexto de cifrado (p. 283) que identifica el secreto y la versión.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE",

284

Page 293: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMonitorear la interacción de

Secrets Manager con AWS KMS

"sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-05-31T23:23:41Z" } }, "invokedBy": "secretsmanager.amazonaws.com" }, "eventTime": "2018-05-31T23:23:41Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "keySpec": "AES_256", "encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" } }, "responseElements": null, "requestID": "a7d4dd6f-6529-11e8-9881-67744a270888", "eventID": "af7476b6-62d7-42c2-bc02-5ce86c21ed36", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Decrypt

Siempre que obtenga o cambie (p. 281) el valor de secreto de un secreto, Secrets Manager envíauna solicitud Decrypt a AWS KMS para descifrar la clave de datos cifrada.

El evento que registra la operación Decrypt es similar al siguiente evento de ejemplo. El usuario es elprincipal en su cuenta de AWS que está accediendo a la tabla. Los parámetros incluyen la clave de latabla cifrada (como blob de texto cifrado) y el contexto de cifrado (p. 283) que identifica la tabla y lacuenta de AWS. AWS KMS deriva el ID de la CMK del texto cifrado.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-05-31T23:36:09Z" } },

285

Page 294: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon Simple Email Service (Amazon SES)

"invokedBy": "secretsmanager.amazonaws.com" }, "eventTime": "2018-05-31T23:36:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "secretsmanager.amazonaws.com", "userAgent": "secretsmanager.amazonaws.com", "requestParameters": { "encryptionContext": { "SecretARN": "arn:aws:secretsmanager:us-west-2:111122223333:secret:test-secret-a1b2c3", "SecretVersionId": "EXAMPLE1-90ab-cdef-fedc-ba987SECRET1" } }, "responseElements": null, "requestID": "658c6a08-652b-11e8-a6d4-ffee2046048a", "eventID": "f333ec5c-7fc1-46b1-b985-cbda13719611", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Cómo Amazon Simple Email Service (AmazonSES) usa AWS KMS

Puede utilizar Amazon Simple Email Service (Amazon SES) para recibir el correo electrónico y, si lodesea, para cifrar los mensajes recibidos antes de almacenarlos en un bucket de Amazon Simple StorageService (Amazon S3) que haya elegido. Al configurar Amazon SES para cifrar los mensajes de correoelectrónico, debe elegir la clave maestra de cliente (p. 3) (CMK) de AWS KMS con la que Amazon SEScifra los mensajes. Puede elegir la CMK administrada por AWS (p. 4) para Amazon SES (su alias es aws/ses) o puede elegir una CMK administrada por el cliente (p. 4) simétrica que haya creado en AWS KMS.

Important

Amazon SES solo admite CMK simétricas (p. 144). No puede utilizar una CMK asimétrica (p. 144)para cifrar sus mensajes de correo electrónico de Amazon SES. Para obtener ayuda paradeterminar si una CMK es simétrica o asimétrica, consulte Identificar CMK simétricas yasimétricas (p. 40).

Para obtener más información sobre la recepción de correo electrónico con Amazon SES, vaya aRecepción de correo electrónico con Amazon SES en la Guía para desarrolladores de Amazon SimpleEmail Service.

Temas• Información general del cifrado de Amazon SES con AWS KMS (p. 287)• Contexto de cifrado de Amazon SES (p. 287)• Conceder a Amazon SES permiso para utilizar la clave maestra de cliente (CMK) de AWS

KMS (p. 288)

286

Page 295: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresInformación general del cifradode Amazon SES con AWS KMS

• Obtener y descifrar mensajes de correo electrónico (p. 288)

Información general del cifrado de Amazon SES conAWS KMSAl configurar Amazon SES para recibir correo electrónico y cifrar los mensajes de correo electrónico antesde guardarlos en su bucket de S3, el proceso funciona del siguiente modo:

1. Se crea una regla de recepción para Amazon SES, especificando la acción de S3, un bucket de S3para el almacenamiento y una clave maestra del cliente (CMK) de KMS para el cifrado.

2. Amazon SES recibe un mensaje de correo electrónico que coincide con la regla de recepción.3. Amazon SES solicita una clave de datos única cifrada con la CMK de KMS que ha especificado en la

regla de recepción aplicable.4. AWS KMS crea una clave de datos, la cifra con la CMK especificada y, a continuación, envía copias

cifradas y de texto no cifrado de la clave de datos a Amazon SES.5. Amazon SES utiliza la clave de datos de texto no cifrado para cifrar el mensaje de correo electrónico

y, a continuación, elimina la clave de datos de texto no cifrado de la memoria tan pronto como seaposible después de utilizarla.

6. Amazon SES coloca el mensaje de correo electrónico cifrado y la clave de datos cifrada en el bucketde S3 especificado. La clave de datos cifrada se almacena como metadatos con el mensaje de correoelectrónico cifrado.

Para conseguir Step 3 (p. 287) mediante Step 6 (p. 287), Amazon SES utiliza el cliente de cifradode Amazon S3 proporcionado por AWS. Utilice el mismo cliente para recuperar los mensajes de correoelectrónico cifrados de Amazon S3 y descifrarlos. Para obtener más información, consulte Obtener ydescifrar mensajes de correo electrónico (p. 288).

Contexto de cifrado de Amazon SESCuando Amazon SES solicita un clave de datos para cifrar los mensajes de correo electrónico recibidos(Step 3 (p. 287) en Información general del cifrado de Amazon SES con AWS KMS (p. 287)), incluyeun contexto de cifrado (p. 16) en la solicitud. El contexto de cifrado proporciona la información autenticadaadicional (AAD) que usa AWS KMS para garantizar la integridad de los datos. El contexto de cifradotambién se escribe en los archivos de registro de AWS CloudTrail, lo que puede ayudarle a entender porqué se ha usado una determinada clave principal de cliente (CMK). Amazon SES usa lo siguiente para elcontexto de cifrado:

• El ID de la cuenta de AWS en la que ha configurado Amazon SES para recibir mensajes de correoelectrónico

• El nombre de la regla de recepción de Amazon SES que ha invocado la acción de S3 en el mensaje decorreo electrónico

• El ID de mensaje de Amazon SES para el mensaje de correo electrónico

El siguiente ejemplo muestra una representación JSON del contexto de cifrado que usa Amazon SES:

{ "aws:ses:source-account": "111122223333", "aws:ses:rule-name": "example-receipt-rule-name", "aws:ses:message-id": "d6iitobk75ur44p8kdnnp7g2n800"}

287

Page 296: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConceder a Amazon SES permiso para utilizar

la clave maestra de cliente (CMK) de AWS KMS

Conceder a Amazon SES permiso para utilizar la clavemaestra de cliente (CMK) de AWS KMSPuede usar la clave maestra de cliente (CMK) predeterminada de su cuenta para Amazon SES con elalias aws/ses o puede usar una CMK que haya creado. Si usa la CMK predeterminada para Amazon SES,no tiene que realizar ningún paso para conceder permiso a Amazon SES para que la use. Sin embargo,para especificar una CMK personalizada al agregar la acción de S3 a la regla de recepción de AmazonSES, debe asegurarse de que Amazon SES tiene permiso para utilizar la CMK para cifrar sus mensajes decorreo electrónico. Para conceder a Amazon SES permiso para utilizar su CMK personalizada, agregue lasiguiente declaración a su política de claves (p. 57) de CMK:

{ "Sid": "Allow SES to encrypt messages using this master key", "Effect": "Allow", "Principal": {"Service": "ses.amazonaws.com"}, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:ses:rule-name": false, "kms:EncryptionContext:aws:ses:message-id": false }, "StringEquals": {"kms:EncryptionContext:aws:ses:source-account": "ACCOUNT-ID-WITHOUT-HYPHENS"} }}

Sustituya ACCOUNT-ID-WITHOUT-HYPHENS por el ID de 12 dígitos de la cuenta de AWS en la que haconfigurado Amazon SES para recibir mensajes de correo electrónico. Esta declaración de política permitea Amazon SES cifrar los datos con esta CMK solo en estas condiciones:

• Amazon SES debe especificar aws:ses:rule-name y aws:ses:message-id enEncryptionContext de sus solicitudes de API de AWS KMS.

• Amazon SES debe especificar aws:ses:source-account en EncryptionContext de sussolicitudes de API de AWS KMS y el valor de aws:ses:source-account debe coincidir con el ID decuenta de AWS especificado en la política de claves.

Para obtener más información sobre el contexto de cifrado que usa Amazon SES al cifrar sus mensajesde correo electrónico, consulte Contexto de cifrado de Amazon SES (p. 287). Para obtener informacióngeneral acerca de cómo AWS KMS utiliza el contexto de cifrado, consulte contexto de cifrado (p. 16).

Obtener y descifrar mensajes de correo electrónicoAmazon SES no tiene permiso para descifrar los mensajes de correo electrónico cifrados y no puededescifrarlos automáticamente. Debe escribir código para obtener los mensajes de correo electrónicode Amazon S3 y descifrarlos. Para facilitar la operación, use el cliente de cifrado de Amazon S3. Lossiguientes SDK de AWS incluyen el cliente de cifrado de Amazon S3:

• AWS SDK for Java: consulte AmazonS3EncryptionClient en la AWS SDK for Java API Reference.• AWS SDK parar Ruby: consulte Aws::S3::Encryption::Client en la AWS SDK parar Ruby API Reference.• AWS SDK para .NET: consulte AmazonS3EncryptionClient en la AWS SDK para .NET API Reference.• AWS SDK for Go: consulte s3crypto en la Referencia de la API de AWS SDK for Go.

288

Page 297: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon Simple Storage Service (Amazon S3)

El cliente de cifrado de Amazon S3 simplifica la creación de las solicitudes a Amazon S3 para recuperar elmensaje de correo electrónico cifrado y a AWS KMS para descifrar la clave de datos cifrada del mensajey el descifrado del mensaje de correo electrónico. Por ejemplo, para descifrar correctamente la clave dedatos cifrada debe pasar el mismo contexto de cifrado que ha pasado Amazon SES al solicitar la clave dedatos desde AWS KMS (Step 3 (p. 287) en la Información general del cifrado de Amazon SES con AWSKMS (p. 287)). El cliente de cifrado de Amazon S3 gestiona automáticamente este trabajo y gran partede otras tareas.

Para ver el código de muestra que utiliza el cliente de cifrado de Amazon S3 en AWS SDK for Java pararealizar el cifrado en el cliente, consulte lo siguiente:

• Ejemplo: Cifrado del lado del cliente (Opción 1: Uso de una clave maestra del cliente administrada porAWS KMS (AWS SDK for Java)) en la Guía para desarrolladores de Amazon Simple Storage Service.

• Amazon S3 Encryption with AWS Key Management Service en el blog para desarrolladores de AWS.

Cómo Amazon Simple Storage Service (AmazonS3) usa AWS KMS

En este tema se explica cómo proteger los datos en reposo en centros de datos de Amazon S3 medianteAWS KMS. Existen dos formas de utilizar AWS KMS con Amazon S3. Puede utilizar el cifrado en elservidor para proteger los datos con una clave maestra o puede usar una clave maestra de cliente (CMK)de AWS KMS con el cliente de cifrado de Amazon S3 para proteger los datos en el cliente.

Temas• Cifrado en el servidor: uso de SSE-KMS (p. 289)• Usar el cliente de cifrado de Amazon S3 (p. 290)• Contexto de cifrado (p. 290)

Cifrado en el servidor: uso de SSE-KMSPuede proteger los datos en reposo en Amazon S3 mediante tres modos distintos de cifrado de servidor:SSE-S3, SSE-C o SSE-KMS.

• SSE-S3 requiere que Amazon S3 administre los datos y las claves de cifrado maestras. Para obtenermás información sobre SSE-S3, consulte Protección de los datos con el cifrado del lado del servidor conclaves de cifrado administradas por Amazon S3 (SSE-S3).

• SSE-C requiere que usted administre la clave de cifrado. Para obtener más información sobre SSE-C,consulte Protección de los datos mediante el cifrado en el servidor con claves de cifrado proporcionadaspor el cliente (SSE-C).

• SSE-KMS requiere que AWS administre la clave de datos pero que el usuario administre la clavemaestra del cliente (p. 3) (CMK) en AWS KMS.

En el resto de este tema se explica cómo proteger los datos mediante el cifrado en el servidor con clavesadministradas por AWS KMS (SSE-KMS).

Puede solicitar el cifrado y seleccionar una CMK mediante la consola o la API de Amazon S3. En laconsola, marque la casilla correspondiente para realizar el cifrado y seleccione la CMK en la lista. Para laAPI de Amazon S3, especifique el cifrado y elija la CMK configurando los encabezados adecuados en unasolicitud GET o PUT. Para obtener más información, consulte Proteger los datos utilizando cifrado en elservidor con claves administradas por AWS KMS (SSE-KMS).

289

Page 298: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresUsar el cliente de cifrado de Amazon S3

Important

Amazon S3 solo admite CMK simétricas (p. 144). No puede utilizar una CMK asimétrica (p. 144)para cifrar los datos en Amazon S3. Para obtener ayuda para determinar si una CMK es simétricao asimétrica, consulte Identificar CMK simétricas y asimétricas (p. 40).

Puede elegir una CMK administrada por el cliente (p. 4) o la CMK administrada por AWS (p. 4) paraAmazon S3 de su cuenta. Si decide cifrar los datos, AWS KMS y Amazon S3 realizan las siguientesacciones:

• Amazon S3 solicita una clave de datos en texto no cifrado y una copia de la clave cifrada con la CMKespecificada.

• AWS KMS crea una clave de datos, la cifra con la clave maestra y envía la clave de datos en texto nocifrado y la clave de datos cifrada a Amazon S3.

• Amazon S3 cifra los datos con la clave de datos y elimina la clave en texto no cifrado de la memoria tanpronto como sea posible después de utilizarla.

• Amazon S3 almacena la clave de datos cifrada como metadatos con el archivo de datos.

Amazon S3 y AWS KMS realizan las siguientes acciones al solicitar que se descifren los datos.

• Amazon S3 envía la clave de datos cifrada a AWS KMS.• AWS KMS descifra la clave mediante la clave maestra de cliente apropiada y envía la clave en texto no

cifrado a Amazon S3.• Amazon S3 descifra el texto cifrado y elimina la clave de datos en texto no cifrado de la memoria tan

pronto como sea posible.

Usar el cliente de cifrado de Amazon S3Puede utilizar el cliente de cifrado de Amazon S3 en el SDK de AWS desde su aplicación para cifrarobjetos y cargarlos en Amazon S3. Este método le permite cifrar los datos localmente para garantizar suseguridad al enviarlos al servicio de Amazon S3. El servicio de Amazon S3 recibe los datos cifrados y nointerviene en su cifrado o descifrado.

El cliente de cifrado de Amazon S3 cifra el objeto utilizando el cifrado de sobre. El cliente llama a AWSKMS como parte de la llamada de cifrado que se realiza al transferir los datos al cliente. AWS KMS verificaque tiene autorización para usar la clave maestra de cliente (p. 3) (CMK) y, en tal caso, proporciona unanueva clave de datos en texto no cifrado y la clave de datos cifrada con la CMK. El cliente de cifrado deAmazon S3 cifra los datos mediante la clave en texto no cifrado y, a continuación, elimina la clave de lamemoria. La clave de datos cifrada se envía a Amazon S3 para almacenarla junto con los datos cifrados.

Contexto de cifradoCada servicio que está integrado con AWS KMS especifica un contexto de cifrado (p. 16) cuando sesolicitan claves de datos, cifrado y descifrado. El contexto de cifrado es información autenticada adicional(AAD) que usa AWS KMS para comprobar la integridad de los datos.

Cuando se especifica un contexto de cifrado para una operación de cifrado, Amazon S3 especifica elmismo contexto de cifrado que para la operación de descifrado. De lo contrario, el descifrado produce unerror.

Si utiliza SSE-KMS o el cliente de cifrado de Amazon S3 para realizar el cifrado, Amazon S3 utiliza la rutadel bucket como el contexto de cifrado. En el campo requestParameters de un archivo de registro deCloudTrail, el contexto de cifrado será similar a este.

290

Page 299: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAWS Administrador de sistemas Parameter Store

"encryptionContext": { "aws:s3:arn": "arn:aws:s3:::bucket_name/file_name"},

Cómo AWS Administrador de sistemas ParameterStore usa AWS KMS

Con Parameter Store de AWS Administrador de sistemas, puede crear parámetros secure string, que sonparámetros que tienen un nombre en texto no cifrado y un valor de parámetro cifrado. Parameter Storeutiliza AWS KMS para cifrar y descifrar los valores de los parámetros secure string.

Con Parameter Store, puede crear, almacenar y administrar datos como parámetros con valores. Puedecrear un parámetro en Parameter Store y utilizarlo en varias aplicaciones y servicios de acuerdo con laspolíticas y los permisos que diseñe. Cuando necesite cambiar el valor de un parámetro, cambiará unainstancia, y no tendrá que administrar una modificación propensa a errores en varios orígenes. ParameterStore admite una estructura jerárquica para los nombres de los parámetros, por lo que puede asignar unparámetro para usos específicos.

Para administrar información confidencial, puede crear parámetros secure string. Parameter Store utilizaclaves maestras del cliente (CMK) de AWS KMS para cifrar los valores de los parámetros secure stringcuando estos se crean o se modifican. También utiliza CMK para descifrar los valores de los parámetroscuando se obtiene acceso a ellos. Puede utilizar la CMK administrada por AWS (p. 4) que Parameter Storecrea para su cuenta o especificar su propia CMK administrada por el cliente (p. 4).

Important

Parameter Store solo admite CMK simétricas (p. 144). No se puede utilizar una CMKasimétrica (p. 144) para cifrar los parámetros. Para obtener ayuda para determinar si una CMK essimétrica o asimétrica, consulte Identificar CMK simétricas y asimétricas (p. 40).

Parameter Store admite dos niveles de secure string parámetros: estándar y avanzados. Los parámetrosestándar, que no pueden superar los 4096 bytes, se cifran y descifran directamente con la CMK queespecifique. Para cifrar y descifrar parámetros secure string avanzados, Parameter Store utiliza el cifradode sobre con el SDK de cifrado de AWS. Puede convertir un parámetro secure string estándar en unparámetro avanzado, pero no puede convertir un parámetro avanzado en uno estándar. Para obtener másinformación acerca de la diferencia entre los parámetros secure string estándar y avanzados, consulteAcerca de los parámetros avanzados de Administrador de sistemas en la Guía del usuario de AWSAdministrador de sistemas.

Temas• Proteger los parámetros de cadena segura estándar (p. 291)• Proteger los parámetros de cadena segura avanzada (p. 294)• Configurar permisos para cifrar y descifrar valores de parámetros (p. 296)• Contexto de cifrado de Parameter Store (p. 298)• Solucionar problemas con las CMK en Parameter Store (p. 299)

Proteger los parámetros de cadena segura estándarParameter Store no realiza ninguna operación criptográfica. En lugar de ello, utiliza AWS KMS para cifrar ydescifrar los valores de los parámetros secure string. Cuando se crea o se cambia el valor de un parámetrosecure string estándar, Parameter Store llama a la operación Encrypt de AWS KMS. Esta operación utiliza

291

Page 300: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresProteger los parámetros de cadena segura estándar

directamente una CMK simétrica de AWS KMS para cifrar el valor del parámetro en lugar de utilizar la CMKpara generar una clave de datos (p. 5).

Puede seleccionar la CMK que utiliza Parameter Store para cifrar el valor del parámetro. Si no especificauna CMK, Parameter Store utiliza la CMK administrada por AWS que Administrador de sistemas creaautomáticamente en su cuenta. Esta CMK tiene el alias aws/ssm.

Si desea ver la CMK aws/ssm predeterminada de su cuenta, utilice la operación DescribeKey de la API deAWS KMS. El siguiente ejemplo utiliza el comando describe-key de la AWS Command Line Interface(AWS CLI) con el nombre de alias aws/ssm.

aws kms describe-key --key-id alias/aws/ssm

Para crear un parámetro secure string estándar, utilice la operación PutParameter de la API deAdministrador de sistemas. Omita el parámetro Tier o especifique un valor de Standard, que es el valorpredeterminado. Incluya un parámetro Type con el valor SecureString. Para especificar una CMK deAWS KMS, utilice el parámetro KeyId. El valor predeterminado es la CMK administrada por AWS de sucuenta, aws/ssm.

A continuación, Parameter Store llama a la operación Encrypt de AWS KMS con la CMK y el valor delparámetro en texto no cifrado. AWS KMS devuelve el valor del parámetro cifrado y Parameter Store loalmacena junto con el nombre del parámetro.

El siguiente ejemplo utiliza el comando put-parameter de Administrador de sistemas y su parámetro --type en la AWS CLI para crear un parámetro secure string. Como el comando omite los parámetrosopcionales --key-id y --tier, Parameter Store crea un parámetro secure string estándar y lo cifra conla CMK administrada por AWS.

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString

El siguiente ejemplo similar utiliza el parámetro --key-id para especificar una CMK administrada porel cliente (p. 4). El ejemplo utiliza un ID de CMK para identificar la CMK, pero puede utilizar cualquieridentificador de CMK válido. Como el comando omite el parámetro Tier (--tier), Parameter Store creaun parámetro secure string estándar, no uno avanzado.

aws ssm put-parameter --name param1 --value "secret" --type SecureString --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

Cuando se obtiene un parámetro secure string de Parameter Store, su valor está cifrado. Para obtener unparámetro, utilice la operación GetParameter de la API de Administrador de sistemas.

El siguiente ejemplo utiliza el comando get-parameter de Administrador de sistemas en la AWS CLI paraobtener el parámetro MyParameter de Parameter Store sin descifrar su valor.

$ aws ssm get-parameter --name MyParameter

{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" }}

Para descifrar el valor del parámetro antes de devolverlo, defina el parámetro WithDecryptionde GetParameter en true. Al utilizar WithDecryption, Parameter Store llama a la operación

292

Page 301: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresProteger los parámetros de cadena segura estándar

Decrypt de AWS KMS en su nombre para descifrar el valor del parámetro. En consecuencia, la solicitudGetParameter devuelve el parámetro con un valor en texto no cifrado, tal y como se muestra en elsiguiente ejemplo.

$ aws ssm get-parameter --name MyParameter --with-decryption

{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "secret_value" }}

El siguiente flujo de trabajo muestra cómo Parameter Store utiliza una CMK de AWS KMS para cifrar ydescifrar un parámetro secure string estándar.

Cifrar un parámetro estándar1. Cuando se utiliza PutParameter para crear un parámetro secure string, Parameter Store envía una

solicitud Encrypt a AWS KMS. Dicha solicitud incluye el valor del parámetro en texto no cifrado, laCMK que ha elegido y el contexto de cifrado de Parameter Store (p. 298). Durante la transmisión aAWS KMS, el valor en texto no cifrado del parámetro secure string está protegido por Transport LayerSecurity (TLS).

2. AWS KMS cifra el valor del parámetro con la CMK y el contexto de cifrado especificados. Devuelve eltexto cifrado a Parameter Store, que almacena el nombre del parámetro y su valor cifrado.

Descifrar parámetros estándar1. Cuando se incluye el parámetro WithDecryption en una solicitud GetParameter, Parameter Store

envía una solicitud Decrypt a AWS KMS con el valor del parámetro secure string cifrado y el contextode cifrado de Parameter Store (p. 298).

293

Page 302: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresProteger los parámetros de cadena segura avanzada

2. AWS KMS utiliza la misma CMK y el contexto de cifrado proporcionado para descifrar el valor cifrado.Devuelve el valor del parámetro en texto no cifrado a Parameter Store. Durante la transmisión, los datosen texto no cifrado están protegidos por TLS.

3. Parameter Store devuelve el valor del parámetro en texto no cifrado en la respuesta de GetParameter.

Proteger los parámetros de cadena segura avanzadaCuando se utiliza PutParameter para crear un parámetro secure string avanzado, Parameter Store usael cifrado de sobre con el SDK de cifrado de AWS y una clave maestra del cliente (CMK) simétrica de AWSKMS para proteger el valor del parámetro. Cada valor del parámetro avanzado se cifra con una clave dedatos única y la clave de datos se cifra con una CMK de AWS KMS. Puede usar la CMK administrada porAWS (p. 4) de la cuenta (aws/ssm) o cualquier CMK administrada por el cliente.

El SDK de cifrado de AWS es una biblioteca cliente de código abierto que le ayuda a cifrar y descifrardatos mediante estándares y prácticas recomendadas del sector. Es compatible con varias plataformas yvarios lenguajes de programación, incluida una interfaz de línea de comandos. Puede ver el código fuentey contribuir a su desarrollo en GitHub.

Para cada valor de un parámetro secure string, Parameter Store llama al SDK de cifrado de AWSpara descifrar el valor del parámetro utilizando una clave de datos única que AWS KMS genera(GenerateDataKey). El SDK de cifrado de AWS devuelve a Parameter Store un mensaje cifrado queincluye el valor del parámetro cifrado y una copia cifrada de la clave de datos única. Parameter Storealmacena todo el mensaje cifrado en el valor del parámetro secure string. A continuación, cuando seobtiene el valor de un parámetro secure string, Parameter Store utiliza el SDK de cifrado de AWS paradescifrar el valor del parámetro. Esto requiere una llamada a AWS KMS para descifrar la clave de datoscifrada.

Para crear un parámetro secure string avanzado, utilice la operación PutParameter de la API deAdministrador de sistemas. Establezca el valor del parámetro Tier en Advanced. Incluya un parámetroType con el valor SecureString. Para especificar una CMK de AWS KMS, utilice el parámetro KeyId. Elvalor predeterminado es la CMK administrada por AWS de su cuenta, aws/ssm.

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString --tier Advanced

El siguiente ejemplo similar utiliza el parámetro --key-id para especificar una CMK administrada por elcliente (p. 4). El ejemplo utiliza el Nombre de recurso de Amazon (ARN) de la CMK, pero puede utilizarcualquier identificador de CMK válido.

aws ssm put-parameter --name MyParameter --value "secret_value" --type SecureString --tier Advanced --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Cuando se obtiene un parámetro secure string de Parameter Store, su valor es el mensaje cifrado quedevuelve el SDK de cifrado de AWS. Para obtener un parámetro, utilice la operación GetParameter de laAPI de Administrador de sistemas.

En el siguiente ejemplo se utiliza la operación GetParameter de Administrador de sistemas para obtenerel parámetro MyParameter de Parameter Store sin descifrar su valor.

$ aws ssm get-parameter --name MyParameter

{ "Parameter": {

294

Page 303: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresProteger los parámetros de cadena segura avanzada

"Type": "SecureString", "Name": "MyParameter", "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg/9E464VRo68cvwAAAG8wbQYJKoZIhvcNAQcGoGAwXgIBADBZBgkqhkiG9w0BBwEwHgYJYZZIAWUDBAEuMBEEDImYOw44gna0Jm00hAIBEIAsjgr7mum1EnnXzE3xM8bGle0oKYcfVCHtBkfjIeZGTgL6Hg0fSDnpMHdcSXY=" }}

Para descifrar el valor del parámetro antes de devolverlo, establezca el parámetro WithDecryptionde GetParameter en true. Al utilizar WithDecryption, Parameter Store llama a la operaciónDecrypt de AWS KMS en su nombre para descifrar el valor del parámetro. En consecuencia, la solicitudGetParameter devuelve el parámetro con un valor en texto no cifrado, tal y como se muestra en elsiguiente ejemplo.

$ aws ssm get-parameter --name MyParameter --with-decryption

{ "Parameter": { "Type": "SecureString", "Name": "MyParameter", "Value": "secret_value" }}

No se puede convertir un parámetro secure string avanzado en uno estándar, pero puede convertir unparámetro secure string estándar en uno avanzado. Para convertir un parámetro secure string estándar enun parámetro secure string avanzado, utilice la operación PutParameter con el parámetro Overwrite.El valor de Type debe ser SecureString y el valor de Tier debe ser Advanced. El parámetro KeyId,que identifica una CMK administrada por el cliente, es opcional. Si lo omite, Parameter Store utiliza la CMKadministrada por AWS de la cuenta. Puede especificar cualquier CMK para la que la entidad principaltenga permiso, aunque utilice una CMK diferente para cifrar el parámetro estándar.

Cuando se utiliza el parámetro Overwrite, Parameter Store usa el SDK de cifrado de AWS para cifrar elvalor del parámetro. A continuación, almacena el nuevo mensaje cifrado en Parameter Store.

$ aws ssm put-parameter --name myStdParameter --value "secret_value" --type SecureString --tier Advanced --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --overwrite

El siguiente flujo de trabajo muestra cómo Parameter Store utiliza una CMK de AWS KMS para cifrar ydescifrar un parámetro secure string avanzado.

Cifrar un parámetro avanzado1. Cuando se utiliza PutParameter para crear un parámetro secure string avanzado, Parameter Store

utiliza el SDK de cifrado de AWS y AWS KMS para cifrar el valor del parámetro. Parameter Store llamaal SDK de cifrado de AWS con el valor del parámetro, la CMK de AWS KMS que ha especificado y elcontexto de cifrado de Parameter Store (p. 298).

2. El SDK de cifrado de AWS envía una solicitud GenerateDataKey a AWS KMS con el identificador de laCMK que ha especificado y el contexto de cifrado de Parameter Store. AWS KMS devuelve dos copiasde la clave de datos única: uno en texto no cifrado y otra cifrada con la CMK. (El contexto de cifrado seutiliza al cifrar la clave de datos).

3. El SDK de cifrado de AWS usa la clave de datos en texto no cifrado para cifrar el valor del parámetro.Devuelve un mensaje cifrado que incluye el valor del parámetro cifrado, la clave de datos cifrada y otrosdatos, incluido el contexto de cifrado de Parameter Store.

4. Parameter Store almacena el mensaje cifrado como el valor del parámetro.

295

Page 304: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConfigurar permisos para cifrar ydescifrar valores de parámetros

Descifrar un parámetro avanzado1. Puede incluir el parámetro WithDecryption en una solicitud GetParameter para obtener un

parámetro secure string avanzado. Cuando lo haga, Parameter Store pasará el mensaje cifrado delvalor del parámetro a un método de descifrado del SDK de cifrado de AWS.

2. El SDK de cifrado de AWS llama a la operación Decrypt de KMS. Pasa la clave de datos cifrada y elcontexto de cifrado de Parameter Store del mensaje cifrado.

3. AWS KMS utiliza la CMK y el contexto de cifrado de Parameter Store para descifrar la clave de datoscifrada. A continuación, devuelve la clave de datos en texto no cifrado (descifrada) al SDK de cifrado deAWS.

4. El SDK de cifrado de AWS utiliza la clave de datos en texto no cifrado para descifrar el valor delparámetro. Devuelve el valor del parámetro en texto no cifrado a Parameter Store.

5. Parameter Store verifica el contexto de cifrado y devuelve el valor del parámetro en texto no cifrado enla respuesta de GetParameter.

Configurar permisos para cifrar y descifrar valores deparámetrosPara cifrar el valor de un parámetro secure string estándar, el usuario necesita el permiso kms:Encrypt.Para cifrar el valor de un parámetro secure string avanzado, el usuario necesita el permisokms:GenerateDataKey. Para descifrar cualquier tipo de valor de un parámetro secure string, el usuarionecesita el permiso kms:Decrypt.

Puede utilizar las políticas de IAM para conceder o denegar permisos a un usuario para llamar a lasoperaciones PutParameter y GetParameter de Administrador de sistemas.

Además, si utiliza CMK administradas por el cliente para cifrar valores de parámetros secure string, puedeutilizar políticas de IAM para administrar los permisos de cifrado y descifrado. Sin embargo, no puede

296

Page 305: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConfigurar permisos para cifrar ydescifrar valores de parámetros

establecer políticas de control de acceso para la CMK aws/ssm predeterminada. Para obtener informacióndetallada sobre cómo controlar el acceso a las CMK administradas por el cliente, consulte Autenticación ycontrol de acceso de AWS KMS (p. 53).

El siguiente ejemplo muestra una política de IAM diseñada para parámetros secure string estándar.Permite que el usuario llame a la operación PutParameter de Administrador de sistemas en todoslos parámetros de la ruta FinancialParameters. La política también permite al usuario llamar a laoperación Encrypt de AWS KMS en una CMK administrada por el cliente de ejemplo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/FinancialParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Encrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

El siguiente ejemplo muestra una política de IAM diseñada para parámetros secure string avanzados.Permite que el usuario llame a la operación PutParameter de Administrador de sistemas en todos losparámetros de la ruta ReservedParameters. La política también permite al usuario llamar a la operaciónGenerateDataKey de AWS KMS en una CMK administrada por el cliente de ejemplo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ReservedParameters/*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

El último ejemplo también muestra una política de IAM que se puede utilizar para parámetros secure stringestándar o avanzados. Permite al usuario llamar a las operaciones GetParameter de Administrador desistemas (y a las operaciones relacionadas) en todos los parámetros de la ruta ITParameters. La políticatambién permite al usuario llamar a la operación Decrypt de AWS KMS en una CMK administrada por elcliente de ejemplo.

297

Page 306: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado de Parameter Store

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/ITParameters/*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ]}

Contexto de cifrado de Parameter StoreUn contexto de cifrado es un conjunto de pares de clave-valor que contienen datos no secretosarbitrarios. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vinculacriptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasarel mismo contexto de cifrado.

También se puede utilizar el contexto de cifrado para identificar una operación criptográfica en los registrosy los registros de auditoría. El contexto de cifrado aparece en texto no cifrado en los registros, como losregistros de AWS CloudTrail.

El SDK de cifrado de AWS también tiene un contexto de cifrado, aunque se administra de forma distinta.Parameter Store proporciona el contexto de cifrado al método de cifrado. El SDK de cifrado de AWSvincula criptográficamente el contexto de cifrado a los datos cifrados. También incluye el contexto decifrado en texto no cifrado en el encabezado del mensaje cifrado que devuelve. Sin embargo, a diferenciade AWS KMS, los métodos de descifrado de SDK de cifrado de AWS no toman un contexto de cifradocomo entrada. En lugar de ello, cuando se descifran los datos, el SDK de cifrado de AWS obtiene elcontexto de cifrado del mensaje cifrado. Parameter Store verifica que el contexto de cifrado incluye el valorque espera antes de devolverle el valor del parámetro en texto no cifrado.

Parameter Store utiliza el siguiente contexto de cifrado en sus operaciones criptográficas:

• Key: PARAMETER_ARN• Valor: el nombre de recurso de Amazon (ARN) del parámetro que se va a cifrar.

El formato del contexto de cifrado es el siguiente:

"PARAMETER_ARN":"arn:aws:ssm:<REGION_NAME>:<ACCOUNT_ID>:parameter/<parameter-name>"

Por ejemplo, Parameter Store incluye este contexto de cifrado en las llamadas para cifrar y descifrar elparámetro MyParameter en una cuenta y región de AWS de ejemplo.

"PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter"

Si el parámetro está en una ruta jerárquica de Parameter Store, la ruta y el nombre se incluyen en elcontexto de cifrado. Por ejemplo, este contexto de cifrado se utiliza al cifrar y descifrar el parámetroMyParameter en la ruta /ReadableParameters en una cuenta y región de AWS de ejemplo.

298

Page 307: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolucionar problemas con las CMK en Parameter Store

"PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/ReadableParameters/MyParameter"

Puede descifrar el valor de un parámetro secure string cifrado llamando a la operación Decrypt deAWS KMS con el contexto de cifrado correcto y el valor del parámetro cifrado devuelto por la operaciónGetParameter de Administrador de sistemas. No obstante, le animamos a que utilice la operaciónGetParameter con el parámetro WithDecryption para cifrar valores de parámetros de ParameterStore.

También puede incluir el contexto de cifrado en una política de IAM. Por ejemplo, puede permitir aun usuario que descifre únicamente el valor de un parámetro o un conjunto de valores de parámetrosdeterminados.

La siguiente instrucción de política de IAM de ejemplo permite al usuario obtener el valor del parámetroMyParameter y descifrarlo mediante la CMK especificada. Sin embargo, los permisos solo se aplicancuando el contexto de cifrado coincide con la cadena especificada. Estos permisos no se aplican a ningúnotro parámetro ni CMK, y la llamada a GetParameter da un error si el contexto de cifrado no coincide conla cadena.

Antes de utilizar una instrucción de política como esta, sustituya los ARN de ejemplo por valores válidos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameter*" ], "Resource": "arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter", }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringEquals": { "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-west-2:111122223333:parameter/MyParameter" } } } ]}

Solucionar problemas con las CMK en ParameterStorePara realizar operaciones en un parámetro secure string, Parameter Store debe poder utilizar la CMKde AWS KMS especificada para la operación que se pretende realizar. La mayoría de los errores deParameter Store relacionados con las CMK los provocan los siguientes problemas:

• Las credenciales que utiliza una aplicación no tienen permisos para realizar la acción especificada en laCMK.

299

Page 308: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon WorkMail

Para solucionar este error, ejecute la aplicación con otras credenciales o revise la política de IAM o declaves que impide realizar la operación. Para obtener ayuda con AWS KMS y las políticas de IAM y declaves, consulte Autenticación y control de acceso de AWS KMS (p. 53).

• La CMK no se encuentra.

Normalmente, esto ocurre cuando se utiliza un identificador incorrecto para la CMK. Localice losidentificadores correctos (p. 39) para la CMK e intente ejecutar de nuevo el comando.

• La CMK no está habilitada. Cuando esto ocurre, Parameter Store devuelve una excepciónInvalidKeyId con un mensaje de error detallado de AWS KMS. Si el estado de la CMK es Disabled,habilítela (p. 49). Si está Pending Import, complete el procedimiento de importación (p. 162). Si elestado de la clave es Pending Deletion, cancele la eliminación de la clave (p. 178) o use una CMKdistinta.

Para buscar el estado de la clave (p. 245) de una CMK en la consola AWS KMS, en la página Customermanaged keys (Claves administradas por el cliente) o AWS managed keys (Claves administradas porAWS), consulte la columna Status (Estado) (p. 28). Para buscar el estado de una CMK con la API deAWS KMS, use la operación DescribeKey.

Cómo Amazon WorkMail usa AWS KMSEn este tema se explica cómo Amazon WorkMail utiliza AWS KMS para cifrar mensajes de correoelectrónico.

Temas• Información general de Amazon WorkMail (p. 300)• Cifrado de Amazon WorkMail (p. 300)• Autorizar el uso de la CMK (p. 303)• Contexto de cifrado de Amazon WorkMail (p. 305)• Monitorear la interacción de Amazon WorkMail con AWS KMS (p. 305)

Información general de Amazon WorkMailAmazon WorkMail es un servicio empresarial de calendario y correo electrónico administrado y segurocompatible con clientes de correo electrónico existentes para dispositivos móviles y equipos de sobremesa.Puede crear una organización de Amazon WorkMail y asignarla uno o varios dominios de correoelectrónico de su propiedad. A continuación, puede crear buzones de correo para los usuarios de correoelectrónico y grupos de distribución de la organización.

Amazon WorkMail cifra de manera transparente todos los mensajes de los buzones de correo de todas lasorganizaciones de Amazon WorkMail antes de que se escriban en disco y los descifra también de formatransparente cuando el usuario obtiene acceso a ellos. No existe la opción de desactivar el cifrado. Paraproteger las claves de cifrado que protegen los mensajes, Amazon WorkMail se integra con AWS KeyManagement Service (AWS KMS).

Amazon WorkMail también proporciona una opción que permite a los usuarios enviar correo electrónicofirmado o cifrado. Esta característica de cifrado no utiliza AWS KMS.

Cifrado de Amazon WorkMailEn Amazon WorkMail, cada organización puede contener varios buzones de correo, una para cada usuariode la organización. Todos los mensajes, incluido los elementos de correo electrónico y de calendario, sealmacenan en el buzón de correo del usuario.

300

Page 309: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrado de Amazon WorkMail

Para proteger el contenido de los buzones de correo de sus organizaciones de Amazon WorkMail, AmazonWorkMail cifra todos los mensajes de buzón de correo antes de que se escriban en disco. Ninguno de losdatos proporcionados por el cliente se almacena en texto no cifrado.

Cada mensaje se cifra con una clave de cifrado de datos única. La clave del mensaje se protege con unaclave del buzón de correo, que es una clave de cifrado única que se utiliza únicamente para ese buzónde correo. La clave del buzón de correo se cifra con una clave maestra del cliente (CMK) de AWS KMSde la organización que nunca deja AWS KMS sin cifrar. En el siguiente diagrama se muestra la relaciónde los mensajes cifrados, claves de mensaje cifradas, clave de buzón de correo cifrada y la CMK de laorganización en AWS KMS.

Una CMK para la organizaciónCuando crea una organización de Amazon WorkMail, puede seleccionar una clave maestra de cliente(CMK) de AWS KMS para la organización. Esta CMK protege todas las claves de buzón de correo de esaorganización.

Si utiliza el procedimiento de configuración rápida para crear su organización, Amazon WorkMail utilizala CMK administrada por AWS (p. 3) para Amazon WorkMail (aws/workmail) de su cuenta de AWS. Siutiliza la configuración estándar, puede seleccionar la CMK administrada por AWS para Amazon WorkMailo una CMK administrada por el cliente (p. 3) que usted posea y administre. Puede seleccionar la mismaCMK o una CMK distinta para cada una de sus organizaciones, pero no puede cambiar la CMK una vezque la haya seleccionado.

301

Page 310: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrado de Amazon WorkMail

Important

Amazon WorkMail solo admite CMK simétricas. No se puede utilizar una CMK asimétrica paracifrar datos en Amazon WorkMail. Para obtener ayuda para determinar si una CMK es simétrica oasimétrica, consulte Identificar CMK simétricas y asimétricas (p. 40).

Para buscar la CMK de su organización, utilice la entrada del registro de AWS CloudTrail que registra lasllamadas a AWS KMS.

Clave de cifrado única para cada buzón de correoAl crear un nuevo buzón de correo, Amazon WorkMail genera una clave de cifrado simétrica AdvancedEncryption Standard (AES) única de 256 bits, llamada clave del buzón de correo, fuera de AWS KMS.Amazon WorkMail utiliza la clave del buzón de correo para proteger las claves de cifrado de cada mensajedel buzón.

Para proteger la clave del buzón de correo, Amazon WorkMail llama a AWS KMS para cifrar la clave delbuzón de correo con la CMK de la organización. A continuación, almacena la clave del buzón de correocifrada en los metadatos del buzón.

Note

Amazon WorkMail utiliza una clave de cifrado de buzón de correo simétrica para proteger lasclaves de los mensajes. Anteriormente, Amazon WorkMail protegía cada buzón de correo conun par de claves asimétricas. Utilizaba la clave pública para cifrar cada clave del mensaje y laclave privada para descifrarla. La clave privada del buzón de correo se protegía con la CMK dela organización. Los buzones de correo existentes pueden seguir utilizando un par de claves debuzón de correo asimétricas. Este cambio no afecta a la seguridad de la bandeja de entrada ni desus mensajes.

Clave de cifrado única para cada mensajeCuando se añade un mensaje a la bandeja de entrada, Amazon WorkMail genera una clave de cifradosimétrica AES única de 256 bits para el mensaje fuera de AWS KMS. Utiliza esta clave del mensaje paracifrar el mensaje. Amazon WorkMail cifra la clave del mensaje con la clave del buzón de correo y almacenala clave del mensaje cifrada con el mensaje. A continuación, cifra la clave de buzón de correo con la CMKde la organización.

Crear un nuevo buzón de correoCuando Amazon WorkMail crea un nuevo buzón de correo, utiliza el siguiente proceso para preparar elbuzón de correo para almacenar mensajes cifrados.

• Amazon WorkMail genera una clave de cifrado simétrica AES única de 256 bits para el buzón de correofuera de AWS KMS.

• Amazon WorkMail llama a la operación Encrypt de AWS KMS. Pasa la clave del buzón de correo y elidentificador de la clave maestra del cliente (CMK) de la organización. AWS KMS devuelve un textocifrado de la clave del buzón de correo cifrada con la CMK.

• Amazon WorkMail almacena la clave del buzón de correo cifrada con los metadatos del buzón de correo.

Cifrar un mensaje del buzón de correoPara cifrar un mensaje, Amazon WorkMail utiliza el siguiente proceso.

1. Amazon WorkMail genera una clave simétrica AES única de 256 bits para el mensaje. Utiliza la clave delmensaje en texto no cifrado y el algoritmo Advanced Encryption Standard (AES) para cifrar el mensajefuera de AWS KMS.

302

Page 311: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutorizar el uso de la CMK

2. Para proteger la clave del mensaje con la clave del buzón de correo, Amazon WorkMail necesitadescifrar la clave del buzón de correo, que siempre se almacena en formato cifrado.

Amazon WorkMail llama a la operación Decrypt de AWS KMS y pasa la clave del buzón de correocifrada. AWS KMS utiliza la CMK de la organización para descifrar la clave del buzón de correo ydevuelve la clave del buzón de correo en texto no cifrado a Amazon WorkMail.

3. Amazon WorkMail utiliza la clave del buzón de correo en texto no cifrado y el algoritmo AdvancedEncryption Standard (AES) para cifrar la clave del mensaje fuera de AWS KMS.

4. Amazon WorkMail almacena la clave del mensaje cifrada en los metadatos del mensaje cifrado, por loque está disponible para descifrarla.

Descifrar un mensaje del buzón de correoPara descifrar un mensaje, Amazon WorkMail utiliza el siguiente proceso.

1. Amazon WorkMail llama a la operación Decrypt de AWS KMS y pasa la clave del buzón de correocifrada. AWS KMS utiliza la CMK de la organización para descifrar la clave del buzón de correo ydevuelve la clave del buzón de correo en texto no cifrado a Amazon WorkMail.

2. Amazon WorkMail utiliza la clave del buzón de correo en texto no cifrado y el algoritmo AdvancedEncryption Standard (AES) para descifrar la clave del mensaje cifrada fuera de AWS KMS.

3. Amazon WorkMail utiliza la clave del mensaje en texto no cifrado para descifrar el mensaje cifrado.

Almacenamiento en caché de las claves del buzón de correoPara mejorar el rendimiento y reducir el número de llamadas a AWS KMS, Amazon WorkMail almacena encaché cada clave del buzón de correo en texto sin formato localmente durante un máximo de un minuto.Al final del período de almacenamiento en caché, la clave del buzón de correo se elimina. Si la clave debuzón de correo de ese cliente se requiere durante el período de almacenamiento en caché, AmazonWorkMail puede obtenerla de la caché en lugar de llamar a AWS KMS. La clave del buzón de correo estáprotegida en la memoria caché y nunca se escribe en disco en texto sin formato.

Autorizar el uso de la CMKCuando Amazon WorkMail utiliza una clave maestra de cliente (CMK) en las operaciones criptográficas,actúa en nombre del administrador del buzón de correo.

Para utilizar la clave maestra de cliente (CMK) de AWS KMS para un secreto en su nombre, eladministrador debe tener los siguientes permisos. Puede especificar estos permisos necesarios en unapolítica de IAM o política de claves.

• kms:Encrypt

• kms:Decrypt

• kms:CreateGrant

Para permitir que la CMK solo se pueda utilizar para las solicitudes que se originan enAmazon WorkMail, puede usar la clave de condición kms:ViaService (p. 122) con el valorworkmail.<region>.amazonaws.com.

También puede utilizar las claves o valores del contexto de cifrado (p. 305) como condición para utilizarla CMK para operaciones criptográficas. Por ejemplo, puede utilizar un operador de condición de cadenaen un documento de política de IAM o de políticas de claves, o bien utilizar una restricción de concesión enuna concesión.

Política clave para la CMK administrada por AWS

303

Page 312: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAutorizar el uso de la CMK

La política de claves para la CMK administrada por AWS para Amazon WorkMail concede a los usuariospermiso para utilizar la CMK para las operaciones especificadas solo cuando Amazon WorkMail realizala solicitud en nombre del usuario. La política de claves no permite a ningún usuario utilizar la CMKdirectamente.

Esta política de claves, como las políticas de todas las claves administradas por AWS, la establece elservicio. No puede cambiar la política de claves, pero puede verla en cualquier momento. Para obtenermás información, consulte Consultar una política de claves (p. 69).

Las instrucciones de política de la política de claves tienen el siguiente efecto:

• Permite a los usuarios de la cuenta y región que utilicen la CMK para operaciones criptográficas y paracrear concesiones, pero solo cuando la solicitud proviene de Amazon WorkMail en su nombre. La clavede condición kms:ViaService aplica esta restricción.

• Permite a la cuenta de AWS crear políticas de IAM que permiten a los usuarios ver propiedades de CMKy revocar concesiones.

A continuación, se muestra una política de claves para una CMK administrada por AWS de ejemplo paraAmazon WorkMail.

{ "Version" : "2012-10-17", "Id" : "auto-workmail-1", "Statement" : [ { "Sid" : "Allow access through WorkMail for all principals in the account that are authorized to use WorkMail", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Decrypt", "kms:CreateGrant", "kms:ReEncrypt*", "kms:DescribeKey", "kms:Encrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "workmail.us-east-1.amazonaws.com", "kms:CallerAccount" : "111122223333" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:List*", "kms:Get*", "kms:RevokeGrant" ], "Resource" : "*" } ]}

Usar concesiones para autorizar a Amazon WorkMail

Además de las políticas de claves, Amazon WorkMail utiliza concesiones para añadir permisos a la CMKde cada organización. Para ver las concesiones de la CMK de su cuenta, utilice la operación ListGrants.

Amazon WorkMail utiliza concesiones para añadir los siguientes permisos a la CMK de la organización.

• Añade el permiso kms:Encrypt para permitir que Amazon WorkMail cifre la clave del buzón de correo.• Añade el permiso kms:Decrypt para permitir que Amazon WorkMail utilice la CMK para descifrar la

clave del buzón de correo. Amazon WorkMail requiere este permiso en una concesión porque la solicitud

304

Page 313: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado de Amazon WorkMail

para leer mensajes del buzón de correo utiliza el contexto de seguridad del usuario que lee el mensaje.La solicitud no utiliza las credenciales de la cuenta de AWS. Amazon WorkMail crea esta concesióncuando selecciona una CMK para la organización.

Para crear las concesiones, Amazon WorkMail llama a CreateGrant en nombre del usuario que ha creadola organización. El permiso para crear la concesión proviene de la política de claves. Esta política permite alos usuarios de la cuenta llamar a CreateGrant en la CMK de la organización cuando Amazon WorkMailrealiza la solicitud en nombre de un usuario autorizado.

La política de claves también permite a la raíz de la cuenta revocar la concesión para la clave administradapor AWS. Sin embargo, si revoca la concesión, Amazon WorkMail no puede descifrar los datos cifrados desus buzones de correo.

Contexto de cifrado de Amazon WorkMailUn contexto de cifrado (p. 16) es un conjunto de pares de clave-valor que contienen datos no secretosarbitrarios. Cuando se incluye un contexto de cifrado en una solicitud para cifrar datos, AWS KMS vinculacriptográficamente el contexto de cifrado a los datos cifrados. Para descifrar los datos, es necesario pasarel mismo contexto de cifrado.

Amazon WorkMail utiliza el mismo contexto de cifrado en todas las operaciones criptográficas de AWSKMS. Puede utilizar el contexto de cifrado para identificar una operación criptográfica en los registros yregistros de auditoría, como AWS CloudTrail y como una condición para la autorización en las políticas yconcesiones.

En sus solicitudes Encrypt y Decrypt a AWS KMS, Amazon WorkMail utiliza un contexto de cifrado enel que la clave es aws:workmail:arn y el valor es el Nombre de recurso de Amazon (ARN) de laorganización.

"aws:workmail:arn":"arn:aws:workmail:region:account ID:organization/organization ID"

Por ejemplo, el siguiente contexto de cifrado incluye un ARN de organización de ejemplo en la regiónEE.UU. Este (Ohio) (us-east-2).

"aws:workmail:arn":"arn:aws:workmail:us-east-2:111122223333:organization/m-68755160c4cb4e29a2b2f8fb58f359d7"

Monitorear la interacción de Amazon WorkMail conAWS KMSPuede utilizar AWS CloudTrail y Amazon CloudWatch Logs para realizar un seguimiento de las solicitudesque Amazon WorkMail envía a AWS KMS en su nombre.

EncryptAl crear un nuevo buzón de correo, Amazon WorkMail genera un clave de buzón de correo y llama a AWSKMS para cifrar la clave del buzón de correo. Amazon WorkMail envía una solicitud Encrypt a AWS KMScon la clave del buzón de correo en texto no cifrado y un identificador para la CMK de la organización deAmazon WorkMail.

El evento que registra la operación Encrypt es similar al siguiente evento de ejemplo. El usuario es elservicio Amazon WorkMail. Los parámetros incluyen el ID de CMK (keyId) y el contexto de cifrado de laorganización de Amazon WorkMail. Amazon WorkMail pasa también la clave del buzón de correo, peroesta clave no se registra en el registro de CloudTrail.

305

Page 314: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMonitorear la interacción de

Amazon WorkMail con AWS KMS

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-19T10:01:09Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-c6981ff7642446fa8772ba99c690e455" }, "keyId": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d" }, "responseElements": null, "requestID": "76e96b96-7e24-4faf-a2d6-08ded2eaf63c", "eventID": "d5a59c18-128a-4082-aa5b-729f7734626a", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "d08e60f1-097e-4a00-b7e9-10bc3872d50c"}

DecryptAl añadir, ver o eliminar un mensaje de correo, Amazon WorkMail pide a AWS KMS que descifre la clavedel buzón de correo. Amazon WorkMail envía una solicitud Decrypt a AWS KMS con la clave del buzón decorreo en texto no cifrado y un identificador de la CMK de la organización de Amazon WorkMail.

El evento que registra la operación Decrypt es similar al siguiente evento de ejemplo. El usuario es elservicio Amazon WorkMail. Los parámetros incluyen la clave del buzón de correo cifrada (como un bloben texto cifrado), que no se registra en el registro, y el contexto de cifrado de la organización de AmazonWorkMail. AWS KMS obtiene el ID de la CMK del texto cifrado.

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "workmail.eu-west-1.amazonaws.com" }, "eventTime": "2019-02-20T11:51:10Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "eu-west-1", "sourceIPAddress": "workmail.eu-west-1.amazonaws.com", "userAgent": "workmail.eu-west-1.amazonaws.com", "requestParameters": { "encryptionContext": {

306

Page 315: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAmazon WorkSpaces

"aws:workmail:arn": "arn:aws:workmail:eu-west-1:111122223333:organization/m-c6981ff7642446fa8772ba99c690e455" } }, "responseElements": null, "requestID": "4a32dda1-34d9-4100-9718-674b8e0782c9", "eventID": "ea9fd966-98e9-4b7b-b377-6e5a397a71de", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:eu-west-1:111122223333:key/1a2b3c4d-5e6f-1a2b-3c4d-5e6f1a2b3c4d", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "241e1e5b-ff64-427a-a5b3-7949164d0214"}

Cómo Amazon WorkSpaces usa AWS KMSPuede utilizar Amazon WorkSpaces para aprovisionar un escritorio basado en la nube (un escritorio deWorkSpaces) para cada uno de los usuarios finales. Al lanzar un nuevo escritorio de WorkSpaces, puedeelegir cifrar sus volúmenes y decidir qué clave maestra del cliente (p. 3) (CMK) de AWS KMS deseautilizar para el cifrado. Puede elegir la CMK administrada de AWS (p. 4) para Amazon WorkSpaces (aws/workspaces) o una CMK administrada del cliente (p. 4).

Important

Amazon WorkSpaces solo admite CMK simétricas. No se puede utilizar una CMK asimétrica paracifrar los volúmenes en un Amazon WorkSpaces. Para obtener ayuda para determinar si una CMKes simétrica o asimétrica, consulte Identificar CMK simétricas y asimétricas (p. 40).

Para obtener más información sobre la creación de escritorios de WorkSpaces con volúmenes cifrados,vaya a Cifrar un escritorio de WorkSpaces en la Amazon WorkSpaces Administration Guide.

Temas• Información general del cifrado de Amazon WorkSpaces con AWS KMS (p. 307)• Contexto de cifrado de Amazon WorkSpaces (p. 308)• Conceder permiso a Amazon WorkSpaces para usar una CMK en su nombre (p. 309)

Información general del cifrado de AmazonWorkSpaces con AWS KMSAl crear escritorios de WorkSpaces con volúmenes cifrados, Amazon WorkSpaces utiliza Amazon ElasticBlock Store (Amazon EBS) para crear y administrar los volúmenes. Ambos servicios usan la clave principalde cliente (CMK) de KMS para trabajar con los volúmenes cifrados. Para obtener más información sobre elcifrado de volúmenes de EBS, consulte la siguiente documentación:

• Cómo Amazon Elastic Block Store (Amazon EBS) usa AWS KMS (p. 265) en esta guía• Cifrado de Amazon EBS en la Guía del usuario de Amazon EC2 para instancias de Windows

Al lanzar WorkSpaces con volúmenes cifrados, el proceso completo funciona de este modo:

307

Page 316: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresContexto de cifrado de Amazon WorkSpaces

1. Se especifica que CMK use el cifrado, así como el usuario y el directorio del escritorio de WorkSpaces.Esta acción crea una concesión (p. 127) que permite a Amazon WorkSpaces usar su CMK solo paraeste escritorio de WorkSpaces; es decir, únicamente para el escritorio de WorkSpaces asociado con elusuario y el directorio especificados. —

2. Amazon WorkSpaces crea un volumen de EBS cifrado para el escritorio de WorkSpaces y especificala CMK que se usará, así como el usuario y el directorio del volumen (la misma información queespecificó en Step 1 (p. 308)). Esta acción crea una concesión (p. 127) que permite a AmazonEBS usar su CMK solo para este escritorio de WorkSpaces y volumen; es decir, únicamente para elescritorio de WorkSpaces asociado con el usuario y el directorio especificados, y solo para el volumenespecificado. —

3. Amazon EBS solicita una clave de datos de volumen que está cifrada con su CMK y especifica elSid del usuario y el ID de directorio del escritorio de WorkSpaces, así como el ID de volumen comocontexto de cifrado.

4. AWS KMS crea una clave de datos, la cifra con su CMK y, a continuación, envía la clave de datoscifrada a Amazon EBS.

5. Amazon WorkSpaces utiliza Amazon EBS para asociar el volumen cifrado a su escritorio deWorkSpaces. Amazon EBS envía la clave de datos cifrada a AWS KMS con una solicitud Decrypty especifica el Sid del usuario y el ID de directorio del escritorio de WorkSpaces, así como el ID devolumen, que se utiliza como contexto de cifrado (p. 308).

6. AWS KMS utiliza su CMK para descifrar la clave de datos y, a continuación, envía la clave de datos entexto no cifrado a Amazon EBS.

7. Amazon EBS utiliza la clave de datos en texto no cifrado para cifrar todos los datos que se envían alos volúmenes cifrados y se reciben de ellos. Amazon EBS mantiene la clave de datos en texto nocifrado en la memoria mientras el volumen está asociado al escritorio de WorkSpaces.

8. Amazon EBS almacena la clave de datos cifrada (recibida en Step 4 (p. 308)) con los metadatos devolumen para usarla en el futuro si reinicia o reconstruye el escritorio de WorkSpaces.

9. Cuando se utiliza la Consola de administración de AWS para eliminar un escritorio de WorkSpaces(o se utiliza la acción TerminateWorkspaces de la API de Amazon WorkSpaces), AmazonWorkSpaces y Amazon EBS retiran las concesiones que les permitían utilizar la CMK para eseescritorio de WorkSpaces.

Contexto de cifrado de Amazon WorkSpacesAmazon WorkSpaces no utiliza la clave principal de cliente (CMK) directamente para operacionescriptográficas (por ejemplo, Encrypt, Decrypt, GenerateDataKey, etc.), lo que significa que AmazonWorkSpaces no envía solicitudes a AWS KMS que incluyan un contexto de cifrado (p. 16). Sin embargo,cuando Amazon EBS solicita una clave de datos cifrada para los volúmenes cifrados de los escritorios deWorkSpaces (Step 3 (p. 308) en la Información general del cifrado de Amazon WorkSpaces con AWSKMS (p. 307)) y cuando solicita una copia en texto sin cifrar de dicha clave de datos (Step 5 (p. 308)),incluye el contexto de cifrado en la solicitud. El contexto de cifrado proporciona la información autenticadaadicional (AAD) que AWS KMS usa para garantizar la integridad de los datos. El contexto de cifradotambién se escribe en los archivos de registro de AWS CloudTrail, lo que puede ayudarle a entender porqué se ha usado una determinada clave principal de cliente (CMK). Amazon EBS usa lo siguiente para elcontexto de cifrado:

• El sid del usuario de AWS Directory Service que está asociado al escritorio de WorkSpaces• El ID del directorio de AWS Directory Service que está asociado al escritorio de WorkSpaces• El ID del volumen cifrado

El siguiente ejemplo muestra una representación JSON del contexto de cifrado que usa Amazon EBS:

{

308

Page 317: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConceder permiso a Amazon WorkSpaces

para usar una CMK en su nombre

"aws:workspaces:sid-directoryid": "[S-1-5-21-277731876-1789304096-451871588-1107]@[d-1234abcd01]", "aws:ebs:id": "vol-1234abcd"}

Conceder permiso a Amazon WorkSpaces para usaruna CMK en su nombrePuede proteger los datos del espacio de trabajo de la CMK administrada por AWS para AmazonWorkSpaces (aws/workspaces) o de una CMK administrada por el cliente. Si utiliza una CMK administradapor el cliente, deberá darle permiso a Amazon WorkSpaces para utilizar la CMK en nombre de losadministradores de Amazon WorkSpaces de su cuenta. La CMK administrada por AWS para AmazonWorkSpaces dispone de los permisos necesarios de forma predeterminada.

Para preparar una CMK administrada por el cliente para utilizarla con Amazon WorkSpaces, siga elsiguiente procedimiento.

1. Agregar a los administradores de WorkSpaces a la lista de los usuarios de claves en la política declaves de CMK (p. 309)

2. Conceder a los administradores de WorkSpaces permisos adicionales con una política de IAM (p. 310)

Los administradores de Amazon WorkSpaces también necesitan permiso para utilizar AmazonWorkSpaces. Para obtener más información sobre estos permisos, consulte Control del acceso a losrecursos de Amazon WorkSpaces en la Amazon WorkSpaces Administration Guide.

Parte 1: Agregar administradores de WorkSpaces a los usuariosde claves de una CMKPara otorgar a los administradores de Amazon WorkSpaces los permisos que necesitan, utilice la Consolade administración de AWS o la API de AWS KMS.

Para agregar administradores de WorkSpaces como usuarios de claves para unaCMK (console)

1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS Key ManagementService (AWS KMS) en https://console.aws.amazon.com/kms.

2. Para cambiar la región AWS, utilice el selector de regiones en la esquina superior derecha de lapágina.

3. En el panel de navegación, elija Customer managed keys (Claves administradas por el cliente).4. Elija el alias o el ID de clave de la CMK administrada por el cliente que prefiera.5. En la sección Key policy (Política de claves), en Key users (Usuarios de claves), elija Add (Añadir).6. En la lista de usuarios y funciones de IAM, seleccione a los usuarios y los roles que corresponden a

los administradores de WorkSpaces y, a continuación, elija Attach.

Para agregar administradores de WorkSpaces como usuarios de claves para unaCMK (AWS KMS API)

1. Utilice la operación GetKeyPolicy para obtener la política de claves existente y, a continuación, guardeel documento de políticas en un archivo.

2. Abra el documento de políticas en el editor de textos que prefiera. Agregue los usuarios y los rolesde IAM que correspondan a los administradores de WorkSpaces a las declaraciones de política queconceden permiso a los usuarios de claves (p. 62). A continuación, guarde el archivo.

309

Page 318: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConceder permiso a Amazon WorkSpaces

para usar una CMK en su nombre

3. Utilice la operación PutKeyPolicy para aplicar la política de claves a la CMK.

Parte 2: Conceder a los administradores de WorkSpacespermisos adicionalesSi utiliza una CMK administrada por el cliente para proteger los datos de Amazon WorkSpaces, ademásde los permisos en la sección de los usuarios de claves de la política de claves predeterminada (p. 58), losadministradores de WorkSpaces necesitan permiso para crear concesiones (p. 127) en la CMK. Además,si usan la Consola de administración de AWS para crear WorkSpaces con volúmenes cifrados, losadministradores de WorkSpaces necesitarán permiso para elaborar listas de alias y claves. Para obtenerinformación sobre la creación y edición de políticas de usuario de IAM, consulte Políticas administradas ypolíticas insertadas en la Guía del usuario de IAM.

Para conceder a los administradores de WorkSpaces permisos, use la política de IAM. Añadauna declaración de política similar a la del siguiente ejemplo a la política de IAM para cadaadministrador de WorkSpaces. Reemplace el ARN de la CMK de ejemplo (arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab) por uno válido.Si los administradores de WorkSpaces utilizan únicamente la API de Amazon WorkSpaces (no laconsola), puede omitir la segunda declaración de la política con los permisos "kms:ListAliases" y"kms:ListKeys".

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "kms:ListAliases", "kms:ListKeys" ], "Resource": "*" } ]}

310

Page 319: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresHerramientas de monitoreo

Monitorear las claves maestras decliente

El monitoreo es una parte importante para entender la disponibilidad, el estado y el uso de las clavesmaestras de cliente (CMK) en AWS KMS y para mantener la fiabilidad, la disponibilidad y el rendimiento delas soluciones de AWS. La recopilación de los datos de monitoreo de todas las partes de su solución deAWS le ayudará a depurar un error que se produce en distintas partes del código, en caso de que ocurra.No obstante, antes de comenzar a monitorizar las CMK;, debe crear un plan de monitorización que incluyarespuestas a las siguientes preguntas:

• ¿Cuáles son los objetivos de la monitorización?• ¿Qué recursos va a monitorizar?• ¿Con qué frecuencia va a monitorizar estos recursos?• ¿Qué herramientas de monitorización (p. 311) va a utilizar?• ¿Quién se encargará de realizar las tareas de monitorización?• ¿Quién debería recibir una notificación cuando suceda algo?

El siguiente paso es monitorear las CMK a lo largo del tiempo para establecer un punto de referencia parael uso de AWS KMS normal y las expectativas en su entorno. A medida que monitorice las CMK, almacenelos datos de monitorización históricos para que pueda compararlos con los datos actuales, identificar lospatrones normales y las anomalías, así como desarrollar métodos para la resolución de problemas.

Por ejemplo, puede monitorear la actividad de la API de AWS KMS y los eventos que afectan a su CMK.Cuando los datos están por encima o por debajo de las normas establecidas, es posible que efectuar unainvestigación o adoptar medidas correctivas.

Para establecer un punto de referencia para los patrones normales, monitorice los elementos siguientes:

• Actividad de la API de AWS KMS para las operaciones de plano de datos. Estas son las operacionescriptográficas (p. 11) que utilizan una CMK, como Decrypt, Encrypt, ReEncrypt y GenerateDataKey.

• La actividad de la API de AWS KMS para las operaciones de plano de control que consideraimportantes. Estas operaciones administran una CMK y puede monitorizar las que cambian ladisponibilidad de una CMK (como ScheduleKeyDeletion, CancelKeyDeletion, DisableKey, EnableKey,ImportKeyMaterial y DeleteImportedKeyMaterial) o cambiar el control de acceso de una CMK (comoPutKeyPolicy y RevokeGrant).

• Otras métricas (como la cantidad de tiempo restante hasta que venza el material de clavesimportado (p. 162)) y eventos (como el vencimiento del material de claves importado o la eliminación dela rotación de claves de una CMK) de AWS KMS;.

Herramientas de monitoreoAWS proporciona varias herramientas que puede utilizar para monitorear su CMK. Puede configuraralgunas de estas herramientas para que monitoricen por usted, pero otras herramientas requierenintervención manual. Le recomendamos que automatice las tareas de monitorización en la medida de loposible.

311

Page 320: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresHerramientas automatizadas

Herramientas de monitoreo automatizadasPuede utilizar las siguientes herramientas de monitorización automatizada para monitorizar sus CMK einformar cuando haya algún cambio.

• Amazon CloudWatch Alarms (Alarmas de Amazon CloudWatch): observe una sola métrica duranteel periodo que especifique y realice una o varias acciones según el valor de la métrica relativo a undeterminado umbral durante varios periodos de tiempo. La acción es una notificación enviada a un temade Amazon Simple Notification Service (Amazon SNS) o una política de Amazon EC2 Auto Scaling.Las alarmas de CloudWatch no invocan acciones simplemente por tener un estado determinado. Esnecesario que el estado haya cambiado y se mantenga durante un número especificado de períodos.Para obtener más información, consulte Monitoreo con Amazon CloudWatch (p. 313).

• Amazon CloudWatch Events – Seleccione los eventos y diríjalos a uno o varios flujos o funciones dedestino para capturar información de estado y, si es necesario, realizar cambios o aplicar medidascorrectivas. Para obtener más información, consulte Eventos de AWS KMS (p. 316) y la Guía delusuario de Amazon CloudWatch Events.

• Amazon CloudWatch Logs – monitoree, almacene y tenga acceso a los archivos de registro de AWSCloudTrail u otras fuentes. Si desea obtener más información, consulte la Guía del usuario de AmazonCloudWatch Logs.

• AWS CloudTrail Log Monitoring (Monitorización de registros de AWS CloudTrail): compartir archivosde registro entre cuentas, monitorizar archivos de registro de CloudTrail en tiempo real mediante suenvío a CloudWatch Logs, escribir aplicaciones de procesamiento de registros con la biblioteca deprocesamiento de CloudTrail y validar que sus archivos de registro no hayan cambiado después de queCloudTrail los entregue. Para obtener más información, consulte Trabajar con archivos de registro deCloudTrail en la AWS CloudTrail User Guide.

Herramientas de monitoreo manualesOtra parte importante del monitoreo de las CMK implica el monitoreo manual de los elementos que nocubren las alarmas y los eventos de CloudWatch. Los paneles de AWS KMS, CloudWatch y AWS TrustedAdvisor, y otros paneles de AWS proporcionan una vista rápida del estado del entorno de AWS.

Puede personalizar (p. 28) las páginas AWS Managed Keys (Claves administradas por AWS) y CustomerManaged Keys (Claves administradas por el cliente) de la consola de AWS KMS para mostrar la siguienteinformación sobre cada CMK:

• ID de clave• Estado• Fecha de creación• Fecha de vencimiento (para las CMK con material de claves importado (p. 162))• Origen• ID de almacén de claves personalizado (para las CMK en almacenes de claves personalizados (p. 189))

El panel de la consola de CloudWatch muestra lo siguiente:

• Alarmas y estado actual• Gráficos de alarmas y recursos• Estado de los servicios

Además, puede utilizar CloudWatch para hacer lo siguiente:

• Crear paneles personalizados para monitorizar los servicios que le interesan.

312

Page 321: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMonitoreo con CloudWatch

• Realizar un gráfico con los datos de las métricas para resolver problemas y descubrir tendencias• Buscar y examinar todas sus métricas de recursos de AWS.• Crear y editar las alarmas de notificación de problemas

AWS Trusted Advisor puede ayudarle a monitorear los recursos de AWS para mejorar el rendimiento,la fiabilidad, la seguridad y la rentabilidad. Hay disponibles cuatro comprobaciones de Trusted Advisorpara todos los usuarios. Hay disponible más de 50 comprobaciones para los usuarios con plan de soporteBusiness o Enterprise. Para obtener más información, consulte AWS Trusted Advisor.

Monitoreo con Amazon CloudWatchPuede monitorear sus claves maestras de cliente (CMK) mediante Amazon CloudWatch, que recopila yprocesa los datos sin formato de AWS KMS en métricas legibles y casi en tiempo real. Estos datos seregistran durante un periodo de dos semanas para que pueda obtener acceso a información histórica yconocer mejor el uso de su CMK y sus cambios a lo largo del tiempo. Para obtener más información sobreAmazon CloudWatch, consulte la Guía del usuario de Amazon CloudWatch.

Temas• Métricas y dimensiones de AWS KMS (p. 313)• Crear alarmas de CloudWatch para monitorear las métricas de AWS KMS (p. 314)• Eventos de AWS KMS (p. 316)

Métricas y dimensiones de AWS KMSAl importar material de clave en una CMK (p. 162) y configurarlo para expirar, AWS KMS envía métricas ydimensiones a CloudWatch. Puede ver las métricas de AWS KMS mediante la Consola de administraciónde AWS y la API de Amazon CloudWatch.

Métricas de AWS KMSEl espacio de nombres de AWS/KMS incluye las siguientes métricas.

SecondsUntilKeyMaterialExpiration

Esta métrica controla el número de segundos que faltan para que caduque el material de clavesimportado. Esta métrica solo es válida para las CMK cuyo origen es EXTERNAL y cuyo material declaves está o estaba configurado para que caduque. La estadística más útil para esta métrica esMinimum, que indica la cantidad de tiempo menor restante para todos los puntos de datos en elperiodo de la estadística especificado. La única unidad válida para esta métrica es Seconds.

Use esta métrica para controlar la cantidad de tiempo que falta para que caduque el material de clavesimportado. Cuando una cantidad de tiempo sea inferior a un umbral definido, tal vez desee realizaruna acción como volver a importar el material de claves con una nueva fecha de vencimiento. Puedecrear una alarma de CloudWatch para que le avise cuando eso ocurra. Para obtener más información,consulte Crear alarmas de CloudWatch para monitorear las métricas de AWS KMS (p. 314).

Dimensiones de las métricas de AWS KMSLas métricas de AWS KMS utilizan el espacio de nombres AWS/KMS y solo tienen una dimensión válida:KeyId. Puede usar esta dimensión para ver datos de métricas para una CMK específica o un conjunto deCMK.

313

Page 322: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCreación de alarmas

¿Cómo consulto las métricas de AWS KMS?Puede ver las métricas de AWS KMS mediante la Consola de administración de AWS y la API de AmazonCloudWatch.

Para consultar las métricas desde la consola de CloudWatch

1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.2. Si es necesario, cambie la región. En la barra de navegación, seleccione la región donde residen sus

recursos de AWS.3. En el panel de navegación, seleccione Metrics.4. En el panel de contenido, elija la pestaña All metrics. A continuación, en Espacio de nombres de AWS,

elija KMS.5. Elija Per-Key Metrics para ver las métricas y las dimensiones individuales.

Para ver métricas mediante la API de Amazon CloudWatch

Para ver las métricas de AWS KMS mediante la API de CloudWatch, envíe una solicitud ListMetricscon Namespace configurado como AWS/KMS. El siguiente ejemplo muestra cómo hacerlo con la AWSCommand Line Interface (AWS CLI).

$ aws cloudwatch list-metrics --namespace AWS/KMS

Crear alarmas de CloudWatch para monitorear lasmétricas de AWS KMSPuede crear una alarma de CloudWatch que envíe un mensaje de Amazon SNS cuando cambie el valorde la métrica y provoca que la alarma cambie de estado. Una alarma vigila una única métrica duranteel periodo especificado y realiza una o varias acciones en función del valor de la métrica relativo a undeterminado umbral durante una serie de periodos de tiempo. La acción es una notificación que se envíaa un tema de Amazon SNS o a una política de Auto Scaling. Las alarmas invocan acciones únicamentepara los cambios de estado prolongados. Las alarmas de CloudWatch no invocan acciones simplementepor tener un estado determinado. Es necesario que el estado haya cambiado y se mantenga durante unnúmero especificado de períodos.

Temas• Crear una alarma de CloudWatch para monitorear el vencimiento del material de claves

importado (p. 314)• Crear una alarma de CloudWatch para monitorear el uso de las CMK que están pendientes de

eliminación (p. 316)

Crear una alarma de CloudWatch para monitorear el vencimientodel material de claves importadoAl importar material de claves en una CMK (p. 162), también puede especificar una hora en la que venceel material de claves. Cuando vence el material de claves, AWS KMS lo elimina y la CMK ya no se puedeutilizar. Para volver a usar la CMK, debe volver a importar el material de claves. Puede crear una alarmade CloudWatch para que le notifique cuando el tiempo que queda hasta que venza el material de clavesimportado esté por debajo de un umbral que defina (por ejemplo, 10 días). Si recibe una notificación de

314

Page 323: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCreación de alarmas

una alarma de este tipo, puede realizar alguna acción, como volver a importar el material de claves conuna nueva fecha de vencimiento.

Para crear una alarma para monitorear el vencimiento del material de claves importado (Consolade administración de AWS)

1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.2. Si es necesario, cambie la región. En la barra de navegación, seleccione la región donde residen sus

recursos de AWS.3. En el panel de navegación, elija Alarms. A continuación, elija Create Alarm.4. Elija Browse Metrics y, a continuación, KMS.5. Marque la casilla de verificación situada junto al ID de clave de la CMK que desea monitorizar.6. En el panel inferior, utilice los menús para cambiar la estadística a Minimum y el periodo de tiempo a 1

Minute. A continuación, elija Next.7. En la ventana Create Alarm, haga lo siguiente:

a. En Nombre, escriba un nombre, como KeyMaterialExpiresSoon.b. Después de Whenever:, para is:, elija <= y, a continuación, escriba el número de segundos del

valor de umbral. Por ejemplo, para recibir una notificación cuando el tiempo que queda hasta quevenza el material de claves importado es de 10 días o menos, escriba 864000.

c. Si es necesario, en for consecutive period(s) (para periodos consecutivos), escriba 1.d. En Send notification to:, realice una de las siguientes acciones:

• Para utilizar un nuevo tema de Amazon SNS, elija New list (Nueva lista) y, a continuación,escriba un nuevo nombre de tema. En Email list:, escriba al menos una dirección de correoelectrónico. Puede escribir varias direcciones de correo electrónico separándolas con comas.

• Para utilizar un tema de Amazon SNS existente, elija el nombre del tema que desea usar.e. Elija Create Alarm.

8. Si ha elegido enviar notificaciones a una dirección de correo electrónico, abra el mensaje decorreo electrónico que reciba de [email protected] con el asunto "AWS Notification -

315

Page 324: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEventos de AWS KMS

Subscription Confirmation". Confirme la dirección de correo electrónico eligiendo en el enlace Confirmsubscription del mensaje de correo electrónico.

Important

No recibirá notificaciones por correo electrónico hasta después de haber confirmado sudirección.

Crear una alarma de CloudWatch para monitorear el uso de lasCMK que están pendientes de eliminaciónAl programar una eliminación de claves (p. 176) de una CMK, AWS KMS aplica un periodo de esperaantes de eliminar la CMK. Puede usar el periodo de espera para asegurarse de que no necesita la CMKahora ni en el futuro. También puede configurar una alarma de CloudWatch que le avise si una persona oaplicación intenta utilizar la CMK durante el periodo de espera. Si recibe una notificación de una alarma deeste tipo, puede cancelar la eliminación de la CMK.

Para obtener más información, consulte Crear una alarma de Amazon CloudWatch para detectar el uso deuna clave maestra de cliente que está pendiente de eliminación (p. 182).

Eventos de AWS KMSAWS KMS se integra con Amazon CloudWatch Events para informarle de determinados eventos queafectan a sus CMK. Cada evento está representado en JSON (JavaScript Object Notation, notación deobjetos de JavaScript) y contiene el nombre del evento, la fecha y la hora en que se produjo el evento,la CMK afectada y mucho más. Puede utilizar Eventos de CloudWatch para recopilar estos eventos yconfigurar reglas que los dirijan a uno o varios destinos, como funciones AWS Lambda, temas de AmazonSNS, colas de Amazon SQS, flujos en Amazon Kinesis Data Streams o destinos integrados.

Para obtener más información acerca de cómo utilizar Eventos de CloudWatch con otros tipos de eventos,incluidos los emitidos por AWS CloudTrail cuando registra una solicitud de la API de lectura/escritura,consulte la Guía del usuario de Amazon CloudWatch Events.

Los siguientes temas describen el Eventos de CloudWatch que crea AWS KMS.

Temas• Rotación de CMK de KMS (p. 316)• Vencimiento del material de claves importado de KMS (p. 317)• Eliminación de CMK de KMS (p. 317)

Rotación de CMK de KMSCuando habilita la rotación automática de claves (p. 157) para una CMK administrada por el cliente (p. 4),AWS KMS crea nuevo material de claves para la CMK cada año. El material de claves para las CMKadministradas por AWS (p. 4) se rota cada tres años de forma automática.

Siempre que AWS KMS rota el material de claves, envía un evento de rotación de CMK de KMS a Eventosde CloudWatch. A continuación se muestra un ejemplo de este evento.

{ "version": "0", "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718", "detail-type": "KMS CMK Rotation", "source": "aws.kms", "account": "111122223333",

316

Page 325: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEventos de AWS KMS

"time": "2016-08-25T21:05:33Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

Vencimiento del material de claves importado de KMSAl importar material de claves en una CMK (p. 162), también puede especificar una hora en la que vence elmaterial de claves. Cuando el material de claves vence, AWS KMS elimina el material de claves y envía elevento correspondiente a Eventos de CloudWatch. A continuación se muestra un ejemplo de este evento.

{ "version": "0", "id": "9da9af57-9253-4406-87cb-7cc400e43465", "detail-type": "KMS Imported Key Material Expiration", "source": "aws.kms", "account": "111122223333", "time": "2016-08-22T20:12:19Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

Eliminación de CMK de KMSAl programar una eliminación de claves (p. 176) de una CMK, AWS KMS aplica un periodo de esperaantes de eliminar la CMK. Una vez que finalice el periodo de espera, AWS KMS elimina la CMK y envía elevento correspondiente a Eventos de CloudWatch. A continuación se muestra un ejemplo de este evento.

{ "version": "0", "id": "e9ce3425-7d22-412a-a699-e7a5fc3fbc9a", "detail-type": "KMS CMK Deletion", "source": "aws.kms", "account": "111122223333", "time": "2016-08-19T03:23:45Z", "region": "us-west-2", "resources": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" ], "detail": { "key-id": "1234abcd-12ab-34cd-56ef-1234567890ab" }}

317

Page 326: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresInformación de AWS KMS en CloudTrail

Registrar llamadas a la API de AWSKMS con AWS CloudTrail

AWS KMS está integrado con AWS CloudTrail, un servicio que proporciona un registro de las accionesrealizadas por un usuario, una función o un servicio de AWS en AWS KMS. CloudTrail captura todas lasllamadas a la API de AWS KMS como eventos, incluidas las llamadas procedentes de la consola de AWSKMS y de las llamadas del código a las API de AWS KMS. Si crea un registro de seguimiento, puedehabilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon S3, incluidos los eventos deAWS KMS. Si no configura un registro de seguimiento, puede ver los eventos más recientes en la consolade CloudTrail en el Event history (Historial de eventos). Mediante la información que recopila CloudTrail, sepuede determinar la solicitud que se envió a AWS KMS, la dirección IP desde la que se realizó la solicitud,quién la realizó, cuándo la realizó y los detalles adicionales.

Aunque, de forma predeterminada, todas las acciones de AWS KMS se registren como eventos deCloudTrail, puede excluir las acciones de AWS KMS de un registro de seguimiento de CloudTrail. Paraobtener más información, consulte Excluir eventos de AWS KMS de un registro de seguimiento (p. 319).

Para obtener más información sobre CloudTrail, consulte la AWS CloudTrail User Guide. Para obtener másinformación acerca de otras formas para monitorear el uso de las CMK, consulte Monitorear las clavesmaestras de cliente (p. 311).

Información de AWS KMS en CloudTrailCloudTrail se habilita en una cuenta de AWS al crearla. Cuando se produce una actividad en AWS KMS,dicha actividad se registra en un evento de CloudTrail junto con los eventos de los demás servicios deAWS en el Event history (Historial de eventos). Puede ver, buscar y descargar los últimos eventos dela cuenta de AWS. Para obtener más información, consulte Visualización de eventos con el historial deeventos de CloudTrail.

Para mantener un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos de AWSKMS, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos deregistro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro de seguimientoen la consola, el registro de seguimiento se aplica a todas las regiones. El registro de seguimiento registralos eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket deAmazon S3 especificado. También puede configurar otros servicios de AWS para analizar y actuar enfunción de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más información,consulte:

• Introducción a la creación de registros de seguimiento• Servicios e integraciones compatibles con CloudTrail• Configuración de notificaciones de Amazon SNS para CloudTrail• Recibir archivos de registro de CloudTrail de varias regiones y Recepción de archivos de registro de

CloudTrail de varias cuentas

CloudTrail registra todas las operaciones de AWS KMS, incluidas las operaciones de solo lectura,como, por ejemplo, ListAliases y GetKeyPolicy, las operaciones que administran las CMK, como

318

Page 327: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresExcluir eventos de AWS KMS de un registro de seguimiento

CreateKey y PutKeyPolicy, y las operaciones criptográficas (p. 11), como GenerateDataKey,Encrypt y Decrypt. Cada operación genera una entrada en los archivos de registro de CloudTrail.

Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La informaciónde identidad del usuario le ayuda a determinar lo siguiente:

• Si la solicitud se realizó con las credenciales raíz o del usuario de IAM.• Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.• Si la solicitud la realizó otro servicio de AWS.

Para obtener más información, consulte el elemento userIdentity de CloudTrail.

Excluir eventos de AWS KMS de un registro deseguimiento

La mayoría de los usuarios de AWS KMS confían en que los eventos de un registro de seguimientode CloudTrail ofrezca un registro del uso y la administración de sus recursos de AWS KMS. El registrode seguimiento puede ser una valiosa fuente de datos para auditar eventos críticos, como la creación,deshabilitación y eliminación de claves maestras del cliente (CMK), el cambio de la política de claves y eluso de las CMK por los servicios de AWS en su nombre. En algunos casos, los metadatos de una entradade un registro de CloudTrail, como el contexto de cifrado (p. 16) en una operación de cifrado, puedenayudarle a evitar o resolver errores.

Sin embargo, dado que AWS KMS puede generar un gran número de eventos, AWS CloudTrail lepermite excluir eventos de AWS KMS de un registro de seguimiento. Esta configuración por registrode seguimiento excluye todos los eventos de AWS KMS; no se pueden excluir eventos de AWS KMSconcretos.

Warning

La exclusión de eventos de AWS KMS de un registro de CloudTrail puede ocultar las accionesque utilizan sus CMK. Actúe con precaución al conceder a las entidades principales el permisocloudtrail:PutEventSelectors necesario para realizar esta operación.

Para excluir los eventos de AWS KMS de un registro de seguimiento:

• En la consola de CloudTrail, utilice la configuración de los eventos del servicio de administración declaves de registro cuando cree un registro de seguimiento o lo actualice. Para obtener instrucciones,consulte Registro de eventos de administración con la consola de administración de AWS en la AWSCloudTrail User Guide.

• En la API de CloudTrail, utilice la operación PutEventSelectors. Añada el atributoExcludeManagementEventSources a sus selectores de eventos con un valor dekms.amazonaws.com. Para obtener un ejemplo, consulte Ejemplo: un registro de seguimiento que noregistra eventos de AWS Key Management Service en la AWS CloudTrail User Guide.

Puede deshabilitar esta exclusión en cualquier momento cambiando la configuración de la consola o losselectores de eventos de un registro de seguimiento. A continuación, el registro de seguimiento comenzaráa registrar eventos de AWS KMS. Sin embargo, no puede recuperar los eventos de AWS KMS que seprodujeran mientras la exclusión estaba en vigor.

Al excluir eventos de KMS con la consola o la API, la operación de la API PutEventSelectors deCloudTrail resultante también se registra en los registros de CloudTrail. Si los eventos de KMS noaparecen en los registros de CloudTrail, busque un evento PutEventSelectors con el atributoExcludeManagementEventSources establecido en kms.amazonaws.com.

319

Page 328: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConocer las entradas de archivos de registro de AWS KMS

Conocer las entradas de archivos de registro deAWS KMS

Un registro de seguimiento es una configuración que permite la entrega de eventos como archivos deregistro al bucket de Amazon S3 que se especifique. Los archivos de registro de CloudTrail contienenuna o varias entradas de registro. Un evento representa una única solicitud de cualquier origen e incluyeinformación sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud,etc. Los archivos de registro de CloudTrail no son un rastro de la pila ordenada de las llamadas a la APIpúblicas, por lo que no aparecen en ningún orden específico.

Para ver ejemplos de entradas de registro de CloudTrail para cada solicitud de API, consulte los siguientestemas.

Temas• CreateAlias (p. 320)• CreateGrant (p. 321)• CreateKey (p. 322)• Decrypt (p. 323)• DeleteAlias (p. 323)• DescribeKey (p. 324)• DisableKey (p. 326)• EnableKey (p. 326)• Encrypt (p. 327)• GenerateDataKey (p. 328)• GenerateDataKeyWithoutPlaintext (p. 328)• GenerateRandom (p. 329)• GetKeyPolicy (p. 330)• ListAliases (p. 330)• ListGrants (p. 331)• ReEncrypt (p. 332)• Ejemplo uno de Amazon EC2 (p. 332)• Ejemplo dos de Amazon EC2 (p. 334)

CreateAliasEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a CreateAlias.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false",

320

Page 329: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCreateGrant

"creationDate": "2014-11-04T00:52:27Z" } } }, "eventTime": "2014-11-04T00:52:27Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateAlias", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "aliasName": "alias/my_alias", "targetKeyId": "arn:aws:kms:us-east-1:123456789012:key/64e07f97-2489-4d04-bfdf-41723ad130bd" }, "responseElements": null, "requestID": "d9472f40-63bc-11e4-bc2b-4198b6150d5c", "eventID": "f72d3993-864f-48d6-8f16-e26e1ae8dff0", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/64e07f97-2489-4d04-bfdf-41723ad130bd", "accountId": "123456789012" }, { "ARN": "arn:aws:kms:us-east-1:123456789012:alias/my_alias", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

CreateGrantEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a CreateGrant.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:53:12Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:us-east-1:123456789012:key/65f61d18-c45c-41ca-90c9-179982e9b716", "constraints": { "encryptionContextSubset": { "ContextKey1": "Value1" } },

321

Page 330: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCreateKey

"operations": ["Encrypt", "RetireGrant"], "granteePrincipal": "EX_PRINCIPAL_ID" }, "responseElements": { "grantId": "f020fe75197b93991dc8491d6f19dd3cebb24ee62277a05914386724f3d48758" }, "requestID": "f3c08808-63bc-11e4-bc2b-4198b6150d5c", "eventID": "5d529779-2d27-42b5-92da-91aaea1fc4b5", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/65f61d18-c45c-41ca-90c9-179982e9b716", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

CreateKeyEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a CreateKey.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:59Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "policy": "{\n \"Version\":\"2012-10-17\",\n \"Statement\":[{\n \"Effect\":\"Allow\",\n \"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:user/Alice\"},\n \"Action\":\"kms:*\",\n \"Resource\":\"*\"\n }, {\n \"Effect\":\"Allow\",\n \"Principal\":{\"AWS\":\"arn:aws:iam::012345678901:user/Bob\"},\n \"Action\":\"kms:CreateGrant\",\n \"Resource\":\"*\"\n }, {\n \"Effect\":\"Allow\",\n \"Principal\":{\"AWS\":\"arn:aws:iam::012345678901:user/Charlie\"},\n \"Action\":\"kms:Encrypt\",\n \"Resource\":\"*\"\n}]\n}", "description": "", "keyUsage": "ENCRYPT_DECRYPT" }, "responseElements": { "keyMetadata": { "AWSAccountId": "123456789012", "enabled": true, "creationDate": "Nov 4, 2014 12:52:59 AM", "keyId": "06dc80ca-1bdc-4d0b-be5b-b7009cd14f13", "keyUsage": "ENCRYPT_DECRYPT", "description": "", "arn": "arn:aws:kms:us-east-1:123456789012:key/06dc80ca-1bdc-4d0b-be5b-b7009cd14f13"

322

Page 331: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDecrypt

} }, "requestID": "ebe8ee68-63bc-11e4-bc2b-4198b6150d5c", "eventID": "ba116326-1792-4784-87dd-a688d1cb42ec", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/06dc80ca-1bdc-4d0b-be5b-b7009cd14f13", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

DecryptEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a Decrypt.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:20Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "errorCode": "InvalidCiphertextException", "requestParameters": null, "responseElements": null, "requestID": "d5239dea-63bc-11e4-bc2b-4198b6150d5c", "eventID": "954983cf-7da9-4adf-aeaa-261a1292c0aa", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/e17cebae-e7a6-4864-b92f-0365f2feff38", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

DeleteAliasEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a DeleteAlias.

{ "Records": [

323

Page 332: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDescribeKey

{ "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-04T00:52:27Z" } } }, "eventTime": "2014-11-04T00:52:27Z", "eventSource": "kms.amazonaws.com", "eventName": "DeleteAlias", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "aliasName": "alias/my_alias" }, "responseElements": null, "requestID": "d9542792-63bc-11e4-bc2b-4198b6150d5c", "eventID": "12f48554-bb04-4991-9cfc-e7e85f68eda0", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:alias/my_alias", "accountId": "123456789012" }, { "ARN": "arn:aws:kms:us-east-1:123456789012:key/64e07f97-2489-4d04-bfdf-41723ad130bd", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

DescribeKeyEn el siguiente ejemplo, se muestra un archivo de registro que registra varias llamadas a DescribeKey.Estas llamadas eran el resultado de la visualización de claves (p. 28) en la consola de administración deAWS KMS.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": {

324

Page 333: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDescribeKey

"mfaAuthenticated": "false", "creationDate": "2014-11-05T20:51:21Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-11-05T20:51:34Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "signin.amazonaws.com", "requestParameters": { "keyId": "30a9a1e7-2a84-459d-9c61-04cbeaebab95" }, "responseElements": null, "requestID": "874d4823-652d-11e4-9a87-01af2a1ddecb", "eventID": "f715da9b-c52c-4824-99ae-88aa1bb58ae4", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/30a9a1e7-2a84-459d-9c61-04cbeaebab95", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T20:51:21Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-11-05T20:51:55Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "signin.amazonaws.com", "requestParameters": { "keyId": "e7b6d35a-b551-4c8f-b51a-0460ebc04565" }, "responseElements": null, "requestID": "9400c720-652d-11e4-9a87-01af2a1ddecb", "eventID": "939fcefb-dc14-4a52-b918-73045fe97af3", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e7b6d35a-b551-4c8f-b51a-0460ebc04565", "accountId": "123456789012" } ],

325

Page 334: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDisableKey

"eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

DisableKeyEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a DisableKey.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:43Z", "eventSource": "kms.amazonaws.com", "eventName": "DisableKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "262d9fcb-f1a0-4447-af16-3714cff61ec1" }, "responseElements": null, "requestID": "e26552bc-63bc-11e4-bc2b-4198b6150d5c", "eventID": "995c4653-3c53-4a06-a0f0-f5531997b741", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/262d9fcb-f1a0-4447-af16-3714cff61ec1", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

EnableKeyEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a EnableKey.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice"

326

Page 335: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEncrypt

}, "eventTime": "2014-11-04T00:52:20Z", "eventSource": "kms.amazonaws.com", "eventName": "EnableKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "e17cebae-e7a6-4864-b92f-0365f2feff38" }, "responseElements": null, "requestID": "d528a6fb-63bc-11e4-bc2b-4198b6150d5c", "eventID": "be393928-3629-4370-9634-567f9274d52e", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/e17cebae-e7a6-4864-b92f-0365f2feff38", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

EncryptEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a Encrypt.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:53:11Z", "eventSource": "kms.amazonaws.com", "eventName": "Encrypt", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "ContextKey1": "Value1" }, "keyId": "arn:aws:kms:us-east-1:012345678901:key/8d3acf57-6bba-480a-9459-ed1b8e79d3d0" }, "responseElements": null, "requestID": "f3423043-63bc-11e4-bc2b-4198b6150d5c", "eventID": "91235988-eb87-476a-ac2c-0cdc244e6dca", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-east-1:012345678901:key/8d3acf57-6bba-480a-9459-ed1b8e79d3d0", "accountId": "012345678901" }],

327

Page 336: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresGenerateDataKey

"eventType": "AwsServiceEvent", "recipientAccountId": "012345678901" } ]}

GenerateDataKeyEn el siguiente ejemplo se muestra un archivo de registro creado al llamar a GenerateDataKey.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:40Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "637e8678-3d08-4922-a650-e77eb1591db5", "numberOfBytes": 32 }, "responseElements": null, "requestID": "e0eb83e3-63bc-11e4-bc2b-4198b6150d5c", "eventID": "a9dea4f9-8395-46c0-942c-f509c02c2b71", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/637e8678-3d08-4922-a650-e77eb1591db5", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

GenerateDataKeyWithoutPlaintextEn el siguiente ejemplo se muestra un archivo de registro creado al llamar aGenerateDataKeyWithoutPlaintext.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice",

328

Page 337: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresGenerateRandom

"accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:23Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyWithoutPlaintext", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "errorCode": "InvalidKeyUsageException", "requestParameters": { "keyId": "d4f2a88d-5f9c-4807-b71d-4d0ee5225156", "numberOfBytes": 16 }, "responseElements": null, "requestID": "d6b8e411-63bc-11e4-bc2b-4198b6150d5c", "eventID": "f7734272-9ec5-4c80-9f36-528ebbe35e4a", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/d4f2a88d-5f9c-4807-b71d-4d0ee5225156", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

GenerateRandomEn el siguiente ejemplo se muestra un archivo de registro creado al llamar a GenerateRandom.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:37Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateRandom", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": null, "responseElements": null, "requestID": "df1e3de6-63bc-11e4-bc2b-4198b6150d5c", "eventID": "239cb9f7-ae05-4c94-9221-6ea30eef0442", "readOnly": true, "resources": [], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

329

Page 338: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresGetKeyPolicy

GetKeyPolicyEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a GetKeyPolicy.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:50:30Z", "eventSource": "kms.amazonaws.com", "eventName": "GetKeyPolicy", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:us-east-1:123456789012:key/e923fe55-d3ef-4f9c-89a1-2752f98c3a70", "policyName": "default" }, "responseElements": null, "requestID": "93746dd6-63bc-11e4-bc2b-4198b6150d5c", "eventID": "4aa7e4d5-d047-452a-a5a6-2cce282a7e82", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/e923fe55-d3ef-4f9c-89a1-2752f98c3a70", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

ListAliasesEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a ListAliases.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:51:45Z", "eventSource": "kms.amazonaws.com", "eventName": "ListAliases",

330

Page 339: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresListGrants

"awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "limit": 5, "marker": "eyJiIjoiYWxpYXMvZTU0Y2MxOTMtYTMwNC00YzEwLTliZWItYTJjZjA3NjA2OTJhIiwiYSI6ImFsaWFzL2U1NGNjMTkzLWEzMDQtNGMxMC05YmViLWEyY2YwNzYwNjkyYSJ9" }, "responseElements": null, "requestID": "bfe6c190-63bc-11e4-bc2b-4198b6150d5c", "eventID": "a27dda7b-76f1-4ac3-8b40-42dfba77bcd6", "readOnly": true, "resources": [], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

ListGrantsEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a ListGrants.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:49Z", "eventSource": "kms.amazonaws.com", "eventName": "ListGrants", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "keyId": "arn:aws:kms:us-east-1:123456789012:key/ea22a751-e707-40d0-92ac-13a28fa9eb11", "marker": "eyJncmFudElkIjoiMWY4M2U2ZmM0YTY2NDgxYjQ2Yzc4MTdhM2Y4YmQwMDFkZDNiYmQ1MGVlYTMyY2RmOWFiNWY1Nzc1NDNjYmNmMyIsImtleUFybiI6ImFybjphd3M6dHJlbnQtc2FuZGJveDp1cy1lYXN0LTE6NTc4Nzg3Njk2NTMwOmtleS9lYTIyYTc1MS1lNzA3LTQwZDAtOTJhYy0xM2EyOGZhOWViMTEifQ\u003d\u003d", "limit": 10 }, "responseElements": null, "requestID": "e5c23960-63bc-11e4-bc2b-4198b6150d5c", "eventID": "d24380f5-1b20-4253-8e92-dd0492b3bd3d", "readOnly": true, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/ea22a751-e707-40d0-92ac-13a28fa9eb11", "accountId": "123456789012" }], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

331

Page 340: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresReEncrypt

ReEncryptEn el siguiente ejemplo se muestra un archivo de registro generado al llamar a ReEncrypt.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-11-04T00:52:19Z", "eventSource": "kms.amazonaws.com", "eventName": "ReEncrypt", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "AWS Internal", "requestParameters": { "destinationKeyId": "arn:aws:kms:us-east-1:123456789012:key/116b8956-a086-40f1-96d6-4858ef794ba5" }, "responseElements": null, "requestID": "d3eeee63-63bc-11e4-bc2b-4198b6150d5c", "eventID": "627c13b4-8791-4983-a80b-4c28807b964c", "readOnly": false, "resources": [{ "ARN": "arn:aws:kms:us-east-1:123456789012:key/ff0c0fc1-cbaa-41ab-a267-69481da8a4c8", "accountId": "123456789012" }, { "ARN": "arn:aws:kms:us-east-1:123456789012:key/116b8956-a086-40f1-96d6-4858ef794ba5", "accountId": "123456789012" }], "eventType": "AwsServiceEvent", "recipientAccountId": "123456789012" } ]}

Ejemplo uno de Amazon EC2En el siguiente ejemplo se muestra a un usuario de IAM que crea un volumen cifrado con la clave devolumen predeterminada en la consola de administración de Amazon EC2.

En el siguiente ejemplo se muestra una entrada de registro de CloudTrail que muestra al usuario Aliceque crea un volumen cifrado con la clave de volumen predeterminada en la consola de administraciónde AWS EC2. El archivo de registro de EC2 incluye el campo volumeId con el valor "vol-13439757".El registro de AWS KMS contiene un campo encryptionContext con un valor de "aws:ebs:id":"vol-13439757". Del mismo modo, coinciden principalId y accountId entre los dos registros. Losregistros reflejan el hecho de que crear un volumen cifrado genera una clave de datos que se utiliza paracifrar el contenido del volumen.

{

332

Page 341: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEjemplo uno de Amazon EC2

"Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T20:40:44Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-11-05T20:50:18Z", "eventSource": "ec2.amazonaws.com", "eventName": "CreateVolume", "awsRegion": "us-east-1", "sourceIPAddress": "72.72.72.72", "userAgent": "signin.amazonaws.com", "requestParameters": { "size": "10", "zone": "us-east-1a", "volumeType": "gp2", "encrypted": true }, "responseElements": { "volumeId": "vol-13439757", "size": "10", "zone": "us-east-1a", "status": "creating", "createTime": 1415220618876, "volumeType": "gp2", "iops": 30, "encrypted": true }, "requestID": "1565210e-73d0-4912-854c-b15ed349e526", "eventID": "a3447186-135f-4b00-8424-bc41f1a93b4f", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T20:40:44Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2014-11-05T20:50:19Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyWithoutPlaintext", "awsRegion": "us-east-1",

333

Page 342: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEjemplo dos de Amazon EC2

"sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:ebs:id": "vol-13439757" }, "numberOfBytes": 64, "keyId": "alias/aws/ebs" }, "responseElements": null, "requestID": "create-123456789012-758241111-1415220618", "eventID": "4bd2a696-d833-48cc-b72c-05e61b608399", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

Ejemplo dos de Amazon EC2El siguiente ejemplo muestra un usuario de IAM ejecutando una instancia Amazon EC2 que montaun volumen de datos cifrado con una clave de volumen predeterminada. La acción realizada porel usuario genera varios registros de AWS KMS. La creación del volumen cifrado genera unaclave de datos y el servicio de Amazon EC2 genera una concesión, en nombre del cliente, quele permite descifrar la clave de datos. Se hace referencia a instanceId, "i-81e2f56c", enel campo granteePrincipal del registro CreateGrant como "123456789012:aws:ec2-infrastructure:i-81e2f56c" así como en la identidad de la entidad principal que llama a Decrypt,"arn:aws:sts::123456789012:assumed-role/aws:ec2-infrastructure/i-81e2f56c". Laclave identificada por el UUID "e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07" es común en las tresllamadas a KMS.

{ "Records": [ { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T21:34:36Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2014-11-05T21:35:27Z", "eventSource": "ec2.amazonaws.com", "eventName": "RunInstances", "awsRegion": "us-east-1",

334

Page 343: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEjemplo dos de Amazon EC2

"sourceIPAddress": "72.72.72.72", "userAgent": "signin.amazonaws.com", "requestParameters": { "instancesSet": { "items": [ { "imageId": "ami-b66ed3de", "minCount": 1, "maxCount": 1 } ] }, "groupSet": { "items": [ { "groupId": "sg-98b6e0f2" } ] }, "instanceType": "m3.medium", "blockDeviceMapping": { "items": [ { "deviceName": "/dev/xvda", "ebs": { "volumeSize": 8, "deleteOnTermination": true, "volumeType": "gp2" } }, { "deviceName": "/dev/sdb", "ebs": { "volumeSize": 8, "deleteOnTermination": false, "volumeType": "gp2", "encrypted": true } } ] }, "monitoring": { "enabled": false }, "disableApiTermination": false, "instanceInitiatedShutdownBehavior": "stop", "clientToken": "XdKUT141516171819", "ebsOptimized": false }, "responseElements": { "reservationId": "r-5ebc9f74", "ownerId": "123456789012", "groupSet": { "items": [ { "groupId": "sg-98b6e0f2", "groupName": "launch-wizard-2" } ] }, "instancesSet": { "items": [ { "instanceId": "i-81e2f56c", "imageId": "ami-b66ed3de", "instanceState": {

335

Page 344: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEjemplo dos de Amazon EC2

"code": 0, "name": "pending" }, "amiLaunchIndex": 0, "productCodes": { }, "instanceType": "m3.medium", "launchTime": 1415223328000, "placement": { "availabilityZone": "us-east-1a", "tenancy": "default" }, "monitoring": { "state": "disabled" }, "stateReason": { "code": "pending", "message": "pending" }, "architecture": "x86_64", "rootDeviceType": "ebs", "rootDeviceName": "/dev/xvda", "blockDeviceMapping": { }, "virtualizationType": "hvm", "hypervisor": "xen", "clientToken": "XdKUT1415223327917", "groupSet": { "items": [ { "groupId": "sg-98b6e0f2", "groupName": "launch-wizard-2" } ] }, "networkInterfaceSet": { }, "ebsOptimized": false } ] } }, "requestID": "41c4b4f7-8bce-4773-bf0e-5ae3bb5cbce2", "eventID": "cd75a605-2fee-4fda-b847-9c3d330ebaae", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T21:34:36Z" } }, "invokedBy": "AWS Internal"

336

Page 345: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEjemplo dos de Amazon EC2

}, "eventTime": "2014-11-05T21:35:35Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "constraints": { "encryptionContextSubset": { "aws:ebs:id": "vol-f67bafb2" } }, "granteePrincipal": "123456789012:aws:ec2-infrastructure:i-81e2f56c", "keyId": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07" }, "responseElements": { "grantId": "6caf442b4ff8a27511fb6de3e12cc5342f5382112adf75c1a91dbd221ec356fe" }, "requestID": "41c4b4f7-8bce-4773-bf0e-5ae3bb5cbce2", "eventID": "c1ad79e3-0d3f-402a-b119-d5c31d7c6a6c", "readOnly": false, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T21:34:36Z" } }, "invokedBy": "AWS Internal" }, "eventTime": "2014-11-05T21:35:32Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKeyWithoutPlaintext", "awsRegion": "us-east-1", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "encryptionContext": { "aws:ebs:id": "vol-f67bafb2" }, "numberOfBytes": 64, "keyId": "alias/aws/ebs" }, "responseElements": null, "requestID": "create-123456789012-758247346-1415223332", "eventID": "ac3cab10-ce93-4953-9d62-0b6e5cba651d",

337

Page 346: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEjemplo dos de Amazon EC2

"readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }, { "eventVersion": "1.02", "userIdentity": { "type": "AssumedRole", "principalId": "123456789012:aws:ec2-infrastructure:i-81e2f56c", "arn": "arn:aws:sts::123456789012:assumed-role/aws:ec2-infrastructure/i-81e2f56c", "accountId": "123456789012", "accessKeyId": "", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2014-11-05T21:35:38Z" }, "sessionIssuer": { "type": "Role", "principalId": "123456789012:aws:ec2-infrastructure", "arn": "arn:aws:iam::123456789012:role/aws:ec2-infrastructure", "accountId": "123456789012", "userName": "aws:ec2-infrastructure" } } }, "eventTime": "2014-11-05T21:35:47Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "172.172.172.172", "requestParameters": { "encryptionContext": { "aws:ebs:id": "vol-f67bafb2" } }, "responseElements": null, "requestID": "b4b27883-6533-11e4-b4d9-751f1761e9e5", "eventID": "edb65380-0a3e-4123-bbc8-3d1b7cff49b0", "readOnly": true, "resources": [ { "ARN": "arn:aws:kms:us-east-1:123456789012:key/e29ddfd4-1bf6-4e1b-8ecb-08216bd70d07", "accountId": "123456789012" } ], "eventType": "AwsApiCall", "recipientAccountId": "123456789012" } ]}

338

Page 347: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear un cliente

Programación de la API de AWSKMS

Puede usar la API de AWS KMS para realizar las siguientes acciones, y mucho más.

• Crear, describir, enumerar, habilitar y deshabilitar claves.• Crear, eliminar, enumerar y actualizar alias.• Cifrar, descifrar y volver a cifrar contenido.• Establecer, enumerar y recuperar políticas de claves.• Crear, retirar, revocar y enumerar concesiones.• Recuperar el estado de rotación de claves.• Actualizar las descripciones de claves.• Generar claves de datos con o sin texto no cifrado.• Generar datos aleatorios.

El código de muestra de los siguientes temas muestra cómo utilizar los SDK de AWS para llamar a la APIde KMS de AWS.

Para obtener información sobre el uso de la consola de AWS KMS para realizar algunas de estas tareas,consulte Introducción (p. 22).

Temas• Crear un cliente (p. 339)• Trabajo con claves (p. 340)• Cifrar y descifrar claves de datos (p. 351)• Trabajar con las políticas de claves (p. 359)• Trabajar con concesiones (p. 367)• Trabajar con alias (p. 376)

Crear un clientePara utilizar el AWS SDK for Java, el AWS SDK para .NET, el AWS SDK para Python (Boto 3), el AWSSDK parar Ruby, el AWS SDK para PHP o el AWS SDK for JavaScript in Node.js para escribir código queutilice la API de AWS Key Management Service (AWS KMS), comience con la creación de un cliente deAWS KMS.

El objeto de cliente que crea se utiliza en el código de ejemplo de los temas que aparecen a continuación.

Java

Para crear un cliente de AWS KMS en Java, utilice el compilador del cliente.

AWSKMS kmsClient = AWSKMSClientBuilder.standard().build();

Para obtener más información sobre el uso del compilador de clientes Java, consulte los siguientesrecursos.

• Fluent Client Builders en el blog para desarrolladores de AWS

339

Page 348: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresTrabajo con claves

• Creación de clientes de servicio en la AWS SDK for Java Developer Guide• AWSKMSClientBuilder en la AWS SDK for Java API Reference

C#

AmazonKeyManagementServiceClient kmsClient = new AmazonKeyManagementServiceClient();

Python

kms_client = boto3.client('kms')

Ruby

require 'aws-sdk-kms' # in v2: require 'aws-sdk'

kmsClient = Aws::KMS::Client.new

PHP

Para crear un cliente de AWS KMS en PHP, utilice un objeto de cliente de AWS KMS y especifiquela versión 2014-11-01. Para obtener más información, consulte la clase KMSClient en la AWS SDKpara PHP API Reference.

// Create a KMSClient$KmsClient = new Aws\Kms\KmsClient([ 'profile' => 'default', 'version' => '2014-11-01', 'region' => 'us-east-1']);

Node.js

const kmsClient = new AWS.KMS();

Trabajo con clavesLos ejemplos de este tema utilizan la API de AWS KMS para crear, ver, habilitar y deshabilitar clavesmaestras de cliente (p. 3) de AWS KMS y para generar claves de datos (p. 5).

Temas• Crear una clave maestra de cliente (p. 340)• Generar una clave de datos (p. 342)• Consultar una clave maestra de cliente (p. 344)• Obtener los ID y los ARN de las claves maestras de cliente (p. 346)• Habilitar las claves maestras de cliente (p. 348)• Deshabilitar las claves maestras de cliente (p. 350)

Crear una clave maestra de clientePara crear una clave maestra de cliente (p. 3) (CMK), use la operación CreateKey. Los ejemplos de estasección crean una CMK simétrica. El parámetro Description utilizado en estos ejemplos es opcional.

340

Page 349: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear una clave maestra de cliente

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Para obtener ayuda con la creación de CMK en la consola de AWS KMS, consulte Crear claves (p. 22).

Java

Para obtener más información, consulte el método createKey en la AWS SDK for Java API Reference.

// Create a CMK//String desc = "Key for protecting critical data"; CreateKeyRequest req = new CreateKeyRequest().withDescription(desc);CreateKeyResult result = kmsClient.createKey(req);

C#

Para obtener más información, consulte el método CreateKey en el AWS SDK para .NET.

// Create a CMK//String desc = "Key for protecting critical data";

CreateKeyRequest req = new CreateKeyRequest(){ Description = desc};CreateKeyResponse response = kmsClient.CreateKey(req);

Python

Para obtener más información, consulte el método create_key en el AWS SDK para Python (Boto 3).

# Create a CMK

desc = 'Key for protecting critical data'

response = kms_client.create_key( Description=desc)

Ruby

Para obtener más información, consulte el método de instancia create_key en el AWS SDK pararRuby.

# Create a CMK

desc = 'Key for protecting critical data'

response = kmsClient.create_key({ description: desc})

PHP

Para obtener más información, consulte el método CreateKey en el AWS SDK para PHP.

// Create a CMK

341

Page 350: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresGenerar una clave de datos

//$desc = "Key for protecting critical data";

$result = $KmsClient->createKey([ 'Description' => $desc]);

Node.js

Para obtener más información, consulte la propiedad createKey en el AWS SDK for JavaScript inNode.js.

// Create a CMK//const Description = 'Key for protecting critical data';

kmsClient.createKey({ Description }, (err, data) => { ...});

PowerShell

Para crear una CMK en PowerShell, utilice el cmdlet New-KMSKey.

# Create a CMK

$desc = 'Key for protecting critical data'New-KmsKey -Description $desc

Generar una clave de datosPara generar una clave de datos simétrica, utilice la operación GenerateDataKey. Esta operación tomauna CMK simétrica y devuelve una clave de datos de texto sin formato y una copia de esa clave de datoscifrada bajo la CMK especificada. Debe especificar KeySpec o NumberOfBytes (pero no ambos) en cadacomando.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método generateDataKey en la AWS SDK for Java APIReference.

// Generate a data key//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest();dataKeyRequest.setKeyId(keyId);dataKeyRequest.setKeySpec("AES_256");

GenerateDataKeyResult dataKeyResult = kmsClient.generateDataKey(dataKeyRequest);

ByteBuffer plaintextKey = dataKeyResult.getPlaintext();

ByteBuffer encryptedKey = dataKeyResult.getCiphertextBlob();

342

Page 351: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresGenerar una clave de datos

C#

Para obtener más información, consulte el método GenerateDataKey en el AWS SDK para .NET.

// Generate a data key//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";GenerateDataKeyRequest dataKeyRequest = new GenerateDataKeyRequest(){ KeyId = keyId, KeySpec = DataKeySpec.AES_256};

GenerateDataKeyResponse dataKeyResponse = kmsClient.GenerateDataKey(dataKeyRequest);

MemoryStream plaintextKey = dataKeyResponse.Plaintext;

MemoryStream encryptedKey = dataKeyResponse.CiphertextBlob;

Python

Para obtener más información, consulte el método generate_date_key en el AWS SDK para Python(Boto 3).

# Generate a data key

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.generate_data_key( KeyId=key_id, KeySpec='AES_256')

plaintext_key = response['Plaintext']

encrypted_key = response['CiphertextBlob']

Ruby

Para obtener más información, consulte el método de instancia generate_date_key en el AWS SDKparar Ruby.

# Generate a data key

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.generate_data_key({ key_id: keyId, key_spec: 'AES_256'})

plaintextKey = response.plaintext

encryptedKey = response.ciphertext_blob

PHP

Para obtener más información, consulte el método GenerateDataKey en el AWS SDK para PHP.

343

Page 352: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar una clave maestra de cliente

// Generate a data key//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$keySpec = 'AES_256';

$result = $KmsClient->generateDataKey([ 'KeyId' => $keyId, 'KeySpec' => $keySpec,]);

$plaintextKey = $result['Plaintext'];

$encryptedKey = $result['CiphertextBlob'];

Node.js

Para obtener más información, consulte la propiedad generateDataKey en el AWS SDK for JavaScriptin Node.js.

// Generate a data key//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const KeySpec = 'AES_256';kmsClient.generateDataKey({ KeyId, KeySpec }, (err, data) => { if (err) console.log(err, err.stack); else { const { CiphertextBlob, Plaintext } = data; ... }});

PowerShell

Para generar una clave de datos simétrica, utilice el cmdlet New-KMSDataKey.

En la salida, la clave de texto sin formato (en la propiedad Plaintext) y la clave cifrada (en lapropiedad CiphertextBlob) son objetos MemoryStream . Para convertirlas en cadenas, utilice losmétodos de la clase MemoryStream o un cmdlet o una función que convierta objetos MemoryStreamen cadenas, como las funciones ConvertFrom-MemoryStream y ConvertFrom-Base64 del móduloConvert.

# Generate a data key

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido $keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$keySpec = 'AES_256'

$response = New-KmsDataKey -KeyId $keyId -KeySpec $keySpec$plaintextKey = $response.Plaintext$encryptedKey = $response.CiphertextBlob

Consultar una clave maestra de clientePara obtener información detallada acerca de una clave maestra de cliente (CMK), incluido el ARN de laCMK y el estado de clave (p. 245), utilice la operación DescribeKey.

344

Page 353: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar una clave maestra de cliente

DescribeKey no obtiene alias. Para obtener los alias, utilice la operación ListAliases. Para ver ejemplos,consulte Trabajar con alias (p. 376).

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Para obtener ayuda con la consulta de CMK en la consola de AWS KMS, consulte Consultar claves (p. 28).

Java

Para obtener más información, consulte el método describeKey en la AWS SDK for Java APIReference.

// Describe a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

DescribeKeyRequest req = new DescribeKeyRequest().withKeyId(keyId);DescribeKeyResult result = kmsClient.describeKey(req);

C#

Para obtener más información, consulte el método DescribeKey en el AWS SDK para .NET.

// Describe a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

DescribeKeyRequest describeKeyRequest = new DescribeKeyRequest(){ KeyId = keyId};

DescribeKeyResponse describeKeyResponse = kmsClient.DescribeKey(describeKeyRequest);

Python

Para obtener más información, consulte el método describe_key en el AWS SDK para Python (Boto 3).

# Describe a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.describe_key( KeyId=key_id)

Ruby

Para obtener más información, consulte la instancia del método describe_key en el AWS SDK pararRuby.

# Describe a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

345

Page 354: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresObtener los ID y los ARN de las claves maestras de cliente

response = kmsClient.describe_key({ key_id: keyId})

PHP

Para obtener más información, consulte el método DescribeKey en el AWS SDK para PHP.

// Describe a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->describeKey([ 'KeyId' => $keyId, ]);

Node.js

Para obtener más información, consulte la propiedad describeKey en el AWS SDK for JavaScript inNode.js.

// Describe a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.describeKey({ KeyId }, (err, data) => { ...});

PowerShell

Para obtener información detallada acerca de una CMK, utilice el cmdlet Get-Kmskey.

# Describe a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'Get-KmsKey -KeyId $keyId

Obtener los ID y los ARN de las claves maestras declientePara obtener los ID de las claves (p. 13) y los ARN de las claves (p. 13) de las claves maestras de cliente,utilice la operación ListKeys. Estos ejemplos utilizan el parámetro opcional Limit, que establece elnúmero máximo de CMK devueltas en cada llamada. Para obtener ayuda para identificar una CMK en unaoperación de AWS KMS, consulte Identificadores de clave (KeyId) (p. 12).

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Para obtener ayuda con la búsqueda de identificadores de clave y ARN de clave en la consola de AWSKMS, consulte Encontrar el ID y el ARN de la clave (p. 39).

Java

Para obtener más información, consulte el método listKeys en la AWS SDK for Java API Reference.

346

Page 355: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresObtener los ID y los ARN de las claves maestras de cliente

// List CMKs in this account//Integer limit = 10;

ListKeysRequest req = new ListKeysRequest().withLimit(limit);ListKeysResult result = kmsClient.listKeys(req);

C#

Para obtener más información, consulte el método ListKeys en el AWS SDK para .NET.

// List CMKs in this account//int limit = 10;

ListKeysRequest listKeysRequest = new ListKeysRequest(){ Limit = limit};ListKeysResponse listKeysResponse = kmsClient.ListKeys(listKeysRequest);

Python

Para obtener más información, consulte el método list_keys en el AWS SDK para Python (Boto 3).

# List CMKs in this account

response = kms_client.list_keys( Limit=10)

Ruby

Para obtener más información, consulte el método de instancia list_keys en el AWS SDK parar Ruby.

# List CMKS in this account

response = kmsClient.list_keys({ limit: 10})

PHP

Para obtener más información, consulte el método ListKeys en el AWS SDK para PHP.

// List CMKs in this account//$limit = 10;

$result = $KmsClient->listKeys([ 'Limit' => $limit,]);

Node.js

Para obtener más información, consulte la propiedad listKeys en el AWS SDK for JavaScript inNode.js.

// List CMKs in this account//

347

Page 356: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresHabilitar las claves maestras de cliente

const Limit = 10;kmsClient.listKeys({ Limit }, (err, data) => { ...});

PowerShell

Para obtener el ID de la clave y el ARN de la clave de todas las CMK de la cuenta y región, utilice elcmdlet Get-KmsKeyList.

Para limitar el número de objetos de salida, este ejemplo usa el cmdlet Select-Object en lugar delparámetro Limit, que está quedando obsoleto en los cmdlet de la lista. Para obtener asistencia conla paginación de salida en Herramientas de AWS para PowerShell, vea Paginación de salida conHerramientas de AWS para PowerShell.

# List CMKs in this account

$limit = 10Get-KmsKeyList | Select-Object -First $limit

Habilitar las claves maestras de clientePara habilitar una clave maestra del cliente (CMK) deshabilitada, utilice la operación EnableKey.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Para obtener ayuda con la habilitación y deshabilitación de CMK en la consola de AWS KMS, consulteHabilitar y deshabilitar claves (p. 49).

Java

Para obtener más información sobre la implementación de Java, consulte el método enableKey en laAWS SDK for Java API Reference.

// Enable a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

EnableKeyRequest req = new EnableKeyRequest().withKeyId(keyId);kmsClient.enableKey(req);

C#

Para obtener más información, consulte el método EnableKey en el AWS SDK para .NET.

// Enable a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

EnableKeyRequest enableKeyRequest = new EnableKeyRequest(){ KeyId = keyId};kmsClient.EnableKey(enableKeyRequest);

348

Page 357: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresHabilitar las claves maestras de cliente

Python

Para obtener más información, consulte el método enable_key en el AWS SDK para Python (Boto 3).

# Enable a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.enable_key( KeyId=key_id)

Ruby

Para obtener más información, consulte el método de instancia enable_key en el AWS SDK pararRuby.

# Enable a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.enable_key({ key_id: keyId})

PHP

Para obtener más información, consulte el método EnableKey en el AWS SDK para PHP.

// Enable a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->enableKey([ 'KeyId' => $keyId, ]);

Node.js

Para obtener más información, consulte la propiedad enableKey en el AWS SDK for JavaScript inNode.js.

// Enable a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.enableKey({ KeyId }, (err, data) => { ...});

PowerShell

Para habilitar una CMK, utilice el cmdlet Enable-KMSkey.

# Enable a CMK

349

Page 358: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDeshabilitar las claves maestras de cliente

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'Enable-KmsKey -KeyId $keyId

Deshabilitar las claves maestras de clientePara deshabilitar una CMK, utilice la operación DisableKey. Deshabilitar una CMK impide que se utilice enoperaciones criptográficas (p. 11).

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Para obtener ayuda con la habilitación y deshabilitación de CMK en la consola de AWS KMS, consulteHabilitar y deshabilitar claves (p. 49).

Java

Para obtener más información, consulte el método disableKey en la AWS SDK for Java APIReference.

// Disable a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

DisableKeyRequest req = new DisableKeyRequest().withKeyId(keyId);kmsClient.disableKey(req);

C#

Para obtener más información, consulte el método DisableKey en el AWS SDK para .NET.

// Disable a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

DisableKeyRequest disableKeyRequest = new DisableKeyRequest(){ KeyId = keyId};kmsClient.DisableKey(disableKeyRequest);

Python

Para obtener más información, consulte el método disable_key en el AWS SDK para Python (Boto 3).

# Disable a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.disable_key( KeyId=key_id)

350

Page 359: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrar y descifrar claves de datos

Ruby

Para obtener más información, consulte la instancia del método disable_key en el AWS SDK pararRuby.

# Disable a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.disable_key({ key_id: keyId})

PHP

Para obtener más información, consulte el método DisableKey en el AWS SDK para PHP.

// Disable a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->disableKey([ 'KeyId' => $keyId, ]);

Node.js

Para obtener más información, consulte la propiedad disableKey en el AWS SDK for JavaScript inNode.js.

// Disable a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.disableKey({ KeyId }, (err, data) => { ...});

PowerShell

Para deshabilitar una CMK, utilice el cmdlet Disable-KMSkey.

# Disable a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'Disable-KmsKey -KeyId $keyId

Cifrar y descifrar claves de datosLos ejemplos de este tema utilizan las operaciones Encrypt, Decrypt y ReEncrypt de la API de AWS KMS.

Estas operaciones están diseñadas para cifrar y descifrar claves de datos (p. 5). Utilizan una clave maestradel cliente (p. 3) (CMK) de AWS KMS en las operaciones de cifrado y no pueden aceptar más de 4 KB

351

Page 360: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrar una clave de datos

(4096 bytes) de datos. Aunque es posible utilizarlas para cifrar pequeñas cantidades de datos como, porejemplo, una contraseña o una clave RSA, no se han diseñado para cifrar los datos de las aplicaciones.

Para cifrar los datos de las aplicaciones, utilice las características de cifrado del lado del servidor de unservicio de AWS o una biblioteca de cifrado del lado del cliente, como el SDK de cifrado de AWS o elcliente de cifrado de Amazon S3.

Temas• Cifrar una clave de datos (p. 352)• Descifrando una clave de datos (p. 354)• Volver a cifrar una clave de datos con otra clave maestra de cliente (p. 356)

Cifrar una clave de datosLa operación Encrypt se ha diseñado para cifrar claves de datos, pero no se utiliza con frecuencia. Lasoperaciones GenerateDataKey y GenerateDataKeyWithoutPlaintext devuelven claves de datos cifradas.Puede utilizar este método cuando mueva datos cifrados a una región diferente y desee cifrar su clave dedatos con una CMK en la nueva región.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método encrypt en la AWS SDK for Java API Reference.

// Encrypt a data key//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";ByteBuffer plaintext = ByteBuffer.wrap(new byte[]{1,2,3,4,5,6,7,8,9,0});

EncryptRequest req = new EncryptRequest().withKeyId(keyId).withPlaintext(plaintext);ByteBuffer ciphertext = kmsClient.encrypt(req).getCiphertextBlob();

C#

Para obtener más información, consulte el método Encrypt en el AWS SDK para .NET.

// Encrypt a data key//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";MemoryStream plaintext = new MemoryStream();plaintext.Write(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }, 0, 10);

EncryptRequest encryptRequest = new EncryptRequest(){ KeyId = keyId, Plaintext = plaintext};MemoryStream ciphertext = kmsClient.Encrypt(encryptRequest).CiphertextBlob;

Python

Para obtener más información, consulte el método encrypt en el AWS SDK para Python (Boto 3).

352

Page 361: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCifrar una clave de datos

# Encrypt a data key

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'plaintext = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00'

response = kms_client.encrypt( KeyId=key_id, Plaintext=plaintext)

ciphertext = response['CiphertextBlob']

Ruby

Para obtener más información, consulte el método de instancia encrypt en el AWS SDK parar Ruby.

# Encrypt a data key

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'plaintext = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x00"

response = kmsClient.encrypt({ key_id: keyId, plaintext: plaintext})

ciphertext = response.ciphertext_blob

PHP

Para obtener más información, consulte el método Encrypt en el AWS SDK para PHP.

// Encrypt a data key//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$message = pack('c*',1,2,3,4,5,6,7,8,9,0);

$result = $KmsClient->encrypt([ 'KeyId' => $keyId, 'Plaintext' => $message, ]);

$ciphertext = $result['CiphertextBlob'];

Node.js

Para obtener más información, consulte el método property en el AWS SDK for JavaScript in Node.js.

// Encrypt a data key//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const Plaintext = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]);kmsClient.encrypt({ KeyId, Plaintext }, (err, data) => { if (err) console.log(err, err.stack); // an error occurred else { const { CiphertextBlob } = data; ...

353

Page 362: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDescifrando una clave de datos

}});

PowerShell

Para cifrar una clave de datos en una CMK de AWS KMS, utilice el cmdlet Invoke-KMSEncrypt.Devuelve el texto cifrado como un objeto MemoryStream (System.IO.MemoryStream). Puede utilizarel objeto MemoryStream como entrada para el cmdlet Invoke-KMSDecrypt.

AWS KMS también devuelve claves de datos como objetos MemoryStream. En este ejemplo, parasimular una clave de datos de texto sin formato, creamos una matriz de bytes y la escribimos en unobjeto MemoryStream.

Tenga en cuenta que el parámetro Plaintext de Invoke-KMSEncrypt toma una matriz de bytes(byte[]); no requiere un objeto MemoryStream. A partir de la versión 4.0 de AWSpowerShell,los parámetros de todos los módulos de AWSpowerShell que toman matrices de bytes y objetosMemoryStream aceptan matrices de bytes, objetos MemoryStream, cadenas, matrices de cadenasy objetos FileInfo (System.IO.FileInfo). Puede pasar cualquiera de estos tipos a Invoke-KMSEncrypt.

# Encrypt a data key

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

# Simulate a data key # Create a byte array[byte[]] $bytes = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0

# Create a MemoryStream $plaintext = [System.IO.MemoryStream]::new()

# Add the byte array to the MemoryStream$plaintext.Write($bytes, 0, $bytes.length)

# Encrypt the simulated data key$response = Invoke-KMSEncrypt -KeyId $keyId -Plaintext $plaintext

# Get the ciphertext from the response$ciphertext = $response.CiphertextBlob

Descifrando una clave de datosPara descifrar una clave de datos, use la operación Decrypt.

El ciphertextBlob que especifique debe ser el valor del campo CiphertextBlobde una respuesta GenerateDataKey, GenerateDataKeyWithoutPlaintext o Encrypt, oel campo PrivateKeyCiphertextBlob de una respuesta GenerateDataKeyPair oGenerateDataKeyPairWithoutPlaintext. También puede utilizar la operación Decrypt para descifrar losdatos cifrados fuera de AWS KMS por la clave pública en una CMK asimétrica.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método decrypt en la AWS SDK for Java API Reference.

// Decrypt a data key

354

Page 363: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresDescifrando una clave de datos

//

ByteBuffer ciphertextBlob = Place your ciphertext here;

DecryptRequest req = new DecryptRequest().withCiphertextBlob(ciphertextBlob);ByteBuffer plainText = kmsClient.decrypt(req).getPlaintext();

C#

Para obtener más información, consulte el método Decrypt en el AWS SDK para .NET.

// Decrypt a data key//

MemoryStream ciphertextBlob = new MemoryStream();// Write ciphertext to memory stream

DecryptRequest decryptRequest = new DecryptRequest(){ CiphertextBlob = ciphertextBlob};MemoryStream plainText = kmsClient.Decrypt(decryptRequest).Plaintext;

Python

Para obtener más información, consulte el método decrypt en el AWS SDK para Python (Boto 3).

# Decrypt a data key

ciphertext = 'Place your ciphertext here'

response = kms_client.decrypt( CiphertextBlob=ciphertext)

plaintext = response['Plaintext']

Ruby

Para obtener más información, consulte el método de instancia decrypt en el AWS SDK parar Ruby.

# Decrypt a data key

ciphertext = 'Place your ciphertext here'ciphertext_packed = [ciphertext].pack("H*")

response = kmsClient.decrypt({ ciphertext_blob: ciphertext_packed})

plaintext = response.plaintext

PHP

Para obtener más información, consulte el método Decrypt en el AWS SDK para PHP.

// Decrypt a data key//$ciphertext = 'Place your cipher text blob here';

355

Page 364: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresVolver a cifrar una clave de datoscon otra clave maestra de cliente

$result = $KmsClient->decrypt([ 'CiphertextBlob' => $ciphertext]);

$plaintext = $result['Plaintext'];

Node.js

Para obtener más información, consulte la propiedad decrypt en el AWS SDK for JavaScript inNode.js.

// Decrypt a data key//const CiphertextBlob = 'Place your cipher text blob here';kmsClient.decrypt({ CiphertextBlob }, (err, data) => { if (err) console.log(err, err.stack); // an error occurred else { const { Plaintext } = data; ... }});

PowerShell

Para descifrar una clave de datos, utilice el cmdlet Invoke-KMSEncrypt.

Este cmdlet devuelve el texto sin formato como un objeto MemoryStream(System.IO.MemoryStream). Para convertirlo en una matriz de bytes, utilice cmdlets o funciones queconviertan objetos MemoryStream en matrices de bytes, como las funciones del módulo Convert.

Dado que este ejemplo utiliza el texto cifrado devuelto por un cmdlet de cifrado de AWS KMS, utilizaun objeto MemoryStream para el valor del parámetro CiphertextBlob. Sin embargo, el parámetroCiphertextBlob de Invoke-KMSDecrypt toma una matriz de bytes (byte[]); no requiereun objeto MemoryStream. A partir de la versión 4.0 de AWSpowerShell, los parámetros de todoslos módulos de AWSpowerShell que toman matrices de bytes y objetos MemoryStream aceptanmatrices de bytes, objetos MemoryStream, cadenas, matrices de cadenas y objetos FileInfo(System.IO.FileInfo). Puede pasar cualquiera de estos tipos a Invoke-KMSDecrypt.

# Decrypt a data key

[System.IO.MemoryStream]$ciphertext = Read-Host 'Place your cipher text blob here'

$response = Invoke-KMSDecrypt -CiphertextBlob $ciphertext$plaintext = $response.Plaintext

Volver a cifrar una clave de datos con otra clavemaestra de clientePara descifrar una clave de datos cifrada y volver a cifrar inmediatamente la clave de datos con una clavemaestra del cliente (CMK) distinta, utilice la operación ReEncrypt. Las operaciones se realizan en sutotalidad en el servidor en AWS KMS, por lo que su texto no cifrado nunca se expondrá fuera de AWSKMS.

El ciphertextBlob que especifique debe ser el valor del campo CiphertextBlobde una respuesta GenerateDataKey, GenerateDataKeyWithoutPlaintext o Encrypt, oel campo PrivateKeyCiphertextBlob de una respuesta GenerateDataKeyPair o

356

Page 365: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresVolver a cifrar una clave de datoscon otra clave maestra de cliente

GenerateDataKeyPairWithoutPlaintext. También puede utilizar la operación ReEncrypt para volver a cifrarlos datos cifrados fuera de AWS KMS por la clave pública en una CMK asimétrica.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método reEncrypt en la AWS SDK for Java API Reference.

// Re-encrypt a data key

ByteBuffer sourceCiphertextBlob = Place your ciphertext here;

// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString destinationKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321";

ReEncryptRequest req = new ReEncryptRequest();req.setCiphertextBlob(sourceCiphertextBlob);req.setDestinationKeyId(destinationKeyId);ByteBuffer destinationCipherTextBlob = kmsClient.reEncrypt(req).getCiphertextBlob();

C#

Para obtener más información, consulte el método ReEncrypt en el AWS SDK para .NET.

// Re-encrypt a data key

MemoryStream sourceCiphertextBlob = new MemoryStream();// Write ciphertext to memory stream

// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString destinationKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321";

ReEncryptRequest reEncryptRequest = new ReEncryptRequest(){ CiphertextBlob = sourceCiphertextBlob, DestinationKeyId = destinationKeyId};MemoryStream destinationCipherTextBlob = kmsClient.ReEncrypt(reEncryptRequest).CiphertextBlob;

Python

Para obtener más información, consulte el método re_encrypt en el AWS SDK para Python (Boto 3).

# Re-encrypt a data keyciphertext = 'Place your ciphertext here'

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

response = kms_client.re_encrypt( CiphertextBlob=ciphertext, DestinationKeyId=key_id)

destination_ciphertext_blob = response['CiphertextBlob']

357

Page 366: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresVolver a cifrar una clave de datoscon otra clave maestra de cliente

Ruby

Para obtener más información, consulte el método de instancia re_encrypt en el AWS SDK pararRuby.

# Re-encrypt a data key

ciphertext = 'Place your ciphertext here'ciphertext_packed = [ciphertext].pack("H*")

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

response = kmsClient.re_encrypt({ ciphertext_blob: ciphertext_packed, destination_key_id: keyId})

destination_ciphertext_blob = response.ciphertext_blob.unpack('H*')

PHP

Para obtener más información, consulte el método ReEncrypt en el AWS SDK para PHP.

// Re-encrypt a data key

$ciphertextBlob = 'Place your ciphertext here';

// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321';

$result = $KmsClient->reEncrypt([ 'CiphertextBlob' => $ciphertextBlob, 'DestinationKeyId' => $keyId, ]);

Node.js

Para obtener más información, consulte la propiedad reEncrypt en el AWS SDK for JavaScript inNode.js.

// Re-encrypt a data keyconst CiphertextBlob = 'Place your cipher text blob here';// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst DestinationKeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321';kmsClient.reEncrypt({ CiphertextBlob, DestinationKeyId }, (err, data) => { ...});

PowerShell

Para volver a cifrar un texto cifrado en la misma CMK o en otra diferente, utilice el cmdlet Invoke-KMSReencrypt.

Dado que este ejemplo utiliza el texto cifrado devuelto por un cmdlet de cifrado de AWS KMS, utilizaun objeto MemoryStream para el valor del parámetro CiphertextBlob. Sin embargo, el parámetroCiphertextBlob de Invoke-KMSReEncrypt toma una matriz de bytes (byte[]); no requiereun objeto MemoryStream. A partir de la versión 4.0 de AWSpowerShell, los parámetros de todoslos módulos de AWSpowerShell que toman matrices de bytes y objetos MemoryStream aceptan

358

Page 367: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresTrabajar con las políticas de claves

matrices de bytes, objetos MemoryStream, cadenas, matrices de cadenas y objetos FileInfo(System.IO.FileInfo). Puede pasar cualquiera de estos tipos a Invoke-KMSReEncrypt.

# Re-encrypt a data key

[System.IO.MemoryStream]$ciphertextBlob = Read-Host 'Place your cipher text blob here'

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$destinationKeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

$response = Invoke-KMSReEncrypt -Ciphertext $ciphertextBlob -DestinationKeyId $destinationKeyId$reEncryptedCiphertext = $response.CiphertextBlob

Trabajar con las políticas de clavesLos ejemplos de este tema utilizan la API de AWS KMS para ver y cambiar las políticas de claves de lasclaves maestras del cliente (CMK) de AWS KMS. Para obtener más información acerca de cómo utilizar laspolíticas de claves y las políticas de IAM para administrar el acceso a sus CMK, consulte Autenticación ycontrol de acceso de AWS KMS (p. 53).

Temas• Mostrar los nombres de las políticas de claves (p. 359)• Obtener una política de claves (p. 361)• Configurar una política de claves (p. 363)

Mostrar los nombres de las políticas de clavesPara obtener los nombres de las políticas de claves de una clave maestra, utilice la operaciónListKeyPolicies. El único nombre de política de claves que se devuelve es default.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información sobre la implementación de Java, consulte el método listKeyPolicies enla AWS SDK for Java API Reference.

// List key policies//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ListKeyPoliciesRequest req = new ListKeyPoliciesRequest().withKeyId(keyId);ListKeyPoliciesResult result = kmsClient.listKeyPolicies(req);

C#

Para obtener más información, consulte el método ListKeyPolicies en el AWS SDK para .NET.

// List key policies

359

Page 368: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMostrar los nombres de las políticas de claves

//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ListKeyPoliciesRequest listKeyPoliciesRequest = new ListKeyPoliciesRequest(){ KeyId = keyId};ListKeyPoliciesResponse listKeyPoliciesResponse = kmsClient.ListKeyPolicies(listKeyPoliciesRequest);

Python

Para obtener más información, consulte el método list_key_policies en el AWS SDK para Python (Boto3).

# List key policies

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.list_key_policies( KeyId=key_id)

Ruby

Para obtener más información, consulte el método de instancia list_key_policies en el AWS SDK pararRuby.

# List key policies

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.list_key_policies({ key_id: keyId})

PHP

Para obtener más información, consulte el método ListKeyPolicies en el AWS SDK para PHP.

// List key policies//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->listKeyPolicies([ 'KeyId' => $keyId]);

Node.js

Para obtener más información, consulte la propiedad listKeyPolicies en el AWS SDK for JavaScript inNode.js.

// List key policies//

360

Page 369: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresObtener una política de claves

// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

kmsClient.listKeyPolicies({ KeyId }, (err, data) => { ...});

PowerShell

Para enumerar el nombre de la política de claves predeterminada, utilice el cmdlet Get-KmsKeyPolicyList.

# List key policies

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$response = Get-KMSKeyPolicyList -KeyId $keyId

Obtener una política de clavesPara obtener la política de claves de una clave maestra del cliente, utilice la operación GetKeyPolicy.

GetKeyPolicy requiere un nombre de política. El único nombre de política válido es default.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método getKeyPolicy en el AWS SDK for Java APIReference.

// Get the policy for a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String policyName = "default";

GetKeyPolicyRequest req = new GetKeyPolicyRequest().withKeyId(keyId).withPolicyName(policyName);GetKeyPolicyResult result = kmsClient.getKeyPolicy(req);

C#

Para obtener más información, consulte el método GetKeyPolicy en el AWS SDK para .NET.

// Get the policy for a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String policyName = "default";

GetKeyPolicyRequest getKeyPolicyRequest = new GetKeyPolicyRequest(){ KeyId = keyId,

361

Page 370: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresObtener una política de claves

PolicyName = policyName};GetKeyPolicyResponse getKeyPolicyResponse = kmsClient.GetKeyPolicy(getKeyPolicyRequest);

Python

Para obtener más información, consulte el método get_key_policy en el AWS SDK para Python (Boto3).

# Get the policy for a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'policy_name = 'default'

response = kms_client.get_key_policy( KeyId=key_id, PolicyName=policy_name)

Ruby

Para obtener más información, consulte el método de instancia get_key_policy en el AWS SDK pararRuby.

# Get the policy for a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'policyName = 'default'

response = kmsClient.get_key_policy({ key_id: keyId, policy_name: policyName})

PHP

Para obtener más información, consulte el método GetKeyPolicy en el AWS SDK para PHP.

// Get the policy for a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$policyName = "default";

$result = $KmsClient->getKeyPolicy([ 'KeyId' => $keyId, 'PolicyName' => $policyName]);

Node.js

Para obtener más información, consulte la propiedad getKeyPolicy en el AWS SDK for JavaScript inNode.js.

// Get the policy for a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido

362

Page 371: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConfigurar una política de claves

const KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const PolicyName = 'default';kmsClient.getKeyPolicy({ KeyId, PolicyName }, (err, data) => { ...});

PowerShell

Para obtener la política de claves de una CMK, utilice el cmdlet Get-KmsKeyPolicy. Este cmdletdevuelve la política de claves como una cadena (System.String) que puede utilizar en un comandoWrite-KMSKeyPolicy (PutKeyPolicy). Para convertir las políticas de la cadena JSON en objetosPSCustomObject, utilice el cmdlet ConvertFrom-JSON.

# Get the policy for a CMK

# Replace the following fictitious CMK ARN with a valid CMK ID or ARN$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$policyName = 'default'

$response = Get-KMSKeyPolicy -KeyId $keyId -PolicyName $policyName

Configurar una política de clavesPara crear o reemplazar la política de claves de una CMK, utilice la operación PutKeyPolicy.

PutKeyPolicy requiere un nombre de política. El único nombre de política válido es default.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método putKeyPolicy en la AWS SDK for Java APIReference.

// Set a key policy for a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String policyName = "default";String policy = "{" + " \"Version\": \"2012-10-17\"," + " \"Statement\": [{" + " \"Sid\": \"Allow access for ExampleUser\"," + " \"Effect\": \"Allow\"," + // Replace the following user ARN with one for a real user. " \"Principal\": {\"AWS\": \"arn:aws:iam::111122223333:user/ExampleUser\"}," + " \"Action\": [" + " \"kms:Encrypt\"," + " \"kms:GenerateDataKey*\"," + " \"kms:Decrypt\"," + " \"kms:DescribeKey\"," + " \"kms:ReEncrypt*\"" + " ]," + " \"Resource\": \"*\"" + " }]" + "}";

363

Page 372: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConfigurar una política de claves

PutKeyPolicyRequest req = new PutKeyPolicyRequest().withKeyId(keyId).withPolicy(policy).withPolicyName(policyName);kmsClient.putKeyPolicy(req);

C#

Para obtener más información, consulte el método PutKeyPolicy en el AWS SDK para .NET.

// Set a key policy for a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String policyName = "default";String policy = "{" + " \"Version\": \"2012-10-17\"," + " \"Statement\": [{" + " \"Sid\": \"Allow access for ExampleUser\"," + " \"Effect\": \"Allow\"," + // Replace the following user ARN with one for a real user. " \"Principal\": {\"AWS\": \"arn:aws:iam::111122223333:user/ExampleUser\"}," + " \"Action\": [" + " \"kms:Encrypt\"," + " \"kms:GenerateDataKey*\"," + " \"kms:Decrypt\"," + " \"kms:DescribeKey\"," + " \"kms:ReEncrypt*\"" + " ]," + " \"Resource\": \"*\"" + " }]" + "}"; PutKeyPolicyRequest putKeyPolicyRequest = new PutKeyPolicyRequest(){ KeyId = keyId, Policy = policy, PolicyName = policyName};kmsClient.PutKeyPolicy(putKeyPolicyRequest);

Python

Para obtener más información, consulte el método put_key_policy en el AWS SDK para Python (Boto3).

# Set a key policy for a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'policy_name = 'default'policy = """{ "Version": "2012-10-17", "Statement": [{ "Sid": "Allow access for ExampleUser", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt",

364

Page 373: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConfigurar una política de claves

"kms:DescribeKey", "kms:ReEncrypt*" ], "Resource": "*" }]}"""

response = kms_client.put_key_policy( KeyId=key_id, Policy=policy, PolicyName=policy_name)

Ruby

Para obtener más información, consulte el método de instancia put_key_policy en el AWS SDK pararRuby.

# Set a key policy for a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'policyName = 'default'policy = "{\n\n "Version": "2012-10-17",\n "Statement": [{\n "Sid": "Allow access for ExampleUser",\n "Effect": "Allow",\n "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"},\n "Action": [\n "kms:Encrypt",\n "kms:GenerateDataKey*",\n "kms:Decrypt",\n "kms:DescribeKey",\n "kms:ReEncrypt*"\n ],\n "Resource": "*"\n }]\n}\n"

response = kmsClient.put_key_policy({ key_id: keyId, policy: policy, policy_name: policyName})

PHP

Para obtener más información, consulte el método PutKeyPolicy en el AWS SDK para PHP.

// Set a key policy for a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$policyName = "default";

$result = $KmsClient->putKeyPolicy([ 'KeyId' => $keyId, 'PolicyName' => $policyName, 'Policy' => '{ "Version": "2012-10-17", "Id": "custom-policy-2016-12-07", "Statement": [

365

Page 374: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConfigurar una política de claves

{ "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/root" }, "Action": [ "kms:*" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt*", "kms:GenerateDataKey*", "kms:Decrypt*", "kms:DescribeKey*", "kms:ReEncrypt*" ], "Resource": "*" } ] } ' ]);

Node.js

Para obtener más información, consulte la propiedad putKeyPolicy en el AWS SDK para Node.js.

// Set a key policy for a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const PolicyName = 'default';const Policy = `{ "Version": "2012-10-17", "Id": "custom-policy-2016-12-07", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt*", "kms:GenerateDataKey*", "kms:Decrypt*", "kms:DescribeKey*", "kms:ReEncrypt*" ], "Resource": "*" } ]}`; // The key policy document kmsClient.putKeyPolicy({ KeyId, Policy, PolicyName }, (err, data) => { ...

366

Page 375: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresTrabajar con concesiones

});

PowerShell

Para establecer una política de claves para una CMK, utilice el cmdlet Write-KMSKeyPolicy. Estecmdlet no devuelve ningún resultado. Para comprobar que se aplicó el comando, utilice el cmdlet Get-KmsKeyPolicy.

El parámetro Policy toma una cadena. Incluya la cadena entre comillas simples para convertirla enuna cadena literal. No es necesario utilizar caracteres de continuación o caracteres de escape en lacadena literal.

# Set a key policy for a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$policyName = 'default'$policy = '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, "Action": [ "kms:Encrypt*", "kms:GenerateDataKey*", "kms:Decrypt*", "kms:DescribeKey*", "kms:ReEncrypt*" ], "Resource": "*" }] }'

Write-KMSKeyPolicy -KeyId $keyId -PolicyName $policyName -Policy $policy

Trabajar con concesionesLos ejemplos de este tema utilizan la API de AWS KMS para crear, ver, retirar y revocar concesionesen claves maestras del cliente (CMK) de AWS KMS. Para obtener más información sobre el uso deconcesiones en AWS KMS, consulte Usar concesiones (p. 127).

Temas• Crear una concesión (p. 368)• Consultar una concesión (p. 370)• Retirar una concesión (p. 372)

367

Page 376: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear una concesión

• Revocar una concesión (p. 374)

Crear una concesiónPara crear una concesión para una clave maestra de cliente de AWS KMS, use la operación CreateGrant.La respuesta incluye solo el ID de concesión y el token de concesión. Para obtener información detalladasobre la concesión, utilice la operación ListGrants como se muestra en Consultar una concesión (p. 370).

Estos ejemplos crean una concesión que permite a Alice, un usuario de IAM de la cuenta, realizar laoperación GenerateDataKey en la CMK identificada por el parámetro KeyId.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método createGrant en la AWS SDK for Java APIReference.

// Create a grant//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String granteePrincipal = "arn:aws:iam::111122223333:user/Alice";String operation = GrantOperation.GenerateDataKey.toString();

CreateGrantRequest request = new CreateGrantRequest() .withKeyId(keyId) .withGranteePrincipal(granteePrincipal) .withOperations(operation);

CreateGrantResult result = kmsClient.createGrant(request);

C#

Para obtener más información, consulte el método CreateGrant en el AWS SDK para .NET.

// Create a grant//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";String granteePrincipal = "arn:aws:iam::111122223333:user/Alice";String operation = GrantOperation.GenerateDataKey;

CreateGrantRequest createGrantRequest = new CreateGrantRequest(){ KeyId = keyId, GranteePrincipal = granteePrincipal, Operations = new List<string>() { operation }};

CreateGrantResponse createGrantResult = kmsClient.CreateGrant(createGrantRequest);

Python

Para obtener más información, consulte el método create_grant en el AWS SDK para Python (Boto 3).

# Create a grant

368

Page 377: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear una concesión

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'grantee_principal = 'arn:aws:iam::111122223333:user/Alice'operation = ['GenerateDataKey']

response = kms_client.create_grant( KeyId=key_id, GranteePrincipal=grantee_principal, Operations=operation)

Ruby

Para obtener más información, consulte el método de instancia create_grant en el AWS SDK pararRuby.

# Create a grant

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'granteePrincipal = 'arn:aws:iam::111122223333:user/Alice'operation = ['GenerateDataKey']

response = kmsClient.create_grant({ key_id: keyId, grantee_principal: granteePrincipal, operations: operation})

PHP

Para obtener más información, consulte el método CreateGrant en el AWS SDK para PHP.

// Create a grant//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$granteePrincipal = "arn:aws:iam::111122223333:user/Alice";$operation = ['GenerateDataKey']

$result = $KmsClient->createGrant([ 'GranteePrincipal' => $granteePrincipal, 'KeyId' => $keyId, 'Operations' => $operation ]);

Node.js

Para obtener más información, consulte la propiedad createGrant en el AWS SDK for JavaScript inNode.js.

// Create a grant//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const GranteePrincipal = 'arn:aws:iam::111122223333:user/Alice';const Operations: ["GenerateDataKey"];kmsClient.createGrant({ KeyId, GranteePrincipal, Operations }, (err, data) => { ...});

369

Page 378: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar una concesión

PowerShell

Para crear una concesión, utilice el cmdlet New-KMSGrant.

# Create a grant # Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$granteePrincipal = 'arn:aws:iam::111122223333:user/Alice'$operation = 'GenerateDataKey'

$response = New-KMSGrant -GranteePrincipal $granteePrincipal -KeyId $keyId -Operation $operation

Consultar una concesiónPara obtener información detallada sobre las concesiones en una clave maestra de cliente de AWS KMS,utilice la operación ListGrants. Estos ejemplos utilizan el parámetro opcional Limits, que determinacuántas concesiones devuelve la operación.

Note

El campo GranteePrincipal de la respuesta ListGrants generalmente contiene el principalbeneficiario de la concesión. Sin embargo, cuando el principal beneficiario de la concesión esun servicio de AWS, el campo GranteePrincipal contiene el servicio principal, que puederepresentar varios beneficiarios principales distintos.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información sobre la implementación de Java, consulte el método listGrants en laAWS SDK for Java API Reference.

// Listing grants on a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";Integer limit = 10;

ListGrantsRequest req = new ListGrantsRequest().withKeyId(keyId).withLimit(limit);ListGrantsResult result = kmsClient.listGrants(req);

C#

Para obtener más información, consulte el método ListGrants en el AWS SDK para .NET.

// Listing grants on a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";int limit = 10;

ListGrantsRequest listGrantsRequest = new ListGrantsRequest(){ KeyId = keyId, Limit = limit

370

Page 379: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresConsultar una concesión

};ListGrantsResponse listGrantsResponse = kmsClient.ListGrants(listGrantsRequest);

Python

Para obtener más información, consulte el método list_grants en el AWS SDK para Python (Boto 3).

# Listing grants on a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.list_grants( KeyId=key_id, Limit=10)

Ruby

Para obtener más información, consulte el método de instancia list_grants en el AWS SDK parar Ruby.

# Listing grants on a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.list_grants({ key_id: keyId, limit: 10})

PHP

Para obtener más información, consulte el método ListGrants en el AWS SDK para PHP.

// Listing grants on a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';$limit = 10;

$result = $KmsClient->listGrants([ 'KeyId' => $keyId, 'Limit' => $limit,]);

Node.js

Para obtener más información, consulte la propiedad listGrants en el AWS SDK for JavaScript inNode.js.

// Listing grants on a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';const Limit = 10;kmsClient.listGrants({ KeyId, Limit }, (err, data) => { ...});

371

Page 380: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRetirar una concesión

PowerShell

Para ver los detalles de todas las concesiones de AWS KMS para una CMK, utilice el cmdlet Get-KmsGrantList.

Para limitar el número de objetos de salida, este ejemplo usa el cmdlet Select-Object en lugar delparámetro Limit, que está quedando obsoleto en los cmdlet de la lista. Para obtener asistencia conla paginación de salida en Herramientas de AWS para PowerShell, vea Paginación de salida conHerramientas de AWS para PowerShell.

# Listing grants on a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'$limit = 10

$response = Get-KMSGrantList -KeyId $keyId | Select-Object -First $limit

Retirar una concesiónPara retirar una concesión para una clave maestra de cliente de AWS KMS, utilice la operaciónRetireGrant. Debe retirar una concesión para efectuar limpieza después de utilizarla.

Para retirar una concesión, proporcione el token de la concesión o el ID de la concesión y el ID de la CMK.Para esta operación, el ID de la CMK debe ser el Nombre de recurso de Amazon (ARN) de la CMK (p. 39).La operación CreateGrant devuelve el token de la concesión. Las operaciones CreateGrant y ListGrantsdevuelven el ID de la concesión.

RetireGrant no devuelve ninguna respuesta. Para comprobar que se ha aplicado, utilice la operaciónListGrants.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método retireGrant en la AWS SDK for Java API Reference.

// Retire a grant//String grantToken = Place your grant token here;

RetireGrantRequest req = new RetireGrantRequest().withGrantToken(grantToken);kmsClient.retireGrant(req);

C#

Para obtener más información, consulte el método RetireGrant en el AWS SDK para .NET.

// Retire a grant//String grantToken = "Place your grant token here";

RetireGrantRequest retireGrantRequest = new RetireGrantRequest(){ GrantToken = grantToken};kmsClient.RetireGrant(retireGrantRequest);

372

Page 381: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRetirar una concesión

Python

Para obtener más información, consulte el método retire_grant en el AWS SDK para Python (Boto 3).

# Retire a grant

grant_token = Place your grant token here

response = kms_client.retire_grant( GrantToken=grant_token)

Ruby

Para obtener más información, consulte el método de instancia retire_grant en el AWS SDK pararRuby.

# Retire a grant

grantToken = Place your grant token here

response = kmsClient.retire_grant({ grant_token: grantToken})

PHP

Para obtener más información, consulte el método RetireGrant en el AWS SDK para PHP.

// Retire a grant//$grantToken = 'Place your grant token here';

$result = $KmsClient->retireGrant([ 'GrantToken' => $grantToken,]);

Node.js

Para obtener más información, consulte la propiedad retireGrant en el AWS SDK for JavaScript inNode.js.

// Retire a grant//const GrantToken = 'Place your grant token here';kmsClient.retireGrant({ GrantToken }, (err, data) => { ...});

PowerShell

Para retirar una concesión, utilice el cmdlet Disable-KMSGrant. Para obtener el token de concesión,utilice el cmdlet New-KMSGrant. El parámetro GrantToken toma una cadena, por lo que no esnecesario convertir la salida que devuelve el cmdlet Read-Host.

# Retire a grant

$grantToken = Read-Host -Message Place your grant token hereDisable-KMSGrant -GrantToken $grantToken

373

Page 382: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRevocar una concesión

Revocar una concesiónPara revocar una concesión a una clave maestra de cliente de AWS KMS, utilice la operaciónRevokeGrant. Puede revocar una concesión para denegar explícitamente las operaciones que dependende ella.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método revokeGrant en la AWS SDK for Java APIReference.

// Revoke a grant on a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

// &fake-grant-id;String grantId = "grant1";

RevokeGrantRequest req = new RevokeGrantRequest().withKeyId(keyId).withGrantId(grantId);kmsClient.revokeGrant(req);

C#

Para obtener más información, consulte el método RevokeGrant en el AWS SDK para .NET.

// Revoke a grant on a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

// &fake-grant-id;String grantId = "grant1";

RevokeGrantRequest revokeGrantRequest = new RevokeGrantRequest(){ KeyId = keyId, GrantId = grantId};kmsClient.RevokeGrant(revokeGrantRequest);

Python

Para obtener más información, consulte el método revoke_grant en el AWS SDK para Python (Boto 3).

# Revoke a grant on a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

# &fake-grant-id;grant_id = 'grant1'

response = kms_client.revoke_grant( KeyId=key_id,

374

Page 383: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresRevocar una concesión

GrantId=grant_id)

Ruby

Para obtener más información, consulte el método de instancia revoke_grant en el AWS SDK pararRuby.

# Revoke a grant on a CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

# &fake-grant-id;grantId = 'grant1'

response = kmsClient.revoke_grant({ key_id: keyId, grant_id: grantId})

PHP

Para obtener más información, consulte el método RevokeGrant en el AWS SDK para PHP.

// Revoke a grant on a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

// Sustituya el siguiente ID de concesión ficticio por uno válido$grantId = "grant1";

$result = $KmsClient->revokeGrant([ 'KeyId' => $keyId, 'GrantId' => $grantId,]);

Node.js

Para obtener más información, consulte la propiedad revokeGrant en el AWS SDK for JavaScript inNode.js.

// Revoke a grant on a CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

// Sustituya el siguiente ID de concesión ficticio por uno válidoconst GrantId = 'grant1';kmsClient.revokeGrant({ GrantId, KeyId }, (err, data) => { ...});

PowerShell

Para revocar una concesión, utilice el cmdlet Revoke-KMSGrant.

# Revoke a grant on a CMK

375

Page 384: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresTrabajar con alias

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

# Sustituya el siguiente ID de concesión ficticio por uno válido$grantId = 'grant1'

Revoke-KMSGrant -KeyId $keyId -GrantId $grantId

Trabajar con aliasLos ejemplos de este tema utilizan la API de AWS KMS para crear, ver, actualizar y eliminar alias.

Un alias es un nombre de visualización opcional para una clave maestra de cliente (CMK) (p. 3). Puedeutilizar un nombre de alias (p. 13) o ARN de alias (p. 13) como valor del parámetro KeyId en operacionescriptográficas (p. 11), como Encrypt y Decrypt.

Cada CMK puede tener varios alias, pero cada alias apunta a una sola CMK. El nombre del alias debe serúnico en la cuenta y región de AWS, y cada alias debe estar asociado a una CMK en su cuenta y región.Para simplificar el código que se ejecuta en varias regiones, puede utilizar el mismo nombre de alias, peroapuntar a una CMK diferente en cada región.

Puede utilizar las operaciones de API de AWS KMS para crear, enumerar y eliminar alias. Tambiénpuede actualizar un alias, que asocia un alias existente con una CMK distinta. No hay ninguna operaciónpara editar ni cambiar un nombre de alias. Si crea un alias para una CMK que ya tiene un alias, laoperación crea otro alias para la misma CMK. Para cambiar un nombre de alias, elimine el alias actual y, acontinuación, cree uno para la CMK.

Como un alias no es una propiedad de una CMK, se puede asociar con una CMK existente, y desasociarsede ella, sin cambiar las propiedades de la CMK. La eliminación de un alias no elimina la CMK subyacente.

Para especificar un alias, utilice el nombre o ARN alias, tal y como se muestra en el siguiente ejemplo. Encualquier caso, anteponga "alias/" al nombre de alias.

// Alias ARNarn:aws:kms:us-west-2:111122223333:alias/ExampleAlias

// Alias namealias/ExampleAlias

Temas• Crear un alias (p. 376)• Mostrar alias (p. 378)• Actualizar un alias (p. 382)• Eliminar un alias (p. 384)

Crear un aliasPara crear un alias, utilice la operación CreateAlias. El alias debe ser único en la cuenta y región. Sicrea un alias para una CMK que ya tiene un alias, CreateAlias crea otro alias para la misma CMK. Nosustituye el alias existente.

Cada nombre de alias debe comenzar por alias/ seguido de un nombre, como, por ejemplo alias/ExampleAlias. Solo puede contener caracteres alfanuméricos, barras (/), guiones bajos (_) y guiones(-). El nombre del alias no puede empezar por . El prefijo alias/aws/ está reservado para las CMKadministradas por AWS (p. 3).

376

Page 385: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCrear un alias

La operación CreateAlias no devuelve ningún resultado. Para comprobar que se creó el alias, utilice laoperación ListAliases.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método createAlias en la AWS SDK for Java APIReference.

// Create an alias for a CMK//String aliasName = "alias/projectKey1";// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString targetKeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

CreateAliasRequest req = new CreateAliasRequest().withAliasName(aliasName).withTargetKeyId(targetKeyId);kmsClient.createAlias(req);

C#

Para obtener más información, consulte el método CreateAlias en el AWS SDK para .NET.

// Create an alias for a CMK//String aliasName = "alias/projectKey1";// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString targetKeyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

CreateAliasRequest createAliasRequest = new CreateAliasRequest(){ AliasName = aliasName, TargetKeyId = targetKeyId};kmsClient.CreateAlias(createAliasRequest);

Python

Para obtener más información, consulte el método create_alias en el AWS SDK para Python (Boto 3).

# Create an alias for a CMK

alias_name = 'alias/projectKey1'# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidotarget_key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.create_alias( AliasName=alias_name, TargetKeyId=key_id)

Ruby

Para obtener más información, consulte el método de instancia create_alias en el AWS SDK pararRuby.

# Create an alias for a CMK

377

Page 386: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMostrar alias

aliasName = 'alias/projectKey1'# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidotargetKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.create_alias({ alias_name: aliasName, target_key_id: targetKeyId})

PHP

Para obtener más información, consulte el método CreateAlias en el AWS SDK para PHP.

// Create an alias for a CMK//$aliasName = "alias/projectKey1";// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->createAlias([ 'AliasName' => $aliasName, 'TargetKeyId' => $keyId, ]);

Node.js

Para obtener más información, consulte la propiedad createAlias en el AWS SDK for JavaScript inNode.js.

// Create an alias for a CMK//const AliasName = 'alias/projectKey1';

// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst TargetKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';kmsClient.createAlias({ AliasName, TargetKeyId }, (err, data) => { ...});

PowerShell

Para crear un alias, utilice el cmdlet New-KMSalias. El nombre del alias distingue entre mayúsculas yminúsculas.

# Create an alias for a CMK

$aliasName = 'alias/projectKey1'# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$targetKeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

New-KMSAlias -TargetKeyId $targetKeyId -AliasName $aliasName

Mostrar aliasPara obtener una lista de los alias de la cuenta y la región, utilice la operación ListAliases.

378

Page 387: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMostrar alias

De forma predeterminada, el comando ListAliases devuelve todos los alias de la cuenta y la región. Estoincluye los alias que ha creado y asociado a las CMK administradas por el cliente (p. 3) y los alias queAWS ha creado y asociado con las CMK administradas por AWS (p. 3). La respuesta también podría incluirlos alias que no tienen el campo TargetKeyId. Estos son los alias predefinidos que AWS ha creado, peroaún no se han asociado con una CMK.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información sobre la implementación de Java, consulte el método listAliases en laAWS SDK for Java API Reference.

// List the aliases in this AWS account//Integer limit = 10;

ListAliasesRequest req = new ListAliasesRequest().withLimit(limit);ListAliasesResult result = kmsClient.listAliases(req);

C#

Para obtener más información, consulte el método ListAliases en el AWS SDK para .NET.

// List the aliases in this AWS account//int limit = 10;

ListAliasesRequest listAliasesRequest = new ListAliasesRequest(){ Limit = limit};ListAliasesResponse listAliasesResponse = kmsClient.ListAliases(listAliasesRequest);

Python

Para obtener más información, consulte el método list_aliases en el AWS SDK para Python (Boto 3).

# List the aliases in this AWS account

response = kms_client.list_aliases( Limit=10)

Ruby

Para obtener más información, consulte el método de instancia list_aliases en el AWS SDK pararRuby.

# List the aliases in this AWS account

response = kmsClient.list_aliases({ limit: 10})

PHP

Para obtener más información, consulte el método List Aliases en el AWS SDK para PHP.

379

Page 388: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMostrar alias

// List the aliases in this AWS account//$limit = 10;

$result = $KmsClient->listAliases([ 'Limit' => $limit,]);

Node.js

Para obtener más información, consulte la propiedad listAliases en el AWS SDK for JavaScript inNode.js.

// List the aliases in this AWS account//const Limit = 10;kmsClient.listAliases({ Limit }, (err, data) => { ...});

PowerShell

Para mostrar los alias de la cuenta y región, utilice el cmdlet Get-KMSAliasList.

Para limitar el número de objetos de salida, este ejemplo usa el cmdlet Select-Object en lugar delparámetro Limit, que está quedando obsoleto en los cmdlet de la lista. Para obtener asistencia conla paginación de salida en Herramientas de AWS para PowerShell, vea Paginación de salida conHerramientas de AWS para PowerShell.

# List the aliases in this AWS account$limit = 10

$result = Get-KMSAliasList | Select-Object -First $limit

Para mostrar solo los alias que están asociados con una determinada CMK, utilice el parámetro KeyId.Su valor puede ser el ID de la clave (p. 13) o el ARN de la clave (p. 13) de cualquier CMK en la región. Nopuede especificar un nombre o ARN de alias.

Java

Para obtener más información sobre la implementación de Java, consulte el método listAliases en laAWS SDK for Java API Reference.

// List the aliases for one CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ListAliasesRequest req = new ListAliasesRequest().withKeyId(keyId);ListAliasesResult result = kmsClient.listAliases(req);

C#

Para obtener más información, consulte el método ListAliases en el AWS SDK para .NET.

// List the aliases for one CMK//

380

Page 389: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresMostrar alias

// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString keyId = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab";

ListAliasesRequest listAliasesRequest = new ListAliasesRequest(){ KeyId = keyId};ListAliasesResponse listAliasesResponse = kmsClient.ListAliases(listAliasesRequest);

Python

Para obtener más información, consulte el método list_aliases en el AWS SDK para Python (Boto 3).

# List the aliases for one CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.list_aliases( KeyId=key_id)

Ruby

Para obtener más información, consulte el método de instancia list_aliases en el AWS SDK pararRuby.

# List the aliases for one CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kmsClient.list_aliases({ key_id: keyId})

PHP

Para obtener más información, consulte el método List Aliases en el AWS SDK para PHP.

// List the aliases for one CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

$result = $KmsClient->listAliases([ 'KeyId' => $keyId,]);

Node.js

Para obtener más información, consulte la propiedad listAliases en el AWS SDK for JavaScript inNode.js.

// List the aliases for one CMK//// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst KeyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

381

Page 390: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizar un alias

kmsClient.listAliases({ KeyId }, (err, data) => { ...});

PowerShell

Para mostrar los alias de una CMK, utilice el parámetro KeyId del cmdletGet-KMSaliasList.

# List the aliases for one CMK

# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

$response = Get-KmsAliasList -KeyId $keyId

Actualizar un aliasPara asociar un alias existente a otra CMK, utilice la operación UpdateAlias.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información sobre la implementación de Java, consulte el método updateAliases enla AWS SDK for Java API Reference.

// Updating an alias//String aliasName = "alias/projectKey1";// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString targetKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321";

UpdateAliasRequest req = new UpdateAliasRequest() .withAliasName(aliasName) .withTargetKeyId(targetKeyId); kmsClient.updateAlias(req);

C#

Para obtener más información, consulte el método UpdateAlias en el AWS SDK para .NET.

// Updating an alias//String aliasName = "alias/projectKey1";// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoString targetKeyId = "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321";

UpdateAliasRequest updateAliasRequest = new UpdateAliasRequest(){ AliasName = aliasName, TargetKeyId = targetKeyId};

kmsClient.UpdateAlias(updateAliasRequest);

382

Page 391: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizar un alias

Python

Para obtener más información, consulte el método update-alias en el AWS SDK para Python (Boto 3).

# Updating an alias

alias_name = 'alias/projectKey1'# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokey_id = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

response = kms_client.update_alias( AliasName=alias_name, TargetKeyID=key_id)

Ruby

Para obtener más información, consulte el método de instancia update_alias en el AWS SDK pararRuby.

# Updating an alias

aliasName = 'alias/projectKey1'# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidokeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

response = kmsClient.update_alias({ alias_name: aliasName, target_key_id: keyId})

PHP

Para obtener más información, consulte el método UpdateAlias en el AWS SDK para PHP.

// Updating an alias//$aliasName = "alias/projectKey1";

// Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321';

$result = $KmsClient->updateAlias([ 'AliasName' => $aliasName, 'TargetKeyId' => $keyId, ]);

Node.js

Para obtener más información, consulte la propiedad updateAlias en el AWS SDK for JavaScript inNode.js.

// Updating an alias//const AliasName = 'alias/projectKey1'; // Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válidoconst TargetKeyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321';kmsClient.updateAlias({ AliasName, TargetKeyId }, (err, data) => { ...

383

Page 392: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEliminar un alias

});

PowerShell

Para cambiar la CMK a la que apunta un alias, utilice el cmdlet Update-KMSalias. El nombre del aliasdistingue entre mayúsculas y minúsculas.

El cmdlet Update-KMSAlias no devuelve ningún resultado. Para comprobar que el comandofuncionó, utilice el cmdlet Get-KMSaliasList.

# Updating an alias

$aliasName = 'alias/projectKey1'# Reemplace el siguiente ARN de CMK ficticio por un ID o ARN de CMK válido$keyId = 'arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321'

Update-KMSAlias -AliasName $aliasName -TargetKeyID $keyId

Eliminar un aliasPara eliminar un alias, utilice la operación DeleteAlias. Eliminar un alias no afecta a la CMK asociada.

En los idiomas que requieren un objeto cliente, estos ejemplos usan el objeto cliente de AWS KMS que hacreado en Crear un cliente (p. 339).

Java

Para obtener más información, consulte el método deleteAlias en la AWS SDK for Java APIReference.

// Delete an alias for a CMK//String aliasName = "alias/projectKey1";

DeleteAliasRequest req = new DeleteAliasRequest().withAliasName(aliasName);kmsClient.deleteAlias(req);

C#

Para obtener más información, consulte el método DeleteAlias en el AWS SDK para .NET.

// Delete an alias for a CMK//String aliasName = "alias/projectKey1";

DeleteAliasRequest deleteAliasRequest = new DeleteAliasRequest(){ AliasName = aliasName};kmsClient.DeleteAlias(deleteAliasRequest);

Python

Para obtener más información, consulte el método delete-alias en el AWS SDK para Python (Boto 3).

# Delete an alias for a CMK

alias_name = 'alias/projectKey1'

384

Page 393: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresEliminar un alias

response = kms_client.delete_alias( AliasName=alias_name)

Ruby

Para obtener más información, consulte el método de instancia delete_alias en el AWS SDK pararRuby.

# Delete an alias for a CMK

aliasName = 'alias/projectKey1'

response = kmsClient.delete_alias({ alias_name: aliasName})

PHP

Para obtener más información, consulte el método DeleteAlias en el AWS SDK para PHP.

// Delete an alias for a CMK//$aliasName = "alias/projectKey1";

$result = $KmsClient->deleteAlias([ 'AliasName' => $aliasName, ]);

Node.js

Para obtener más información, consulte la propiedad deleteAlias en el AWS SDK for JavaScript inNode.js.

// Delete an alias for a CMK//const AliasName = 'alias/projectKey1';kmsClient.deleteAlias({ AliasName }, (err, data) => { ...});

PowerShell

Para eliminar un alias, utilice el cmdlet Remove-KMSalias. El nombre del alias distingue entremayúsculas y minúsculas.

Dado que este cmdlet elimina permanentemente el alias, PowerShell le pide que confirme el comando.El valor de ConfirmImpact es High, por lo que no se puede utilizar ConfirmPreference parasuprimir esta solicitud. Si debe suprimir la solicitud de confirmación, agregue el parámetro comúnConfirm con el valor $false; por ejemplo: -Confirm:$false.

El cmdlet Remove-KMSAlias no devuelve ningún resultado. Para comprobar que el comandofuncionó, utilice el cmdlet Get-KMSaliasList.

# Delete an alias for a CMK

$aliasName = 'alias/projectKey1'Remove-KMSAlias -AliasName $aliasName

385

Page 394: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCuotas de recursos

CuotasPara hacer que AWS KMS tenga capacidad de respuesta y sea eficaz para todos los usuarios, AWS KMSaplica dos tipos de cuotas. Cada cuota se calcula de forma independiente para cada región de cada cuentade AWS.

Important

Si necesita superar esta cuota, solicite un aumento de cuota en Cuotas de servicio. Utilice laconsola de Cuotas de servicio o la operación RequestServiceQuotaIncrease. Para obtenerinformación, consulte Solicitar un aumento de cuota en la Guía del usuario de Cuotas de servicio.Si las Cuotas de servicio para AWS KMS no está disponible en la región de AWS, visite el Centrode AWS Support y cree un caso.

• Cuotas de recursos (p. 386): limitan el número de cada tipo de recurso de AWS KMS.• Cuotas de solicitud (p. 388): limitan el número de solicitudes para operaciones de API de AWS KMS en

un intervalo especificado.

Cuotas de recursosAWS KMS establece cuotas de recursos para garantizar que se pueda ofrecer un servicio rápido yresistente a todos nuestros clientes. Algunas cuotas de recursos se aplican únicamente a los recursos quecrea, pero no a los recursos que los servicios de AWS crean automáticamente. Los recursos que usa peroque no están en la cuenta de AWS, como las CMK propiedad de AWS (p. 5), no se contabilizan en estascuotas.

Si ha alcanzado un límite de recursos, las solicitudes para crear un recurso adicional de dicho tipo generanun mensaje de error LimitExceededException.

En la siguiente tabla se enumeran y describen las cuotas de recursos de AWS KMS en cada cuenta yregión de AWS. Si necesita superar esta cuota, solicite un aumento de cuota en Cuotas de servicio. Utilicela consola de Cuotas de servicio o la operación RequestServiceQuotaIncrease. Para obtener información,consulte Solicitar un aumento de cuota en la Guía del usuario de Cuotas de servicio. Si las Cuotas deservicio para AWS KMS no está disponible en la región de AWS, visite el Centro de AWS Support y creeun caso.

Recurso Límite predeterminado Se aplica a

Claves maestras de cliente(CMK) (p. 387)

10 000 CMK administradas por el cliente

Alias (p. 387) 10 000 Alias creados por el cliente

Concesiones por cadaCMK (p. 387)

10 000 CMK administradas por el cliente

Concesiones por entidadprincipal del beneficiario (porCMK) (p. 387)

500 CMK administradas por el cliente

CMK administradas por AWS

Tamaño del documento depolítica de claves (p. 388)

32 KB (32 768 bytes) CMK administradas por el cliente

CMK administradas por AWS

386

Page 395: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresClaves maestras de cliente (CMK): 10 000

Además de las cuotas de recursos, AWS KMS utiliza cuotas de solicitud para garantizar la capacidadde respuesta del servicio. Para obtener más información, consulte the section called “Cuotas desolicitud” (p. 388).

Claves maestras de cliente (CMK): 10 000Puede tener hasta 10 000 CMK administradas por el cliente (p. 4) en cada región de su cuenta deAWS. Esta cuota se aplica a todas las CMK simétricas y asimétricas administradas por el cliente, conindependencia de su estado de clave (p. 245). Cada CMK, ya sea simétrica o asimétrica, se considera unrecurso. Las CMK administradas por AWS (p. 4) y las CMK propiedad de AWS (p. 5) no cuentan en estacuota.

Si necesita superar esta cuota, solicite un aumento de cuota en Cuotas de servicio. Sin embargo, laadministración de un gran número de CMK desde la Consola de administración de AWS puede ser máslenta de lo aceptable. Si tiene una gran cantidad de CMK en una región de AWS, adminístrelas medianteprogramación con los SDK de AWS o las herramientas de línea de comandos de AWS.

Alias: 10 000Puede crear hasta 10 000 alias en cada región de su cuenta. Los alias que AWS crea en su cuenta, como,por ejemplo, aws/<nombre-servicio>, no cuentan para esta cuota.

Un alias es un nombre de visualización que puede mapear a una CMK. Cada alias se mapea a una solaCMK y varios alias pueden mapearse a la misma CMK.

Si aumenta la cuota de recursos de CMK, es posible que también necesite aumentar la cuota de recursosde alias. Para obtener ayuda con la solicitud de un aumento de cuota, consulte Solicitud de un aumento decuota en la Guía del usuario de Cuotas de servicio.

Concesiones por cada CMK: 10 000Cada CMK administrada por el cliente (p. 4) puede tener hasta 10 000 concesiones, incluidas lasconcesiones creadas por los servicios de AWS que están integrados con AWS KMS. Esta cuota no seaplica a las CMK administradas por AWS (p. 4) ni a las CMK propiedad de AWS (p. 5).

Un efecto de esta cuota es que no puede realizar más de 10 000 operaciones con concesionesautorizadas que utilicen la misma CMK al mismo tiempo. Después de alcanzar la cuota, puede crearnuevas concesiones para la CMK solo cuando se retire o se revoque una concesión activa.

Por ejemplo, cuando se asocia un volumen de Amazon Elastic Block Store (Amazon EBS) a una instanciade Amazon Elastic Compute Cloud (Amazon EC2), el volumen se descifra para que pueda leerlo. Paraobtener permiso para descifrar los datos, Amazon EBS crea una concesión para cada volumen. Sinembargo, no puede contar con más de 10 000 concesiones en cada CMK. Por lo tanto, si todos losvolúmenes de Amazon EBS utilizan la misma CMK, no puede asociar más de 10 000 volúmenes a la vez.

Las concesiones (p. 127) son una alternativa a la política de claves (p. 57). Al igual que una política declaves, una concesión se asocia a una CMK. Usted (o un servicio de AWS integrado con AWS KMS)puede utilizar una concesión para permitir que una entidad principal utilice o administre la CMK. Cadaconcesión incluye la entidad principal que recibe el permiso de usar la CMK, el ID de la CMK y una lista delas operaciones que el beneficiario puede realizar.

Concesiones por entidad principal (por CMK): 500Una CMK no puede tener más de 500 concesiones con la misma entidad principal de beneficiario. Laentidad principal del beneficiario es la identidad que obtiene los permisos en la concesión.

Esta cuota se calcula por separado para cada CMK de la cuenta. Se aplica a las CMK administradas por elcliente (p. 4) y las CMK administradas por AWS (p. 4), pero no a las CMK propiedad de AWS (p. 5).

387

Page 396: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresTamaño del documento de política de claves; 32 KB

Note

Preste especial atención cuando utilice el resultado de la operación ListGrants para calcular elnúmero de concesiones con la misma entidad principal de beneficiario.El campo GranteePrincipal de la respuesta ListGrants generalmente contiene el principalbeneficiario de la concesión. Sin embargo, cuando el principal beneficiario de la concesión esun servicio de AWS, el campo GranteePrincipal contiene el servicio principal, que puederepresentar varios beneficiarios principales distintos.

Esta cuota puede tener consecuencias prácticas para el uso de los recursos de AWS. Por ejemplo, puedeimpedir que asocie más de 500 volúmenes de Amazon EBS a una instancia Amazon EC2 al mismo tiempo.Cuando se asocia un volumen de Amazon EBS a una instancia Amazon EC2, EBS crea una concesiónque le permite descifrar el volumen para que pueda leerlo. Cada concesión es única, pero todas lasconcesiones tienen la misma entidad principal de beneficiario. Debido a esta cuota, si utiliza la misma CMKpara cada volumen, no puede asociar más de 500 volúmenes a la vez.

Tamaño del documento de política de claves; 32 KBLa longitud máxima de cada documento de política de claves es de 32 KB (32 768 bytes). Si utiliza undocumento de política mayor para crear o actualizar la política de claves para una CMK, se producirá unerror en la operación.

Si debe superar esta cuota, solicite un aumento de cuota en Cuotas de servicio. Para obtener másinformación, consulte este artículo acerca de cómo solicitar un aumento de cuota en la Guía del usuario deCuotas de servicio.

Un documento de política de claves (p. 57) es una colección de instrucciones de política en formato JSON.Las declaraciones en el documento de políticas de claves determinan quién tiene permiso para usarla CMK y cómo debe usar dicho permiso. También puede utilizar políticas y concesiones de IAM paracontrolar el acceso a la CMK, pero cada CMK debe tener un documento de política de claves.

Utilice un documento de política de claves siempre que cree o cambie una política de claves mediantela vista predeterminada (p. 73) o la vista de políticas (p. 73) en la Consola de administración de AWS omediante la operación PutKeyPolicy. Esta cuota se aplica al documento de política de claves, aunqueutilice la vista predeterminada (p. 73) en la consola de AWS KMS, donde no se editan directamente lasinstrucciones JSON.

Cuotas de solicitudAWS KMS establece cuotas en el número de operaciones de la API solicitadas en cada segundo. Paraobtener una tabla en la que se enumera la cuotas de solicitud por segundo para cada operación de la API,consulte Cuotas de solicitud para cada operación de API de AWS KMS (p. 391).

Al superar una cuotas de solicitud de la API, AWS KMS limita de forma controlada la solicitud, es decir,rechaza una solicitud válida en todo caso y devuelve un error ThrottlingException como el siguiente.Para responder, utilice una estrategia de interrupción y reintento.

You have exceeded the rate at which you may call KMS. Reduce the frequency of your calls. (Service: AWSKMS; Status Code: 400; Error Code: ThrottlingException; Request ID: <ID>

Las cuotas de solicitud difieren con la operación de la API, la región de AWS y otros factores, como el tipode CMK.

Note

Si necesita superar esta cuota, solicite un aumento de cuota en Cuotas de servicio. Utilice laconsola de Cuotas de servicio o la operación RequestServiceQuotaIncrease. Para obtenerinformación, consulte Solicitar un aumento de cuota en la Guía del usuario de Cuotas de servicio.

388

Page 397: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresAplicar cuotas de solicitud

Si las Cuotas de servicio para AWS KMS no está disponible en la región de AWS, visite el Centrode AWS Support y cree un caso.Si excede la cuotas de solicitud para la operación GenerateDataKey, considere la posibilidadde usar la característica de almacenamiento en caché de claves de datos de SDK de cifrado deAWS. La reutilización de claves de datos podría reducir la frecuencia de las solicitudes a AWSKMS.

Además de cuotas de solicitud, AWS KMS utiliza cuotas de recursos para garantizar la capacidad de todoslos usuarios. Para obtener más información, consulte Cuotas de recursos (p. 386).

Temas• Aplicar cuotas de solicitud (p. 389)• Cuotas compartidas para operaciones criptográficas (p. 389)• Solicitudes de API realizadas en su nombre (p. 390)• Solicitudes entre cuentas (p. 390)• Cuotas del almacén de claves personalizado (p. 390)• Cuotas de solicitud para cada operación de API de AWS KMS (p. 391)

Aplicar cuotas de solicitudAl revisar las cuotas de solicitud, tenga en cuenta la siguiente información.

• Las Cuotas de solicitud se aplican a las CMK administradas por el cliente (p. 4) y a las CMKadministradas por AWS (p. 4). El uso de CMK propiedad de AWS (p. 5) no contabiliza para las cuotas desolicitud de su cuenta de AWS, incluso aunque estas se utilicen para proteger los recursos de la cuenta.

• La limitación controlada se basa en todas las solicitudes de CMK de todos los tipos de la región. Estenúmero total incluye las solicitudes de todas las entidades principales de la cuenta de AWS, incluidas lassolicitudes de los servicios de AWS realizadas en su nombre.

• Cada cuotas de solicitud se calcula de forma independiente. Por ejemplo, las solicitudes de la operaciónCreateKey no tienen ningún efecto en la cuotas de solicitud para la operación CreateAlias. Si lassolicitudes CreateAlias se limitan de forma controlada, las solicitudes CreateKey aún puedencompletarse correctamente.

• Aunque las operaciones criptográficas comparten una cuota, la cuota compartida se calcula de maneraindependiente de las cuotas para otras operaciones. Por ejemplo, las llamadas a las operacionesEncrypt y Decrypt comparten una cuotas de solicitud pero esa cuota es independiente de la cuota paralas operaciones de administración, como EnableKey. Por ejemplo, en Región de Europa (Londres),puede realizar 10 000 operaciones criptográficas en CMK simétricas más 5 operaciones EnableKey porsegundo sin que se limiten de forma controlada.

Cuotas compartidas para operaciones criptográficasLas operaciones criptográficas (p. 11) de AWS KMS comparten cuotas de solicitud. Las excepcionesson GeneratedAtaKeyPair y GeneratedAtaKeyPairWithoutPlainText, que comparten una cuotaindependiente. Las cuotas de operaciones criptográficas se muestran en la primera fila de la tabla Cuotasde solicitud (p. 391). Las cuotas para distintos tipos de CMK se calculan de forma independiente. Cadacuota se aplica a todas las solicitudes para estas operaciones en la cuenta y región de AWS con el tipo declave determinado en cada intervalo de un segundo.

Por ejemplo, puede que utilice CMK simétricas (p. 144) en una región de AWS con una cuota compartidade 10 000 solicitudes por segundo. Cuando realiza 7000 solicitudes GenerateDataKey por segundoy 2000 solicitudes Decrypt por segundo, AWS KMS no limita de forma controlada las solicitudes. Sinembargo, cuando realice 9500 solicitudes GenerateDataKey y 1000 solicitudes Encrypt por segundo,AWS KMS limita de forma controlada las solicitudes porque superan la cuota compartida.

389

Page 398: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresSolicitudes de API realizadas en su nombre

Del mismo modo, si utiliza CMK asimétricas (p. 144), puede solicitar cualquier combinación de lasoperaciones criptográficas compatibles con la CMK, solo para que el número total de operacionescriptográficas no supere la cuotas de solicitud para dicho tipo de CMK. Por ejemplo, puede realizar300 solicitudes Encrypt y 200 solicitudes Decrypt en las CMK de cifrado basadas en RSA sin que se limitende forma controlada.

Las cuotas para distintos tipos de clave también se calculan de forma independiente. Por ejemplo,en Región Asia Pacífico (Singapur), si utiliza CMK simétricas y asimétricas, puede realizar hasta10 000 llamadas por segundo con CMK simétricas más un máximo de 500 llamadas adicionales porsegundo con CMK asimétricas basadas en RSA, más un máximo de 300 solicitudes adicionales porsegundo con CMK basadas en ECC.

Solicitudes de API realizadas en su nombrePuede realizar solicitudes de API directamente o mediante un servicio de AWS integrado que realice lassolicitudes de API a AWS KMS en su nombre. La cuota se aplica a ambos tipos de solicitudes.

Por ejemplo, puede almacenar los datos en Amazon S3 utilizando el cifrado en el servidor con AWS KMS(SSE-KMS). Cada vez que cargue o descargue un objeto de S3 que esté cifrado con SSE-KMS, AmazonS3 realiza una solicitud GenerateDataKey (para cargas) o Decrypt (para descargas) a AWS KMS ensu nombre. Estas solicitudes se contabilizan para la cuota, por lo que AWS KMS limita de forma controladalas solicitudes si supera un total combinado de 5500 (o 10 000 o 30 000 en función de su región de AWS)cargas o descargas por segundo de objetos de S3 cifrados con SSE-KMS.

Solicitudes entre cuentasCuando una aplicación de una cuenta de AWS usa una CMK que es propiedad de otra cuenta, esteproceso se denomina solicitud entre cuentas. En el caso de las solicitudes entre cuentas, AWS KMS limitade forma controlada la cuenta que realiza las solicitudes, no la cuenta que posee la CMK. Por ejemplo,si una aplicación de una cuenta A utiliza una CMK de la cuenta B, el uso de la CMK se aplica solo a lascuotas de la cuenta A.

Cuotas del almacén de claves personalizadoLos almacenes de claves personalizados de AWS KMS solo admiten CMK simétricas. Las operacionescriptográficas que utilizan las CMK en un almacén de claves personalizado (p. 189) comparten unacuotas de solicitud de 1800 operaciones por segundo para cada almacén de claves personalizado. Sinembargo, no todas las operaciones utilizan la cuota por igual. Las operaciones GenerateDataKey,GenerateDataKeyWithoutPlaintext y GenerateRandom utilizan aproximadamente el triple de cuotapor segundo que las operaciones Encrypt, Decrypt y ReEncrypt.

Por ejemplo, si solo solicita las operaciones Encrypt y Decrypt, puede realizar aproximadamente 1800operaciones por segundo. Si en cambio solicita operaciones GenerateDataKey repetidas, el rendimientopodría acercarse a 600 operaciones por segundo. En el caso de las aplicaciones que se componen de unnúmero de operaciones GenerateDataKey y Decrypt prácticamente igual, puede esperar cerca de 1200operaciones por segundo.

A diferencia de otras cuotas de AWS KMS, no puede aumentar la cuota del almacén de clavespersonalizadas mediante Cuotas de servicio o creando un caso en AWS Support.

Note

Si el clúster de AWS CloudHSM que está asociado al almacén de claves personalizado procesanumerosos comandos, incluidos los no relacionados con el almacén de claves personalizado,es posible que obtenga una excepción ThrottlingException de AWS KMS a un velocidadinferior a la esperada. Si esto ocurre, reduzca la velocidad de las solicitudes a AWS KMS con elfin de reducir la carga no relacionada o utilice un clúster de AWS CloudHSM dedicado para sualmacén de claves personalizado.

390

Page 399: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCuotas de solicitud para cada

operación de API de AWS KMS

Cuotas de solicitud para cada operación de API deAWS KMSOperación de la API Cuotas de solicitud (por segundo)

Decrypt

Encrypt

GenerateDataKey (simétrica)

GenerateDataKeyWithoutPlaintext(simétrica)

GenerateRandom

ReEncrypt

Sign (asimétrica)

Verify (asimétrica)

Estas cuotas compartidas varían según la regiónde AWS y el tipo de CMK utilizado en la solicitud.Cada cuota se calcula por separado.

Cuota de CMK simétrica:

• 5500 (compartidas)• 10 000 (compartidas) en las siguientes regiones:

• EE.UU. Este (Ohio), us-east-2• Asia Pacífico (Singapur), ap-southeast-1• Asia Pacífico (Sídney), ap-southeast-2• Asia Pacífico (Tokio), ap-northeast-1• Europa (Fráncfort), eu-central-1• Europa (Londres), eu-west-2

• 30 000 (compartidas) en las siguientes regiones:• US East (N. Virginia), us-east-1• EE.UU. Oeste (Oregón), us-west-2• Europa (Irlanda), eu-west-1

Cuota de CMK asimétrica:

• 500 (compartidas) para CMK de RSA• 300 (compartidas) para CMK de curva elíptica

(ECC)

Cuota de almacenes de claves personalizados(CMK simétricas):

• 1800 (compartidas) para cada almacén declaves personalizado. Para obtener másinformación, consulte Cuotas del almacén declaves personalizado (p. 390).

CancelKeyDeletion 5

ConnectCustomKeyStore 5

CreateAlias 5

CreateCustomKeyStore 5

CreateGrant 50

CreateKey 5

DeleteAlias 5

DeleteCustomKeyStore 5

391

Page 400: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCuotas de solicitud para cada

operación de API de AWS KMS

Operación de la API Cuotas de solicitud (por segundo)

DeleteImportedKeyMaterial 5

DescribeCustomKeyStores 5

DescribeKey 100

DisableKey 5

DisableKeyRotation 5

DisconnectCustomKeyStore 5

EnableKey 5

EnableKeyRotation 5

GenerateDataKeyPair

GenerateDataKeyPairWithoutPlaintext

Estas cuotas compartidas varían según el tipode claves de datos que se soliciten. Cada uno secalcula por separado.

1: RSA_2048

0,5: RSA_3072 (1 en un intervalo de 2 segundos)

0,1: RSA_4096 (1 en un intervalo de 10 segundos)

25: ECC_NIST_P256

10: ECC_NIST_P384

5: ECC_NIST_P521

25: ECC_SECG_P256K1

GetKeyPolicy 30

GetKeyRotationStatus 30

GetParametersForImport 0,25 (1 en un intervalo de 4 segundos)

GetPublicKey 5

ImportKeyMaterial 5

ListAliases 100

ListGrants 100

ListKeyPolicies 100

ListKeys 100

ListResourceTags 100

ListRetirableGrants 5

PutKeyPolicy 5

RetireGrant 15

RevokeGrant 15

392

Page 401: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresCuotas de solicitud para cada

operación de API de AWS KMS

Operación de la API Cuotas de solicitud (por segundo)

ScheduleKeyDeletion 5

TagResource 5

UntagResource 5

UpdateAlias 5

UpdateCustomKeyStore 5

UpdateKeyDescription 5

393

Page 402: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizaciones recientes

Historial de revisiónEn este tema se describen actualizaciones importantes en la AWS Key Management Service DeveloperGuide.

Temas• Actualizaciones recientes (p. 394)• Actualizaciones anteriores (p. 395)

Actualizaciones recientesEn la siguiente tabla se describen cambios importantes en esta documentación desde enero de2018. Además de los cambios importantes que se indican a continuación, también actualizamos ladocumentación con frecuencia para mejorar las descripciones y los ejemplos y para dar cuenta de loscomentarios que nos envía. Si desea recibir notificaciones sobre cambios importante, utilice el enlace de laesquina superior derecha para suscribirse a la fuente RSS.

Versión actual de la API: 01-11-2014

update-history-change update-history-description update-history-date

Nueva característica Se ha añadido compatibilidadcon las claves maestras decliente asimétricas y las clavesde datos asimétricas.

November 25, 2019

Función actualizada Puede consultar la política declaves de las CMK administradaspor AWS en la consola deAWS KMS. Anteriormente, estafunción se limitaba a las CMKadministradas por el cliente.

November 15, 2019

Nueva característica Explica cómo utilizar algoritmosde intercambio híbridopostcuántico de claves en TLSpara sus llamadas a AWS KMS.

November 4, 2019

Cambio de cuota Se han aumentado las cuotas derecursos para algunas API queadministran las CMK.

September 18, 2019

Cambio de cuota Se han cambiado las cuotas derecursos en las claves maestrasde cliente (CMK), los alias y lasconcesiones de cada CMK.

March 27, 2019

Cambio de cuota Se ha cambiado la cuotasde solicitud compartidas porsegundo para operacionescriptográficas que utilizanclaves maestras de cliente(CMK) en un almacén de clavespersonalizadas.

March 7, 2019

394

Page 403: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizaciones anteriores

Nueva característica Explica la manera de crear yadministrar almacenes de clavespersonalizados de AWS KMS.Cada almacén de claves estárespaldado por un clúster deAWS CloudHSM que ustedcontrola y del que es propietario.

November 26, 2018

Nueva consola Explica cómo usar la nuevaconsola de AWS KMS que esindependiente de la consola deIAM. La consola original y lasinstrucciones de uso estarándisponibles durante un breveperíodo de tiempo para darletiempo para familiarizarse con lanueva consola.

November 7, 2018

Cambio de cuota Se ha cambiado la cuotas desolicitud compartida para el usode claves maestras del cliente.

August 21, 2018

Nuevo contenido Explica cómo AWS SecretsManager utiliza claves maestrasde cliente de AWS KMS paracifrar el valor del secreto en unsecreto.

July 13, 2018

Nuevo contenido Explica cómo DynamoDB utilizalas claves maestras del cliente deAWS KMS para prestar soporte asu opción de cifrado del lado delservidor.

May 23, 2018

Nueva característica Explica cómo utilizar un puntode enlace privado en una VPCpara conectar directamente conAWS KMS, en lugar de conectara través de Internet.

January 22, 2018

Actualizaciones anterioresEn la siguiente tabla se describen cambios importantes en la AWS Key Management Service DeveloperGuide antes de 2018.

Cambio Descripción Fecha

Nuevo contenido Se ha añadido documentaciónsobre Etiquetar claves (p. 47).

15 de febrero de 2017

Nuevo contenido Se ha añadido documentaciónsobre Monitorear las clavesmaestras de cliente (p. 311)y Monitoreo con AmazonCloudWatch (p. 313).

31 de agosto de 2016

395

Page 404: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizaciones anteriores

Cambio Descripción Fecha

Nuevo contenido Se ha añadido documentaciónsobre Importar material declaves (p. 162).

11 de agosto de 2016

Nuevo contenido Se ha añadido la documentaciónsiguiente: Información generalsobre la administración delacceso (p. 54), Usar políticasde IAM (p. 76), Referencia depermisos de la API de AWSKMS (p. 86) y Usar condicionesde política (p. 97).

5 de julio de 2016

Actualización Se han actualizado partes de ladocumentación en el capítuloAutenticación y control deacceso (p. 53).

5 de julio de 2016

Actualización Se ha actualizado la páginaCuotas (p. 386) para reflejar lasnuevas cuotas predeterminadas.

31 de mayo de 2016

Actualización Se ha actualizado la páginaCuotas (p. 386) para reflejar lasnuevas cuotas predeterminadasy se ha actualizado ladocumentación de Tokens deconcesión (p. 20) para mejorar laclaridad y la precisión.

11 de abril de 2016

Nuevo contenido Se ha añadido documentaciónsobre Permitir que variosusuarios de IAM accedan a unaCMK (p. 74) y Usar la condiciónde dirección IP (p. 98).

17 de febrero de 2016

Actualización Se han actualizado las páginasUsar políticas de claves en AWSKMS (p. 57) y Cambiar unapolítica de claves (p. 72) paramejorar la claridad y la precisión.

17 de febrero de 2016

Actualización Se han actualizado las páginasde temas Introducción (p. 22)para mejorar la claridad.

5 de enero de 2016

Nuevo contenido Se ha añadido documentaciónsobre Cómo AWS CloudTrail usaAWS KMS (p. 250).

18 de noviembre de 2015

Nuevo contenido Se han agregado instruccionespara Cambiar una política declaves (p. 72).

18 de noviembre de 2015

396

Page 405: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizaciones anteriores

Cambio Descripción Fecha

Actualización Se ha actualizado ladocumentación sobre CómoAmazon Relational DatabaseService (Amazon RDS) usa AWSKMS (p. 277).

18 de noviembre de 2015

Nuevo contenido Se ha añadido documentaciónsobre Cómo AmazonWorkSpaces usa AWSKMS (p. 307).

6 de noviembre de 2015

Actualización Se ha actualizado la páginaUsar políticas de claves en AWSKMS (p. 57) para mejorar laclaridad.

22 de octubre de 2015

Nuevo contenido Se ha añadido documentaciónsobre Eliminar las clavesmaestras de cliente (p. 176),incluida la documentacióncomplementaria sobre Crearuna alarma de AmazonCloudWatch (p. 182) yDeterminar el uso anterior de unaclave maestra de cliente (p. 186).

15 de octubre de 2015

Nuevo contenido Se ha añadido documentaciónsobre Determinar el acceso auna clave maestra de cliente deAWS KMS (p. 131).

15 de octubre de 2015

Nuevo contenido Se ha añadido documentaciónsobre Estado de una clave:efecto en su CMK (p. 245).

15 de octubre de 2015

Nuevo contenido Se ha añadido documentaciónsobre Cómo Amazon SimpleEmail Service (Amazon SES) usaAWS KMS (p. 286).

1 de octubre de 2015

Actualización Se ha actualizado la páginaCuotas (p. 386) para explicar lasnuevas cuotas de solicitud.

31 de agosto de 2015

Nuevo contenido Se ha agregado informaciónacerca de los cargos por utilizarAWS KMS. Consulte AWS KMSPrecios (p. 2).

14 de agosto de 2015

Nuevo contenido Se han añadido las cuotasde solicitud a AWS KMSCuotas (p. 386).

11 de junio de 2015

397

Page 406: AWS Key Management ServiceAWS Key Management Service Guía para desarrolladores

AWS Key Management Service Guía para desarrolladoresActualizaciones anteriores

Cambio Descripción Fecha

Nuevo contenido Se ha añadido un nuevoejemplo de código de Java quedemuestra el uso de la operaciónUpdateAlias. ConsulteActualizar un alias (p. 382).

1 de junio de 2015

Actualización Se ha movido la tabla deregiones de AWS KeyManagement Service a la AWSGeneral Reference.

29 de mayo de 2015

Nuevo contenido Se ha añadido documentaciónsobre Cómo Amazon EMR usaAWS KMS (p. 272).

28 de enero de 2015

Nuevo contenido Se ha añadido documentaciónsobre Cómo Amazon WorkMailusa AWS KMS (p. 300).

28 de enero de 2015

Nuevo contenido Se ha añadido documentaciónsobre Cómo Amazon RelationalDatabase Service (Amazon RDS)usa AWS KMS (p. 277).

6 de enero de 2015

Nuevo contenido Se ha añadido documentaciónsobre Cómo Amazon ElasticTranscoder usa AWSKMS (p. 268).

24 de noviembre de 2014

Nueva guía Se ha introducido la AWS KeyManagement Service DeveloperGuide.

12 de noviembre de 2014

398