En esta guía se explica cómo importar una clave criptográfica en Cloud HSM o Cloud Key Management Service como una nueva versión de la clave.
Para obtener más información sobre la importación de claves, incluidas las limitaciones y restricciones, consulta el artículo sobre la importación de claves.
Puedes completar los pasos de esta guía en un plazo de entre 5 y 10 minutos, sin incluir los pasos de la sección Antes de empezar. Encapsular la clave manualmente añade complejidad a la tarea.
Antes de empezar
Te recomendamos que crees un proyecto para probar esta función, de modo que te resulte más fácil eliminarlo después de las pruebas y que tengas los permisos de gestión de identidades y accesos (IAM) adecuados para importar una clave.
Antes de importar una clave, debes preparar el proyecto, el sistema local y la propia clave.
Preparar el proyecto
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
El usuario que realice la importación debe tener los siguientes permisos de gestión de identidades y accesos para crear conjuntos de claves, claves y trabajos de importación. Si el usuario no es el propietario del proyecto, puedes asignarle ambos roles predefinidos:
roles/editorroles/cloudkms.importer
Para obtener más información sobre los roles y permisos de gestión de identidades y accesos disponibles en Cloud KMS, consulta Permisos y roles.
- Si quieres permitir que Google Cloud CLI envuelva tus claves automáticamente antes de transmitirlas a Google Cloud, debes instalar la biblioteca de criptografía Pyca en tu sistema local. La biblioteca Pyca la usa la tarea de importación que encapsula y protege la clave de forma local antes de enviarla a Google Cloud.
- Si quieres encapsular tus claves manualmente, debes configurar OpenSSL para encapsular claves manualmente.
El nivel de protección indica si la clave se conserva en el software, en un HSM multiinquilino, en un HSM de un solo inquilino o en un sistema de gestión de claves externo. El material de claves no se puede mover de uno de estos entornos de almacenamiento a otro. Todas las versiones de una clave tienen el mismo nivel de protección.
El propósito indica si las versiones de la clave se usan para el cifrado simétrico, el cifrado asimétrico o la firma asimétrica. La finalidad de la clave limita los algoritmos que se pueden usar para crear versiones de esa clave. Todas las versiones de una clave tienen el mismo propósito.
En la consola de Google Cloud , ve a la página Gestión de claves.
Haz clic en Crear conjunto de claves.
En el campo Nombre del conjunto de claves, introduce el nombre del conjunto de claves.
En Tipo de ubicación, seleccione un tipo de ubicación y una ubicación.
Haz clic en Crear. Se abrirá la página Crear clave.
En el campo Nombre de la clave, introduce el nombre de la clave.
En Nivel de protección, selecciona Software, HSM o HSM de un solo arrendatario.
Si has seleccionado HSM de único propietario, selecciona la instancia de HSM de único propietario en la que quieras crear la clave.
En Material de clave, selecciona Clave importada y, a continuación, haz clic en Continuar. De esta forma, se evita que se cree una versión inicial de la clave.
Define el Propósito y el Algoritmo de la clave y, a continuación, haz clic en Continuar.
Opcional: Si quieres que esta clave contenga solo versiones de claves importadas, selecciona Restringir versiones de claves a importación únicamente. De esta forma, evitarás crear por error nuevas versiones de claves en Cloud KMS.
Opcional: En el caso de las claves importadas, la rotación automática está inhabilitada de forma predeterminada. Para habilitar la rotación automática, selecciona un valor en el campo Periodo de rotación de claves.
Si habilitas la rotación automática, se generarán nuevas versiones de la clave en Cloud KMS y la versión de la clave importada dejará de ser la versión predeterminada después de una rotación.
Haz clic en Crear.
Crea el conjunto de claves de destino. Elige una ubicación que sea compatible con el nivel de protección que quieras usar. Para obtener más información sobre las ubicaciones admitidas, consulta Ubicaciones de Cloud KMS.
gcloud kms keyrings create KEY_RING \ --location LOCATION
Crea la clave de destino con el comando
kms keys createy la marca--skip-initial-version-creation. De esta forma, se crea una clave sin versión inicial, por lo que el material de clave importado tendrá la versión1. Usa la marca--import-onlypara evitar que Cloud KMS genere material de claves para las nuevas versiones de las claves. Si se define esta marca, se deben importar las nuevas versiones de la clave. Las claves creadas como--import-onlydeben rotarse manualmente.gcloud kms keys create KEY_NAME \ --location LOCATION \ --keyring KEY_RING \ --purpose PURPOSE \ --protection-level PROTECTION_LEVEL \ --skip-initial-version-creation \ --import-only
Haz los cambios siguientes:
KEY_NAME: el nombre que quieras usar para la clave.LOCATION: la ubicación del conjunto de claves.KEY_RING: el conjunto de claves en el que quieres crear la clave.PURPOSE: el propósito que quieres usar para la clave.PROTECTION_LEVEL: el nivel de protección que quieras usar para la clave (por ejemplo,HSM).
Para crear una clave de Cloud HSM de un solo inquilino, añade la marca
--cryptoKeyBackenda este comando y añade el identificador de recurso de la instancia de Cloud HSM de un solo inquilino en la que quieras importar la clave:--crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
Preparar el sistema local
Prepara el sistema local eligiendo una de las siguientes opciones. Se recomienda la envoltura automática de claves para la mayoría de los usuarios.
Preparar la clave
Verifica que el algoritmo y la longitud de tu clave sean compatibles. Los algoritmos permitidos para una clave dependen de si la clave se usa para el cifrado simétrico, el cifrado asimétrico o la firma asimétrica, así como de si la clave se almacena en software o en un HSM. Especifica 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 hacer los ajustes necesarios.
No se puede cambiar lo siguiente en una versión de clave después de crearla o importarla:
Si no tienes ninguna clave para importar, pero quieres validar el procedimiento para importar 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 hacer pruebas. Es posible que una clave creada de esta forma no sea adecuada para usarla en producción.
Si necesitas envolver la clave manualmente, hazlo antes de continuar con los procedimientos de esta guía.
Crear la clave de destino y el conjunto de claves
Una clave de Cloud KMS es un objeto contenedor que contiene cero o más versiones de clave. Cada versión de la clave contiene una clave criptográfica.
Cuando importas una clave en Cloud KMS o Cloud HSM, la clave importada se convierte en una nueva versión de una clave de Cloud KMS o Cloud HSM. En el resto de esta guía, esta clave se denomina clave de destino. La clave de destino debe existir para poder importar material de clave en ella.
Importar una versión de una clave no afecta a las versiones que ya tenga esa clave. Sin embargo, se recomienda crear una clave vacía al probar la importación de claves. Una clave vacía no tiene versión, no está activa y no se puede usar.
También puedes especificar que la clave que has creado solo pueda contener versiones importadas, lo que evita que se generen versiones nuevas por error en Cloud KMS.
Una clave existe en un conjunto de claves. En esta guía, este conjunto de claves se denomina conjunto de claves de destino. La ubicación del conjunto de claves de destino determina la ubicación en la que estará disponible el material de clave después de la importación. Las claves de Cloud HSM no se pueden crear ni importar en algunas ubicaciones. Una vez creada una clave, no se puede mover a otro llavero ni a otra ubicación.
Sigue estos pasos para crear una clave vacía en un nuevo conjunto de claves con la CLI de Google Cloud o la consola. Google Cloud
Consola
gcloud
Para usar Cloud KMS en la línea de comandos, primero debes instalar o actualizar a la versión más reciente de la CLI de Google Cloud.
Go
Para ejecutar este código, primero debes configurar un entorno de desarrollo de Go e instalar el SDK de Go de Cloud KMS.