Importar y exportar claves en OVHcloud KMS con BYOK
Descubra cómo importar y exportar de forma segura material de clave cifrado con OVHcloud KMS mediante el encapsulado de clave RSA asimétrico (BYOK)
Objetivo
Bring Your Own Key (BYOK) le permite importar y exportar material de clave criptográfico con OVHcloud Key Management Service (KMS) sin enviarlo en claro. Un par de claves RSA de transporte protege el material en tránsito: la clave pública lo encapsula y solo el titular de la clave privada puede desencapsularlo.
Esta guía le explica cómo importar y exportar una clave con OVHcloud KMS utilizando el encapsulado de clave RSA asimétrico (BYOK).
Requisitos
- Disponer de una cuenta de cliente de OVHcloud.
- Haber contratado un KMS de OVHcloud.
- Haber configurado un método de autenticación para el plano de datos OKMS (token de acceso personal, cuenta de servicio o certificado de acceso).
- Poder aplicar una política IAM en su dominio OKMS; las acciones BYOK necesarias se enumeran en Configurar IAM para el BYOK.
- Opcional: la CLI OKMS o el SDK Go instalados para los ejemplos en pestañas.
Procedimiento
Comprender la ceremonia de encapsulado RSA
La ceremonia implica dos entornos y un operador:
- Destino (Dst): su dominio OKMS, donde se almacenará la clave importada.
- Origen (Src): el sistema que actualmente posee el material de clave (otro KMS, una aplicación o una herramienta como OpenSSL).
- Operator: la entidad que dispone de los permisos necesarios para acceder tanto al dominio OKMS como al origen de la clave que se va a importar. Puede ser una persona que utiliza el CLI OKMS o un servicio que actúa a través de la API.
- Genere un par de claves RSA de transporte en el KMS de OVHcloud con las operaciones
wrapKeyyunwrapKey. - Exporte la clave de transporte pública desde el KMS de OVHcloud.
- Importe la clave de transporte pública en el entorno de origen.
- En el origen, exporte el material de clave encapsulado (cifrado) con la clave de transporte utilizando
RSA-OAEPoRSA-OAEP-256. - En el destino, importe la clave encapsulada con
POST /api/{okmsId}/v1/servicekeyy una carga útilwrappedKeys. El KMS desencapsula el ciphertext con la clave de transporte privada y almacena la clave de servicio resultante.
Las claves así importadas tienen never_extractable definido en false, porque el material existía fuera del KMS antes de la importación. Para extraer posteriormente una clave en forma encapsulada, defina extractable en true y siga Exportar una clave encapsulada. Consulte Atributos de sensibilidad de las claves de servicio para la lista completa de atributos.
Para seguir esta guía necesita dos valores de su dominio OKMS: su endpoint regional y su okmsId. Las llamadas a la API REST incluyen ambos en la URL, mientras que el CLI OKMS y el SDK Go los leen de su configuración. Ambos se obtienen mediante la siguiente llamada a la API:
También aparecen en la pestaña Información general del .
Prefiera esta ceremonia a la importación de clave en claro siempre que la clave deba seguir siendo de confianza durante el tránsito.
Configurar IAM para el BYOK
Aplique una política sobre el recurso de su dominio OKMS. Su URN se muestra en la pestaña Información general del . Sustituya <identity_urn> y <okms_urn> por sus valores. Cree las políticas a través del área de cliente de OVHcloud o de la API de OVHcloud.
Importación BYOK — leer, crear o importar claves de servicio y desencapsular con una clave de transporte:
Exportación BYOK — importar una clave de transporte pública, actualizar la extraibilidad y encapsular una clave para la exportación:
Para la importación, serviceKey/unwrapKey debe estar autorizado sobre la clave de transporte RSA referenciada por wrappingKeyId. Para la exportación, importe primero la clave de transporte pública de destino (create / import), luego autorice serviceKey/wrapKey sobre esa clave de transporte y serviceKey/get sobre la clave exportada. serviceKey/update es necesario para definir extractable antes (y después) de la exportación.
Crear la clave de transporte RSA en el KMS de destino
Cree una clave RSA dedicada al encapsulado. Para la ceremonia de importación, defina tanto wrapKey como unwrapKey en esta clave; son mutuamente excluyentes con sign y verify.
Tamaños de clave RSA admitidos: 2048, 3072 o 4096 bits.
SOFTWARE es el nivel de protección por defecto, por lo que no es necesario indicarlo.
Conserve el id de la clave devuelta: lo necesitará como wrappingKeyId durante la importación.
Obtener la clave de transporte pública
Exporte la parte pública de la clave de transporte y proporciónela al entorno de origen. No comparta nunca la clave privada: permanece dentro del KMS de destino.
La respuesta incluye el material de clave pública en el array keys (JWK).
Encapsular el material de clave de origen
En el entorno de origen, cifre el material de clave con la clave RSA pública de destino.
Este paso se realiza fuera de OVHcloud KMS: utilice una biblioteca JOSE en el entorno de origen.
Algoritmos de encapsulado admitidos (RFC 7518):
keyFormatType describe el formato del material de clave en claro antes del encapsulado y después del desencapsulado. El ciphertext es siempre una cadena JWE Compact Serialization (el algoritmo de encapsulado va en el encabezado JWE).
Tras el encapsulado con la clave pública de destino, envíe el ciphertext JWE Compact Serialization resultante en la solicitud de importación.
Importar la clave encapsulada
Llame a POST /api/{okmsId}/v1/servicekey con un array wrappedKeys en lugar de keys en claro.
Cada entrada de wrappedKeys:
Puede importar una clave solo pública (class se convierte en PUBLIC_KEY) o una clave privada (el KMS reconstruye la parte pública; class se convierte en KEY_PAIR). El material simétrico se almacena como SECRET_KEY.
Acciones IAM en esta llamada: okms:apikms:serviceKey/create, okms:apikms:serviceKey/import, y okms:apikms:serviceKey/unwrapKey sobre la clave de transporte.
Valores de keyFormatType: RAW, JWK, PKCS1 o PKCS8.
Verificar la clave importada
Confirme que la clave existe y corresponde al tipo y a las operaciones esperados.
Verifique que:
- el
statede la clave esactive(o actívela si su flujo de trabajo lo exige). type,sizeyoperationscoinciden con lo esperado.- los atributos de sensibilidad bajo
attributesreflejan una clave importada (never_extractablevalefalse).
A continuación puede utilizar la clave para encrypt, decrypt, sign o verify, como se documenta en Utilizar su OVHcloud Key Management Service (KMS).
Exportar una clave encapsulada
La exportación segura es la inversa de la importación: OVHcloud KMS cifra el material de clave con una clave de transporte RSA y solo devuelve un ciphertext JWE. La clave de transporte privada debe residir en el entorno de destino — aquí el sistema externo que recibe la clave, no OVHcloud KMS — para que solo ese entorno pueda desencapsular el material.
Comprender la ceremonia de exportación
- Genere un par de claves RSA de transporte en el entorno de destino (otro KMS o una herramienta que recibirá la clave).
- Importe la clave de transporte pública de destino en OVHcloud KMS con la operación
wrapKey(nivel de protecciónSOFTWARE). Esta clave es elwrappingKeyIdutilizado en el momento de la exportación. - En OVHcloud KMS, defina
extractableentruesobre la clave de servicio justo antes de la exportación, luego expórtela encapsulada por esta clave de transporte. Vuelva a poner despuésextractableenfalsecuando sea posible. - Transfiera el ciphertext al destino y desencapsúlelo con la clave de transporte privada de destino.
No genere el par de claves de transporte de exportación en OVHcloud KMS. Si la clave de transporte privada permaneciera en OVHcloud KMS, el destino no podría desencapsular el ciphertext. Solo la parte pública se importa en OVHcloud KMS para el encapsulado.
La clave de transporte referenciada por wrappingKeyId debe ser una clave RSA SOFTWARE en el mismo dominio OKMS, con el uso wrapKey. Las claves sensibles (material AES/oct y RSA/EC privado) solo pueden extraerse después del encapsulado: la extracción en claro no está admitida para estas claves.
Importar la clave de transporte pública de destino en OVHcloud KMS
Registre la clave pública de destino para que OVHcloud KMS pueda encapsular con ella la clave exportada. Impórtela como clave RSA solo pública con wrapKey (sin material privado).
Conserve el id de la clave devuelta como wrappingKeyId.
Activar la extracción
La clave que exporta debe ser extraíble. Prefiera definir extractable en true únicamente para la operación de exportación (mediante PATCH), y luego volver a ponerlo en false. Deje las claves no extraíbles en la creación siempre que sea posible: hacer una clave extraíble fija definitivamente never_extractable en false.
Activar la extracción reduce la frontera de protección de la clave. Defina extractable en true solo cuando deba migrar la clave, y vuelva a ponerlo en false después cuando sea posible.
Acción IAM: okms:apikms:serviceKey/update.
Tras una exportación encapsulada correcta (consulte Exportar la clave encapsulada por la clave de transporte), desactive de nuevo la extracción:
Exportar la clave encapsulada por la clave de transporte
Llame a GET /api/{okmsId}/v1/servicekey/{keyId} con los parámetros de consulta de encapsulado siguientes. Cuando estos parámetros están presentes, la API devuelve wrappedKeys en lugar de keys en claro.
Acciones IAM: okms:apikms:serviceKey/get sobre la clave exportada, y okms:apikms:serviceKey/wrapKey sobre la clave de transporte.
Ejemplo de respuesta:
Desencapsular el ciphertext en el destino
Transfiera el ciphertext al entorno de destino. Desencapsúlelo con la clave de transporte privada de destino (la contraparte de la clave pública que importó en OVHcloud KMS).
- Si el destino es otro dominio OKMS, importe allí el material encapsulado con
wrappedKeyscomo en Importar la clave encapsulada, utilizando el identificador de la clave de transporte de ese dominio comowrappingKeyId. - Si el destino es un sistema externo, utilice su API nativa de desencapsulado / importación con la clave de transporte privada y el mismo
keyFormatType/ algoritmo de encapsulado que durante la exportación.
Más información
Utilizar su OVHcloud Key Management Service (KMS)
Métodos de autenticación de OKMS
Primeros pasos con OVHcloud Key Management Service (KMS)
Interactúe con nuestra comunidad de usuarios.