Utilización de un servicio de firma para gestionar claves de firma para la inicialización de la instancia
Para la inicialización de la instancia de Hyper Protect Crypto Services puede utilizar un servicio de firma de terceros para crear, almacenar y gestionar las claves de firma de administrador que utilizan Terraform o el plugin de la CLI de TKE (Trusted Key Entry). Con las claves de firma proporcionadas por el servicio de firma, ya no utiliza los archivos de claves de firma en la estación de trabajo local cuando se ejecutan los mandatos del plugin de TKE y Terraform.
Requisitos previos del servicio de firma
Para poder utilizar un servicio de firma para gestionar las claves de firma, asegúrese de que completa los pasos de requisito previo para la inicialización de la instancia.
Para habilitar un servicio de firma para el plugin de la CLI de TKE o Terraform, el servicio de firma se debe implementar como un servidor HTTP que implementa las dos solicitudes siguientes. Todas las claves de firma a las que se accede utilizando el servicio de firma deben ser claves de P521 EC.
-
GET
/keys/:name
Esta solicitud recupera la clave pública de una clave de firma. La clave pública es necesaria cuando se añade un administrador de unidades criptográficas. El parámetro
:name
identifica la clave de firma a la que se ha de acceder. El servicio de firma determina cómo se asocian los valores de:name
con las claves de firma. El parámetro:name
corresponde a un parámetrokey
en un bloque de recursos de Terraform.El parámetro
:name
se añade al URL que accede al servicio de firma. Solo puede contener caracteres no reservados, tal como se define en la sección 2.3 de RFC3986. La señal de autenticación para la clave de firma se pasa a una solicitudGET /keys
en la cabecera de la solicitud HTTPAuthorization
.Esta solicitud devuelve la clave pública codificada en base64. A continuación se muestra un ejemplo del cuerpo de la respuesta:
{ "publickey": "<base64 encoded string of public key (ASN.1 DER encoded struct containing integer X and integer Y)>" }
-
POST
/sign/:name
Esto solicita al servicio de firma que firme los datos de entrada utilizando la clave de firma identificada por el parámetro
:name
. El parámetro:name
se añade al URL que accede al servicio de firma. Solo puede contener caracteres no reservados, tal como se define en la sección 2.3 de RFC3986. La señal de autenticación para la clave de firma se pasa a una solicitudPOST /sign
en la cabecera de la solicitud HTTPAuthorization
.El cuerpo de la solicitud contiene los datos de entrada que se han de firmar. Las solicitudes creadas por el plugin de la CLI de TKE y los mandatos Terraform también incluyen un parámetro que identifica SHA-512 como el algoritmo hash que se ha de utilizar al generar la firma. A continuación se muestra un ejemplo del cuerpo de la solicitud:
{ "hash_algorithm":"sha2-512", "input":"<base64 encoded string of data to be signed>" }
Esta solicitud devuelve la firma que se genera sobre los datos de entrada utilizando la clave de firma especificada. A continuación se muestra un ejemplo del cuerpo de la respuesta:
{ "signature": "<base64 encoded string of binary data (ASN.1 DER encoded struct of integers R and S)>" }
Configuración del plugin de la CLI de TKE para utilizar el servicio de firma
En lugar de utilizar los archivos de claves de firma que se almacenan en la estación de trabajo para firmar mandatos, configure el plug-in de la CLI de TKE para que utilice las claves de firma proporcionadas por el servicio de firma realizando los pasos siguientes:
-
Establezca la variable de entorno
TKE_SIGNSERV_URL
en su estación de trabajo en el URL y el número de puerto en el que se está ejecutando el servicio de firma.Después de establecer la variable de entorno
TKE_SIGNSERV_URL
, esta indica que está utilizando un servicio de firma de terceros para las claves de firma. En este caso, los mandatossigkey
de TKE no realizan ninguna acción. Estos mandatos incluyenibmcloud tke sigkeys
,ibmcloud tke sigkey-add
,ibmcloud tke sigkey-rm
eibmcloud tke sigkey-sel
. -
Cree un archivo con el nombre
SIGNSERVKEYS
en el subdirectorio identificado mediante la variable de entornoCLOUDTKEFILES
.Se espera que este archivo sea una serie JSON que representa una matriz que lista las claves de firma válidas para firmar mandatos. Cada entrada de la matriz debe contener un campo
key
y, opcionalmente, puede incluir un campotoken
. El campokey
identifica una clave de firma concreta. El campotoken
autoriza el uso de la clave. El servicio de firma determina cómo se definen la identificación de claves y la señal de autenticación. Si no especifica el campotoken
en el archivoSIGNSERVKEYS
, se le solicitará que especifique el valor de token cuando ejecute mandatos del plugin de la CLI de TKE, lo cual es más seguro que proporcionarlo directamente en el archivo.A continuación se muestran algunos ejemplos del archivo
SIGNSERVKEYS
:-
Ejemplo 1:
[{"key":"first-key","token":"token-for-first-key"}]
Este ejemplo especifica una sola clave de firma válida y su señal de autenticación. Dado que se ha especificado la señal, no se le solicitará que la especifique cuando se utilice la clave de firma.
-
Ejemplo 2:
[{"key":"first-key"},{"key":"second-key"}]
Este ejemplo especifica dos claves de firma válidas que se pueden utilizar. Puesto que no se ha especificado la señal, se le solicitará la señal cuando utilice cualquiera de las claves.
-
Ejemplo 3:
[{"key":"first-key"},{"key":"second-key","token":"token-for-second-key"},{"key":"third-key"}]
Este ejemplo especifica tres claves de firma válidas que se pueden utilizar. La señal se especifica para la segunda clave, pero no para la primera y tercera clave. Si utiliza la primera o la tercera clave, se le solicitará la señal correspondiente.
Asegúrese de que el archivo
SIGNSERVKEYS
contiene suficientes claves de firma para que los administradores instalados cumplan los requisitos de umbral de firma. De lo contrario, no podrá utilizar el servicio de firma para realizar acciones de TKE. -
-
Añada administradores de unidades criptográficas utilizando el mandato
ibmcloud tke cryptounit-admin-add
.Después de establecer la variable de entorno
TKE_SIGNSERV_URL
, este mandato le solicita que especifique un identificador de clave de firma y su señal de acceso correspondiente, tal como la ha definido el servicio de firma, para añadir un administrador.
Qué hacer a continuación
- Para obtener más información sobre los pasos siguientes para completar la inicialización de la instancia de servicio utilizando el plugin de CLI TKE, consulte Inicialización de instancias de servicio utilizando archivos de componentes clave.
- Para ver cómo configurar Terraform para que utilice un servicio de firma, consulte Configuración de Terraform para Hyper Protect Crypto Services.