Import i eksport kluczy w OVHcloud KMS za pomocą BYOK
Dowiedz się, jak bezpiecznie importować i eksportować zaszyfrowany materiał klucza w OVHcloud KMS przy użyciu asymetrycznego opakowywania kluczy RSA (BYOK)
Wprowadzenie
Bring Your Own Key (BYOK) umożliwia import i eksport materiału kryptograficznego klucza w OVHcloud Key Management Service (KMS) bez przesyłania go w postaci jawnej. Para kluczy transportowych RSA chroni materiał w trakcie przesyłania: klucz publiczny go opakowuje, a tylko posiadacz klucza prywatnego może go rozpakować.
Ten przewodnik wyjaśnia, jak zaimportować i wyeksportować klucz w OVHcloud KMS przy użyciu asymetrycznego opakowywania kluczy RSA (BYOK).
Wymagania początkowe
- Konto klienta OVHcloud.
- Zamówiona usługa OVHcloud KMS.
- Skonfigurowana metoda uwierzytelniania dla płaszczyzny danych OKMS (osobisty token dostępu, konto serwisowe lub certyfikat dostępu).
- Możliwość zastosowania polityki IAM w domenie OKMS; wymagane akcje BYOK są wymienione w sekcji Konfiguracja IAM dla BYOK.
- Opcjonalnie: zainstalowane CLI OKMS lub SDK Go na potrzeby przykładów w kartach.
W praktyce
Zrozumienie ceremonii opakowywania RSA
Ceremonia obejmuje dwa środowiska i operatora:
- Miejsce docelowe (Dst): Twoja domena OKMS, w której zostanie przechowywany zaimportowany klucz.
- Źródło (Src): system, który obecnie przechowuje materiał klucza (inny KMS, aplikacja lub narzędzie takie jak OpenSSL).
- Operator: podmiot posiadający uprawnienia dostępu zarówno do domeny OKMS, jak i do źródła klucza do zaimportowania. Może to być osoba korzystająca z CLI OKMS lub usługa działająca poprzez API.
- Wygeneruj parę kluczy transportowych RSA w OVHcloud KMS z operacjami
wrapKeyiunwrapKey. - Wyeksportuj publiczny klucz transportowy z OVHcloud KMS.
- Zaimportuj publiczny klucz transportowy do środowiska źródłowego.
- Po stronie źródła wyeksportuj materiał klucza opakowany (zaszyfrowany) kluczem transportowym, używając
RSA-OAEPlubRSA-OAEP-256. - Po stronie miejsca docelowego zaimportuj opakowany klucz za pomocą
POST /api/{okmsId}/v1/servicekeyi ładunkuwrappedKeys. KMS rozpakowuje ciphertext prywatnym kluczem transportowym i zapisuje wynikowy klucz serwisowy.
Klucze zaimportowane w ten sposób mają never_extractable ustawione na false, ponieważ materiał istniał poza KMS przed importem. Aby później wyodrębnić klucz w formie opakowanej, ustaw extractable na true i postępuj zgodnie z sekcją Eksport opakowanego klucza. Pełną listę atrybutów znajdziesz w sekcji Atrybuty wrażliwości kluczy serwisowych.
Aby wykonać czynności z tego przewodnika, potrzebujesz dwóch wartości swojej domeny OKMS: jej regionalnego endpointu oraz okmsId. Wywołania API REST zawierają obie w adresie URL, natomiast CLI OKMS i SDK Go odczytują je ze swojej konfiguracji. Obie są zwracane przez następujące wywołanie API:
Są również widoczne w zakładce Informacje ogólne w .
Preferuj tę ceremonię zamiast importu klucza w postaci jawnej, gdy klucz musi pozostać zaufany podczas przesyłania.
Konfiguracja IAM dla BYOK
Zastosuj politykę do zasobu swojej domeny OKMS. Jego URN jest wyświetlany w zakładce Informacje ogólne w . Zastąp <identity_urn> i <okms_urn> swoimi wartościami. Utwórz polityki za pośrednictwem Panelu klienta OVHcloud lub API OVHcloud.
Import BYOK — odczyt, tworzenie lub import kluczy serwisowych oraz rozpakowywanie za pomocą klucza transportowego:
Eksport BYOK — import publicznego klucza transportowego, aktualizacja możliwości wyodrębnienia oraz opakowanie klucza do eksportu:
W przypadku importu serviceKey/unwrapKey musi być dozwolone na kluczu transportowym RSA wskazanym przez wrappingKeyId. W przypadku eksportu najpierw zaimportuj publiczny klucz transportowy miejsca docelowego (create / import), następnie zezwól na serviceKey/wrapKey na tym kluczu transportowym oraz serviceKey/get na eksportowanym kluczu. serviceKey/update jest wymagane, aby ustawić extractable przed eksportem (i po nim).
Utworzenie klucza transportowego RSA w docelowym KMS
Utwórz klucz RSA przeznaczony do opakowywania. Na potrzeby ceremonii importu ustaw na tym kluczu zarówno wrapKey, jak i unwrapKey; wzajemnie wykluczają się one z sign i verify.
Obsługiwane rozmiary kluczy RSA: 2048, 3072 lub 4096 bitów.
SOFTWARE to domyślny poziom ochrony, więc nie musisz go określać.
Zapisz zwrócone id klucza — potrzebujesz go jako wrappingKeyId podczas importu.
Pobranie publicznego klucza transportowego
Wyeksportuj publiczną część klucza transportowego i przekaż ją środowisku źródłowemu. Nigdy nie udostępniaj klucza prywatnego — pozostaje on wewnątrz docelowego KMS.
Odpowiedź zawiera materiał klucza publicznego w tablicy keys (JWK).
Opakowanie materiału klucza źródłowego
W środowisku źródłowym zaszyfruj materiał klucza publicznym kluczem RSA miejsca docelowego.
Ten krok odbywa się poza OVHcloud KMS: w środowisku źródłowym użyj biblioteki JOSE.
Obsługiwane algorytmy opakowywania (RFC 7518):
keyFormatType opisuje format jawnego materiału klucza przed opakowaniem i po rozpakowaniu. Ciphertext jest zawsze ciągiem JWE Compact Serialization (algorytm opakowywania jest przenoszony w nagłówku JWE).
Po opakowaniu publicznym kluczem miejsca docelowego prześlij uzyskaną wartość ciphertext w formacie JWE Compact Serialization w żądaniu importu.
Import opakowanego klucza
Wywołaj POST /api/{okmsId}/v1/servicekey z tablicą wrappedKeys zamiast jawnych keys.
Każdy wpis wrappedKeys:
Możesz zaimportować sam klucz publiczny (class staje się PUBLIC_KEY) lub klucz prywatny (KMS odtwarza część publiczną; class staje się KEY_PAIR). Materiał symetryczny jest przechowywany jako SECRET_KEY.
Akcje IAM przy tym wywołaniu: okms:apikms:serviceKey/create, okms:apikms:serviceKey/import oraz okms:apikms:serviceKey/unwrapKey na kluczu transportowym.
Wartości keyFormatType: RAW, JWK, PKCS1 lub PKCS8.
Weryfikacja zaimportowanego klucza
Potwierdź, że klucz istnieje i odpowiada oczekiwanemu typowi oraz operacjom.
Sprawdź, czy:
- atrybut
stateklucza ma wartośćactive(lub aktywuj go, jeśli wymaga tego Twój przepływ pracy). type,sizeioperationsodpowiadają Twoim założeniom.- atrybuty wrażliwości w
attributesodzwierciedlają zaimportowany klucz (never_extractablema wartośćfalse).
Następnie możesz używać klucza do operacji encrypt, decrypt, sign lub verify zgodnie z dokumentacją Korzystanie z OVHcloud Key Management Service (KMS).
Eksport opakowanego klucza
Bezpieczny eksport jest odwrotnością importu: OVHcloud KMS szyfruje materiał klucza kluczem transportowym RSA i zwraca wyłącznie ciphertext JWE. Prywatny klucz transportowy musi znajdować się w środowisku docelowym — czyli w systemie zewnętrznym, który otrzymuje klucz, a nie w OVHcloud KMS — aby tylko to środowisko mogło rozpakować materiał.
Zrozumienie ceremonii eksportu
- Wygeneruj parę kluczy transportowych RSA w środowisku docelowym (inny KMS lub narzędzie, które odbierze klucz).
- Zaimportuj publiczny klucz transportowy miejsca docelowego do OVHcloud KMS z operacją
wrapKey(poziom ochronySOFTWARE). Ten klucz towrappingKeyIdużywany w momencie eksportu. - W OVHcloud KMS ustaw
extractablenatruena kluczu serwisowym tuż przed eksportem, a następnie wyeksportuj go opakowany tym kluczem transportowym. Następnie, gdy to możliwe, przywróćextractabledofalse. - Przenieś ciphertext do miejsca docelowego i rozpakuj go prywatnym kluczem transportowym miejsca docelowego.
Nie generuj pary kluczy transportowych eksportu w OVHcloud KMS. Gdyby prywatny klucz transportowy pozostał w OVHcloud KMS, miejsce docelowe nie mogłoby rozpakować ciphertextu. Do OVHcloud KMS importowana jest wyłącznie część publiczna, służąca do opakowywania.
Klucz transportowy wskazany przez wrappingKeyId musi być kluczem RSA SOFTWARE w tej samej domenie OKMS z użyciem wrapKey. Klucze wrażliwe (materiał AES/oct oraz prywatny materiał RSA/EC) można wyodrębnić tylko po opakowaniu — wyodrębnianie w postaci jawnej nie jest obsługiwane dla tych kluczy.
Import publicznego klucza transportowego miejsca docelowego do OVHcloud KMS
Zarejestruj publiczny klucz miejsca docelowego, aby OVHcloud KMS mógł nim opakować eksportowany klucz. Zaimportuj go jako klucz RSA wyłącznie publiczny z wrapKey (bez materiału prywatnego).
Zapisz zwrócone id klucza jako wrappingKeyId.
Włączenie wyodrębniania
Eksportowany klucz musi być możliwy do wyodrębnienia. Preferuj ustawienie extractable na true tylko na czas operacji eksportu (przez PATCH), a następnie przywrócenie wartości false. W miarę możliwości pozostawiaj klucze bez możliwości wyodrębnienia przy tworzeniu: ustawienie klucza jako możliwego do wyodrębnienia trwale ustawia never_extractable na false.
Włączenie wyodrębniania zmniejsza granicę ochrony klucza. Ustawiaj extractable na true tylko wtedy, gdy musisz zmigrować klucz, i przywracaj wartość false potem, gdy to możliwe.
Akcja IAM: okms:apikms:serviceKey/update.
Po udanym eksporcie opakowanym (patrz sekcja Eksport klucza opakowanego kluczem transportowym) wyłącz ponownie wyodrębnianie:
Eksport klucza opakowanego kluczem transportowym
Wywołaj GET /api/{okmsId}/v1/servicekey/{keyId} z poniższymi parametrami zapytania opakowywania. Gdy te parametry są obecne, API zwraca wrappedKeys zamiast jawnych keys.
Akcje IAM: okms:apikms:serviceKey/get na eksportowanym kluczu oraz okms:apikms:serviceKey/wrapKey na kluczu transportowym.
Przykładowa odpowiedź:
Rozpakowanie ciphertextu w miejscu docelowym
Przenieś ciphertext do środowiska docelowego. Rozpakuj go prywatnym kluczem transportowym miejsca docelowego (odpowiednikiem klucza publicznego zaimportowanego do OVHcloud KMS).
- Jeśli miejscem docelowym jest inna domena OKMS, zaimportuj tam opakowany materiał za pomocą
wrappedKeysjak w Import opakowanego klucza, używając identyfikatora klucza transportowego tej domeny jakowrappingKeyId. - Jeśli miejscem docelowym jest system zewnętrzny, użyj jego natywnego API rozpakowywania / importu z prywatnym kluczem transportowym oraz tym samym
keyFormatType/ algorytmem opakowywania, którego użyto przy eksporcie.
Sprawdź również
Korzystanie z OVHcloud Key Management Service (KMS)
Pierwsze kroki z OVHcloud Key Management Service (KMS)
Dołącz do grona naszych użytkowników.