Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ⓒ  Classmethod,  Inc.
10分でわかる  
Key  Management  Serviceの仕組み
1
DEVIO-‐‑‒MTUP11-‐‑‒TOKYO-‐‑‒001
⻁虎塚,クラスメソッド株式会社
2014年年12⽉月1...
Ⓒ Classmethod, Inc. 2
※モデル本人および所属先組織の見解とは一切関係ありません.
Ⓒ Classmethod, Inc.
自己紹介
3
こんにちは,虎塚です
Twitter & Hatena-id: torazuka
最近の趣味はクソコラ作成です(冒頭の画像は最新作)
AWSコンサルティング部で構築の仕事をしています
鳥形由...
Ⓒ Classmethod, Inc.
ぱっと見よくわからないKMSについてご説明します
4
が2種類ある?
Encrypt APIと
Decrypt API

いつ使うん?
カスタマーキーと

データキー?
鰹節……
Key Management Serviceとは
5
Ⓒ Classmethod, Inc.
Key Management Service (KMS)
• re:Invent 2014で発表されました
• すでに全リージョンで利用できます
• データ暗号化/復号用の をAWS上で管理できます
6
...
Ⓒ Classmethod, Inc. 7
は2種類あります
2つあわせてKMSでーす
マスターキーでーす
データキーでーす
Ⓒ Classmethod, Inc.
マスターキーとデータキーの特徴
8
マスターキー データキー
AWS内部で永続化される AWS内部で永続化されない
ユーザがローカルに

エクスポートできない
ユーザがローカルに
エクスポートできる
デー...
一般的なデータと暗号化の話
9
Ⓒ Classmethod, Inc.
大切なデータを暗号化する
10
データ
暗号化
暗号化されたデータ
秘
Ⓒ Classmethod, Inc.
すると の保管場所が問題になる
11
暗号化された

データ
暗号化されたデータと を一緒に保管するのは危険
秘
単独で盗まれても大丈夫だが
一緒に盗まれると

アウト
Ⓒ Classmethod, Inc.
そこで を暗号化する
12
データ
暗号化
暗号化された

データ
秘
暗号化
の
暗号化対象と同じ は

使えないので,別の 

を用意する
暗号化された

秘
Ⓒ Classmethod, Inc.
すると の の保管場所が問題になる
13
暗号化された

データ
問題が解決していない!
暗号化された
秘
単独で盗まれても大丈夫だが
一緒に盗まれると

アウト
の
秘
Ⓒ Classmethod, Inc.
解決法: の を安全な場所で保管
14
暗号化された

データ
暗号化された
秘
の
秘
安全な場所
Ⓒ Classmethod, Inc.
安全な場所=Amazon KMS
15
暗号化された

データ
データキー
秘
マスターキー
秘
Amazon KMS
AWS/オンプレミス(場所を問わない)
自前で用意した

安全な場所よりも

さらに...
Ⓒ Classmethod, Inc.
マスターキーとデータキーの特徴(再掲)
16
マスターキー データキー
AWS内部で永続化される AWS内部で永続化されない
ユーザがローカルに

エクスポートできない
ユーザがローカルに
エクスポートで...
KMSの機能
17
Ⓒ Classmethod, Inc.
マスターキーの管理
18
マスターキーの管理者
利用不可 利用可能利用可能
作成 無効化 有効化 削除
※削除はサポート

されていません
更新
マスターキー( の )に対して可能な操作は,次のとおりです...
Ⓒ Classmethod, Inc.
マスターキーの管理操作に対応するKMS API
19
利用不可 利用可能利用可能
作成
CreateAlias
無効化 有効化更新
DeleteAlias
CreateKey
DisableKeyRota...
Ⓒ Classmethod, Inc.
データキーの利用
20
利用可能
データキーの利用者
データキーの生成
対応するマスターキーの状態
データキーの復号データキーの暗号化
一方,データキーに対して可能な操作は,次のとおりです
データの暗号化...
Ⓒ Classmethod, Inc.
データキーの利用操作に対応するKMS API
21
利用可能
Encrypt Decrypt
ReEncrypt
GenerateDataKey
GenerateDataKeyWithoutPlainte...
Ⓒ Classmethod, Inc.
マスターキーの作成
22
AWS KMS
CreateKey(Description, Policy)
KeyID, ARN, 作成日, など
マスターキーを

