Spec-Zone.ru › AWS CLI v2

[ aws . kms ]

generate-data-key

Описание

Возвращает уникальный симметричный ключ данных для использования вне KMS. Данная операция возвращает текстовую копию ключа данных и копию, зашифрованную с помощью указанного симметричного ключа шифрования KMS. Байты в текстовом ключе случайны; они не связаны с вызывающей стороной или ключом KMS. Вы можете использовать текстовый ключ для шифрования ваших данных вне KMS и хранить зашифрованный ключ данных вместе с зашифрованными данными.

Для генерации ключа данных укажите симметричный ключ шифрования KMS, который будет использоваться для шифрования ключа данных. Нельзя использовать асимметричный ключ KMS для шифрования ключей данных. Чтобы получить тип своего ключа KMS, используйте операцию DescribeKey.

Вы также должны указать длину ключа данных. Используйте либо параметр KeySpec, либо NumberOfBytes (но не оба). Для 128-битных и 256-битных ключей данных используйте параметр KeySpec.

Для генерации 128-битного ключа данных SM4 (только регионы Китая) укажите значение параметра KeySpec, равное AES_128, или значение параметра NumberOfBytes, равное 16. Симметричный ключ шифрования, используемый в регионах Китая для шифрования вашего ключа данных, является ключом шифрования SM4.

Чтобы получить только зашифрованную копию ключа данных, используйте GenerateDataKeyWithoutPlaintext. Чтобы сгенерировать пару асимметричных ключей данных, используйте операцию GenerateDataKeyPair или GenerateDataKeyPairWithoutPlaintext. Чтобы получить криптографически безопасную случайную строку байтов, используйте GenerateRandom.

Вы можете использовать необязательный контекст шифрования для добавления дополнительной безопасности к операции шифрования. Если вы укажете EncryptionContext, вы должны указать тот же контекст шифрования (точная совпадающая строка, чувствительная к регистру) при расшифровке зашифрованного ключа данных. В противном случае запрос на расшифровку завершится с ошибкой InvalidCiphertextException. Дополнительную информацию см. в разделе Контекст шифрования в руководстве разработчика службы управления ключами.

GenerateDataKey также поддерживает Amazon Web Services Nitro Enclaves, которые предоставляют изолированную вычислительную среду в Amazon EC2. Чтобы вызвать GenerateDataKey для Amazon Web Services Nitro enclave, используйте SDK Amazon Web Services Nitro Enclaves или любой другой SDK Amazon Web Services. Используйте параметр Recipient для предоставления документа подтверждения enclave. GenerateDataKey возвращает копию ключа данных, зашифрованного с помощью указанного ключа KMS, как обычно. Но вместо текстовой копии ключа данных ответ включает копию ключа данных, зашифрованного с помощью открытого ключа из документа подтверждения (CiphertextForRecipient). Дополнительную информацию о взаимодействии между KMS и Amazon Web Services Nitro Enclaves см. в разделе Как Amazon Web Services Nitro Enclaves использует KMS в руководстве разработчика службы управления ключами.

Ключ KMS, который вы используете для этой операции, должен находиться в совместимом состоянии. Подробности см. в разделе Состояния ключей ключей KMS в руководстве разработчика службы управления ключами.

Как использовать ваш ключ данных

Мы рекомендуем использовать следующую схему для шифрования данных локально в вашем приложении. Вы можете написать свой собственный код или использовать библиотеку шифрования на стороне клиента, например, Amazon Web Services Encryption SDK, Amazon DynamoDB Encryption Client или Amazon S3 клиент-стороны шифрование для выполнения этих задач за вас.

Для шифрования данных вне KMS:

  • Используйте операцию GenerateDataKey для получения ключа данных.
  • Используйте текстовый ключ данных (в поле Plaintext ответа) для шифрования ваших данных вне KMS. Затем удалите текстовый ключ данных из памяти.
  • Храните зашифрованный ключ данных (в поле CiphertextBlob ответа) вместе с зашифрованными данными.

