Importa una clave unida a Cloud KMS

En este tema, se muestra cómo unir manualmente la clave que se creó a partir de una fuente distinta de Cloud Key Management Service y, luego, importarla a Cloud KMS.

Si deseas que Cloud KMS una automáticamente tu clave en lugar de unirla de forma manual, consulta cómo importar una clave sin formato.

Introducción

Cloud KMS te permite importar claves criptográficas proporcionadas por el usuario. Como ejemplo, es posible que tengas claves existentes que usas de manera local, con una tienda de claves distinta de Cloud KMS o en un entorno de múltiples nubes. Puedes importar esas claves si deseas usar el material de clave existente con Cloud KMS.

Para importar tus claves, primero crea un trabajo de importación, que es un recurso temporal que se usa solamente para importar claves. Cuando creas un trabajo de importación, Cloud KMS genera una "clave de unión", que es un par de clave pública/privada. Usas la porción de clave pública de la clave de unión para encriptar (o unir) el material de clave preexistente a fin de protegerlo durante el proceso de importación. Una vez que tu material de clave se une, puedes importarlo a una versión de clave o a una clave nueva. La porción de clave privada de la clave de unión está disponible solamente en Cloud HSM. La restricción de la porción de clave privada a Cloud HSM evita que Google una tu material de clave fuera de Cloud HSM.

Puedes usar reiteradamente el mismo trabajo de importación para unir múltiples claves que deseas importar. Ten en cuenta que el trabajo de importación vence 3 días después de su creación. Después del vencimiento, Cloud KMS no podrá importar ni separar el material de clave unido con la clave pública del trabajo de importación.

Antes de comenzar

  1. En este tema, se supone que ya usas Cloud KMS. Si aún no lo has hecho, sigue los pasos en la Guía de inicio rápido de Cloud KMS.
  2. Crea un llavero de claves en una región que sea compatible con Cloud HSM según se describe en la sección sobre la creación de llaveros de claves.
  3. Crea una clave con nivel de protección HSM según se describe en la sección sobre la creación de claves.
  4. Configura los permisos de Cloud Identity and Access Management para la clave y el llavero de claves.

Flujo de importación de clave

Para importar una clave, sigue estos pasos:

  1. Crea un trabajo de importación.
  2. Recupera la clave de unión del trabajo de importación.
  3. Une la clave que deseas importar.
  4. Realiza una solicitud de importación.

Crea un trabajo de importación

Los trabajos de importación son recursos ImportJob. Cuando creas un trabajo de importación, necesitas especificar el nivel de protección y el ImportMethod que deseas usar para unir tu clave.

Para crear un trabajo de importación, sigue las siguientes instrucciones:

gcloud

gcloud beta kms import-jobs create \
--location LOCATION \
--keyring KEYRING_NAME \
IMPORTJOB_NAME \
--import-method IMPORT_METHOD \
--protection-level hsm

Reemplaza IMPORT_METHOD con rsa-oaep-3072-sha1-aes-256 o rsa-oaep-4096-sha1-aes-256.

API

  1. Crea una instancia del tipo ImportJob. Proporciona los valores iniciales para los campos ImportJob.protectionLevel e ImportJob.importMethod.

  2. Mediante el uso de tu instancia de ImportJob como el cuerpo de la solicitud, llama al método ImportJob.create.

Verifica el estado del trabajo de importación

El estado inicial de un trabajo de importación es PENDING_GENERATION. Cuando el estado es ACTIVE, el trabajo de importación ya está en uso.

Para verificar el estado, sigue los siguientes pasos:

gcloud

Usa el comando gcloud beta kms import-jobs describe para verificar el estado.

gcloud beta kms import-jobs \
describe IMPORTJOB_NAME \
--location LOCATION \
--keyring KEYRING_NAME

API

Llama al método ImportJob.get y verifica el campo state. Si state es PENDING_GENERATION, el trabajo de importación todavía se está creando. Vuelve a verificar periódicamente el estado hasta que sea ACTIVE.

Recupera la clave de unión

Para recuperar la clave de unión, sigue los siguientes pasos:

gcloud

Ejecuta el comando gcloud beta kms import-jobs describe.

gcloud beta kms import-jobs \
describe IMPORTJOB_NAME \
--location LOCATION \
--keyring KEYRING_NAME

Si el estado del trabajo de importación se vuelve ACTIVE, el campo pem dentro del campo public_key es la clave pública codificada en formato de correo con privacidad mejorada (PEM).

name: projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING_NAME]/importJobs/[IMPORTJOB_NAME]
createTime: '2019-03-21T17:10:10.864211749Z'
generateTime: '2019-03-21T17:10:10.864211749Z'
importMethod: [IMPORT_METHOD]
protectionLevel: [PROTECTION_LEVEL]
state: ACTIVE
public_key:
  pem: -----BEGIN PUBLIC KEY-----
[PUBLIC_KEY]
-----END PUBLIC KEY-----

API

  1. Llama al método ImportJob.get.

  2. Recupera la clave pública a través del campo publicKey de la respuesta ImportJob.get. Este valor es del tipo WrappingPublicKey. El campo pem del tipo WrappingPublicKey es la clave pública codificada en formato de correo con privacidad mejorada (PEM).

