業務でKMS暗号化を利用したデータ消去について考えてみることがあったので、動作検証してみました。
調べてみると国としてもクラウドのデータ消去証明には苦労してそうですが、「暗号化したデータを保存して
データが不要になった際には、暗号化に利用した暗号鍵を削除する」ってものいいんじゃない?ってニュアンスを感じました。
結果的には、暗号化タイミングなど私のイメージとずれていたため、忘れないようにまとめました。
今回は暗号化できるものはたくさんありそうですが、今回はS3での暗号化を行ってみました。
KMSにてカギを作成
まずは鍵を作成します。
AWSコンソールにてAWS KMSを開き、「カスタマー管理型のキー」を選択し、「キーの作成」を押します。

今回はあまり悩まず、ばんばん設定します。

名前もわかりやすく・・・。

カギの管理者は適切に・・・。

カギの利用者も当然ながら・・・。ここは利用者なので別アカウントも指定できます。

最終的な確認を経て・・・。

作成されました!!

KMSにてS3に必要な暗号化鍵を作成しました。
暗号化するS3を作成
暗号化するS3は適当に作成しますが、暗号化部分に関しては「暗号化タイプ:SSE-KMS」と
「KMSキーから選択する:先ほど作成したKMSキー」を選択して、作成します。
※バケットキーなどの内容に関しては、別記事で書くことを忘れなければ・・・。

暗号化対象S3の作成出来たので、動作確認をしてみます。
KMS暗号化+S3の動作確認
動作確認ついて、浅はかな私は下記を検証してみました
- S3へファイルアップ/一覧/ダウンロード/削除
- KMSキーを無効化してみる
- KMSキーが無効の状態で再度確認
- KMSキーは有効でもユーザ/ロールに権限がKMSへの許可がないとき
S3へファイルアップ/一覧/ダウンロード/削除
アップロードしてみたけど、普段通りで何も変わった感じはしない。

一覧表示してみても暗号化されて保存されているようには見受けられない。
(見た目イメージとして、拡張子が変更されているとかってなるのかもって安易に想像してた)

ダウンロードも問題なくできる。

削除も変わらず、いつもと変わることはなかった。

KMSキーを無効化してみる
KMSから、カギを暗号化しようとしたら、こんなメッセージが表示されました。
CloudWatchから監視的なことができるらしい。これは操作ミスを防ぐこととかを確認できそう。

カギを無効にすると、当然ながらステータスは「無効」になりました。

KMSキーが無効の状態で再度確認
ファイルの一覧は問題なく表示されるし、プロパティも確認できる。

でもダウンロードしようとしたら、カギ無効エラー出た!

アップロードも同じエラーが表示されて失敗しました。

なら削除の時も・・・?って思いましたが、削除は出来ました。
確かにカギ削除してしまってデータ消せませんってのは洒落にならないか・・・。

KMSキーは有効でもユーザ/ロールに権限がKMSへの許可がないとき
鍵を有効に戻して、ユーザやロールから権限を外して確認します。

ファイルの一覧やプロパティは、問題なく見れました。

しかしダウンロードは、KMSへのアクセス権が不足しているよってエラーを返されました!
ちゃんとみると、IAMで kms:Decryptが足りないよ!って教えてくれてますね。

同様にアップロードでも同じエラーが表示されて失敗しました。

ただ、やっぱり削除は出来ました。

まとめ
ほんとにざっくりの検証ですが、まとめてみました。
当然ながら検証したユーザ権限の前提は「S3にて各種操作ができること」です。
その上で、KMSキーを作成したり権限付与したりした結果になってます。
一覧表示 | アップロード | ダウンロード | 削除 | |
KMSキーが有効 | ○ | ○ | ○ | ○ |
KMSキーが無効 | ○ | × | × | ○ |
KMSキーは有効でも KMSキーへアクセス権無効 | ○ | × | × | ○ |
この検証から、個人的には下記を学びました。
- KMSキーはバケット付与に利用するが、暗号化/復号化など行うタイミングで
利用するユーザに権限がないと、アップロードやダウンロードができない。 - カギを無効化してしまっても、データの削除は行うことが出来る。
- カギを無効化すると、データはバケットから取り出すことが出来なくなる。
やってるうちに、想定漏れなどに気づいたら都度都度増やしていこうと思います。
おわり。
コメント