Для расшифровки данных вне KMS:

  • Используйте операцию Decrypt для расшифровки зашифрованного ключа данных. Операция возвращает текстовую копию ключа данных.
  • Используйте текстовый ключ данных для расшифровки данных вне KMS, затем удалите текстовый ключ данных из памяти.

Использование в других учетных записях : Да. Чтобы выполнить эту операцию с ключом KMS в другой учетной записи Amazon Web Services, укажите ARN ключа или ARN псевдонима в значении параметра KeyId.

Требуемые разрешения : kms:GenerateDataKey (политика ключа)

Связанные операции:

  • Decrypt
  • Encrypt
  • GenerateDataKeyPair
  • GenerateDataKeyPairWithoutPlaintext
  • GenerateDataKeyWithoutPlaintext
Последовательная согласованность : API KMS следует модели последовательной согласованности. Дополнительную информацию см. в разделе Последовательная согласованность KMS.

См. также: Документация API AWS

Синопсис

  generate-data-key
--key-id <value>
[--encryption-context <value>]
[--number-of-bytes <value>]
[--key-spec <value>]
[--grant-tokens <value>]
[--recipient <value>]
[--dry-run | --no-dry-run]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]

Параметры

--key-id (строка)

Указывает симметричный ключ KMS, который шифрует ключ данных. Вы не можете указать асимметричный ключ KMS или ключ KMS в пользовательском хранилище ключей. Чтобы получить тип и происхождение вашего ключа KMS, используйте операцию DescribeKey.

Для указания ключа KMS используйте его идентификатор ключа, ARN ключа, имя псевдонима или ARN псевдонима. При использовании имени псевдонима добавьте префикс "alias/" . Для указания ключа KMS в другом аккаунте Amazon Web Services необходимо использовать ARN ключа или ARN псевдонима.

Например:

  • Идентификатор ключа: 1234abcd-12ab-34cd-56ef-1234567890ab
  • ARN ключа: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
  • Имя псевдонима: alias/ExampleAlias
  • ARN псевдонима: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias

Чтобы получить идентификатор и ARN ключа KMS, используйте ListKeys или DescribeKey . Чтобы получить имя и ARN псевдонима, используйте ListAliases .

--encryption-context (массив)

Указывает контекст шифрования, который будет использован при шифровании ключа данных.

Предупреждение

Не включайте конфиденциальную или чувствительную информацию в это поле. Это поле может быть отображено в виде обычного текста в журнале CloudTrail и других результатах.

Контекст шифрования — это набор пар «ключ-значение», которые представляют дополнительные аутентифицированные данные. При шифровании данных с использованием контекста шифрования, вы должны указать тот же (точная совпадение, учитывая регистр) контекст шифрования для расшифровки данных. Контекст шифрования поддерживается только для операций с симметричными ключами KMS. В операциях с симметричными ключами KMS контекст шифрования является необязательным, но его настоятельно рекомендуется использовать.

Для получения дополнительной информации см. Контекст шифрования в руководстве разработчика Key Management Service.

ключ -> (строка)

значение -> (строка)

Сокращенная синтаксис:

KeyName1=string,KeyName2=string

Синтаксис JSON:

{"string": "string"
  ...}

--number-of-bytes (целое число)

Указывает длину ключа данных в байтах. Например, используйте значение 64 для генерации ключа данных 512 бит (64 байта — 512 бит). Для ключей данных 128 бит (16 байт) и 256 бит (32 байта) используйте параметр KeySpec.

Вы должны указать либо параметр KeySpec, либо параметр NumberOfBytes (но не оба) в каждом запросе GenerateDataKey.

--key-spec (строка)

Указывает длину ключа данных. Используйте AES_128 для генерации симметричного ключа 128 бит или AES_256 для генерации симметричного ключа 256 бит.

Вы должны указать либо параметр KeySpec, либо параметр NumberOfBytes (но не оба) в каждом запросе GenerateDataKey.

Возможные значения:

  • AES_256
  • AES_128