生成して保管する
マスターキー

の管理者...
Ⓒ Classmethod, Inc.
データキーの生成
23
AWS KMS
GenerateDataKey(KeyID)
暗号化された

データキー
データキー
秘
データキー

の利用者
指定された

マスターキーで

データキーを生成
...
Ⓒ Classmethod, Inc.
データキーでデータを暗号化
24
データ
暗号化
データキー
暗号化された

データ
秘
@ローカル
暗号化された

データキー
秘
データキー

の利用者
使い終わったら

即座に捨てる
重要
大事に保...
Ⓒ Classmethod, Inc.
データキーの復号
25
AWS KMS
Decrypt(CiphertextBlob)
暗号化された

データキー
データキー
秘データキー

の利用者
暗号化に使われた

マスターキーで

データキーを...
Ⓒ Classmethod, Inc.
データキーでデータを復号
26
暗号化された
データ
復号
データキー
データ
@ローカル
データキー

の利用者
秘
利用
使い終わったら

即座に捨てる
重要
Ⓒ Classmethod, Inc.
• マスターキーを無効化すると,そのマスターキーを利用する

データキーの操作が,すべて失敗するようになります
• データキーが復号できない=暗号化したデータの復号もできない
無効化 有効化
マスターキー...
Ⓒ Classmethod, Inc.
マスターキーのローテーション
• マスターキーには1年ごとのローテーションを設定できます
• ローテーションされたキーは,それ以降,復号だけに利用されます
28
有効な
active
deactivate...
Ⓒ Classmethod, Inc.
マスターキーとデータキーの特徴(再掲)
29
マスターキー データキー
AWS内部で永続化される AWS内部で永続化されない
ユーザがローカルに

