Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS Keymanagement Serviceを知ろう
Search
MATSUURA, yosuke
June 07, 2020
Programming
730
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Keymanagement Serviceを知ろう
AWS KMSとは何か、何に使うのかということを説明した資料です。
※身内でやった勉強会の資料から内輪ネタを削ったものです。
MATSUURA, yosuke
June 07, 2020
More Decks by MATSUURA, yosuke
See All by MATSUURA, yosuke
CircleCIとSchemaSpyを使ったMySQLドキュメントの自動生成
bateleurx
1
990
WebRTC配信システムをAWSからオンプレミスに切り替えている話
bateleurx
14
13k
機密情報をKMS+RDS,S3とParameter Storeを使って保存した話
bateleurx
0
3.5k
VAddy導入案内
bateleurx
0
320
0から始まるかもしれない固定長整数をINT型に入れたい
bateleurx
0
2.1k
Other Decks in Programming
See All in Programming
新卒PdEのリアル
ryu1013
1
510
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.4k
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
180
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
200
Jetpack Compose メカニズム
skydoves
0
450
SREの越境 / SRE Collaboration
y0hgi
2
260
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
160
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3k
Intent as Code
shoppingjaws
6
1.1k
What We Talk About When We Talk About XP
m_seki
2
660
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
130
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
370
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
BBQ
matthewcrist
89
10k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
240
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
900
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
400
Docker and Python
trallard
47
4.2k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
How to Talk to Developers About Accessibility
jct
2
550
Transcript
AWS Key Management Service(KMS)を知ろう
共通鍵によるデータの暗号化 • 共通鍵暗号は256bit AESがデファクトスタンダード • 安全な暗号とはアルゴリズムが公開されていて、脆弱性が見つかって いないこと • 厳密に言えばAESは高性能な量子コンピュータに対して脆弱だが、AESが危殆化 するレベルの量子コンピュータは世に存在していない
• 代替アルゴリズムがないという「脆弱性」は指摘されている • 非公開アルゴリズムを使っている暗号化は信用してはいけない • アルゴリズムは公開されているので、安全性を担保するのは 「いかに鍵を管理するか」につきる • KMSは安全に鍵を管理するためのサービス • GCPにもCloud Key Management Serviceという同様の機能がある
AWS KMSの概要 • 自前の暗号化はもちろん、RDS, S3, EBSなどの透過的暗号化で も使える • マニアックなオプションとして、CloudHSMで鍵の持ち込みも 可能
• 東京では$1.81/h(今のレートで月額15万円弱) • 金融系の会社で使うことがあるらしい • 鍵のローテーション(交換)も可能 • セキュリティ上の要請がある場合に使う • 暗号論的安全な乱数を生成する機能もある
メリット • なんといっても暗号鍵の管理が楽 • 自分で暗号鍵を持つ場合 • どこに置けばいいのか • どのように管理・デプロイすればよいのか •
ハードコードしてリポジトリに入れてたりしないですよね・・・ • KMSならAPI経由で生成・取得可能 • IAMで権限管理できる • CloudTrailで利用ログも記録できる
間違えないで • KMSはデータを安全に暗号化するためのサービス • たとえば個人情報を保存したいとき • 秘密情報のデプロイに使うサービスではない • アクセストークン、DBパスワード、サーバ証明書秘密鍵など •
AWS Systems ManagerのParameter Store, AWS Secrets Managerを使います • これはこれで便利なサービス • APIキーのデプロイはEC2 Roleを使う
登場する鍵 • Master Key: 頂点となる鍵 • この鍵で直接暗号化できるが、 データ長と時間あたりの処理回 数などに制限がある •
マイナンバーなど短い文字列な らこれでいける • Data Key: 長いデータの暗号 化に使う • Master Keyで暗号化して保存 • これがenvelope encryption
アプリケーションでの鍵の管理 • Master Key暗号化はAPIに平文を送ると、暗号文が返ってくる • ローカルに鍵を置かないので、管理を考える必要はない • Envelope encryptionはAPIに平文の鍵と暗号化された鍵をリク エストする
• 「平文の鍵で暗号化」して、「暗号化された鍵を保存」する • 平文の鍵は/tmpに置いたりせず、オンメモリで処理を完了させる • ではAPIリクエストするためのキーは? • 流出すると鍵が入手できてしまうので、暗号化の意味がない • EC2 Instance Roleでインスタンスに権限を付与しましょう
データキーによる暗号化 • GenerateDataKeyでデータ キーを要求すると、平文の鍵 と暗号化された鍵が返る • 暗号化したいデータを「平文 の鍵」で暗号化し、暗号化さ れたデータとセットで「暗号 化された鍵」を保存する
• 暗号化は自分で行う • 平文鍵の処理はすべてオンメモ リで行う
データキーによる復号 • Decryptに暗号化された鍵を 送ると、平文の鍵が返る • 返ってきた鍵で暗号化された データを復号する • 復号も自分でやる •
平文の鍵はやはりオンメモリで 処理する必要がある
Encryption context? • KMS Encrypt APIのリクエスト構造は以下の通り { "EncryptionContext": { "string"
: "string" }, "GrantTokens": [ "string" ], "KeyId": "string", "Plaintext": blob } • Encryption Contextという引数を与えることができる • これは何だろう?
認証付き暗号 • 鍵が共通なので、攻撃者が何らかの方法で暗号文を入手した場合、 暗号を解読できてしまう • ターゲットの暗号文カラムを自分の行にコピーできた場合など • 秘匿性(Confidentiality)しか満たされない • 「混乱した使節」(confused
deputy) • Encryption contextつきの暗号文は、復号に同じcontextが必要 • これが「追加認証データ」(AAD; Additional Authenticated Data) • UIDなどを使うことが多い • 暗号時に認証するので「認証付き暗号」(AEAD; Authenticated Encryption with Associated Data) • 完全性(Integrity), 可用性(Availability)が満たされる • 可用性は「認可された人が」常に使えるという意味
まとめ • データを暗号化して保存するときはKMSを利用すべき • 暗号アルゴリズムは(今のところ)256bit AESが鉄板 • その上で、鍵の管理方法だけ注意すれば良い • ユーザーデータのように一意キーが使える場合は、認証付き暗
号を積極的に利用しよう
参考資料 • だいたいこのあたりを見ればわかります • AWS Key Management Service 開発者ガイド •
https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/overvie w.html • AWS Black Belt Techシリーズ AWS Key Management Service • https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt- tech-aws-key-management-service • AWS再入門 – Amazon KMS編 • https://dev.classmethod.jp/cloud/aws/cm-advent-calendar-2015-aws- relearning-key-management-service/