AWS KMSがデータ暗号化/復号化のセキュリティを高める! AWS KMSをわかりやすく解説

データの暗号化/復号化に利用するキーをセキュアに管理するのがAWS KMSです。しかし「KMS」がどのようにセキュアな管理を保っているのかがイメージできない人も多いのではないでしょうか。本コラムでは、AWS KMSの概要からそのメリット、さらにAWS KMSの使い方について「データの復号化/暗号化の流れ」を交えながら、利用料金も含めてわかりやすく解説します。

AWS KMSとは

AWS KMSとは、データの暗号化/復号化をするためのキーをセキュアに管理できるサービスです。

例えば、クラウドストレージに格納するテキストファイルなどのデータファイル自体を暗号化/復号化するときにAWS KMSのキーを利用します。機密情報ファイルをやり取りする場合など、キーの取り扱いをよりセキュアに行いたいときに便利です。

暗号化/復号化のためのキーをAWS KMS上で簡単に生成できるうえ、AWS KMS上にキーを保管することができますので、キーを安全に運用できます。

AWS KMSを使うメリット

それでは、AWS KMSを使う具体的なメリットをみていきましょう。

フルマネージド型

AWS KMSはAWSのサービスですので、フルマネージド型のサービスとして利用できます。

つまり、キーを保管している物理的なサーバーの状態やセキュリティ対策に関して、ユーザーは管理する必要がないということです。

暗号化/復号化のキー管理をオンプレミスサーバーで行うと、キーの保管状態やセキュリティ対策などにも配慮しなければなりませんが、AWS KMSはフルマネージド型ですので、インフラ管理の工数やコストが削減できるメリットがあります。

AWS上で安全にキーを管理できる

暗号化/復号化のためのキーはAWS KMSで管理されるため、安全に保管できます。

マスターキーはユーザーのローカル環境にはダウンロードできず、AWS KMSから出すことはできません。つまり、マスターキーを紛失・破損したり、ユーザーのローカル環境から盗み取られたりする心配がないということです。

キーの使用状況などは記録される

AWS KMS上で管理されるキーは、その使用状況などがすべて記録されます。

ソフトウェアからAPIによってリクエストされた記録が残り、その記録はリスク管理はもちろん、デジタル的な法的証拠としても利用できます。キーが万が一不正利用された場合でも、それが不正利用であることを「ユーザーの詳細」「時間」「日付」「APIアクション」などで明確に提示できるのです。

その他、AWSを利用する際のセキュリティ対策については「AWSを使うなら意識すべきセキュリティ対策」のコラムで詳しく解説しています。また、AWSのネットワーク構築については「AWSのネットワークを構築する!抑えておきたいポイントを解説」で詳しく解説していますので、併せて参考にしてください。

AWS KMSの使い方とデータ暗号化/復号化の流れ

それでは、AWS KMSの使い方について、データの暗号化/復号化の流れでみていきましょう。

暗号化の流れ

まずは、AWS KMSでデータを暗号化する流れです。

1. AWS KMS上にCMK(カスタマーマスターキー)を作成

データを暗号化するときに利用するキーを生成するためのCMKを作成します。

2. CMKのKeyIDからデータキーを作成

AWS KMS上にCMKを作成したら、CMKを元にしたKeyIDから「データキー」を作成します。ここでは、暗号化と復号化を行うためのペアとして、以下の2種類のキーが作成されます。

  • 暗号化用のデータキー:データを暗号化するためのキー
  • CMKを元に暗号化されたデータキー:データ復号化のために利用するキー

データを暗号化するために利用するのは、「暗号化用のデータキー」です。

3. ローカル環境にてデータを暗号化

「2.」で受け取った「暗号化用のデータキー」を使ってデータを暗号化します。

暗号化をするときには、AWS KMSへ何かをリクエストすることなく、ローカル環境のみで暗号化できます。

4. 暗号化されていないデータキーを破棄

暗号化が完了したら、暗号化に利用した「暗号化用のデータキー」をすぐに破棄します。これは、万が一「暗号化用のデータキー」が第三者の手に渡った場合、暗号化したデータを簡単に復号化できてしまうためです。

これで、データの暗号化は完了です。

復号化の流れ

それでは、復号化の流れをみていきましょう。

1. データキーの復号化

まずは、「暗号化の流れ」の中でユーザーが受け取った「CMKを元に暗号化されたデータキー」を復号化します。

※このとき、データキーを復号化するために「KeyID」と「CMKを元に暗号化されたデータキー」をAWS KMSに渡して、「復号化されたデータキー」を受け取ります。

2. ローカル環境にてデータを復号化

「1.」で復号化したデータキーで、「暗号化されているデータ」を復号化します。

3. 復号化したデータキーを破棄

データの復号化に利用した「復号化されたデータキー」を破棄します。

これで、データの復号化は完了です。

AWS Secret Managerとの違い

前述の通り、AWS KMSは暗号化/復号化のためのCMKを管理しますが、同じようにAWSには認証情報を管理するサービス「AWS Secret Manager」があります。どちらも機密情報を保管するサービスという意味では共通していますが、両者には以下のような違いがあります。

  • AWS Secret Manager:認証情報などのシークレットを保管する
  • AWS KMS:データを暗号化/復号化するために利用するキーを作成するためのCMKを保管する

データベースに接続するための認証情報であるシークレットを利用する場合はAWS Secret Managerを利用し、データの暗号化や復号化を安全に行いたい場合にはAWS KMSを利用するなど、利用シーンに合わせてサービスを選定できるということです。

AWS Secrets Managerについては、「AWS Secrets Managerによる機密情報の管理別ウィンドウで開きます」で詳しく解説していますので参考にしてください。

AWS KMSの利用料金

それでは最後に、AWS KMSの利用料金をみていきましょう。

基本的に、AWS KMSでCMKなどを保管している期間は「1USD/月」の料金がかかります。しかし、それ以外のキー作成や、キーを保管するストレージに対する料金はかかりません。

ただし、APIリクエストに対して無料利用枠(合計20,000リクエスト/月)を超えた場合は費用がかかります。無料利用枠を超えた場合の料金についてはリージョンによって異なります。ここでは「アジアパシフィック(東京)」の場合を確認しておきましょう。

【アジアパシフィック(東京)リージョンの場合(2021年5月時点)】
  • 10,000 件のリクエスト当たり0.03USD
  • 10,000 件の RSA 2048 キーを含むリクエスト当たり0.03USD
  • 10,000 件の ECC GenerateDataKeyPair リクエスト当たり0.10USD
  • 10,000 件の RSA 2048 を除く非対称のリクエスト当たり0.15USD
  • 10,000 件の RSA GenerateDataKeyPair リクエスト当たり12.00USD

料金については変更されている可能性もありますので、「AWS Key Management Service の料金別ウィンドウで開きます」にてご確認ください。

まとめ

AWS KMSは、データの暗号化/復号化に必要なキーをセキュアに取り扱えるサービスです。AWS KMSは、マスターキーであるCMKを安全に保管します。また、ユーザーはデータを暗号化/復号化する際にCMKを元に作成されるキーを利用します。ユーザーが利用したキーを速やかに破棄することで、安全な暗号化/復号化ができるのです。例えば機密情報を扱う場合などにAWS KMSを利用すれば、高セキュリティなデータのやり取りが実現できます。

24時間365日対応可能なクラウド監視・運用代行で、あなたをシステム運用から解放します!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る