はじめに
AWS KMS(Key Management Service)は、フルマネージドな暗号鍵管理サービスです。KMSは、データの暗号化と鍵の管理を簡素化し、セキュリティを強化してくれます。AWSのリソースを作成する際には、暗号化の項目でこのKMSを見かけることがよくあります。普段何気なく、KMSによる暗号化機能を使われている方も多いのではないでしょうか?
なぜ暗号化が必要なのか?なぜKSMが暗号化ツールとして便利なのかを知ることによって、より効率的なAWSを使ったお仕事ができるようになると思います。本記事では、暗号化の重要性とKMSについて詳しく説明します。
本ブログに掲載している内容は、私個人の見解であり、所属する組織の立場や戦略、意見を代表するものではありません。あくまでエンジニアとしての経験や考えを発信していますので、ご了承ください。
なぜ暗号化が重要なのか?
暗号化を行う最大の目的はデータ保護にあります。データが漏洩した場合でも、暗号化されていれば情報が保護されます。クラウドを使うことでハードウェアの物理的な盗難は防げますが、NW経由の不正アクセスの危険性は以前として存在します。その際データの暗号化がされていなければ、データは盗みたい放題です。
また暗号化・復号化を行う鍵の管理も非常に重要です。鍵が漏洩すれば、暗号化されたデータも簡単に復号化されてしまいます。したがって、鍵のライフサイクルを適切に回すことが必要です。
AWS KMSでは上記の課題を手軽に解決するための機能が用意されています。
KMSとは?
KMSでは以下の2種類の鍵を管理できます。
| 鍵の種類 | 特徴 |
|---|---|
| AWSマネージド型キー | ・AWSが管理している鍵(ユーザは操作不可) ・他のAWSサービスの暗号化時にデフォルトで使用される鍵 |
| カスタマー管理型のキー | ・鍵の管理設定をユーザが指定(アクセス権限・ローテーション) ・マネージドキーが要件に合わないときに使う |
またKMSは以下の機能を提供しています。
暗号鍵の生成と管理
KMSは、暗号鍵(キー)を生成し、管理する機能を提供します。これには、カスタマー管理鍵(CMK)やAWS管理鍵(AWS-managed keys)が含まれます。ユーザーは自分のニーズに応じて鍵を作成し、使用することができます。
暗号化と復号化
KMSは、データを暗号化するためのAPIを提供します。これにより、アプリケーションはKMSを利用してデータを安全に暗号化し、必要に応じて復号化することができます。
鍵へのアクセス制御
KMSは、IAM(Identity and Access Management)と統合されており、誰がどの鍵にアクセスできるかを細かく制御できます。これにより、特定のユーザーやサービスに対して鍵の使用を許可または拒否することができます。
監査とログ記録
KMSはAWS CloudTrailと統合されており、鍵の使用や管理に関する操作を記録します。これにより、監査やトラブルシューティングが容易になります。
他のAWSサービスとの統合
KMSは、他のAWSサービス(S3、EBS、RDSなど)と統合されており、これらのサービスでのデータ暗号化を簡単に実現できます。実際にマネコン上でこれらのリソースを作成する際に暗号化の項目でKMSから暗号鍵を選択することができます。
余談:CloudHSMについて
KMSにはCloudHSMという関連サービスもあります。CloudHSMは、ユーザーが専用のハードウェアセキュリティモジュール(HSM)を使用して暗号鍵を管理できるサービスです。FIPS 140-2レベル3という高いセキュリティ基準に準拠しており、決済処理など特に厳格なセキュリティ要件を持つアプリケーションに適しています。当然ながら使用コストはものすごく高いです。筆者も使っている案件を見たこともありません(笑)。
-
HSM:Hardware Security Module:暗号鍵の生成、管理、保護を行うための専用ハードウェアデバイス。
-
FIPS:Federal Information Processing Standardsの略。米国連邦政府が情報システムで使用するための基準を定めたもので、米国だけでなく世界中で採用されているセキュリティ基準です。
KMSによる暗号化が行われるサービスと暗号化対象
AWS KMSは、さまざまなAWSサービスと統合されており、以下のようなサービスで使われています。
- Amazon S3
オブジェクトストレージサービスで、保存されるデータが暗号化対象です。 - Amazon EBS
EC2インスタンスで使用されるブロックストレージで、ボリューム内データ・ボリュームとEC2インスタンス間で移動されるデータが暗号化対象です。
※暗号化されたEBSボリュームから作成されたスナップショット及びそのスナップショットから作成されたボリュームも暗号化されています。 - Amazon RDS
リレーショナルデータベースサービスで、データベースのストレージを暗号化する際にKMSを使用します。 - Amazon Redshift
データウェアハウスサービスで、データの暗号化にKMSを利用します。 - AWS Lambda
サーバーレスコンピューティングサービスで、環境変数やデータストレージの暗号化にKMSを使用します。
暗号化対象としては、データそのもの(ファイル、データベース、オブジェクトなど)や、データの転送中に使用される鍵、さらにはアプリケーションの設定情報などが含まれます。
まとめ
今回は暗号化をテーマにAWS上のセキュリティ対策に利用可能なKMSをご紹介しましたが、当然ながらKMSだけではすべてのセキュリティインシデントを防げるわけではありません。例えばそもそもNW経由でのアクセスがキチンと防げているのであればデータの盗難などは起きません。セキュリティ対策は多角的なアプローチが必要なテーマのため、しっかりと対策をとるのは大変ですね。