Importare ed esportare chiavi su OVHcloud KMS con BYOK
Scopri come importare ed esportare in modo sicuro materiale di chiave cifrato con OVHcloud KMS grazie all'incapsulamento RSA asimmetrico delle chiavi (BYOK)
Obiettivo
Bring Your Own Key (BYOK) ti permette di importare ed esportare materiale di chiave crittografico con OVHcloud Key Management Service (KMS) senza inviarlo in chiaro. Una coppia di chiavi RSA di trasporto protegge il materiale in transito: la chiave pubblica lo incapsula e solo il detentore della chiave privata può disincapsularlo.
Questa guida ti spiega come importare ed esportare una chiave con OVHcloud KMS utilizzando l'incapsulamento RSA asimmetrico delle chiavi (BYOK).
Prerequisiti
- Disporre di un account cliente OVHcloud.
- Aver ordinato un KMS OVHcloud.
- Aver configurato un metodo di autenticazione per il piano dati OKMS (token di accesso personale, account di servizio o certificato di accesso).
- Poter applicare una policy IAM sul tuo dominio OKMS; le azioni BYOK necessarie sono elencate in Configurare IAM per il BYOK.
- Opzionale: la CLI OKMS o l'SDK Go installato per gli esempi nelle schede.
Procedura
Comprendere la cerimonia di incapsulamento RSA
La cerimonia coinvolge due ambienti e un operatore:
- Destinazione (Dst): il tuo dominio OKMS, in cui sarà archiviata la chiave importata.
- Sorgente (Src): il sistema che detiene attualmente il materiale di chiave (un altro KMS, un'applicazione o uno strumento come OpenSSL).
- Operator: l'entità che dispone delle autorizzazioni necessarie per accedere sia al dominio OKMS sia alla sorgente della chiave da importare. Può essere una persona che utilizza il CLI OKMS o un servizio che opera tramite l'API.
- Genera una coppia di chiavi RSA di trasporto su OVHcloud KMS con le operazioni
wrapKeyeunwrapKey. - Esporta la chiave di trasporto pubblica da OVHcloud KMS.
- Importa la chiave di trasporto pubblica nell'ambiente sorgente.
- Sulla sorgente, esporta il materiale di chiave incapsulato (cifrato) con la chiave di trasporto utilizzando
RSA-OAEPoRSA-OAEP-256. - Sulla destinazione, importa la chiave incapsulata con
POST /api/{okmsId}/v1/servicekeye un payloadwrappedKeys. Il KMS disincapsula il ciphertext con la chiave di trasporto privata e archivia la chiave di servizio risultante.
Le chiavi così importate hanno never_extractable impostato su false, perché il materiale esisteva al di fuori del KMS prima dell'importazione. Per estrarre successivamente una chiave in forma incapsulata, imposta extractable su true e segui Esportare una chiave incapsulata. Consulta Attributi di sensibilità delle chiavi di servizio per l'elenco completo degli attributi.
Per seguire questa guida ti servono due valori del tuo dominio OKMS: il suo endpoint regionale e il suo okmsId. Le chiamate all'API REST li contengono entrambi nell'URL, mentre il CLI OKMS e l'SDK Go li leggono dalla propria configurazione. Entrambi vengono restituiti dalla seguente chiamata API:
Sono visibili anche nella scheda Informazioni generali del .
Preferisci questa cerimonia all'importazione di chiave in chiaro ogni volta che la chiave deve rimanere affidabile durante il transito.
Configurare IAM per il BYOK
Applica una policy sulla risorsa del tuo dominio OKMS. Il suo URN è visualizzato nella scheda Informazioni generali del . Sostituisci <identity_urn> e <okms_urn> con i tuoi valori. Crea le policy tramite lo Spazio Cliente OVHcloud o l'API OVHcloud.
Importazione BYOK — leggere, creare o importare chiavi di servizio e disincapsulare con una chiave di trasporto:
Esportazione BYOK — importare una chiave di trasporto pubblica, aggiornare l'estraibilità e incapsulare una chiave per l'esportazione:
Per l'importazione, serviceKey/unwrapKey deve essere autorizzato sulla chiave di trasporto RSA referenziata da wrappingKeyId. Per l'esportazione, importa prima la chiave di trasporto pubblica di destinazione (create / import), poi autorizza serviceKey/wrapKey su questa chiave di trasporto e serviceKey/get sulla chiave esportata. serviceKey/update è richiesto per impostare extractable prima (e dopo) l'esportazione.
Creare la chiave di trasporto RSA sul KMS di destinazione
Crea una chiave RSA dedicata all'incapsulamento. Per la cerimonia di importazione, imposta su questa chiave sia wrapKey sia unwrapKey; sono mutuamente esclusive con sign e verify.
Dimensioni delle chiavi RSA supportate: 2048, 3072 o 4096 bit.
SOFTWARE è il livello di protezione predefinito, quindi non è necessario indicarlo.
Conserva l'id della chiave restituita — ti servirà come wrappingKeyId al momento dell'importazione.
Ottenere la chiave di trasporto pubblica
Esporta la parte pubblica della chiave di trasporto e forniscila all'ambiente sorgente. Non condividere mai la chiave privata — rimane all'interno del KMS di destinazione.
La risposta include il materiale di chiave pubblica nell'array keys (JWK).
Incapsulare il materiale di chiave sorgente
Sull'ambiente sorgente, cifra il materiale di chiave con la chiave RSA pubblica di destinazione.
Questo passaggio avviene fuori da OVHcloud KMS: utilizza una libreria JOSE sull'ambiente sorgente.
Algoritmi di incapsulamento supportati (RFC 7518):
keyFormatType descrive il formato del materiale di chiave in chiaro prima dell'incapsulamento e dopo il disincapsulamento. Il ciphertext è sempre una stringa JWE Compact Serialization (l'algoritmo di incapsulamento è riportato nell'header JWE).
Dopo l'incapsulamento con la chiave pubblica di destinazione, invia nella richiesta di importazione il ciphertext JWE Compact Serialization ottenuto.
Importare la chiave incapsulata
Chiama POST /api/{okmsId}/v1/servicekey con un array wrappedKeys invece di keys in chiaro.
Ogni voce di wrappedKeys:
Puoi importare una chiave solo pubblica (class diventa PUBLIC_KEY) o una chiave privata (il KMS ricostruisce la parte pubblica; class diventa KEY_PAIR). Il materiale simmetrico è archiviato come SECRET_KEY.
Azioni IAM su questa chiamata: okms:apikms:serviceKey/create, okms:apikms:serviceKey/import e okms:apikms:serviceKey/unwrapKey sulla chiave di trasporto.
Valori di keyFormatType: RAW, JWK, PKCS1 o PKCS8.
Verificare la chiave importata
Conferma che la chiave esista e corrisponda al tipo e alle operazioni attesi.
Verifica che:
- lo stato (
state) della chiave siaactive(o attivala se il tuo workflow lo richiede). type,sizeeoperationscorrispondano a quanto ti aspettavi.- gli attributi di sensibilità sotto
attributesriflettano una chiave importata (never_extractablevalefalse).
Puoi poi utilizzare la chiave per encrypt, decrypt, sign o verify, come documentato in Utilizzare il tuo OVHcloud Key Management Service (KMS).
Esportare una chiave incapsulata
L'esportazione sicura è l'inverso dell'importazione: OVHcloud KMS cifra il materiale di chiave con una chiave di trasporto RSA e restituisce solo un ciphertext JWE. La chiave di trasporto privata deve risiedere nell'ambiente di destinazione — qui il sistema esterno che riceve la chiave, non OVHcloud KMS — affinché solo quell'ambiente possa disincapsulare il materiale.
Comprendere la cerimonia di esportazione
- Genera una coppia di chiavi RSA di trasporto sull'ambiente di destinazione (un altro KMS o uno strumento che riceverà la chiave).
- Importa la chiave di trasporto pubblica di destinazione in OVHcloud KMS con l'operazione
wrapKey(livello di protezioneSOFTWARE). Questa chiave è ilwrappingKeyIdutilizzato al momento dell'esportazione. - Su OVHcloud KMS, imposta
extractablesutruesulla chiave di servizio subito prima dell'esportazione, poi esportala incapsulata da questa chiave di trasporto. Successivamente, riportaextractablesufalsequando possibile. - Trasferisci il ciphertext verso la destinazione e disincapsulalo con la chiave di trasporto privata di destinazione.
Non generare la coppia di chiavi di trasporto di esportazione su OVHcloud KMS. Se la chiave di trasporto privata restasse in OVHcloud KMS, la destinazione non potrebbe disincapsulare il ciphertext. Solo la parte pubblica è importata in OVHcloud KMS per l'incapsulamento.
La chiave di trasporto referenziata da wrappingKeyId deve essere una chiave RSA SOFTWARE nello stesso dominio OKMS, con l'utilizzo wrapKey. Le chiavi sensibili (materiale AES/oct e RSA/EC privato) possono essere estratte solo dopo l'incapsulamento — l'estrazione in chiaro non è supportata per queste chiavi.
Importare la chiave di trasporto pubblica di destinazione in OVHcloud KMS
Registra la chiave pubblica di destinazione affinché OVHcloud KMS possa incapsulare con essa la chiave esportata. Importala come chiave RSA solo pubblica con wrapKey (senza materiale privato).
Conserva l'id della chiave restituita come wrappingKeyId.
Attivare l'estrazione
La chiave che esporti deve essere estraibile. Preferisci impostare extractable su true unicamente per l'operazione di esportazione (tramite PATCH), poi riportarlo su false in seguito. Lascia le chiavi non estraibili alla creazione ogni volta che è possibile: rendere una chiave estraibile imposta definitivamente never_extractable su false.
Attivare l'estrazione riduce il perimetro di protezione della chiave. Imposta extractable su true solo quando devi migrare la chiave, e riportalo su false in seguito quando possibile.
Azione IAM: okms:apikms:serviceKey/update.
Dopo un'esportazione incapsulata riuscita (consulta Esportare la chiave incapsulata con la chiave di trasporto), disattiva di nuovo l'estrazione:
Esportare la chiave incapsulata con la chiave di trasporto
Chiama GET /api/{okmsId}/v1/servicekey/{keyId} con i parametri di query di incapsulamento seguenti. Quando questi parametri sono presenti, l'API restituisce wrappedKeys invece di keys in chiaro.
Azioni IAM: okms:apikms:serviceKey/get sulla chiave esportata, e okms:apikms:serviceKey/wrapKey sulla chiave di trasporto.
Esempio di risposta:
Disincapsulare il ciphertext sulla destinazione
Trasferisci il ciphertext verso l'ambiente di destinazione. Disincapsulalo con la chiave di trasporto privata di destinazione (la controparte della chiave pubblica che hai importato in OVHcloud KMS).
- Se la destinazione è un altro dominio OKMS, importa in quel dominio il materiale incapsulato con
wrappedKeyscome in Importare la chiave incapsulata, utilizzando l'ID della chiave di trasporto di quel dominio comewrappingKeyId. - Se la destinazione è un sistema esterno, utilizza la sua API nativa di disincapsulamento / importazione con la chiave di trasporto privata e lo stesso
keyFormatType/ algoritmo di incapsulamento dell'esportazione.
Per saperne di più
Utilizzare il tuo OVHcloud Key Management Service (KMS)
Primi passi con OVHcloud Key Management Service (KMS)
Contatta la nostra Community di utenti.