share facebook facebook2 twitter menu hatena pocket slack

2014.12.02 TUE

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS)

吉田 真吾

WRITTEN BY吉田 真吾

cloudpackエバンジェリストの 吉田真吾 (@yoshidashingo) です。

AWS Key Management Service (KMS) とはなにか?

今までAmazon S3Amazon RDSに提供されていたサーバーサイド暗号化は、ユーザーから鍵の管理ができないものでした。KMSを使えば、あらかじめ特定のユーザーやRoleに限定した暗号鍵を作成し、このS3のオブジェクトにはこの鍵を、このEBSディスクにはこの鍵を、と指定することができ、たとえば当該鍵が不要になった場合は明確に鍵の削除ができるなどのコントロールができるメリットがあります。

Amazon Web Services ブログ: 【AWS発表】 AWS Key Management Service (KMS)

KMS鍵を作成する

1. IAM Management Consoleにアクセスし、左ペインからKMSにアクセスします。

  • 左のペインの下部に「Encryption Keys」があるので押下します

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(1)

2. Get Started Now で開始します。

  • 「US-EAST」「鍵:なし」の状態ですね

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(2)

3. 東京リージョンに変更します。

  • つまり「鍵の利用範囲は1リージョン内」であることがわかります

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(3)

4. 鍵のエイリアス名(ユーザーから見た鍵名)と説明を入力します

  • エイリアス名と説明はこんな感じで入力しました。

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(4)

5. 【鍵の管理者】のユーザーあるいはRoleを指定します

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(5)

6. 【鍵の利用者】のユーザーあるいはRoleを指定します

  • 他のAWSアカウントも指定できるみたいですが、今回は管理者と利用者を同一にしています。

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(6)

7. 発行される鍵のポリシーをプレビューして「Finish」を押下して完了します

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(7)

8. 暗号鍵ができました

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(8)

S3に暗号化(SSE-KMS)してアップロードする

9. 該当ユーザー(鍵の利用者)でS3にアップロードするときに作成した暗号鍵を指定します

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): KMS鍵を作成する(9)

他のユーザーで中身が見えないか確認

10. 試しに該当のオブジェクトをPublicに変更します

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): 他のユーザから見えないことを確認

11. 匿名ユーザー(ブラウザからURLを指定してアクセス)でアクセスしてみても権限エラーになりました

AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS): 匿名ユーザから見えないことを確認

ということで、今回はS3のサーバーサイド暗号化 with KMSを試したわけですが、その他にもEBSのボリューム暗号化やRDSのストレージ暗号化などで活用できそうです。

また、SDKを介したS3へのKMS暗号化およびKMSを用いたRedshiftへのCOPYなど、今まで「鍵のコントロールをクライアント側に持たせていた処理」も、サーバーサイドでもある程度ユーザーが管理できるということで、SSE-KMSに乗り換えようという動きが出てくるかもしれません。Ruby SDKのV2(core)だと、CSEが実装されてなかったりしますしね。これならいいかも。

元記事はこちらです。
AWS Key Management Service(KMS)を用いたS3サーバーサイド暗号化(SSE-KMS)

吉田 真吾

吉田 真吾