--grant-tokens (список)

Список маркеров гранта.

Используйте маркер гранта, когда ваше разрешение на вызов этой операции получено из нового гранта, который еще не достиг событийной согласованности. Для получения дополнительной информации см. Маркер гранта и Использование маркера гранта в руководстве разработчика Key Management Service.

(строка)

Синтаксис:

"string" "string" ...

--recipient (структура)

Подписанный документ подтверждения от Amazon Web Services Nitro enclave и алгоритм шифрования для использования с открытым ключом enclave. Единственный допустимый алгоритм шифрования — RSAES_OAEP_SHA_256.

Этот параметр поддерживает только документы подтверждения для Amazon Web Services Nitro Enclaves. Чтобы включить этот параметр, используйте SDK Amazon Web Services Nitro Enclaves или любой другой SDK Amazon Web Services.

При использовании этого параметра вместо возвращения открытого ключа данных KMS шифрует открытый ключ данных под открытым ключом в документе подтверждения и возвращает полученный зашифрованный текст в поле CiphertextForRecipient в ответе. Этот зашифрованный текст может быть расшифрован только с помощью закрытого ключа в enclave. Поле CiphertextBlob в ответе содержит копию ключа данных, зашифрованного под ключом KMS, указанным параметром KeyId. Поле Plaintext в ответе равно null или пусто.

Сведения о взаимодействии KMS и Amazon Web Services Nitro Enclaves см. в разделе Как Amazon Web Services Nitro Enclaves использует KMS в руководстве разработчика Key Management Service.

KeyEncryptionAlgorithm -> (строка)

Алгоритм шифрования, который KMS должен использовать с открытым ключом Amazon Web Services Nitro Enclave для шифрования открытых значений для ответа. Единственное допустимое значение — RSAES_OAEP_SHA_256.

AttestationDocument -> (бинарный)

Документ подтверждения для Amazon Web Services Nitro Enclave. Этот документ содержит открытый ключ enclave.

Сокращенная синтаксис:

KeyEncryptionAlgorithm=string,AttestationDocument=blob

Синтаксис JSON:

{
  "KeyEncryptionAlgorithm": "RSAES_OAEP_SHA_256",
  "AttestationDocument": blob
}

--dry-run | --no-dry-run (логическое значение)

Проверяет, будет ли запрос успешным. DryRun — это необязательный параметр.

Дополнительную информацию об использовании этого параметра см. в разделе Тестирование вызовов API KMS в руководстве разработчика Key Management Service.

--cli-input-json | --cli-input-yaml (строка) Читает аргументы из предоставленной JSON-строки. JSON-строка следует формату, предоставленному --generate-cli-skeleton. Если другие аргументы предоставляются в командной строке, эти значения переопределяют значения, предоставленные JSON. Невозможно передавать произвольные двоичные значения с помощью значения, предоставленного JSON, так как строка будет воспринята буквально. Это не может быть указано вместе с --cli-input-yaml.

--generate-cli-skeleton (строка) Выводит JSON-скелет в стандартный вывод без отправки запроса API. Если предоставлено значение null или значение input, выводит пример входного JSON, который можно использовать в качестве аргумента для --cli-input-json. Аналогично, если предоставлено значение yaml-input, он выведет пример входного YAML, который можно использовать с --cli-input-yaml. Если предоставлено значение output, он валидирует входные данные команд и возвращает пример выходного JSON для этой команды. Сгенерированный JSON-скелет не является стабильным между версиями AWS CLI, и нет гарантий обратной совместимости в сгенерированном JSON-скелете.

Глобальные параметры

--debug (логическое значение)

Включить отладочную запись.

--endpoint-url (строка)

Переопределить URL по умолчанию команды заданным URL.

--no-verify-ssl (логическое значение)

По умолчанию AWS CLI использует SSL при общении с сервисами AWS. Для каждого соединения SSL AWS CLI проверяет сертификаты SSL. Этот параметр переопределяет поведение проверки сертификатов SSL по умолчанию.

