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