Para obtener más información sobre el formato con codificación PEM, consulta las secciones del RFC 7468 sobre las consideraciones generales y la codificación textual de información sobre la clave pública del sujeto.

Une el material de clave

Une el material de clave preexistente mediante la clave pública del trabajo de importación, que es el valor PEM que recuperaste en el paso anterior.

Si tu HSM fuente (o cualquier otro proveedor de claves si no se usa HSM) es compatible con la exportación de una clave a un PKCS #11 con el mecanismo de unión de claves RSA AES (CKM_RSA_AES_KEY_WRAP), usa la capacidad de exportación de HSM y la clave pública del trabajo de importación para crear un archivo PKCS #11.

Si tu HSM fuente (o cualquier otro proveedor de claves si no se usa HSM) no admite PKCS #11 con el mecanismo de unión de claves RSA AES, necesitas crear manualmente un archivo PKCS #11 mediante el uso de la clave pública del trabajo de importación. Para ver un ejemplo de cómo hacer esto con OpenSSL, consulta cómo unir una clave con OpenSSL en Linux.

El resultado de la unión de tu clave son los siguientes elementos:

  • La clave efímera AES unida, que se usa para unir la clave que quieres importar
  • La clave de destino unida, que es para la clave que quieres importar

Realiza una solicitud para importar tu clave

Cuando incluyes material de una clave unida en una solicitud para crear una clave nueva o una versión de clave nueva, Cloud KMS desune tu material de clave y lo almacena en la versión de clave resultante.

Para realizar una solicitud de importación que incluye tu clave unida:

gcloud

Importa la clave con el comando gcloud beta kms keys import.

gcloud beta kms keys import \
--location LOCATION \
--keyring KEYRING_NAME \
--key KEY_NAME \
--import-job IMPORTJOB_NAME \
--algorithm ALGORITHM_NAME \
--rsa-aes-wrapped-key-file=PATH_TO_WRAPPED_RSA_AES_KEY

A continuación, se muestra el resultado del comando gcloud beta kms keys import.

algorithm: [ALGORITHM]
createTime: '2019-03-21T17:10:10.864211749Z'
generateTime: '2019-03-21T17:10:10.864211749Z'
name: projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING_NAME]/cryptoKeys/[KEY_NAME]/cryptoKeyVersions/1
protectionLevel: [PROTECTION_LEVEL]
state: ENABLED

API

  1. Para el cuerpo de la solicitud del método cryptoKeyVersions.import, configura el campo algorithm en el algoritmo de la clave que se importa. No es necesario que este valor coincida con la versionTemplate de la CryptoKey que importa esta versión. El campo algorithm es del tipo CryptoKeyVersionAlgorithm.

  2. También, para el cuerpo de la solicitud, configura el campo wrappedKeyMaterial en el material de clave que uniste en el paso Une el material de clave.

  3. Llama al método cryptoKeyVersions.import. La respuesta cryptoKeyVersions.import es del tipo CryptoKeyVersion. Cuando una clave se importa con éxito, su estado es ENABLED y puedes usarla a través de Cloud KMS.

Verifica el estado de la clave importada

El estado inicial de una clave importada es PENDING_IMPORT. Cuando el estado es ENABLED, la clave importada está lista para usar.

Para verificar el estado:

gcloud

Usa el comando gcloud kms keys versions describe para verificar el estado.

gcloud kms keys versions \
describe VERSION \
--location LOCATION \
--keyring KEYRING_NAME \
--key KEY_NAME

API

Llama al método CryptoKeyVersions.get y verifica el campo state. Si state es PENDING_IMPORT, la clave todavía se está importando. Vuelve a verificar periódicamente el estado hasta que sea ENABLED.

Cuando una clave se importa con éxito, su estado es ENABLED y puedes usarla a través de Cloud KMS.

Verifica tu clave importada

Luego de importar tu clave, puedes verificar si la clave contiene tu material de clave y que está protegida por HSM.

Claves simétricas

Usa el atributo de clave de valor de suma de verificación de clave extendida (EKCV) para verificar el material de clave. Este valor se calcula en función del contenido de la sección 2 de RFC 5869. El valor deriva del uso de la función de derivación de la clave de extracción y expansión (HKDF) de HMAC basada en SHA-256 con 32 bytes cero como sal y de la expansión con la string fija del valor de verificación de clave como información. Este valor se puede recuperar si consultas la certificación de la clave. Para obtener más información sobre cómo verificar el atributo de clave EKCV, consulta Verifica las propiedades de la clave.

Claves asimétricas

Cuando realizas la solicitud de importación para una clave asimétrica, incluyes tu clave privada unida. La clave privada contiene suficiente información para que Cloud KMS derive la clave pública. Después de la importación de tu clave, puedes recuperar la clave pública y verificar que coincida con la clave pública que almacenaste de manera local. Para obtener más información sobre cómo verificar el atributo de clave pública, consulta Verifica la clave pública.

También puedes usar la verificación EKCV para claves asimétricas. En este caso, el valor es el resumen SHA-256 de la clave pública codificada en DER. Puedes recuperar este valor si consultas la certificación de la clave. Para obtener más información sobre cómo verificar el atributo de clave EKCV, consulta Verifica las propiedades de la clave.

Para obtener información adicional sobre la certificación de las claves que importas, consulta Verifica certificaciones.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...