En este tema, se muestra cómo importar una clave criptográfica a Cloud HSM o Cloud Key Management Service.
Para obtener más detalles sobre cómo importar claves, incluidas las limitaciones y restricciones, consulta Importación de claves.
Puedes completar los pasos en este tema en 5 a 10 minutos, sin incluir los pasos de Antes de comenzar. Unir la clave de forma manual agrega complejidad a la tarea.
Antes de comenzar
Se recomienda que crees un proyecto nuevo para probar esta función, a fin de facilitar la limpieza después de realizar las pruebas y asegurarte de que tengas permisos de IAM adecuados para importar una clave.
Antes de importar una clave, debes preparar el proyecto, el sistema local y la clave en sí.
Prepara el proyecto
- Accede a tu Cuenta de Google.
Si todavía no tienes una cuenta, regístrate para obtener una nueva.
-
En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
-
Comprueba que la facturación esté habilitada en tu proyecto.
- Habilita la API necesaria.
- Instala e inicializa el SDK de Cloud.
-
El usuario que realiza la importación necesita los siguientes permisos de IAM para crear claves, llaveros de claves y trabajos de importación. Si el usuario no es el propietario del proyecto, puedes asignar ambas funciones predefinidas:
roles/editor
roles/cloudkms.importer
Para obtener más información sobre las funciones de IAM y los permisos disponibles para Cloud KMS, consulta Permisos y funciones.
Prepara el sistema local
Prepara el sistema local. Para ello, elige una de las siguientes opciones. Se recomienda la unión automática de claves para la mayoría de los usuarios.
- Si deseas permitir que la herramienta de línea de comandos de
gcloud
una tus claves de forma automática antes de transmitirlas a Google Cloud, debes instalar la biblioteca de criptografía de Pyca en tu sistema local. El trabajo de importación que une y protege la clave de manera local antes de enviarla a Google Cloud usa la biblioteca de Pyca. - Si deseas unir tus claves de forma manual, debes configurar OpenSSL para la unión manual de claves.
Prepara la clave
Verifica que se admita el algoritmo y la longitud de la clave. Los algoritmos permitidos para una clave dependen de si la clave se usa para la encriptación simétrica, la encriptación asimétrica o la firma asimétrica, y si la clave está almacenada en software o un HSM. Especificas el algoritmo de la clave como parte de la solicitud de importación.
Por otro lado, también debes verificar cómo se codifica la clave y realizar los ajustes necesarios.
Lo siguiente no se puede cambiar en una versión de clave después de su creación o importación:
El nivel de protección de la clave indica si la clave persiste en el software, en un HSM o en un sistema de administración de claves externo. El material de claves no se puede mover de uno de estos entornos de almacenamiento a otro. Las versiones de una clave tienen el mismo nivel de protección.
El propósito de la clave indica si las versiones de la clave se usan para la encriptación simétrica, la asimétrica o la firma asimétrica. El propósito de una clave limita los algoritmos posibles que se pueden usar para crear versiones de esa clave. Todas las versiones de una clave tienen el mismo propósito.
Si no tienes una clave que desees importar, pero quieres validar el procedimiento de importación de claves, puedes crear una clave simétrica en el sistema local con el siguiente comando:
openssl rand 32 > ${HOME}/test.bin
Usa esta clave solo para pruebas. Una clave creada de esta manera podría no ser adecuada para su uso en producción.
Si necesitas unir la clave de forma manual, hazlo antes de continuar con los procedimientos en este tema.
Crea la clave de destino y el llavero de claves
Una clave de Cloud KMS es un objeto de contenedor que contiene cero o más versiones de clave. Cada versión de clave contiene una clave criptográfica.
Cuando importas una clave a Cloud KMS o Cloud HSM, la clave importada se convierte en una versión de clave nueva en una clave de Cloud KMS o Cloud HSM existente. En el resto de este tema, esta clave se denomina clave de destino. La clave de destino debe existir antes de que puedas importar su material de clave.
La importación de una versión de clave no tiene efecto en las versiones existentes de esa clave. Sin embargo, se recomienda crear una clave vacía cuando se prueba la importación de claves. Una clave vacía no tiene una versión, no está activa y no se puede usar.
Existe una clave en un llavero de claves; en este tema, este llavero de claves se denomina llavero de claves de destino. La ubicación del llavero de claves de destino determina la ubicación en la que el material de clave está disponible después de la importación. Las claves de Cloud HSM no se pueden crear ni importar en algunas ubicaciones. Después de crear una clave, no se puede mover a un llavero de claves o ubicación diferente.
Sigue estos pasos para crear una clave vacía en un llavero de claves nuevo con la herramienta de línea de comandos de gcloud
o Google Cloud Console.
IU web
Ve a la página Claves criptográficas en Cloud Console.
Haz clic en Crear llavero de claves.
En el campo Nombre del llavero de claves, ingresa el nombre de tu llavero de claves.
Selecciona una ubicación en el menú desplegable Ubicación.
Haga clic en Crear. Se abrirá la página de detalles del llavero de claves.
Haz clic en Crear clave.
Selecciona Clave importada. Esto evita que se cree una versión inicial de la clave.
Ingresa el nombre en el campo Nombre de la clave.
Establece el Nivel de protección como Software o HSM.
[Opcional] En el caso de las claves importadas, la rotación automática está inhabilitada de forma predeterminada. Si habilitas la rotación automática, las nuevas versiones de claves se generarán en Cloud KMS y la versión de clave importada ya no será la versión predeterminada predeterminada después de una rotación.
[De manera opcional, si deseas agregar etiquetas a tu clave][4], haz clic en Agregar etiqueta en el campo Etiquetas.
Haga clic en Crear.
Línea de comandos
Para usar Cloud KMS en la línea de comandos, primero Instala o actualiza a la versión más reciente del SDK de Cloud.
Crea el llavero de claves de destino. Si quieres importar a una clave de Cloud HSM, selecciona una ubicación que sea compatible con Cloud HSM.
gcloud kms keyrings create key-ring-name \ --location location
Puedes obtener más información sobre cómo crear llaveros de claves.
Crea la clave de destino.
- Establece el propósito de la clave:
- En el caso de una clave simétrica, configura el propósito como
encryption
. - Para una clave asimétrica, configura el propósito como
asymmetric-signing
oasymmetric-encryption
.
- En el caso de una clave simétrica, configura el propósito como
- Evita que se cree una versión inicial con la marca
--skip-initial-version-creation
. - No establezcas el nivel de protección.
- No especifiques un algoritmo para la clave de destino. Especifica el algoritmo de la clave importada como parte de la solicitud de importación.
- [Opcional] No especifiques una política de rotación. Si habilitas la rotación automática, las nuevas versiones de claves se generarán en Cloud KMS y la versión de clave importada ya no será la versión de clave predeterminada después de una rotación.
gcloud kms keys create key-name \ --location location \ --keyring key-ring-name \ --purpose purpose \ --skip-initial-version-creation
Puedes obtener más información sobre cómo crear claves de Cloud KMS o claves de Cloud HSM.
- Establece el propósito de la clave:
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
El llavero de claves y la clave se crearon, pero la clave no contiene material, no tiene versión y no está activa. Luego, crea un trabajo de importación.
Crea el trabajo de importación
Un trabajo de importación define las características de las claves que importa, incluidas las propiedades que no pueden modificarse después de importar la clave.
El nivel de protección define si las claves que resultan de este trabajo de importación residen en software, en un HSM o en un sistema de administración de claves externo. El nivel de protección no se puede cambiar después de que la clave se importa.
El método de importación define el algoritmo usado para crear la clave de unión que protege las claves importadas durante el tránsito de tu sistema local al proyecto de Google Cloud de destino. Puedes elegir una clave RSA de 3072 bits o 4096 bits. A menos que tengas requisitos específicos, se recomienda la clave de unión de 3072 bits.
Puedes crear un trabajo de importación con la herramienta de gcloud
, Cloud Console o la API de Cloud Key Management Service.
IU web
Ve a la página Claves criptográficas en Cloud Console.
Haz clic en el nombre del llavero de claves de destino.
Configura el Nivel de protección como Software o HSM. Usa el mismo nivel de protección que estableciste para la clave de destino.
Haz clic en Crear trabajo de importación.
En el campo Nombre, ingresa el nombre de tu trabajo de importación.
En el menú desplegable Método de importación, configura el método de importación en RSA de 3072 bits o RSA de 4096 bits.
Haga clic en Crear.
Línea de comandos
Para usar Cloud KMS en la línea de comandos, primero Instala o actualiza a la versión más reciente del SDK de Cloud.
Usa un comando como el siguiente para crear un trabajo de importación.
gcloud kms import-jobs create import-job \ --location location \ --keyring key-ring-name \ --import-method import-method \ --protection-level protection-level
- Usa el mismo llavero de claves y la misma ubicación que usa la clave de destino.
- Establece el nivel de protección en
software
ohsm
. - Establece el método de importación en
rsa-oaep-3072-sha1-aes-256
orsa-oaep-4096-sha1-aes-256
.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
Cree una instancia de la
ImportJob
y especifica los valores para laImportJob.protectionLevel
yImportJob.importMethod
.Llama al método
ImportJob.create
con tu instancia deImportJob
como cuerpo de la solicitud.
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
, puedes usarlo para importar claves.
Un trabajo de importación vence después de tres días. Si el trabajo de importación está vencido, debes crear uno nuevo.
Puedes comprobar el estado de un trabajo de importación con la herramienta de línea de comandos de gcloud
, Google Cloud Console o la API de Cloud Key Management Service.
IU web
Ve a la página Claves criptográficas en Cloud Console.
Haz clic en el nombre del llavero de claves que contiene tu trabajo de importación.
Haz clic en la pestaña Trabajos de importación en la parte superior de la página.
El estado aparecerá en Estado junto al nombre de tu trabajo de importación.
Línea de comandos
Para usar Cloud KMS en la línea de comandos, primero Instala o actualiza a la versión más reciente del SDK de Cloud.
Cuando un trabajo de importación está activo, puedes usarlo para importar claves. Esto puede tardar unos minutos. Usa este comando para verificar que el trabajo de importación esté activo. Usa la ubicación y el llavero de claves donde creaste el trabajo de importación.
gcloud kms import-jobs describe import-job \ --location location \ --keyring key-ring-name \ --format="value(state)"
state: ACTIVE
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
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
.
Apenas el trabajo de importación esté activo, puedes realizar una solicitud para importar una clave.
Impide la modificación de trabajos de importación
El trabajo de importación determina muchas características de la clave importada, incluido el algoritmo de la clave y si una clave importada es una de HSM o de software. Puedes configurar los permisos de administración de identidades y accesos para evitar que los usuarios creen trabajos de importación, mientras permites que usen trabajos de importación para importar claves.
- Otorga solo a los administradores de claves el permiso
importjobs.create
. - Otorga el permiso
importjobs.useToImport
para un trabajo de importación específico al operador que usará ese trabajo a fin de importar claves. - Cuando crees el trabajo de importación, especifica el nivel de protección y el algoritmo para las claves importadas con él.
Hasta que el trabajo de importación caduque, los usuarios que tienen el permiso importjobs.useToImport
y no tienen el permiso importjobs.create
para un trabajo de importación determinado pueden importar claves, pero no pueden modificar las características del trabajo de importación.
Importa la clave
Después de verificar el estado del trabajo de importación, puedes realizar una solicitud de importación.
Usas diferentes marcas para realizar la solicitud de importación, según si deseas que la herramienta de línea de comandos de gcloud
se una a tu clave de forma automática o si ya la uniste de forma manual.
Sin importar si uniste tu clave de forma manual o automática, debes configurar un algoritmo compatible que coincida con la longitud de la clave real que se importará y especifique el propósito de la clave.
Las claves con propósito
ENCRYPT_DECRYPT
usan el algoritmogoogle-symmetric-encryption
y tienen una longitud de 32.Las claves con un propósito
ASYMMETRIC_ENCRYPT
oASYMMETRIC_SIGN
admiten una variedad de algoritmos y longitudes.El propósito de la clave no se puede cambiar después de crearla, pero las versiones de la clave posteriores se pueden crear en longitudes diferentes a la versión inicial.
Importa y une una clave de forma automática
Si deseas usar la unión automática, debes usar la herramienta de línea de comandos de gcloud
.
Usa un comando como el siguiente. Establece --target-key-file
en la ubicación de la clave separada para unir y importar. No establezcas -rsa-aes-wrapped-key-file
.
De forma opcional, puedes establecer la marca --public-key-file
en la ubicación en la que ya se descargó la clave pública. Cuando importas una gran cantidad de claves, esto evita que la clave pública se descargue durante cada importación. Por ejemplo, puedes escribir una secuencia de comandos que descargó la clave pública una vez y, luego, proporcionar su ubicación cuando importas cada clave.
gcloud kms keys versions import \ --import-job import-job \ --location location \ --keyring key-ring-name \ --key KEY_NAME \ --algorithm algorithm-name \ --target-key-file path-to-unwrapped-key-to-import
La clave de unión asociada al trabajo de importación une la clave, que se transmite a Google Cloud y se importa como una versión de clave nueva en la clave de destino.
Importa una clave unida de forma manual
Usa las instrucciones de esta sección para importar una clave que se unió de forma manual. Configura --rsa-aes-wrapped-key-file
en la ubicación de la clave que unes manualmente.
No establezcas --target-key-file
.
De forma opcional, puedes establecer la marca --public-key-file
en la ubicación en la que ya se descargó la clave pública. Cuando importas una gran cantidad de claves, esto evita que la clave pública se descargue durante cada importación. Por ejemplo, puedes escribir una secuencia de comandos que descargó la clave pública una vez y, luego, proporcionar su ubicación cuando importas cada clave.
IU web
Abre la página Claves criptográficas en Cloud Console.
Haz clic en el nombre del llavero de claves que contiene tu trabajo de importación. Se mostrará la clave de destino junto con cualquier otra clave en el llavero de claves.
Haz clic en el nombre de la clave de destino y, luego, en Importar versión de clave.
Selecciona tu trabajo de importación en el menú desplegable Seleccionar trabajo de importación.
En el selector Subir la clave unida (Upload the wrapped key), selecciona la clave que ya uniste.
Si importas una clave asimétrica, selecciona el algoritmo en el menú desplegable Algoritmo. Tu página Importar versión de clave debe ser similar a la que se muestra a continuación:
Haga clic en Import.
Línea de comandos
Para usar Cloud KMS en la línea de comandos, primero Instala o actualiza a la versión más reciente del SDK de Cloud.
Usa un comando como el siguiente.
gcloud kms keys versions import \ --import-job import-job \ --location location \ --keyring key-ring-name \ --key KEY_NAME \ --algorithm algorithm-name \ --rsa-aes-wrapped-key-file path-to-wrapped-key-to-import
Para obtener más información, consulta el resultado del comando gcloud kms keys versions import --help
.
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
Para el cuerpo de la solicitud del método
cryptoKeyVersions.import
, define el campoalgorithm
como el algoritmo de la clave que se está importando. No es necesario que este valor coincida con laversionTemplate
de laCryptoKey
que está importando esta versión. El campoalgorithm
es del tipoCryptoKeyVersionAlgorithm
.Además, para el cuerpo de la solicitud, establece el campo
wrappedKeyMaterial
en el material de clave que ya uniste.Llama al método
cryptoKeyVersions.import
. La respuestacryptoKeyVersions.import
es del tipoCryptoKeyVersion
. Cuando una clave se importa con éxito, su estado esENABLED
y puedes usarla en Cloud KMS.
Se inicia la solicitud de importación de clave. Puedes supervisar el estado de esta.
Verifica el estado de la clave importada
El estado inicial de una clave importada es PENDING_IMPORT
. Cuando el estado es ENABLED
, la clave se importó correctamente. Si falla la importación, el estado es IMPORT_FAILED
.
Puedes verificar el estado de una solicitud de importación con la herramienta de línea de comandos de gcloud
, Google Cloud Console o la API de Cloud Key Management Service.
IU web
Abre la página Claves criptográficas en Cloud Console.
Haz clic en el nombre del llavero de claves que contiene tu trabajo de importación.
Haz clic en la pestaña Trabajos de importación en la parte superior de la página.
El estado aparecerá en Estado junto al nombre de tu trabajo de importación.
Línea de comandos
Para usar Cloud KMS en la línea de comandos, primero Instala o actualiza a la versión más reciente del SDK de Cloud.
Usa el comando versions list
para verificar el estado. Usa la misma ubicación, el llavero de claves de destino y la clave de destino que creaste antes en este tema.
gcloud kms keys versions list \ --keyring keyring \ --location location \ --key key
Python
Para ejecutar este código, primero configura un entorno de desarrollo de Python y, luego, instala el SDK de Python para Cloud KMS.
API
En estos ejemplos, se usa curl como un cliente HTTP para demostrar el uso de la API. Para obtener más información sobre el control de acceso, consulta Accede a la API de Cloud KMS.
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
.
Después de importar la clave, su estado cambia a Activa. En el caso de las claves simétricas, debes configurar la versión de la clave importada como la versión principal antes de poder usar la clave.
Claves simétricas: Configura la versión principal
Este paso es obligatorio cuando se importan claves simétricas y no es relevante para claves asimétricas. Una clave asimétrica no tiene una versión primaria. Debes usar la herramienta de línea de comandos de gcloud
para establecer la versión principal.
gcloud kms keys set-primary-version key-name --version=version-number
¿Qué sigue?
- Verifica una clave importada y el material de claves; puedes usar la clave para firmar o proteger datos.
- Solucionar problemas de importación de una clave con errores