Spec-Zone.ru › AWS CLI v2

[ aws . kms ]

ре-шифрование

Описание

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

Операция ReEncrypt может расшифровывать зашифрованный текст, который был зашифрован с помощью ключа KMS в операции KMS, такой как Encrypt или GenerateDataKey. Она также может расшифровывать зашифрованный текст, который был зашифрован с использованием открытого ключа асимметричного ключа KMS вне KMS. Однако она не может расшифровывать зашифрованный текст, созданный другими библиотеками, такими как Amazon Web Services Encryption SDK или клиентская сторона шифрования Amazon S3. Эти библиотеки возвращают формат зашифрованного текста, несовместимый с KMS.

При использовании операции ReEncrypt необходимо предоставить информацию для операции дешифрования и последующей операции шифрования.

  • Если ваш зашифрованный текст был зашифрован под асимметричным ключом KMS, вы должны использовать параметр SourceKeyId для идентификации ключа KMS, который зашифровал зашифрованный текст. Вы также должны указать алгоритм шифрования, который использовался. Эта информация необходима для расшифровки данных.
  • Если ваш зашифрованный текст был зашифрован под симметричным ключом шифрования KMS, параметр SourceKeyId является необязательным. KMS может получить эту информацию из метаданных, которые он добавляет к блоку симметричного зашифрованного текста. Эта функция добавляет долговечность вашему решению, гарантируя, что авторизованные пользователи могут расшифровывать зашифрованный текст через десятилетия после его шифрования, даже если они потеряли отслеживание идентификатора ключа. Тем не менее, указание исходного ключа KMS всегда рекомендуется как лучшая практика. Когда вы используете параметр SourceKeyId для указания ключа KMS, KMS использует только указанный вами ключ KMS. Если зашифрованный текст был зашифрован под другим ключом KMS, операция ReEncrypt завершается неудачно. Эта практика гарантирует, что вы используете ключ KMS, который вы намеревались использовать.
  • Чтобы перешифровать данные, вы должны использовать параметр DestinationKeyId для указания ключа KMS, который перешифрует данные после их расшифровки. Если целевой ключ KMS является асимметричным ключом KMS, вы также должны указать алгоритм шифрования. Выбранный алгоритм должен быть совместим с ключом KMS.

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

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

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

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

Необходимые разрешения :

  • разрешение kms:ReEncryptFrom на исходный ключ KMS (политика ключа)
  • разрешение kms:ReEncryptTo на целевой ключ KMS (политика ключа)

Чтобы разрешить перешифровку с помощью или к ключу KMS, включите разрешение "kms:ReEncrypt*" в политику ключа. Это разрешение автоматически включается в политику ключа при создании ключа KMS с помощью консоли. Но вы должны включить его вручную при создании ключа KMS программно или при использовании операции PutKeyPolicy для установки политики ключа.

Связанные операции:
  • Расшифровка
  • Шифрование
  • GenerateDataKey
  • GenerateDataKeyPair
Эвентуальная согласованность : API KMS следует модели эвентуальной согласованности. Дополнительную информацию см. в разделе KMS эвентуальная согласованность.

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

Краткое описание

  re-encrypt
--ciphertext-blob <value>
[--source-encryption-context <value>]
[--source-key-id <value>]
--destination-key-id <value>
[--destination-encryption-context <value>]
[--source-encryption-algorithm <value>]
[--destination-encryption-algorithm <value>]
[--grant-tokens <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]

Параметры

--ciphertext-blob (blob)

Шифр данных для повторного шифрования.

--source-encryption-context (map)

Указывает контекст шифрования для расшифровки шифра. Введите тот же контекст шифрования, что и при шифровании шифра.

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

Дополнительную информацию см. в разделе «Контекст шифрования» в Руководстве разработчика службы управления ключами.

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

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

Краткая синтаксическая запись:

KeyName1=string,KeyName2=string

Синтаксис JSON:

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

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

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

Введите идентификатор ключа KMS, который использовался для шифрования шифра. Если вы укажете другой ключ KMS, операция ReEncrypt выбросит исключение IncorrectKeyException.

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

Для указания ключа 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.

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

Уникальный идентификатор ключа KMS, используемого для повторного шифрования данных. Укажите симметричный ключ KMS или асимметричный ключ KMS с значением KeyUsage равным ENCRYPT_DECRYPT. Чтобы найти значение KeyUsage ключа 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.

--destination-encryption-context (map)

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

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

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

Контекст шифрования назначения допустим только при использовании симметричного ключа KMS в качестве ключа назначения. Стандартный формат шифра для асимметричных ключей KMS не включает полей для метаданных.

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

Дополнительную информацию см. в разделе «Контекст шифрования» в Руководстве разработчика службы управления ключами.

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

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

Краткая синтаксическая запись:

KeyName1=string,KeyName2=string

Синтаксис JSON:

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

--source-encryption-algorithm (строка)

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

Укажите тот же алгоритм, который использовался для шифрования шифра. При указании другого алгоритма попытка расшифровки завершится неудачей.

