本文へスキップ
BecomeCoder

AWSコース · 第7章 セキュリティとコンプライアンス · レッスン36

データの暗号化と鍵管理

導入

「データを暗号化しましょう」とはよく言われますが、暗号化には”保存されているとき”と”通信しているとき”の2つの場面があり、それぞれ守り方のサービスが違います。

説明

データの暗号化には、次の2つの観点があります。

  • 保管時の暗号化(Encryption at Rest) … ディスクやデータベース保存されているデータを暗号化する。ディスクを物理的に抜き取られても中身が読めないようにする。
  • 転送時の暗号化(Encryption in Transit) … ネットワークを通信中のデータを暗号化する。代表的な方式はTLS/SSL。通信を盗聴されても内容が読めないようにする。

暗号化・鍵管理まわりの主要サービスは次の通りです。

サービス役割
AWS KMS(Key Management Service)データを暗号化・復号するための鍵を作成・管理するサービス。S3やEBS、RDSなど多くのサービスと統合されている
AWS CloudHSM専用の物理的なハードウェア(HSM)で鍵を管理するサービス。より厳格な規制要件(鍵を専有ハードウェアで管理したい場合など)に対応
AWS Secrets ManagerデータベースのパスワードやAPIキーなどの機密情報を安全に保管し、**自動でローテーション(定期的な更新)**もできるサービス
AWS Certificate Manager(ACM)Webサイトの通信を暗号化するSSL/TLS証明書を作成・管理し、自動更新するサービス
flowchart LR
    D["平文データ"] -->|KMSの鍵で暗号化| S["S3 / EBS / RDSに保存"]
    C["クライアント"] -->|TLSで暗号化された通信| A["AWSのサービス"]
    App["アプリのコード"] -.パスワードを直書きしない.-> SM["Secrets Manager"]
    SM -->|安全に取得・自動ローテーション| App

KMSとCloudHSMの違いは頻出です。KMSはAWSが鍵をマネージド(共有基盤)で管理するのに対し、CloudHSMは利用者専用の物理ハードウェアで鍵を管理します。ほとんどの用途はKMSで十分ですが、規制上「専有ハードウェアが必須」という場合にCloudHSMを選びます。

読んでみよう

「鍵の管理=KMS(専有HWならCloudHSM)」「パスワード等の機密情報=Secrets Manager」「証明書=ACM」という役割分担を混同しないようにしましょう。