データキーをランダムに生成し、CMKと公開キーを使用してデータキーを暗号化します。 この操作は、CMKを使用して暗号化されたデータキーの暗号文と、公開キーを使用して暗号化されたデータキーの暗号文の両方を返します。

データキーを暗号化モジュールにインポートするには、次の手順を実行することを推奨します。

  • GenerateAndExportDataKey操作を呼び出してデータキーを生成し、CMKを使用して暗号化されたデータキーと公開キーを使用して暗号化されたデータキーの両方の暗号文を取得します。
  • CMKを使用して暗号化されたデータキーの暗号文をKMS Secrets ManagerまたはApsaraDBなどのストレージサービスに保存します。 この暗号文は、バックアップと復元に使用されます。
  • 公開鍵を使用して暗号化されたデータ鍵の暗号文を、秘密鍵が格納されている暗号モジュールにインポートします。 次に、データキーを使用してデータを暗号化または復号化できます。
この操作の要求で指定したCMKは、データキーの暗号化にのみ使用され、データキーの生成には関与しません。 KMSは、この操作を呼び出してランダムに生成されたデータキーを記録または保存しません。 データキーと返された暗号文に注意する必要があります。

デバッグ

OpenAPI Explorer は署名値を自動的に計算します。 この操作は、OpenAPI Explorer で呼び出すことを推奨します。 OpenAPI Explorer は、さまざまな SDK に対して操作のサンプルコードを動的に生成します。

リクエストパラメーター

パラメーター データ型 必須/任意 説明
アクション String 必須 GenerateAndExportDataKey

実行する操作です。 値をGenerateAndExportDataKeyに設定します。

KeyId String 必須 1234abcd-12ab-34cd-56ef-12345678 ****

CMKのグローバル一意ID。 このパラメーターをCMKにバインドされているエイリアスに設定することもできます。 詳細については、「エイリアスの使用」をご参照ください。

PublicKeyBlob String 必須 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAndKfC2ReLL2 + y8a0 + ZBBeAft/uBYo86GZiYJuflqgUzKxpyuvlo3uQkBv6b + nx + 0tz8g8v7GhpPWMSW5L9mNHYsvYFsa7jTxsYdt17yj6GlUHPuMIs8hr5qbwl38IHU1iIa7nYWwE2fb3ePOvLDACRJVgGpU0yxioW80d2QD + xbmNuq7Rp + H9VJB9dyYOwqnW3RhOLBo21FzpORapf0UiRlrHRpk1V6ez + aE1dofaYh/9bh0m6ioxj7j5hpZbWccuEZTMBKd + cbuBkRhJzc6Tti6qwZbDiu4fUwbZS0Tqpuo1UadiyxMW ********

Base64-encoded公開鍵。

WrappingAlgorithm String 必須 RSAES_OAEP_SHA_256

PublicKeyBlobで指定された公開鍵を使用してデータ鍵を暗号化するための暗号化アルゴリズム。 暗号化アルゴリズムの詳細については、「AsymmetricDecrypt」をご参照ください。

設定可能な値は以下のとおりです。

  • RSAES_OAEP_SHA_256
  • RSAES_OAEP_SHA_1
  • SM2PKE
WrappingKeySpec String 必須 RSA_2048

PublicKeyBlobで指定された公開キーのキータイプ。 キーの種類の詳細については、「非対称キーの概要」をご参照ください。

設定可能な値は以下のとおりです。

  • RSA_2048
  • EC_SM2
KeySpec String 任意 AES_256

生成するデータキーの長さ。 設定可能な値は以下のとおりです。

  • AES_256: 256ビットの対称キー
  • AES_128: 128ビットの対称キー
KeySpecまたはNumberOfBytesパラメーターを使用して、データキーの長さを指定することを推奨します。 両方のパラメーターが指定されていない場合、KMSは256ビットのデータキーを生成します。 両方のパラメーターが指定されている場合、KMSはKeySpecパラメーターを無視します。
NumberOfBytes Integer 任意 32

生成するデータキーの長さ。

有効な値: 1 ~ 1024

単位:バイト

EncryptionContext ジェソン 任意 {"Example":"Example"}

キーと値のペアのJSON文字列。 ここでこのパラメーターを指定すると、データキーを復号化または再暗号化するときに同等の値が必要になります。 詳細については、「EncryptionContext」をご参照ください。

レスポンスパラメーター

パラメーター データ型 説明
CiphertextBlob String ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b + i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS ****

プライマリCMKバージョンを使用して暗号化されたデータキーの暗号文。