Этот параметр требуется только в случае, если шифр был зашифрован с использованием асимметричного ключа KMS.

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

  • SYMMETRIC_DEFAULT
  • RSAES_OAEP_SHA_1
  • RSAES_OAEP_SHA_256
  • SM2PKE

--destination-encryption-algorithm (строка)

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

Этот параметр требуется только в случае, если ключ KMS назначения является асимметричным ключом KMS.

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

  • SYMMETRIC_DEFAULT
  • RSAES_OAEP_SHA_1
  • RSAES_OAEP_SHA_256
  • SM2PKE

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

Список маркеров разрешений.

Используйте маркер разрешения, когда ваше разрешение на вызов этой операции получено из нового разрешения, которое еще не достигло постепенной согласованности. Дополнительную информацию см. в разделах «Маркер разрешения» и «Использование маркера разрешения» в Руководстве разработчика службы управления ключами.

(строка)

Синтаксис:

"string" "string" ...

--dry-run | --no-dry-run (булево)

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

Дополнительную информацию о том, как использовать этот параметр, см. в разделе «Проверка ваших вызовов API KMS» в Руководстве разработчика службы управления ключами.

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

--generate-cli-skeleton (строка) Выводит каркас JSON в стандартный вывод без отправки запроса к API. Если указано без значения или со значением 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: Перешифрование зашифрованного сообщения с помощью другого симметричного ключа KMS (Linux и macOS).

Следующий пример команды re-encrypt демонстрирует рекомендуемый способ перешифрования данных с помощью AWS CLI.

  • Укажите зашифрованный текст в файле.

    В значении параметра --ciphertext-blob используйте префикс fileb://, который указывает CLI на чтение данных из двоичного файла. Если файл находится не в текущем каталоге, укажите полный путь к файлу. Дополнительную информацию о чтении значений параметров AWS CLI из файла см. в разделе «Загрузка параметров AWS CLI из файла» в Руководстве по командной строке AWS и «Рекомендации по параметрам локальных файлов» в блоге AWS Command Line Tool.

  • Укажите исходный ключ KMS, который расшифровывает зашифрованный текст.

    Параметр --source-key-id не требуется при расшифровке с помощью симметричных ключей KMS. AWS KMS может получить ключ KMS, который использовался для шифрования данных, из метаданных в блоке зашифрованного текста. Однако всегда рекомендуется указывать используемый ключ KMS. Это гарантирует использование необходимого ключа KMS и предотвращает случайное расшифрование зашифрованного текста с помощью недоверенного ключа KMS.

  • Укажите целевой ключ KMS, который перешифровывает данные.

    Параметр --destination-key-id всегда требуется. В этом примере используется ARN ключа, но вы можете использовать любой допустимый идентификатор ключа.

  • Запросите вывод открытого текста в виде текстового значения.

    Параметр --query указывает CLI на получение только значения поля Plaintext из вывода. Параметр --output возвращает вывод в виде текста.

  • Декодируйте открытый текст в Base64 и сохраните его в файл.

    В следующем примере значение параметра Plaintext передаётся в утилиту Base64, которая декодирует его. Затем декодированный вывод перенаправляется в файл ExamplePlaintext.

Перед выполнением этой команды замените примерные идентификаторы ключей на действительные идентификаторы ключей из вашей учетной записи AWS.

aws kms re-encrypt \
    --ciphertext-blob fileb://ExampleEncryptedFile \
    --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \
    --query CiphertextBlob \
    --output text | base64 --decode > ExampleReEncryptedFile

Эта команда не генерирует вывод. Вывод команды re-encrypt декодируется в Base64 и сохраняется в файле.

Дополнительную информацию см. в разделе `ReEncrypt <https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html`__ в справочнике по API AWS Key Management Service.

Пример 2: Перешифрование зашифрованного сообщения с помощью другого симметричного ключа KMS (командная строка Windows).

Следующий пример команды re-encrypt аналогичен предыдущему, за исключением того, что он использует утилиту certutil для декодирования данных открытого текста в Base64. Этот процесс требует двух команд, как показано в следующих примерах.

Перед выполнением этой команды замените примерный идентификатор ключа на действительный идентификатор ключа из вашей учетной записи AWS.

aws kms re-encrypt ^
    --ciphertext-blob fileb://ExampleEncryptedFile ^
    --source-key-id 1234abcd-12ab-34cd-56ef-1234567890ab ^
    --destination-key-id 0987dcba-09fe-87dc-65ba-ab0987654321 ^
    --query CiphertextBlob ^
    --output text > ExampleReEncryptedFile.base64

Затем используйте утилиту certutil

certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile

Вывод:

Input Length = 18
Output Length = 12
CertUtil: -decode command completed successfully.

Дополнительную информацию см. в разделе `ReEncrypt <https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html`__ в справочнике по API AWS Key Management Service.

Вывод

CiphertextBlob -> (блок)

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

SourceKeyId -> (строка)

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

KeyId -> (строка)

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

SourceEncryptionAlgorithm -> (строка)

Алгоритм шифрования, который использовался для расшифровки зашифрованного текста перед перешифрованием.

DestinationEncryptionAlgorithm -> (строка)

Алгоритм шифрования, который использовался для перешифрования данных.

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

Spec-Zone.ru

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