データキーを生成します。
使用上の注意
概要
この操作では、乱数ジェネレータを使用してデータキーを生成し、キー管理サービス (KMS) キーの初期バージョンを使用してデータキーを暗号化し、平文データキーと暗号文データキーを返します。 平文データキーを使用して、KMS外部のデータを暗号化できます。 Plaintextは、平文データキーを指定する。 暗号化後、暗号文データキー (CiphertextBlob) 、初期ベクトル (Iv) 、暗号化アルゴリズム (algorithm) 、および認証データ (Aad) を格納する必要があります。
キーの仕様と暗号化モードの詳細については、「キーの種類と仕様」をご参照ください。
データキーを暗号化する場合、Galois/Counter Mode (GCM) モードのみがサポートされます。
KMSは、高品質の乱数ジェネレータを使用してデータキーを生成します。これは、データキーの暗号化に使用されるKMSキーマテリアルとは無関係です。
GenerateDataKeyとAdvanceGenerateDataKeyの違い
AdvanceGenerateDataKey操作とGenerateDataKey操作を呼び出して、データキーを生成できます。 次のセクションでは、2つの操作の違いについて説明します。
GenerateDataKey: キーの初期バージョンは暗号化に使用されます。 暗号化後、暗号文データキー (CiphertextBlob) 、初期ベクトル (Iv) 、暗号化アルゴリズム (algorithm) 、および認証データ (Aad) を格納する必要があります。 データを復号するには、DecryptまたはAdvanceDecrypt操作を呼び出します。
AdvanceGenerateDataKey: この操作は、ソフトウェアキー管理タイプのKMSインスタンスの対称キーに対してのみ呼び出すことができます。 キーのプライマリバージョンは暗号化に使用されます。 暗号化後、暗号文データキー (CiphertextBlob) と認証データ (Aad) を格納する必要があります。 データを復号化するには、AdvanceDecrypt操作を呼び出す必要があります。
重要ソフトウェアキー管理タイプのKMSインスタンスで対称キーを使用し、キーの自動ローテーションを有効にする場合は、AdvanceGenerateDataKey操作を呼び出してデータキーを生成し、キーローテーション機能が無効にならないようにする必要があります。 自動キーローテーションの詳細については、「キーローテーションの設定」をご参照ください。
リクエストパラメーター
パラメーター | 型 | 必須 / 任意 | 例 | 説明 |
KeyId | String | 対象 | key-hzz62f1cb66fa42qo **** | キーのグローバル一意ID。 キーにバインドされているエイリアスに値を設定することもできます。 |
NumberOfBytes | int | 対象 | 32 | 生成されるデータキーの長さ。 |
Aad | binary | 非対象 | バイナリデータ | データキーが暗号化されているときにデータを認証するために使用されるGalois/Counter Mode (GCM) モード。 重要 データキーを暗号化する場合、GCMモードのみがサポートされます。 このパラメーターを指定する場合は、Decrypt操作を呼び出すときに同じパラメーターを指定する必要があります。 |
レスポンスパラメーター
パラメーター | タイプ | 例 | 説明 |
KeyId | String | key-hzz62f1cb66fa42qo **** | キーのグローバル一意ID。 リクエスト内のKeyIdがエイリアスに設定されている場合、エイリアスがバインドされているキーのグローバル一意IDがレスポンスで返されます。 |
Iv | バイト | バイナリデータ | データキーが暗号化されるときに使用される初期ベクトル。 説明 Decrypt操作を呼び出してデータキーを復号化するときは、データキーを復号化するためにIvに有効な値を指定する必要があります。 |
平文 | バイト | バイナリ平文 | 平文データキー。 |
CiphertextBlob | バイト | バイナリ暗号文 | 暗号文データキー。 |
アルゴリズム | String | AES_GCM | 暗号化アルゴリズム。 |
RequestId | String | 475f1620-b9d3-4d35-b5c6-3fbdd941423d | リクエスト ID。 |
エラーコード
エラーコードのリストについては、「サービスエラーコード」をご参照ください。