AWS KMSとは?SAA頻出の暗号鍵管理を解説

AWS KMSとは?SAA頻出の暗号鍵管理を解説

AWSの暗号鍵管理の仕組みを知りたい学習者のイメージ
「KMSって、何を管理するサービス?」
「暗号化は、自分でやらないとダメ?」
「鍵はどこに保管され、誰が触れる?」

暗号化に使う鍵は、どこに置けばいいのか。手元に持てば漏れる、失えばデータごと開けなくなる——この厄介な問題を肩代わりするのがKMSです。AWS KMSとは、データ暗号化に使う鍵を安全に作り・保管し・利用を許可するマネージドサービスです。この記事は、あなたがS3にファイルを保存する場面を追いながら、KMSの働きを開きます。

 

KMSは Key Management Service の略です。鍵の実体を利用者が持ち歩かず、AWSの堅牢な環境に預けたまま使う——この発想が核になります。AWS SAAのセキュアアーキテクチャ設計に効きます。

 

1. 鍵はどこにある?——KMSの立ち位置

暗号鍵の管理をAWSに預けるイメージ

データの暗号化には、中身を読めなくするためのが要ります。この鍵をあなたが自分で作り、どこかに保管し、失わないよう管理する——これは重い仕事です。KMSは、その鍵の作成・保管・利用の許可をまとめて引き受けます。鍵の実体は、AWSが管理する堅牢な環境の中にとどまります。

 

たとえるなら、銀行の金庫室です。金庫を開ける親鍵(マスターキー)は、金庫室の外へは決して持ち出しません。あなたは親鍵を受け取るのではなく、「この金庫を開けてよい」という許可を得て使います。KMSも同じで、鍵の実体は安全な場所に置いたまま、「この鍵で暗号化してよい」という許可を通して使います。

 

この構図の利点は、鍵そのものを利用者が持ち歩かないことです。持ち歩かなければ、紛失も漏えいも起きにくい。あなたが管理すべきものが減るぶん、守りの穴も減ります。そもそも暗号化とは何かは 暗号化とは で前提を押さえておくと、KMSの役割がくっきりします。

 

2. S3にファイルを保存する、その裏側

保存時にKMSがエンベロープ暗号化で守るイメージ

あなたがS3にファイルを保存し、暗号化を有効にする。その一瞬に何が起きているかを追います。KMSが使うのはエンベロープ暗号化という仕組みで、親鍵は金庫室から出しません。

 

KMS(金庫室) マスターキー外に出さない ↓ 生成 データキー ファイル本体をデータキーで暗号化 S3に保存暗号化ファイル+暗号化されたデータキー

 

流れはこうです。KMSの中のマスターキーから、その場限りのデータキーを生成する。そのデータキーでファイル本体を暗号化する。マスターキーはKMSの外へ出ないまま、暗号化されたファイルと、暗号化されたデータキーが一緒に保存されます。親鍵を外に出さず、その場で作った使い捨ての鍵で中身を包む——だから、肝心の鍵を危険にさらさずに、大きなデータでも暗号化できます。あなたがやることは、暗号化を有効にして使う鍵を指定するだけです。

 

なぜ、わざわざ2段構えにするのか。もしマスターキーそのものでファイル本体を直接暗号化しようとすると、そのたびにマスターキーを持ち出す必要が生じ、外に出す危険が増えます。データキーを使い捨てにすれば、マスターキーは金庫室にこもったまま、無数のファイルを暗号化できる。鍵を外に出す回数を最小にするための設計が、エンベロープ暗号化です。あなたが読み出すときは、暗号化されたデータキーをKMSが復号し、それでファイルを開きます。

 

KMSが主に担うのは保管時(at rest)の暗号化です。S3のファイルやRDSのデータベースを、KMSの鍵で暗号化して保存する。一方、ネットワークを移動中のデータを守る転送時(in transit)の暗号化は、主にTLSが担います。「金庫にしまうときの鍵がKMS、運ぶ途中の封筒がTLS」と役割を分けて捉えてください。

 

3. 誰が鍵を持ち、誰が許可を出すか

鍵の保管と使用許可の役割分担のイメージ

KMSを一歩深く理解する鍵が、役割の分担です。鍵の保管と、その鍵を使ってよいかの判断は、別々の主体が担います。表で整理します。

 

担うこと AWS 利用者
鍵の保管 堅牢な環境で安全に保管
鍵を使う許可 許可の仕組みを提供 誰に許可するかを設定
データの扱い どのデータを暗号化するか決める

 

鍵の保管はAWSに任せ、「誰がその鍵を使えるか」はあなたが決める。現役エンジニアとしてクラウドのセキュリティ設計に関わってきた立場で言うと、事故が起きるのはたいてい後者、つまり許可の設定が緩いときです。鍵そのものは金庫室で守られていても、「誰でも使ってよい」と許可を広げてしまえば、金庫の意味が薄れます。鍵を安全に預けたうえで、使用の許可を最小限に絞る——ここまでやって、はじめて守りが完成します。

 

「誰に何を許可するか」を決める仕組みは、AWS全体のアクセス管理とつながっています。鍵の使用許可も、この考え方の上に立ちます。詳しくは AWS IAMとは で、権限設計の土台を押さえられます。組織単位で暗号化方針をそろえる場面は AWS Organizationsとは でつかめます。

 

4. SAAでの問われ方と、選ぶ判断

KMSをどんな要件で選ぶかを判断するイメージ

SAAでは、KMSは「保管するデータを暗号化したい」という要件とセットで問われます。あなたが答えを選ぶ判断は、問題文のキーワードで決まります。次のような言葉が出たら、KMSが有力候補です。

 

  • 「保管データ(at rest)を暗号化したい」→ KMSで鍵を管理し、暗号化を有効にする
  • 「鍵を一元管理したい」→ 鍵の作成・保管・許可をまとめるKMSが向く
  • 「アプリ側で複雑な暗号処理を書きたくない」→ 保存時の暗号化を有効にし、KMSの鍵を指定するだけで済む

 

KMSは単独で使うより、S3やRDSなど他のAWSサービスと組み合わせて働きます。多くのサービスでは、保存時の暗号化を有効にしてKMSの鍵を指定するだけで暗号化が働くので、アプリ側で込み入った処理を書かずに済みます。あなたが問題文で「保管データを暗号化」「鍵を一元管理」という言葉を見たら、KMSを思い浮かべる。逆に「移動中のデータを守る」ならTLS、と切り分ければ、選択肢が絞れます。この「要件の言葉から、担うサービスへ逆引きする」訓練が、SAAでは得点に直結します。

 

迷ったときの一問は、「守りたいデータは、止まっているか、動いているか」です。ディスクやストレージに保管されているデータならKMS(保管時の暗号化)、ネットワークを流れているデータならTLS(転送時の暗号化)。あなたがこの一問を最初に当てれば、暗号化まわりの設問は大きく2つに切り分けられます。

 

次のステップ

KMSがセキュア設計のどこに位置づくかは、AWS SAAの試験範囲と勉強法ガイド で全体の並びをたどると、セキュア設計での位置づけが見えてきます。

要件からサービスを選ぶ感覚は、問題で磨けます。AWS SAA セキュア設計の問題集 で、暗号化まわりの出題角度を、問題で確かめておきましょう。