KMSについて細かいことわかっていない
AWSを使用するにあたりよく出てくるKMS。
マスターキーとデータキーとかいろいろ複雑な仕組みで細かく仕様を理解しないまま使っていました。。
結論
S3の暗号化などしているとAWS側でデータキーを勝手に生成してくれて、そのデータキーで暗号化をしてくれていそう。
マスターキーとデーターキー
一口に暗号化のキーと言っても実際にデータを暗号化する「データーキー」と「マスターキー」の2種類があります。どちらのキーでも暗号化は可能ですが、データーキーで暗号化するのがベストプラクティスのようです。何となくこの辺の話は聞いたことがありましたが、こちらのサイトで何で2種類を使い分ける必要があるかとても分かりやすく書いていました。
10分でわかる!Key Management Serviceの仕組み
とりあえずS3を暗号化
KMSのコンソール上に表示されているキーはマスターキーのようです。
実際に自分がよく暗号化を使用するS3を例に考えてみます。
S3のバケット作成する際に暗号化方式を選びます。
KMSのAWSマネージドキーである、SSE-KMSを選びます。
っていうところで疑問に思いました。
AWSはマスターキーからデータキーを作成して、データキーで暗号化を行うべきと言っている。なのにコンソールでマスターキーを選択できるのは、矛盾があるような。。
なんやかんやデータキーで暗号化されてるっぽい
先ほど作成したバケットにファイルをアップロードして、CloudTrailログを見てみました。すると。。
GenerateDataKeyイベントが発生していました。
どうやら内部的にSSE-KMSキーを使用してデータキーを作成して、それで暗号化を良しなにしてくれているっぽい!