--no-paginate (логическое значение)

Отключить автоматическую постраничную навигацию. Если автоматическая постраничная навигация отключена, AWS CLI сделает только один вызов для первой страницы результатов.

--output (строка)

Стиль форматирования для вывода команд.

  • json
  • text
  • table
  • yaml
  • yaml-stream

--query (строка)

Запрос JMESPath для фильтрации данных ответа.

--profile (строка)

Использовать определенный профиль из файла учетных данных.

--region (строка)

Используемый регион. Переопределяет настройки конфигурации/среды.

--version (строка)

Отобразить версию этого инструмента.

--color (строка)

Включение/выключение цветного вывода.

  • on
  • off
  • auto

--no-sign-request (логическое значение)

Не подписывать запросы. Учетные данные не будут загружены, если этот аргумент предоставлен.

--ca-bundle (строка)

Файл сертификатов CA для проверки сертификатов SSL. Переопределяет настройки конфигурации/среды.

--cli-read-timeout (целое число)

Максимальное время чтения сокета в секундах. Если значение равно 0, чтение сокета будет блокирующим и не будет иметь таймаута. Значение по умолчанию — 60 секунд.

--cli-connect-timeout (целое число)

Максимальное время подключения сокета в секундах. Если значение равно 0, подключение сокета будет блокирующим и не будет иметь таймаута. Значение по умолчанию — 60 секунд.

--cli-binary-format (строка)

Стиль форматирования, используемый для бинарных блоков. По умолчанию используется формат base64. Формат base64 ожидает, что бинарные блоки будут предоставлены как строка в кодировке base64. Формат raw-in-base64-out сохраняет совместимость с поведением AWS CLI V1, и бинарные значения должны передаваться буквально. При предоставлении содержимого из файла, соответствующего бинарному блоку, fileb:// всегда будет обрабатываться как бинарный и будет использовать содержимое файла непосредственно независимо от параметра cli-binary-format. При использовании file:// содержимое файла должно быть должным образом отформатировано для настроенного параметра cli-binary-format.

  • base64
  • raw-in-base64-out

--no-cli-pager (логическое значение)

Отключить пейджер CLI для вывода.

--cli-auto-prompt (логическое значение)

Автоматически запрашивать параметры ввода CLI.

--no-cli-auto-prompt (логическое значение)

Отключить автоматическую запрос параметров ввода CLI.

Примеры

Примечание

Чтобы использовать следующие примеры, у вас должен быть установлен и настроен AWS CLI. Дополнительную информацию см. в руководстве «Начало работы» в руководстве пользователя AWS CLI.

Если не указано иное, все примеры используют правила цитирования, подобные Unix. Эти примеры необходимо адаптировать к правилам цитирования вашей оболочки. См. раздел «Использование кавычек со строками» в руководстве пользователя AWS CLI.

Пример 1: Генерация симметричного ключа данных длиной 256 бит

В следующем примере запрашивается симметричный ключ данных длиной 256 бит для использования за пределами AWS. Команда возвращает открытый ключ данных для немедленного использования и удаления, а также копию этого ключа данных, зашифрованную с помощью указанного ключа KMS. Вы можете безопасно хранить зашифрованный ключ данных вместе с зашифрованными данными.

Чтобы запросить ключ данных длиной 256 бит, используйте параметр key-spec со значением AES_256. Чтобы запросить ключ данных длиной 128 бит, используйте параметр key-spec со значением AES_128. Для всех остальных длин ключей данных используйте параметр number-of-bytes.

Ключ KMS, который вы указываете, должен быть симметричным ключом шифрования KMS, то есть ключом KMS со значением спецификации ключа SYMMETRIC_DEFAULT.

aws kms generate-data-key \
    --key-id alias/ExampleAlias \
    --key-spec AES_256

Вывод:

