雑なメモ

学びを記す

AWS Key Management Service (KMS) とは

どんなサービスか

AWS Key Management Serviceは、データの暗号化に使用する暗号化キーを簡単に作成および管理できるマネージドサービスである。
簡単に言うと、AWS上でデータの暗号化/復号用の鍵を管理できる。
AWSにてデータを暗号化する際には、KMSで生成した暗号化キーを使ってデータを暗号化するのがベストプラクティスである。

KMSを使う上で重要になってくる言葉

  • マスターキー
    • データキーを暗号化/復号化するための鍵
  • データキー
    • データを暗号化/復号化するための鍵

KMSの利用イメージ

いずれの場合も、暗号化されたデータキーは大切に保管しておくということを頭に入れておいてほしい.

マスターキーの生成

マスターキーはAWS内部に保存され、ローカルに持ってこられない.

f:id:yukiyan_w:20151101031611p:plain

データキーの生成

マスターキー生成時に受け取ったKeyIDを引数に指定してデータキー生成リクエストを投げる.
暗号化されたデータキーと暗号化されてないデータキーが返ってくる.
暗号化されたデータキーは無くしちゃダメ絶対.

f:id:yukiyan_w:20151101031641p:plain

データの暗号化

この操作は、ローカルで完結する.
KMSにリクエストを投げる必要はない.
暗号化後、生のデータキーはユーザが責任を持って破棄する.

f:id:yukiyan_w:20151101031651p:plain

暗号化されたデータキーの復号

マスターキー生成時に受け取ったKeyIDと、大切に保管している暗号化されたデータキーを引数に指定してデータキー複合リクエストを投げる.
暗号化されたデータキーと暗号化されてないデータキーが返ってくる.

f:id:yukiyan_w:20151101031703p:plain

暗号化されたデータの復号

この操作は、ローカルで完結する.
KMSにリクエストを投げる必要はない.
複合化後、生のデータキーはユーザが責任を持って破棄する.

f:id:yukiyan_w:20151101031716p:plain

マスターキーの管理について

有効化/無効化できるが削除はできない

マスターキーは有効無効を切り替えられる.
一度無効にしても有効にできるが、削除は不可.

ローテーションできる

1年毎に自動でマスターキーを更新、ローテーションすることが可能.
また、マスターキーにエイリアスを付けられるので、マスターキーが更新されても同じエイリアスで操作が可能。
1年より短くローテーションさせたい場合は、手動でマスターキーを無効にして新マスターキーに対してエイリアスを割り当て直す.

Key Policyの設定

IAMに対して、Key Policyの設定ができる.
以下の様に、使用するKMS APIに制限をかけることができる.

  • 管理者
    • マスターキーを生成するAPI
    • マスターキーを有効化/無効化するAPI
  • 開発者
    • データキーを生成するAPI
    • データキーを暗号化するAPI
    • データキーを復号化するAPI

金の話

  • 1.00 USD/1つのマスターキー
  • 0.03 USD/10,000 件のリクエスト
  • 毎月の無料枠 20,000 件のリクエスト/月
  • KMSの金のページ

まとめ

  • ユーザが常に持つのは暗号化されたデータキーのみ.
  • 暗号化されてないデータキーは使用後即破棄を徹底.
  • Key Policyの活用が運用者の腕の見せどころ.

所感

  • 暗号化されたデータキーはGitHubにPushしてしまえば良いのだろうか.
  • 1データにつき、1データキーが適切なのだろうか.