AWS Key Management Service (KMS) とは
どんなサービスか
AWS Key Management Serviceは、データの暗号化に使用する暗号化キーを簡単に作成および管理できるマネージドサービスである。
簡単に言うと、AWS上でデータの暗号化/復号用の鍵を管理できる。
AWSにてデータを暗号化する際には、KMSで生成した暗号化キーを使ってデータを暗号化するのがベストプラクティスである。
KMSを使う上で重要になってくる言葉
- マスターキー
- データキーを暗号化/復号化するための鍵
- データキー
- データを暗号化/復号化するための鍵
KMSの利用イメージ
いずれの場合も、暗号化されたデータキーは大切に保管しておくということを頭に入れておいてほしい.
マスターキーの生成
マスターキーはAWS内部に保存され、ローカルに持ってこられない.
データキーの生成
マスターキー生成時に受け取ったKeyIDを引数に指定してデータキー生成リクエストを投げる.
暗号化されたデータキーと暗号化されてないデータキーが返ってくる.
暗号化されたデータキーは無くしちゃダメ絶対.
データの暗号化
この操作は、ローカルで完結する.
KMSにリクエストを投げる必要はない.
暗号化後、生のデータキーはユーザが責任を持って破棄する.
暗号化されたデータキーの復号
マスターキー生成時に受け取ったKeyIDと、大切に保管している暗号化されたデータキーを引数に指定してデータキー複合リクエストを投げる.
暗号化されたデータキーと暗号化されてないデータキーが返ってくる.
暗号化されたデータの復号
この操作は、ローカルで完結する.
KMSにリクエストを投げる必要はない.
複合化後、生のデータキーはユーザが責任を持って破棄する.
マスターキーの管理について
有効化/無効化できるが削除はできない
マスターキーは有効無効を切り替えられる.
一度無効にしても有効にできるが、削除は不可.
ローテーションできる
1年毎に自動でマスターキーを更新、ローテーションすることが可能.
また、マスターキーにエイリアスを付けられるので、マスターキーが更新されても同じエイリアスで操作が可能。
1年より短くローテーションさせたい場合は、手動でマスターキーを無効にして新マスターキーに対してエイリアスを割り当て直す.
Key Policyの設定
IAMに対して、Key Policyの設定ができる.
以下の様に、使用するKMS APIに制限をかけることができる.
金の話
- 1.00 USD/1つのマスターキー
- 0.03 USD/10,000 件のリクエスト
- 毎月の無料枠 20,000 件のリクエスト/月
- KMSの金のページ
まとめ
- ユーザが常に持つのは暗号化されたデータキーのみ.
- 暗号化されてないデータキーは使用後即破棄を徹底.
- Key Policyの活用が運用者の腕の見せどころ.
所感
- 暗号化されたデータキーはGitHubにPushしてしまえば良いのだろうか.
- 1データにつき、1データキーが適切なのだろうか.