はじめに
この記事の内容
KMSについて、「基礎学習」と「ハンズオン」の2パートに分けて解説します。
- 基礎学習
- 暗号化の基礎知識
- KMSの基礎知識
- ハンズオン
- KMSを使用して、S3に格納しているデータを暗号化します。
①基礎学習
ハンズオンの前に、まずはKMSの基礎知識を解説します
暗号化の基礎知識
暗号化
暗号化は、データを他の人が読めないように変えるプロセスです。
例えば、送信するメッセージが他の人に読まれたくないときに使用されます。
※暗号化されたデータは「暗号文」と呼ばれ、元のデータは「平文」と呼ばれます。
復号化
復号化は、暗号化されたデータを元の読み取れる状態に戻すプロセスです。
暗号鍵
暗号鍵とは、データの暗号化と復号化に使う「秘密のコード」です。
暗号鍵がないと、暗号化されたデータを読むことができません。
逆に、データを復号化するには同じ暗号鍵が必要です。
また、暗号鍵には「対象鍵」と「非対称鍵」の2種類があります。
対称鍵 | 非対称鍵 | |
---|---|---|
鍵の数 | 1つの鍵 | 2つの鍵 (公開鍵と秘密鍵) |
使い方 | 同じ鍵で暗号化・複合化を行う | 公開鍵で暗号化、秘密鍵で複合化を行う |
処理の速さ | 速い | 遅い |
使用場面 | 大量データの暗号化に使用する | 鍵や少量データの暗号化に使用する |
公開・配布 | 通常は公開せず、限られた範囲で使用 | 公開鍵を自由に配布して、広い範囲で使用 |
管理の厳重さ | 厳重な管理が必要 | 秘密鍵は特に厳重な管理が必要 ※秘密鍵が漏洩すると、広範囲のデータが復号化される危険性があるため。 |
KMSの概要
AWS Key Management Service(KMS)は、AWS上でデータの暗号化と暗号鍵を簡単に管理できるサービスです。
KMSを使用することで、データ保護のための暗号鍵を管理し、複数のAWSサービスやアプリケーションでその鍵を安全に使用できます。
AWS(AWS Key Management Service)
KMSの機能
- 鍵の管理
- 暗号鍵の作成、保存、削除が可能です。
- 暗号化と復号化
- データの暗号化と複合化を簡単に行えます。
- ポリシーの設定
- 誰が暗号鍵にアクセスできるかを制御するポリシーを設定できます。
- キーローテーション
- KMSキーを定期的に自動で新しいものに交換します。 ※セキュリティ強化が目的
KMSの構成要素
KMSは、主に「CMK(カスタマーマスターキー)」と「データ鍵」で構成されます。
CMK(カスタマーマスターキー)
CMKは、 KMSにおいてデータ暗号化に使用される鍵を保護・管理するための暗号鍵です。
- この主鍵自体は直接データを暗号化しません。
- 代わりに、データを暗号化するための別の鍵(データ鍵)を生成・暗号化するために使用します。
- CMKは通常、AWS KMSによって安全に管理され、ユーザーが直接アクセスすることはありません。
- KMSキーは「対象鍵」と「非対称鍵」の両方をサポートしています。
データ鍵
データ鍵は、実際にデータを暗号化・復号化するために使用される鍵です。
- データ鍵は、CMKによって生成されます。
- 各データセットや各ファイルに対して、新しいデータ鍵が使用されます。
- データ鍵はデータと一緒に保存されますが、CMKによって暗号化された状態で保存されます。
エンベロープ暗号化
KMSではエンベロープ暗号化という仕組みをサポートしています。
エンベロープ暗号化とは、以下の流れで暗号化するプロセスを指します。
エンベロープ暗号化のメリット
- セキュリティ強化
- データキーを暗号化するため、データと共に安全に保護できます。
- 効率的な暗号化
- データを異なるキーで何度も再暗号化する代わりに、比較的データサイズが小さいデータキーのみを再暗号化するため、暗号化処理にかかる時間を短縮できます。
KMSをサポートするAWSサービス
全てのAWSサービスで、KMSによる暗号化がサポートされているわけではありません。ここでは、KMSをサポートする代表的なAWSサービスを紹介します。
KMSの料金
「作成したキーの数」、「キーの使用料」に応じて料金が発生します。
料金カテゴリ | 条件 | 料金 |
---|---|---|
キーストレージ | キーの作成 | 1 USD/月 |
キーの使用料 | リクエスト | 0.03 USD/1,000件 |
RSA 2048キーを含むリクエスト | 0.03 USD/1,000件 | |
ECC GenerateDataKeyPairリクエスト | 0.10 USD/1,000件 | |
RSA 2048 を除く非対称のリクエスト | 0.15 USD/1,000件 | |
RSA GenerateDataKeyPairのリクエスト | 12 USD/1,000件 |
- 以降は2024年9月時点の情報のため、現在の料金を把握したい方はAWSの公式サイトをご確認ください。
- 上記は東京リージョンの料金です。
②ハンズオン
KMSを使用して、S3に格納しているデータを暗号化します。
解説動画
以降の手順ではAWSの画面キャプチャを貼付していないので、こちらの解説動画を視聴しながらハンズオン学習することをおすすめします。
前提条件
- AWSアカウントを所持していること
- サンプルファイルを用意していること
- 暗号化対象のサンプルファイルです。
- ファイル名やファイルの中身について指定はありません。
ハンズオン手順
- KMSのコンソール画面に遷移し、「カスタマー管理型のキー」>「キーの作成」の順位選択します。
- 以下の設定項目を入力してKMSキーを作成します。
項目 | 説明 |
---|---|
キーのタイプ | 対象キー/非対称キーを選択 |
キーの使用法 | キーの使用目的 |
エイリアス | KMSキーに付与する名前 |
キーの管理者 | KMSキーを管理する権限を持つユーザーやロール。 |
キーユーザー | KMSキーを使用して暗号化・復号化等の操作を実行できるユーザーやロール。 |
- S3のコンソール画面に遷移し、「バケットを作成」を選択します。
- 以下設定でS3バケットを作成します。
項目 | 設定値 |
---|---|
名前 | 任意の名前 |
デフォルトの暗号化 | SSE-KMS |
└ AWS KMSキー | AWS KMSキーから選択する |
└ 使用可能なAWS KMSキー | Step1で作成したKMSキー |
- サンプルファイル(何でもよいです。)を作成したS3バケットにアップロードします。
- ファイル詳細画面の「サーバー側の暗号化設定」にて、KMSによる暗号化設定を確認します。
- ファイルをダウンロードして、復号化されているか(アップロードした時点と同じデータなのか)を確認する。
おわりに
本記事では、AWS Key Management Service (KMS) の基本概念とその主な機能について詳しく解説しました。
KMSを利用することで、暗号化キーの管理が簡単になり、データ保護の強化が図れます。
特に、KMSはキーの生成、管理、利用のすべてをセキュアに行うため、データ保護における重要な役割を果たします。
AWS環境でのセキュリティ強化にはKMSが欠かせないツールです。
この記事を参考に、KMSを効果的に活用し、セキュアなデータ管理を実現してみてください。
コメント
コメント一覧 (1件)
[…] KONISHI Tech Note 【初心者】KMSによる暗号化-料金・エイリアスを解説【AWS資格対策】【実践ハンズオン】 | KONISHI Tech No… はじめに この記事の内容 KMSについて、「基礎学習」と「 […]