Создание CMK с использованием импорта компонентов ключей

С помощью функции импорта можно использовать собственные компоненты ключей.

  1. Войдите в консоль управления.

  2. В разделе Security выберите Data Encryption Workshop. Откроется страница Key Management Service.

  3. Нажмите Import Key.

  4. Активируйте чек-бокс I understand the security and durability of using an imported key.

  5. Нажмите Next.

  6. Нажмите Download. Будут загружены следующие файлы: wrappingKey, importToken и README:

    • wrappingKey_CMKID_DownloadTime — ключ (wrapping key) для шифрования компонентов.

    • importToken_CMKID_DownloadTime — токен, используемый для импорта компонентов ключа в KMS.

    • README_CMKID_DownloadTime — серийный номер CMK, алгоритм шифрования, название обертки ключа, название файла токена и срок действия файла токена и ключа (wrapping key).

    Примечание

    Срок действия ключа (wrapping key) и токена истекает через 24 часа. После этого требуется повторная загрузка.

    1. API-запрос «get-parameters-for-import» для ключа (wrapping key) и токен импорта.

      Следующий пример описывает, как получить ключ (wrapping key) и токен импорта CMK (ID: 43f1ffd7-18fb-4568-9575-602e009b7ee8; алгоритм шифрования: RSAES_PKCS1_V1_5).

      public_key: содержимое обертки ключа (кодировка Base-64), которое возвращается после API-запроса.

      import_token: содержимое токена импорта (кодировка Base-64), которое возвращается после API-запроса.

      Пример запроса

      {
        "key_id": "43f1ffd7-18fb-4568-9575-602e009b7ee8",
        "wrapping_algorithm":"RSAES_PKCS1_V1_5"
      }
      

      Пример ответа

      {
        "key_id": "43f1ffd7-18fb-4568-9575-602e009b7ee8",
        "public_key":"public key base64 encoded data",
        "import_token":"import token base64 encoded data",
        "expiration_time":1501578672
      }
      
    2. Сохраните ключ (wrapping key) и сконвертируйте его по процедуре ниже. В консоль управления можно импортировать только компоненты ключа, зашифрованные с помощью преобразованного ключа (wrapping key).

      • скопируйте содержимое ключа (wrapping key) public_key, сохраните в файле .txt как «PublicKey.b64»;

      • выполните следующую команду, чтобы преобразовать кодировку Base-64 файла PublicKey.b64 в бинарные данные и сохраните сконвертированный файл как «PublicKey.bin»:

        {
          openssl enc -d -base64 -A -in PublicKey.b64 -out PublicKey.bin
        }
        
    3. Сохраните токен импорта, скопируйте содержимое токена import_token, вставьте это в файл .txt и сохраните как «ImportToken.b64».

  7. С помощью файла wrappingKey зашифруйте компоненты для импорта следующими способами:

    • используйте загруженную обертку ключа для шифрования компонентов в HSM;

    • OpenSSL.

    Примечание

    Для запуска команды openssl pkeyutl нужна версия OpenSSL должна быть 1.0.2 или новее.

    Следующий пример описывает, как использовать загруженный ключ (wrapping key), чтобы зашифровать сгенерированный компонент ключа (256-битный симметричный ключ).

    1. Чтобы сгенерировать компонент ключа (256-битный симметричный ключ) и сохранить как «PlaintextKeyMaterial.bin», запустите команду:

      {
        openssl rand -out PlaintextKeyMaterial.bin 32
      }
      
    2. Используйте загруженный ключ (wrapping key) для шифрования компонентов и сохраните как «EncryptedKeyMaterial.bin». Замените «PublicKey.bin» в команде с названием ключа (wrapping key) wrappingKey_key ID_download time.

  8. Нажмите Next.

  9. Нажмите Next.

  10. Нажмите ОК.

В списке CMK будут отображены импортированные компоненты со статусом «Enabled».