バナー画像

AWS Key Management Service (KMS)についてまとめています。

AWS KMSは、暗号化やデジタル署名用のキーの作成・管理をおこなうサービス

AWS Key Management Service (KMS) は、暗号化キーを簡単に作成・管理できるサービスです。AWS EBSの暗号化機能などと連携することで暗号化キーの扱いが簡単になります。

【関連記事】
AWS EBSは、EC2ブロックストレージボリューム 暗号化やスナップショットも可能

暗号化キーの管理がずさんだと、キーが盗み出されてデータが勝手に復号されてしまう可能性があるんですね。そのため、暗号化をおこなう場合には、キーの管理をどうするかはとても重要です。KMSはフルマネージド型サービスなので、セキュリティ面やキーの保管状態の監査の仕組みなどをユーザが意識する必要がありません。

AWS KMSの特徴

AWS KMSの特徴は以下の通り。

暗号化キーの保護について、AWS KMSは、FIPS 140-2 レベル 2 準拠のハードウェアセキュリティモジュール(HSM)で、カスタマーマスターキー(CMK)のキーマテリアルを生成。キーマテリアルは HSM で暗号化され、ストレージに書き込まれます。CMK のキーマテリアルやキーマテリアルを保護する暗号化キーは、プレーンテキスト形式の状態になることはありません。

AWS KMS では、キーを使用できるユーザーとは別に、キーの管理ユーザーを設定できます。AWS KMS から生成したキー以外に、独自のキー管理インフラストラクチャのキーや、AWS CloudHSM クラスターに保存されたキーを使用することも可能。AWS KMS で生成したルートキーの自動ローテーションを設定すると、データの最暗号化が不要になります。

データの復号用に、古いルートキーは自動保存されます。ルートキーの管理とその使用状況の履歴は、AWS マネジメントコンソールか、 AWS SDK か AWS コマンドラインインターフェイス (CLI) を使用します。

【関連記事】
AWS CLIのインストール方法 AWSアクセスキーの登録と疎通確認

AWS KMSの監査機能について、AWS KMS は AWS CloudTrail と統合されていて、キーの使用ログを表示できます。法規制やコンプライアンスの要件に対応できるんですね。AWS アカウントで AWS CloudTrail を有効にしておくと、Amazon S3 バケットに送信されるログファイルに記録されます。記録される項目には、ユーザーの詳細、時間、日付、API アクション、使用されるキーが含まれます。

AWS KMSのスケーラビリティ、耐久性、高可用性について、暗号化の使用が増加すると、サービスが自動的にスケールされます。アカウント内の数千規模の KMS キーの管理が可能です。KMSのキーはサービスからエクスポートできません。99.999999999% の耐久性を持つように設計されたシステムに、キーの暗号化コピーを複数保存します。カスタムキーストア機能も用意されていて、KMS にキーをインポートしておくと、AWS CloudHSM クラスターにキーの暗号化されたコピーが自動的にバックアップされます。

AWS KMSの料金

KMS で作成したキーには、1 USD/月の料金が発生します。料金は、対称キー、非対称キー、各マルチリージョンキー、インポートされたキー、カスタムキーストアのキーでも同じ料金です。

関連)料金 – AWS Key Management Service | AWS

料金はリージョンによって変化します。リージョンがアジアパシフィック(東京)の場合は以下の通りです。

なお、削除が予定されているKMS キーについては、料金はかかりません。待機期間中に削除をキャンセルした場合は、カスタマーマネージド KMS キーは料金を請求されます。KMS が生成するデータキーやデータキーペアには、API コールの料金以上の月額料金はかかりません。

AWS KSMには無料利用枠があります。AWS Key Management Service は、サービスが利用可能な全てのリージョンで計 20,000 件のリクエスト/月が無料で利用できます。

AWS KMSの使い方

AWSマネジメントコンソールまたは、AWS KMS APIを使って、Java、C#、Python、Ruby、PHPなどの開発言語から操作が可能です。

AWSマネジメントコンソールから、ウィザード形式でキーの生成ができます。

【関連記事】
AWSを集中管理したい!AWS マネジメントコンソールを使いこなそう!

関連)キーの使用 – AWS Key Management Service

以下は、AWS SDK for Pythonを使ってPythonからAWS KMSを操作する例です。CMK(カスタマーマスターキー)の作成、データキーの作成、CMKの有効化をおこなっています。

# CMKの作成

desc = 'Key for protecting critical data'

response = kms_client.create_key(
    Description=desc
)

# データキーの生成

# Replace the following example key ARN with any valid key identfier
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.generate_data_key(
    KeyId=key_id,
    KeySpec='AES_256'
)

plaintext_key = response['Plaintext']

encrypted_key = response['CiphertextBlob']

# CMKの有効化

# Replace the following example key ARN with a valid key ID or key ARN
key_id = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab'

response = kms_client.enable_key(
    KeyId=key_id
)

AWS KMSのまとめ

ポテパンダの一言メモ
  • AWS KMSは暗号化キーを作成、保管するサービス
  • 暗号化キーは高度なセキュリティと高可用性で保護
  • AWSマネジメントコンソールやAWS CLIから操作が可能

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。