今回は、KMSにおけるサーバサイド暗号化とクライアントサイド暗号化についてです。
■サーバサイド暗号化
AWSサービスで暗号化を行う際に、各サービスがCMKを指定することで、自動的に暗号化を実施いたします。
例えば、EC2が利用するEBSを暗号化する場合は以下の流れになります。
※EC2にEBSがアタッチされていない(デタッチ)状態をスタートとします。
1.EBSがKMSキーストアに保存されている暗号化CDKを取得します。
2.上記1で取得したCDKは、EBSのメタ情報として保存されます。
3.EC2が対象のEBSボリュームをアタッチする際、EC2にて上記2で保存されたメタ情報内にあるCDK情報を取得します。
4.EC2にてCDKの復号リクエスト(API)を発行し、復号処理自体はEC2が乗っているホストにて行われる。
5.上記4で復号したCDKは、アタッチされたEBSのすべての入出力データの暗号化/復号に利用されます。
■クライアントサイド暗号化
ユーザアプリケーションでのデータ暗号化にKMSを利用するパターンです。
これは、AWS SDKを利用するのが一般的です。
代表的なSDKに「AWS Encryption SDK」というものがあります。
以上です。