ローカルでデータを暗号化するために使用されるランダムなデータキーを生成します。

この操作では、ランダムなデータキーが作成され、指定された顧客マスターキー (CMK) を使用してデータキーが暗号化され、データキーの平文と暗号文が返されます。 データキーの平文を使用して、KMSを使用せずにデータをローカルで暗号化し、暗号化されたデータをデータキーの暗号文と一緒に保存できます。 応答のplaintextパラメーターからデータキーの平文を取得し、応答のCiphertextBlobパラメーターからデータキーの暗号文を取得できます。

この操作の要求で指定したCMKは、データキーの暗号化にのみ使用され、データキーの生成には関与しません。 KMSは、生成されたデータキーを記録または保存しません。 したがって、データキーの暗号文を永続ストレージに保存する必要があります。

次の手順を実行して、データをローカルで暗号化することを推奨します。

1。 GenerateDataKey操作を呼び出します。

2. 取得したデータキーのプレーンテキストを使用して、KMSを使用せずにデータをローカルで暗号化します。 次に、データキーの平文をメモリから削除します。

3. 暗号化されたデータを、取得したデータキーの暗号文と一緒に保存します。

次の手順を実行して、データをローカルで復号することを推奨します。

  • Decrypt操作を呼び出して、ローカルに保存されているデータキーの暗号文を復号します。 データキーの平文が返されます。
  • データキーの平文を使用してデータをローカルで復号し、データキーの平文をメモリから削除します。

この例では、IDが7906979c-8e06-46a2-be2d-68e3ccbc **** のCMKに対してランダムなデータキーが生成されます。

デバッグ

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

リクエストパラメーター

パラメーター データ型 必須/任意 説明
操作 String 必須 GenerateDataKey

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

KeyId String 必須 7906979c-8e06-46a2-be2d-68e3ccbc ****

CMKのID。 IDはグローバルに一意である必要があります。

You can also set this parameter to an alias that is bound to the CMK. 詳細については、「エイリアスの概要」をご参照ください。

KeySpec String 任意 AES_256

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

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

生成するデータキーの長さ。 単位:バイト

有効な値: 1 ~ 1024

デフォルト値:

  • KeySpecパラメーターがAES_256に設定されている場合、NumberOfBytesパラメーターの値を32に設定します。
  • KeySpecパラメーターがAES_128に設定されている場合、NumberOfBytesパラメーターの値を16に設定します。
EncryptionContext Map 任意 {"例":"例"}

キーと値のペアで構成されるJSON文字列。

このパラメーターを指定すると、Decrypt操作を呼び出すときに同等の値が必要になります。 詳細については、「EncryptionContext」をご参照ください。

共通リクエストパラメーターの詳細については、「共通パラメーター」をご参照ください。

レスポンスパラメーター

パラメーター データ型 説明
KeyVersionId String 2ab1a983-7072-4bbc-a582-584b5bd8 ****

CMKバージョンのID。 IDはグローバルに一意である必要があります。

KeyId String 7906979c-8e06-46a2-be2d-68e3ccbc ****

CMKのID。 IDはグローバルに一意である必要があります。

リクエストのKeyIdパラメーターをCMKのエイリアスに設定すると、エイリアスがバインドされているCMKのIDが返されます。
CiphertextBlob String ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b + i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS ****

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

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

リクエストのID。問題の特定とトラブルシューティングに使用されます。

Plaintext String QmFzZTY0IGVuY29kZWQgcGxhaW50 ****

データキーのBase64エンコードされた平文。

リクエストの例

http(s)://[Endpoint]/?Action=GenerateDataKey
&KeyId=7906979c-8e06-46a2-be2d-68e3ccbc ****
&KeySpec=AES_256
&NumberOfBytes=256
&共通リクエストパラメータ

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

XML 形式

HTTP/1.1 200 OK
Content-Type:application/xml

<GenerateDataKeyResponse>
    <KeyVersionId>2ab1a983-7072-4bbc-a582-584b5bd8****</KeyVersionId>
    <KeyId>7906979c-8e06-46a2-be2d-68e3ccbc ****</KeyId>
    <CiphertextBlob>ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b + i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS ****</CiphertextBlob>
    <RequestId>7021b6ec-4be7-4d3c-8a68-1e85d4d515a0</RequestId>
    <プレーンテキスト> QmFzZTY0IGVuY29kZWQgcGxhaW50 ****</プレーンテキスト>
</GenerateDataKeyResponse>

JSON 形式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "KeyVersionId" : "2ab1a983-7072-4bbc-a582-584b5bd8 ****" 、
  "KeyId" : "7906979c-8e06-46a2-be2d-68e3ccbc ****" 、
  "CiphertextBlob" : "ODZhOWVmZDktM2QxNi00ODk0LWJkNGYtMWZjNDNmM2YyYWJmS7FmDBBQ0BkKsQrtRnidtPwirmDcS0ZuJCU41xxAAWk4Z8qsADfbV0b + i6kQmlvj79dJdGOvtX69Uycs901qOjop4bTS ****" 、
  "RequestId" : "7021b6ec-4be7-4d3c-8a68-1e85d4d515a0" 、
  「プレーンテキスト」: 「QmFzZTY0IGVuY29kZWQgcGxhaW50 **** 」
}

エラーコード

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