ExportedDataKey String BQKP 1zK6 ZEMxTP5qaVzcsgXtWplYBKm0NXdSnB5FzliFxE1bSiu4dnEIlca2JpeH7yz1/S6fed630H hIH6DoM25fTLNcKj mFB0Xnh9m2 HN59Mn4qyTfcUeadnfCXSWcGBouhXFwcdd2rJ3n337bzTf4jm659gZu3L0i6PLuxM9p7mqdwO0cKJPfGVfhnfMz f4alMg79WB/NNyE2lyX7/qxvV49ObNrrJbKSFiz8Djocaf0IESNLMbfYI5bXjWkJlX92DQbKhibtQW8ZOJ // ZC6t0AWcUoKL6QDm/dg5koQalcleRinpB

公開鍵を使用して暗号化され、エクスポートされたデータ鍵。

KeyId String 599fa825-17de-417e-9554-bb032cc6 ****

グローバルに一意な CMK の ID。

KeyIdパラメーターをエイリアスに設定すると、エイリアスがバインドされているCMKのIDが返されます。
KeyVersionId String 2ab1a983-7072-4bbc-a582-584b5bd8 ****

プレーンテキストの暗号化に使用されるCMKバージョンのID。 CMKのプライマリバージョンです。

RequestId String 7021b6ec-4be7-4d3c-8a68-1e85d4d515a0

リクエストの ID です。

リクエストの例

http(s)://[Endpoint]/?Action=GenerateAndExportDataKey
&KeyId=1234abcd-12ab-34cd-56ef-12345678 ****
&PublicKeyBlob=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAndKfC2ReLL2 + y8a0 + ZBBeAft/uBYo86GZiYJuflqgUzKxpyuvlo3uQkBv6b + nx + 0tz8g8v7GhpPWMSW5L9mNHYsvYFsa7jTxsYdt17yj6GlUHPuMIs8hr5qbwl38IHU1iIa7nYWwE2fb3ePOvLDACRJVgGpU0yxioW80d2QD + xbmNuq7Rp + H9VJB9dyYOwqnW3RhOLBo21FzpORapf0UiRlrHRpk1V6ez + aE1dofaYh/9bh0m6ioxj7j5hpZbWccuEZTMBKd + cbuBkRhJzc6Tti6qwZbDiu4fUwbZS0Tqpuo1UadiyxMW ********
&WrappingAlgorithm=RSAES_OAEP_SHA_256
&WrappingKeySpec=RSA_2048
&<共通リクエストパラメーター>

正常に処理された場合のレスポンス例

XML 形式

<KMS>
          <KeyId>202b9877-5a25-46e3-a763-e20791b5****</KeyId>
          <KeyVersionId>2ab1a983-7072-4bbc-a582-584b5bd8****</KeyVersionId>
          <CiphertextBlob>ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b + i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS ****</CiphertextBlob>
          <ExportedDataKey>BQKP + 1zK6 + ZEMxTP5qaVzcsgXtWplYBKm0NXdSnB5FzliFxE1bSiu4dnEIlca2JpeH7yz1/S6fed630H + hIH6DoM25fTLNcKj + mFB0Xnh9m2 + HN59Mn4qyTfcUeadnfCXSWcGBouhXFwcdd2rJ3n337bzTf4jm659gZu3L0i6PLuxM9p7mqdwO0cKJPfGVfhnfMz f4alMg79WB/NNyE2lyX7/qxvV49ObNrrJbKSFiz8Djocaf0IESNLMbfYI5bXjWkJlX92DQbKhibtQW8ZOJ // ZC6t0AWcUoKL6QDm /dg5koK9Z*Vm*
          <RequestId>4bd560a1-729e-45f1-a3d9-b2a33d61046b</RequestId>
</KMS>

JSON 形式

{
    "KeyId": "202b9877-5a25-46e3-a763-e20791b5****",
    "KeyVersionId": "2ab1a983-7072-4bbc-a582-584b5bd8****",
    "CiphertextBlob":"ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b + i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS ****" 、
    "ExportedDataKey": "BQKP 1zK6 ZEMxTP5qaVzcsgXtWplYBKm0NXdSnB5FzliFxE1bSiu4dnEIlca2JpeH7yz1/S6fed630H hIH6DoM25fTLNcKj mFB0Xnh9m2 HN59Mn4qyTfcUeadnfCXSWcGBouhXFwcdd2rJ3n337bzTf4jm659gZu3L0i6PLuxM9p7mqdwO0cKJPfGVfhnfMz f4alMg79WB/NNyE2lyX7/qxvV49ObNrrJbKSFiz8Djocaf0IESNLMbfYI5bXjWkJlX92DQbKhibtQW8ZOJ // ZC6t0AWcUoKL6QDm /dg5kocleB Rinp*Ls*V4F*
    "RequestId": "207596a2-36d3-4840-b1bd-f87044699bd7"
}

エラーコード

HTTP ステータスコード エラーコード エラーメッセージ 説明
404 Forbidden.KeyNotFound 指定されたキーが見つかりません。 指定されたキーが存在しない場合に返されるエラーメッセージ。

エラーコードリストについては、「API エラーセンター」をご参照ください。