{
    "Plaintext": "VdzKNHGzUAzJeRBVY+uUmofUGGiDzyB3+i9fVkh3piw=",
    "KeyId": "arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "CiphertextBlob": "AQEDAHjRYf5WytIc0C857tFSnBaPn2F8DgfmThbJlGfR8P3WlwAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDEFogLqPWZconQhwHAIBEIA7d9AC7GeJJM34njQvg4Wf1d5sw0NIo1MrBqZa+YdhV8MrkBQPeac0ReRVNDt9qleAt+SHgIRF8P0H+7U="
}

Plaintext (открытый ключ данных) и CiphertextBlob (зашифрованный ключ данных) возвращаются в формате Base64.

Для получения дополнительной информации см. `Ключи данных <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys`__ в Руководстве разработчика службы управления ключами AWS.

Пример 2: Генерация симметричного ключа данных длиной 512 бит

В следующем примере запрашивается симметричный ключ данных длиной 512 бит для шифрования и дешифрования. Команда возвращает открытый ключ данных для немедленного использования и удаления, а также копию этого ключа данных, зашифрованную с помощью указанного ключа KMS. Вы можете безопасно хранить зашифрованный ключ данных вместе с зашифрованными данными.

Чтобы запросить длину ключа, отличную от 128 или 256 бит, используйте параметр number-of-bytes. Чтобы запросить ключ данных длиной 512 бит, в следующем примере используется параметр number-of-bytes со значением 64 (байта).

Ключ KMS, который вы указываете, должен быть симметричным ключом шифрования KMS, то есть ключом KMS со значением спецификации ключа SYMMETRIC_DEFAULT.

ПРИМЕЧАНИЕ. Значения в выводе этого примера усечены для отображения.

aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --number-of-bytes 64

Вывод:

{
    "CiphertextBlob": "AQIBAHi6LtupRpdKl2aJTzkK6FbhOtQkMlQJJH3PdtHvS/y+hAEnX/QQNmMwDfg2korNMEc8AAACaDCCAmQGCSqGSIb3DQEHBqCCAlUwggJRAgEAMIICSgYJKoZ...",
    "Plaintext": "ty8Lr0Bk6OF07M2BWt6qbFdNB+G00ZLtf5MSEb4al3R2UKWGOp06njAwy2n72VRm2m7z/Pm9Wpbvttz6a4lSo9hgPvKhZ5y6RTm4OovEXiVfBveyX3DQxDzRSwbKDPk/...",
    "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}

Plaintext (открытый ключ данных) и CiphertextBlob (зашифрованный ключ данных) возвращаются в формате Base64.

Для получения дополнительной информации см. `Ключи данных <https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#data-keys`__ в Руководстве разработчика службы управления ключами AWS.

Вывод

CiphertextBlob -> (blob)

Зашифрованная копия ключа данных. При использовании HTTP API или Amazon Web Services CLI значение кодируется в Base64. В противном случае оно не кодируется в Base64.

Plaintext -> (blob)

Открытый ключ данных. При использовании HTTP API или Amazon Web Services CLI значение кодируется в Base64. В противном случае оно не кодируется в Base64. Используйте этот ключ данных для шифрования данных за пределами KMS. Затем как можно скорее удалите его из памяти.

Если ответ включает поле CiphertextForRecipient, поле Plaintext имеет значение null или пустое.

KeyId -> (строка)

Amazon Resource Name (ARN) ключа KMS, который зашифровал ключ данных.

CiphertextForRecipient -> (blob)

Открытый ключ данных, зашифрованный с помощью открытого ключа из контейнера Nitro. Этот зашифрованный текст можно расшифровать только с помощью закрытого ключа в контейнере Nitro.

Это поле включается в ответ только в том случае, если параметр Recipient в запросе содержит действительный документ аутентификации из контейнера Amazon Web Services Nitro. Дополнительную информацию об взаимодействии между KMS и Amazon Web Services Nitro Enclaves см. в разделе «Как Amazon Web Services Nitro Enclaves использует KMS» в Руководстве разработчика службы управления ключами.

© Copyright 2025, Amazon Web Services. Created using Sphinx.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API