IBM Cloud Docs
Utilización de un servicio de firma para gestionar claves de firma para la inicialización de la instancia

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ámetro key 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 solicitud GET /keys en la cabecera de la solicitud HTTP Authorization.

    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 solicitud POST /sign en la cabecera de la solicitud HTTP Authorization.

    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:

  1. 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 mandatos sigkey de TKE no realizan ninguna acción. Estos mandatos incluyen ibmcloud tke sigkeys, ibmcloud tke sigkey-add, ibmcloud tke sigkey-rm e ibmcloud tke sigkey-sel.

  2. Cree un archivo con el nombre SIGNSERVKEYS en el subdirectorio identificado mediante la variable de entorno CLOUDTKEFILES.

    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 campo token. El campo key identifica una clave de firma concreta. El campo token 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 campo token en el archivo SIGNSERVKEYS, 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.

  3. 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