エクスポートできない
ユーザがローカルに
エクスポートで...
の権限管理
30
Ⓒ Classmethod, Inc.
Key Policy
• マスターキーを作成する時にPolicyを与える
• 与えない場合,デフォルトのPolicyが適用されます
31
{
"Id": "key-default",
"Version":...
Ⓒ Classmethod, Inc.
Key Policyで の管理と利用を分離
32
{
"Sid": "Allow access for Key Administrators",
"Effect": "Allow",
"Principal"...
まとめ
33
Ⓒ Classmethod, Inc.
まとめ
• 暗号化されたデータキーは大切に保管しましょう
• 紛失するとデータを復号できなくなります
• プレーンテキストのデータキーは使ったらすぐに

捨てましょう
• この部分はユーザが責任を持って運...
Ⓒ Classmethod, Inc.
参考資料
• AWS Key Management Service
• http://aws.amazon.com/jp/kms
• AWS Key Management Service whitepap...
Ⓒ Classmethod, Inc.
#cmdevio
ご清聴ありがとうございました。
スライドは後日ブログで公開します。
36
DEVIO-MTUP11-TOKYO-001
Upcoming SlideShare
Loading in …5
×

10分でわかるKey Management Serviceの仕組み #cmdevio

29,859 views

Published on

2014年12月16日に開催されたre:Growth 2014 Tokyoで発表しました。

Published in: Technology
  • Be the first to comment

10分でわかるKey Management Serviceの仕組み #cmdevio

  1. 1. Ⓒ  Classmethod,  Inc. 10分でわかる   Key  Management  Serviceの仕組み 1 DEVIO-‐‑‒MTUP11-‐‑‒TOKYO-‐‑‒001 ⻁虎塚,クラスメソッド株式会社 2014年年12⽉月16⽇日
  2. 2. Ⓒ Classmethod, Inc. 2 ※モデル本人および所属先組織の見解とは一切関係ありません.
  3. 3. Ⓒ Classmethod, Inc. 自己紹介 3 こんにちは,虎塚です Twitter & Hatena-id: torazuka 最近の趣味はクソコラ作成です(冒頭の画像は最新作) AWSコンサルティング部で構築の仕事をしています 鳥形由希と申します ※モデル本人および所属先組織の見解とは一切関係ありません.
  4. 4. Ⓒ Classmethod, Inc. ぱっと見よくわからないKMSについてご説明します 4 が2種類ある? Encrypt APIと Decrypt API
 いつ使うん? カスタマーキーと
 データキー? 鰹節……
  5. 5. Key Management Serviceとは 5
  6. 6. Ⓒ Classmethod, Inc. Key Management Service (KMS) • re:Invent 2014で発表されました • すでに全リージョンで利用できます • データ暗号化/復号用の をAWS上で管理できます 6 正確には,データの暗号化に使う (データキー)を
 暗号化するための (マスターキー)を管理できます
  7. 7. Ⓒ Classmethod, Inc. 7 は2種類あります 2つあわせてKMSでーす マスターキーでーす データキーでーす
  8. 8. Ⓒ Classmethod, Inc. マスターキーとデータキーの特徴 8 マスターキー データキー AWS内部で永続化される AWS内部で永続化されない ユーザがローカルに
 エクスポートできない ユーザがローカルに エクスポートできる データキーを暗号化する データを暗号化する
  9. 9. 一般的なデータと暗号化の話 9
  10. 10. Ⓒ Classmethod, Inc. 大切なデータを暗号化する 10 データ 暗号化 暗号化されたデータ 秘
  11. 11. Ⓒ Classmethod, Inc. すると の保管場所が問題になる 11 暗号化された
 データ 暗号化されたデータと を一緒に保管するのは危険 秘 単独で盗まれても大丈夫だが 一緒に盗まれると
 アウト
  12. 12. Ⓒ Classmethod, Inc. そこで を暗号化する 12 データ 暗号化 暗号化された
 データ 秘 暗号化 の 暗号化対象と同じ は
 使えないので,別の 
 を用意する 暗号化された
 秘
  13. 13. Ⓒ Classmethod, Inc. すると の の保管場所が問題になる 13 暗号化された
 データ 問題が解決していない! 暗号化された 秘 単独で盗まれても大丈夫だが 一緒に盗まれると
 アウト の 秘
  14. 14. Ⓒ Classmethod, Inc. 解決法: の を安全な場所で保管 14 暗号化された
 データ 暗号化された 秘 の 秘 安全な場所
  15. 15. Ⓒ Classmethod, Inc. 安全な場所=Amazon KMS 15 暗号化された
 データ データキー 秘 マスターキー 秘 Amazon KMS AWS/オンプレミス(場所を問わない) 自前で用意した
 安全な場所よりも
 さらに安全
  16. 16. Ⓒ Classmethod, Inc. マスターキーとデータキーの特徴(再掲) 16 マスターキー データキー AWS内部で永続化される AWS内部で永続化されない ユーザがローカルに
 エクスポートできない ユーザがローカルに エクスポートできる データキーを暗号化する データを暗号化する
  17. 17. KMSの機能 17
  18. 18. Ⓒ Classmethod, Inc. マスターキーの管理 18 マスターキーの管理者 利用不可 利用可能利用可能 作成 無効化 有効化 削除 ※削除はサポート
 されていません 更新 マスターキー( の )に対して可能な操作は,次のとおりです マスターキーの状態
  19. 19. Ⓒ Classmethod, Inc. マスターキーの管理操作に対応するKMS API 19 利用不可 利用可能利用可能 作成 CreateAlias 無効化 有効化更新 DeleteAlias CreateKey DisableKeyRotationEnableKeyRotation UpdateKeyDescription PutKeyPolicy ListKeyPolicies ListKeys ListAliases GetKeyPolicy GetKeyRotationStatus DisableKey EnableKey DescribeKey ※太字はよく使うAPI
  20. 20. Ⓒ Classmethod, Inc. データキーの利用 20 利用可能 データキーの利用者 データキーの生成 対応するマスターキーの状態 データキーの復号データキーの暗号化 一方,データキーに対して可能な操作は,次のとおりです データの暗号化や復号は AWS API
  21. 21. Ⓒ Classmethod, Inc. データキーの利用操作に対応するKMS API 21 利用可能 Encrypt Decrypt ReEncrypt GenerateDataKey GenerateDataKeyWithoutPlaintext データキーの生成 データキーの復号データキーの暗号化 ※太字はよく使うAPI
  22. 22. Ⓒ Classmethod, Inc. マスターキーの作成 22 AWS KMS CreateKey(Description, Policy) KeyID, ARN, 作成日, など マスターキーを
 生成して保管する マスターキー
 の管理者 マスターキーそのものは
 返却されない Policy(権限)やDescription(説明)を
 指定して,マスターキーを生成する
  23. 23. Ⓒ Classmethod, Inc. データキーの生成 23 AWS KMS GenerateDataKey(KeyID) 暗号化された
 データキー データキー 秘 データキー
 の利用者 指定された
 マスターキーで
 データキーを生成 データキー自体は
 保管しない データキー自体が
 返却される マスターキーのIDを指定して,
 データキーを生成する
  24. 24. Ⓒ Classmethod, Inc. データキーでデータを暗号化 24 データ 暗号化 データキー 暗号化された
 データ 秘 @ローカル 暗号化された
 データキー 秘 データキー
 の利用者 使い終わったら
 即座に捨てる 重要 大事に保管する 暗号化されたデータキーを 紛失すると,データを
 復号できなくなります! 超重要
  25. 25. Ⓒ Classmethod, Inc. データキーの復号 25 AWS KMS Decrypt(CiphertextBlob) 暗号化された
 データキー データキー 秘データキー
 の利用者 暗号化に使われた
 マスターキーで
 データキーを復号 データキー自体は
 保管しない 秘 暗号化されたデータキーを渡して, データキーを復号する
  26. 26. Ⓒ Classmethod, Inc. データキーでデータを復号 26 暗号化された データ 復号 データキー データ @ローカル データキー
 の利用者 秘 利用 使い終わったら
 即座に捨てる 重要
  27. 27. Ⓒ Classmethod, Inc. • マスターキーを無効化すると,そのマスターキーを利用する
 データキーの操作が,すべて失敗するようになります • データキーが復号できない=暗号化したデータの復号もできない 無効化 有効化 マスターキーの有効化/無効化 27 利用不可 利用可能利用可能 データキーの利用者 データキーの生成 データキーの復号データキーの暗号化 マスターキーの状態
  28. 28. Ⓒ Classmethod, Inc. マスターキーのローテーション • マスターキーには1年ごとのローテーションを設定できます • ローテーションされたキーは,それ以降,復号だけに利用されます 28 有効な active deactivated ローテーション ローテーション以降の
 すべてのリクエスト ローテーション以前の マスターキーで作成された
 データキーの復号リクエスト
  29. 29. Ⓒ Classmethod, Inc. マスターキーとデータキーの特徴(再掲) 29 マスターキー データキー AWS内部で永続化される AWS内部で永続化されない ユーザがローカルに
 エクスポートできない ユーザがローカルに エクスポートできる データキーを暗号化する データを暗号化する
  30. 30. の権限管理 30
  31. 31. Ⓒ Classmethod, Inc. Key Policy • マスターキーを作成する時にPolicyを与える • 与えない場合,デフォルトのPolicyが適用されます 31 { "Id": "key-default", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS":"012345678901"}, "Action": ["kms:*"], "Resource": "*" } ] } すべてのKMS API アカウントroot すべてのリソース
  32. 32. Ⓒ Classmethod, Inc. Key Policyで の管理と利用を分離 32 { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::012345678901:user/Administrator"}, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*" ], "Resource": "*" } { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::012345678901:user/User"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } 管理系API 利用系API データキー
 の利用者 マスターキー
 の管理者
  33. 33. まとめ 33
  34. 34. Ⓒ Classmethod, Inc. まとめ • 暗号化されたデータキーは大切に保管しましょう • 紛失するとデータを復号できなくなります • プレーンテキストのデータキーは使ったらすぐに
 捨てましょう • この部分はユーザが責任を持って運用する必要があります • Key Policyを活用してマスターキーの管理者と
 データキーのユーザを分けましょう 34
  35. 35. Ⓒ Classmethod, Inc. 参考資料 • AWS Key Management Service • http://aws.amazon.com/jp/kms • AWS Key Management Service whitepaper • https://d0.awsstatic.com/whitepapers/KMS- Cryptographic-Details.pdf 35
  36. 36. Ⓒ Classmethod, Inc. #cmdevio ご清聴ありがとうございました。 スライドは後日ブログで公開します。 36 DEVIO-MTUP11-TOKYO-001

×